Bug 512986 - [Layers] The layers extra should be moved to incubation

 - add plugin feature 
 - reference feature in the new incubation category

Change-Id: I5a7810d5f95db1d314bfef6f4a3aa3eb9b18ee74
Signed-off-by: Benoit Maggi <benoit.maggi@cea.fr>
diff --git a/layers/org.eclipse.papyrus.layers.dev.ui/.classpath b/layers/org.eclipse.papyrus.layers.dev.ui/.classpath
new file mode 100755
index 0000000..ad32c83
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.dev.ui/.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/layers/org.eclipse.papyrus.layers.dev.ui/.project b/layers/org.eclipse.papyrus.layers.dev.ui/.project
new file mode 100755
index 0000000..6ea6b87
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.dev.ui/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.layers.dev.ui</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/layers/org.eclipse.papyrus.layers.dev.ui/.settings/org.eclipse.jdt.core.prefs b/layers/org.eclipse.papyrus.layers.dev.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100755
index 0000000..94d61f0
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.dev.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,291 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+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/layers/org.eclipse.papyrus.layers.dev.ui/.settings/org.eclipse.jdt.ui.prefs b/layers/org.eclipse.papyrus.layers.dev.ui/.settings/org.eclipse.jdt.ui.prefs
new file mode 100755
index 0000000..954281d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.dev.ui/.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.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
+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 v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\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>
diff --git a/layers/org.eclipse.papyrus.layers.dev.ui/META-INF/MANIFEST.MF b/layers/org.eclipse.papyrus.layers.dev.ui/META-INF/MANIFEST.MF
new file mode 100755
index 0000000..7ede7ea
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.dev.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,12 @@
+Manifest-Version: 1.0
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.ui
+Bundle-Vendor: %providerName
+Bundle-ActivationPolicy: lazy
+Bundle-Version: 1.2.0.qualifier
+Bundle-Name: %pluginName
+Bundle-Localization: plugin
+Bundle-ManifestVersion: 2
+Bundle-Activator: org.eclipse.papyrus.layers.dev.ui.Activator
+Bundle-SymbolicName: org.eclipse.papyrus.layers.dev.ui;singleton:=true
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/layers/org.eclipse.papyrus.layers.dev.ui/about.html b/layers/org.eclipse.papyrus.layers.dev.ui/about.html
new file mode 100755
index 0000000..d35d5ae
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.dev.ui/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>June 5, 2007</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
diff --git a/layers/org.eclipse.papyrus.layers.dev.ui/build.properties b/layers/org.eclipse.papyrus.layers.dev.ui/build.properties
new file mode 100755
index 0000000..2b63999
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.dev.ui/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               about.html,\
+               plugin.properties
+src.includes = about.html
diff --git a/layers/org.eclipse.papyrus.layers.dev.ui/plugin.properties b/layers/org.eclipse.papyrus.layers.dev.ui/plugin.properties
new file mode 100755
index 0000000..1ba9a85
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.dev.ui/plugin.properties
@@ -0,0 +1,12 @@
+#################################################################################
+# 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 v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#     Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+##################################################################################
+pluginName=Layers UI for Dev (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/layers/org.eclipse.papyrus.layers.dev.ui/plugin.xml b/layers/org.eclipse.papyrus.layers.dev.ui/plugin.xml
new file mode 100755
index 0000000..f90e51b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.dev.ui/plugin.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.ui.menus">
+      <menuContribution
+            allPopups="false"
+            locationURI="popup:org.eclipse.papyrus.layers.stackmodel.ui.popupmenu?after=endseparator">
+         <separator
+               name="devseparator"
+               visible="true">
+         </separator>
+         <menu
+               label="Oldies">
+            <command
+                  commandId="org.eclipse.papyrus.layers.ui.commands.attachLayerStack"
+                  label="Attach Layer Stack"
+                  style="push"
+                  tooltip="Attach a Layer Stack to the diagram">
+            </command>
+            <command
+                  commandId="org.eclipse.papyrus.layers.ui.commands.createtoplayeroperator"
+                  label="Create Top Layer Operator"
+                  style="push"
+                  tooltip="Create a top Layer operator">
+            </command>
+            <command
+                  commandId="org.eclipse.papyrus.layers.ui.commands.createstackedLayerOperator"
+                  label="Create Stacked Layer Operator"
+                  style="push"
+                  tooltip="Create a Stacked Layer operator">
+            </command>
+            <command
+                  commandId="org.eclipse.papyrus.layers.ui.commands.attachPropertyToLayer"
+                  label="Attach a Property to a Layer"
+                  style="push"
+                  tooltip="Attach a Property to a Layer">
+            </command>
+            <command
+                  commandId="org.eclipse.papyrus.layers.ui.commands.createLayerOperator"
+                  label="Create Layer Operators No Param"
+                  style="push">
+            </command>
+         </menu>
+      </menuContribution>
+   </extension>
+
+</plugin>
diff --git a/layers/org.eclipse.papyrus.layers.dev.ui/readme.txt b/layers/org.eclipse.papyrus.layers.dev.ui/readme.txt
new file mode 100755
index 0000000..f3a08b5
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.dev.ui/readme.txt
@@ -0,0 +1,12 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2014 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+# 
+# Contributors:
+#     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+#-------------------------------------------------------------------------------
+This plugins contains code for developpers.
+This plugins is not intended to be part of the layers distribution.
diff --git a/layers/org.eclipse.papyrus.layers.dev.ui/src/org/eclipse/papyrus/layers/dev/ui/Activator.java b/layers/org.eclipse.papyrus.layers.dev.ui/src/org/eclipse/papyrus/layers/dev/ui/Activator.java
new file mode 100755
index 0000000..f8a33ab
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.dev.ui/src/org/eclipse/papyrus/layers/dev/ui/Activator.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2014 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.dev.ui;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+	private static BundleContext context;
+
+	static BundleContext getContext() {
+		return context;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 *
+	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+	 */
+	@Override
+	public void start(BundleContext bundleContext) throws Exception {
+		Activator.context = bundleContext;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 *
+	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+	 */
+	@Override
+	public void stop(BundleContext bundleContext) throws Exception {
+		Activator.context = null;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.feature/.project b/layers/org.eclipse.papyrus.layers.feature/.project
new file mode 100755
index 0000000..dffc49c
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.layers.feature</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.FeatureBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.FeatureNature</nature>
+	</natures>
+</projectDescription>
diff --git a/layers/org.eclipse.papyrus.layers.feature/build.properties b/layers/org.eclipse.papyrus.layers.feature/build.properties
new file mode 100755
index 0000000..e57ce11
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.feature/build.properties
@@ -0,0 +1,7 @@
+bin.includes = feature.xml,\
+               epl-v10.html,\
+               feature.properties,\
+               license.html
+src.includes = build.properties,\
+               epl-v10.html,\
+               license.html
diff --git a/layers/org.eclipse.papyrus.layers.feature/epl-v10.html b/layers/org.eclipse.papyrus.layers.feature/epl-v10.html
new file mode 100755
index 0000000..cb1073a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.feature/epl-v10.html
@@ -0,0 +1,304 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<link rel=File-List
+href="./Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml">
+<title>Eclipse Public License - Version 1.0</title>
+<style>
+<!--
+ /* Font Definitions */
+@font-face
+	{
+	panose-1:2 11 6 4 3 5 4 4 2 4;
+	mso-font-charset:0;
+	mso-font-pitch:variable;
+	mso-font-signature:553679495 -2147483648 8 0 66047 0;}
+ /* Style Definitions */
+p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{mso-style-parent:"";
+	margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	}
+p
+	{margin-right:0in;
+	mso-margin-top-alt:auto;
+	mso-margin-bottom-alt:auto;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	}
+p.BalloonText, li.BalloonText, div.BalloonText
+	{mso-style-name:"Balloon Text";
+	margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:8.0pt;
+	
+	}
+@page Section1
+	{size:8.5in 11.0in;
+	margin:1.0in 1.25in 1.0in 1.25in;
+	mso-header-margin:.5in;
+	mso-footer-margin:.5in;
+	mso-paper-source:0;}
+div.Section1
+	{page:Section1;}
+-->
+</style>
+</head>
+
+<body lang="EN-US" style='tab-interval:.5in'>
+
+<div class=Section1>
+
+<p align=center style='text-align:center'><b>Eclipse Public License - v 1.0</b>
+</p>
+
+<p><span style='font-size:10.0pt'>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
+THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE,
+REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
+OF THIS AGREEMENT.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>1. DEFINITIONS</span></b> </p>
+
+<p><span style='font-size:10.0pt'>&quot;Contribution&quot; means:</span> </p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+in the case of the initial Contributor, the initial code and documentation
+distributed under this Agreement, and<br clear=left>
+b) in the case of each subsequent Contributor:</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
+changes to the Program, and</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
+additions to the Program;</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>where
+such changes and/or additions to the Program originate from and are distributed
+by that particular Contributor. A Contribution 'originates' from a Contributor
+if it was added to the Program by such Contributor itself or anyone acting on
+such Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in conjunction
+with the Program under their own license agreement, and (ii) are not derivative
+works of the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>&quot;Contributor&quot; means any person or
+entity that distributes the Program.</span> </p>
+
+<p><span style='font-size:10.0pt'>&quot;Licensed Patents &quot; mean patent
+claims licensable by a Contributor which are necessarily infringed by the use
+or sale of its Contribution alone or when combined with the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>&quot;Program&quot; means the Contributions
+distributed in accordance with this Agreement.</span> </p>
+
+<p><span style='font-size:10.0pt'>&quot;Recipient&quot; means anyone who
+receives the Program under this Agreement, including all Contributors.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>2. GRANT OF RIGHTS</span></b> </p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+Subject to the terms of this Agreement, each Contributor hereby grants Recipient
+a non-exclusive, worldwide, royalty-free copyright license to<span
+style='color:red'> </span>reproduce, prepare derivative works of, publicly
+display, publicly perform, distribute and sublicense the Contribution of such
+Contributor, if any, and such derivative works, in source code and object code
+form.</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
+Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide,<span style='color:green'> </span>royalty-free
+patent license under Licensed Patents to make, use, sell, offer to sell, import
+and otherwise transfer the Contribution of such Contributor, if any, in source
+code and object code form. This patent license shall apply to the combination
+of the Contribution and the Program if, at the time the Contribution is added
+by the Contributor, such addition of the Contribution causes such combination
+to be covered by the Licensed Patents. The patent license shall not apply to
+any other combinations which include the Contribution. No hardware per se is
+licensed hereunder. </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>c)
+Recipient understands that although each Contributor grants the licenses to its
+Contributions set forth herein, no assurances are provided by any Contributor
+that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient
+for claims brought by any other entity based on infringement of intellectual
+property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility
+to secure any other intellectual property rights needed, if any. For example,
+if a third party patent license is required to allow Recipient to distribute
+the Program, it is Recipient's responsibility to acquire that license before
+distributing the Program.</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>d)
+Each Contributor represents that to its knowledge it has sufficient copyright
+rights in its Contribution, if any, to grant the copyright license set forth in
+this Agreement. </span></p>
+
+<p><b><span style='font-size:10.0pt'>3. REQUIREMENTS</span></b> </p>
+
+<p><span style='font-size:10.0pt'>A Contributor may choose to distribute the
+Program in object code form under its own license agreement, provided that:</span>
+</p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+it complies with the terms and conditions of this Agreement; and</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
+its license agreement:</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
+effectively disclaims on behalf of all Contributors all warranties and
+conditions, express and implied, including warranties or conditions of title
+and non-infringement, and implied warranties or conditions of merchantability
+and fitness for a particular purpose; </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
+effectively excludes on behalf of all Contributors all liability for damages,
+including direct, indirect, special, incidental and consequential damages, such
+as lost profits; </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iii)
+states that any provisions which differ from this Agreement are offered by that
+Contributor alone and not by any other party; and</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iv)
+states that source code for the Program is available from such Contributor, and
+informs licensees how to obtain it in a reasonable manner on or through a
+medium customarily used for software exchange.<span style='color:blue'> </span></span></p>
+
+<p><span style='font-size:10.0pt'>When the Program is made available in source
+code form:</span> </p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+it must be made available under this Agreement; and </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b) a
+copy of this Agreement must be included with each copy of the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>Contributors may not remove or alter any
+copyright notices contained within the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>Each Contributor must identify itself as the
+originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution. </span></p>
+
+<p><b><span style='font-size:10.0pt'>4. COMMERCIAL DISTRIBUTION</span></b> </p>
+
+<p><span style='font-size:10.0pt'>Commercial distributors of software may
+accept certain responsibilities with respect to end users, business partners
+and the like. While this license is intended to facilitate the commercial use
+of the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create potential
+liability for other Contributors. Therefore, if a Contributor includes the
+Program in a commercial product offering, such Contributor (&quot;Commercial
+Contributor&quot;) hereby agrees to defend and indemnify every other
+Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and
+costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other
+legal actions brought by a third party against the Indemnified Contributor to
+the extent caused by the acts or omissions of such Commercial Contributor in
+connection with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In order
+to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor
+to control, and cooperate with the Commercial Contributor in, the defense and
+any related settlement negotiations. The Indemnified Contributor may participate
+in any such claim at its own expense.</span> </p>
+
+<p><span style='font-size:10.0pt'>For example, a Contributor might include the
+Program in a commercial product offering, Product X. That Contributor is then a
+Commercial Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance claims and
+warranties are such Commercial Contributor's responsibility alone. Under this
+section, the Commercial Contributor would have to defend claims against the
+other Contributors related to those performance claims and warranties, and if a
+court requires any other Contributor to pay any damages as a result, the
+Commercial Contributor must pay those damages.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>5. NO WARRANTY</span></b> </p>
+
+<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and distributing the
+Program and assumes all risks associated with its exercise of rights under this
+Agreement , including but not limited to the risks and costs of program errors,
+compliance with applicable laws, damage to or loss of data, programs or
+equipment, and unavailability or interruption of operations. </span></p>
+
+<p><b><span style='font-size:10.0pt'>6. DISCLAIMER OF LIABILITY</span></b> </p>
+
+<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
+THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>7. GENERAL</span></b> </p>
+
+<p><span style='font-size:10.0pt'>If any provision of this Agreement is invalid
+or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without
+further action by the parties hereto, such provision shall be reformed to the
+minimum extent necessary to make such provision valid and enforceable.</span> </p>
+
+<p><span style='font-size:10.0pt'>If Recipient institutes patent litigation
+against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with
+other software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the date
+such litigation is filed. </span></p>
+
+<p><span style='font-size:10.0pt'>All Recipient's rights under this Agreement
+shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable
+period of time after becoming aware of such noncompliance. If all Recipient's
+rights under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive. </span></p>
+
+<p><span style='font-size:10.0pt'>Everyone is permitted to copy and distribute
+copies of this Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The Agreement
+Steward reserves the right to publish new versions (including revisions) of
+this Agreement from time to time. No one other than the Agreement Steward has
+the right to modify this Agreement. The Eclipse Foundation is the initial
+Agreement Steward. The Eclipse Foundation may assign the responsibility to
+serve as the Agreement Steward to a suitable separate entity. Each new version
+of the Agreement will be given a distinguishing version number. The Program
+(including Contributions) may always be distributed subject to the version of
+the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program
+(including its Contributions) under the new version. Except as expressly stated
+in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether
+expressly, by implication, estoppel or otherwise. All rights in the Program not
+expressly granted under this Agreement are reserved.</span> </p>
+
+<p><span style='font-size:10.0pt'>This Agreement is governed by the laws of the
+State of New York and the intellectual property laws of the United States of
+America. No party to this Agreement will bring a legal action under this
+Agreement more than one year after the cause of action arose. Each party waives
+its rights to a jury trial in any resulting litigation.</span> </p>
+
+<p class=MsoNormal></p>
+
+</div>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.feature/feature.properties b/layers/org.eclipse.papyrus.layers.feature/feature.properties
new file mode 100755
index 0000000..3c2aed7
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.feature/feature.properties
@@ -0,0 +1,138 @@
+# NLS_MESSAGEFORMAT_VAR
+
+# "featureName" property - name of the feature
+featureName=Papyrus Layers (Incubation)
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse Modeling Project 
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+April 9, 2014\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+\t- Content may be structured and packaged into modules to facilitate delivering,\n\
+\t  extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+\t  plug-in fragments ("Fragments"), and features ("Features").\n\
+\t- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+\t  in a directory named "plugins".\n\
+\t- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+\t  Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+\t  Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+\t  numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+\t- Features may also include other Features ("Included Features"). Within a Feature, files\n\
+\t  named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+\t- The top-level (root) directory\n\
+\t- Plug-in and Fragment directories\n\
+\t- Inside Plug-ins and Fragments packaged as JARs\n\
+\t- Sub-directories of the directory named "src" of certain Plug-ins\n\
+\t- Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+\t- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+\t- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+\t- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+\t- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+\t- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+\t1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+\t   the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+\t   extending or updating the functionality of an Eclipse-based product.\n\
+\t2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+\t   Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+\t3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+\t   govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+\t   Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+\t   with the Specification. Such Installable Software Agreement must inform the user of the\n\
+\t   terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+\t   the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+\t   indication of agreement by the user, the provisioning Technology will complete installation\n\
+\t   of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/layers/org.eclipse.papyrus.layers.feature/feature.xml b/layers/org.eclipse.papyrus.layers.feature/feature.xml
new file mode 100755
index 0000000..c92d38e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.feature/feature.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><feature id="org.eclipse.papyrus.layers.feature" label="%featureName" provider-name="%providerName" version="1.2.0.qualifier">
+
+   <description url="http://www.eclipse.com/papyrus">
+      This plugins add Layers capapbilities to Papyrus diagrams.
+   </description>
+
+   <copyright url="http://www.eclipse.org/legal/epl-v10.html">
+      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
+v1.0 which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v10.html.
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <requires>
+      <import plugin="org.eclipse.ui"/>
+      <import plugin="org.eclipse.core.runtime"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.gmf.runtime.notation" version="1.5.0"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.gmf.runtime.notation.edit" version="1.4.0"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.gmf.runtime.notation.providers" version="1.7.0"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.emf.edit" version="2.9.0"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.emf.ecore.edit" version="2.8.0"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.papyrus.layers.stackmodel" version="0.10.0"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.emf.ecore" version="2.9.0"/>
+      <import plugin="org.junit"/>
+      <import plugin="org.eclipse.papyrus.infra.core"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.core.resources" version="3.8.100"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.papyrus.infra.gmfdiag.common" version="0.10.0"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.emf.ecore.xmi" version="2.9.0"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.uml2.uml" version="4.1.0"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.papyrus.infra.emf" version="0.10.0"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.papyrus.infra.emf.diagram.common" version="0.10.0"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.papyrus.layers.stackmodel.editor" version="1.0.0"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.emf.transaction" version="1.4.0"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.papyrus.infra.core.log" version="0.10.0"/>
+      <import plugin="org.eclipse.core.expressions"/>
+      <import plugin="org.eclipse.gmf.runtime.diagram.ui.resources.editor"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.gmf.runtime.diagram.ui" version="1.7.0"/>
+      <import plugin="org.eclipse.uml2.common.edit"/>
+      <import plugin="org.eclipse.emf.edit.ui"/>
+      <import plugin="org.eclipse.ui.ide"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.papyrus.infra.core.sasheditor" version="0.10.0"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.ui.forms" version="3.5.200"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.emf" version="2.6.0"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.papyrus.infra.core" version="0.10.0"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.papyrus.layers.runtime" version="0.10.0"/>
+      <import plugin="org.eclipse.core.databinding"/>
+      <import plugin="org.eclipse.core.databinding.beans"/>
+      <import plugin="org.eclipse.core.databinding.observable"/>
+      <import plugin="org.eclipse.core.databinding.property"/>
+      <import plugin="com.ibm.icu"/>
+      <import plugin="org.eclipse.emf.databinding"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.uml2.uml.edit" version="4.0.100"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.emf.databinding.edit" version="1.3.0"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.jface.databinding" version="1.6.200"/>
+      <import plugin="org.eclipse.gmf.runtime.diagram.ui.properties"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.ui.ide" version="3.9.0"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.gmf.runtime.diagram.ui.resources.editor" version="1.7.0"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.core.expressions" version="3.4.500"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.papyrus.layers.notationmodel.edit" version="0.11.0"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.papyrus.views.modelexplorer" version="0.10.0"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.papyrus.views.properties" version="0.10.0"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.papyrus.infra.widgets" version="0.10.0"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.ui.navigator" version="3.5.300"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.gmf.runtime.notation.edit" version="1.7.0"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.papyrus.infra.services.labelprovider" version="0.10.1"/>
+      <import match="greaterOrEqual" plugin="org.eclipse.papyrus.infra.gmfdiag.hyperlink" version="0.10.1"/>
+   </requires>
+
+   <plugin download-size="0" id="org.eclipse.papyrus.layers.notationmodel.edit" install-size="0" unpack="false" version="0.0.0"/>
+
+   <plugin download-size="0" id="org.eclipse.papyrus.layers.runtime" install-size="0" unpack="false" version="0.0.0"/>
+
+   <plugin download-size="0" id="org.eclipse.papyrus.layers.stackmodel" install-size="0" unpack="false" version="0.0.0"/>
+
+   <plugin download-size="0" id="org.eclipse.papyrus.layers.stackmodel.diagram" install-size="0" unpack="false" version="0.0.0"/>
+
+   <plugin download-size="0" id="org.eclipse.papyrus.layers.stackmodel.edit" install-size="0" unpack="false" version="0.0.0"/>
+
+   <plugin download-size="0" id="org.eclipse.papyrus.layers.stackmodel.editor" install-size="0" unpack="false" version="0.0.0"/>
+
+   <plugin download-size="0" id="org.eclipse.papyrus.layers.ui" install-size="0" unpack="false" version="0.0.0"/>
+
+</feature>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.feature/license.html b/layers/org.eclipse.papyrus.layers.feature/license.html
new file mode 100755
index 0000000..c3d34c3
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.feature/license.html
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+<title>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>April 9, 2014</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
+   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
diff --git a/layers/org.eclipse.papyrus.layers.feature/pom.xml b/layers/org.eclipse.papyrus.layers.feature/pom.xml
new file mode 100755
index 0000000..97bd663
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.feature/pom.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.papyrus</groupId>
+		<artifactId>org.eclipse.papyrus.layers.parent</artifactId>
+		<version>1.2.0-SNAPSHOT</version>
+	</parent>
+	<artifactId>org.eclipse.papyrus.layers.feature</artifactId>
+	<packaging>eclipse-feature</packaging>
+</project>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.integrationtests/.classpath b/layers/org.eclipse.papyrus.layers.integrationtests/.classpath
new file mode 100755
index 0000000..5140174
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.integrationtests/.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="test"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/layers/org.eclipse.papyrus.layers.integrationtests/.project b/layers/org.eclipse.papyrus.layers.integrationtests/.project
new file mode 100755
index 0000000..948e52d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.integrationtests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.layers.integrationtests</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/layers/org.eclipse.papyrus.layers.integrationtests/.settings/org.eclipse.jdt.core.prefs b/layers/org.eclipse.papyrus.layers.integrationtests/.settings/org.eclipse.jdt.core.prefs
new file mode 100755
index 0000000..6285ded
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.integrationtests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,295 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+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.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/layers/org.eclipse.papyrus.layers.integrationtests/.settings/org.eclipse.jdt.ui.prefs b/layers/org.eclipse.papyrus.layers.integrationtests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100755
index 0000000..954281d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.integrationtests/.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.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
+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 v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\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>
diff --git a/layers/org.eclipse.papyrus.layers.integrationtests/META-INF/MANIFEST.MF b/layers/org.eclipse.papyrus.layers.integrationtests/META-INF/MANIFEST.MF
new file mode 100755
index 0000000..b7c5081
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.integrationtests/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Export-Package: org.eclipse.papyrus.layers.integrationtests
+Require-Bundle: org.eclipse.papyrus.layers.runtime;bundle-version="1.2.0",
+ org.eclipse.papyrus.layers.stackmodel;bundle-version="1.2.0",
+ org.junit,
+ org.eclipse.emf;bundle-version="2.6.0",
+ org.eclipse.emf.common;bundle-version="2.9.1",
+ org.eclipse.papyrus.integrationtests.editor;bundle-version="1.2.0",
+ org.eclipse.emf.ecore;bundle-version="2.10.0",
+ org.eclipse.papyrus.infra.core;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.gmfdiag.common;bundle-version="[3.0.0,4.0.0)"
+Bundle-Vendor: %providerName
+Bundle-Version: 1.2.0.qualifier
+Bundle-Name: %pluginName
+Bundle-Localization: plugin
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: org.eclipse.papyrus.layers.integrationtests
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/layers/org.eclipse.papyrus.layers.integrationtests/about.html b/layers/org.eclipse.papyrus.layers.integrationtests/about.html
new file mode 100755
index 0000000..d35d5ae
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.integrationtests/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>June 5, 2007</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
diff --git a/layers/org.eclipse.papyrus.layers.integrationtests/build.properties b/layers/org.eclipse.papyrus.layers.integrationtests/build.properties
new file mode 100755
index 0000000..cc21128
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.integrationtests/build.properties
@@ -0,0 +1,7 @@
+bin.includes = META-INF/,\
+               models/,\
+               about.html,\
+               plugin.properties
+src.includes = about.html
+source.. = test/
+output.. = bin/
diff --git a/layers/org.eclipse.papyrus.layers.integrationtests/models/modeltestReload.di b/layers/org.eclipse.papyrus.layers.integrationtests/models/modeltestReload.di
new file mode 100755
index 0000000..c266cd5
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.integrationtests/models/modeltestReload.di
@@ -0,0 +1,63 @@
+<?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:di="http://www.eclipse.org/papyrus/0.7.0/sashdi" xmlns:org.eclipse.papyrus.layers.stackmodel.layers="org.eclipse.papyrus.layers.0.10">
+  <di:SashWindowsMngr>
+    <pageList>
+      <availablePage>
+        <emfPageIdentifier href="modeltestReload.notation#_U7710H_HEeOcKbF7eArARg"/>
+      </availablePage>
+      <availablePage>
+        <emfPageIdentifier href="modeltestReload.notation#_NIWn0IFTEeOzaYZM9B1O8A"/>
+      </availablePage>
+      <availablePage>
+        <emfPageIdentifier href="modeltestReload.notation#_bmNYgIFTEeOzaYZM9B1O8A"/>
+      </availablePage>
+      <availablePage>
+        <emfPageIdentifier href="modeltestReload.notation#_FbHH8IFWEeOVd594nsh1bA"/>
+      </availablePage>
+    </pageList>
+    <sashModel currentSelection="/0/@sashModel/@windows.0/@children.0">
+      <windows>
+        <children xsi:type="di:TabFolder">
+          <children>
+            <emfPageIdentifier href="modeltestReload.notation#_U7710H_HEeOcKbF7eArARg"/>
+          </children>
+          <children>
+            <emfPageIdentifier href="modeltestReload.notation#_NIWn0IFTEeOzaYZM9B1O8A"/>
+          </children>
+          <children>
+            <emfPageIdentifier href="modeltestReload.notation#_bmNYgIFTEeOzaYZM9B1O8A"/>
+          </children>
+          <children>
+            <emfPageIdentifier href="modeltestReload.notation#_FbHH8IFWEeOVd594nsh1bA"/>
+          </children>
+        </children>
+      </windows>
+    </sashModel>
+  </di:SashWindowsMngr>
+  <org.eclipse.papyrus.layers.stackmodel.layers:LayersStackApplication>
+    <layersStacks>
+      <layers xsi:type="org.eclipse.papyrus.layers.stackmodel.layers:TopLayerOperator" application="/1" name="Top Layer" owningLayersStack="/1/@layersStacks.0">
+        <layers xsi:type="org.eclipse.papyrus.layers.stackmodel.layers:Layer" application="/1" name="layer0" owningLayersStack="/1/@layersStacks.0"/>
+      </layers>
+      <diagram href="modeltestReload.notation#_U7710H_HEeOcKbF7eArARg"/>
+    </layersStacks>
+    <layersStacks>
+      <layers xsi:type="org.eclipse.papyrus.layers.stackmodel.layers:TopLayerOperator" application="/1" name="Top Layer" owningLayersStack="/1/@layersStacks.1">
+        <layers xsi:type="org.eclipse.papyrus.layers.stackmodel.layers:RegExpLayer" application="/1" name="layer0" owningLayersStack="/1/@layersStacks.1"/>
+      </layers>
+      <diagram href="modeltestReload.notation#_NIWn0IFTEeOzaYZM9B1O8A"/>
+    </layersStacks>
+    <layersStacks>
+      <layers xsi:type="org.eclipse.papyrus.layers.stackmodel.layers:TopLayerOperator" application="/1" name="Top Layer" owningLayersStack="/1/@layersStacks.2">
+        <layers xsi:type="org.eclipse.papyrus.layers.stackmodel.layers:TopLayerOperator" application="/1" name="layer1"/>
+      </layers>
+      <diagram href="modeltestReload.notation#_bmNYgIFTEeOzaYZM9B1O8A"/>
+    </layersStacks>
+    <layersStacks>
+      <layers xsi:type="org.eclipse.papyrus.layers.stackmodel.layers:TopLayerOperator" application="/1" name="Top Layer" owningLayersStack="/1/@layersStacks.3">
+        <layers xsi:type="org.eclipse.papyrus.layers.stackmodel.layers:StackedLayerOperator" application="/1" name="layer0" owningLayersStack="/1/@layersStacks.3" layerOperatorDescriptorName="stackedLayersOperator"/>
+      </layers>
+      <diagram href="modeltestReload.notation#_FbHH8IFWEeOVd594nsh1bA"/>
+    </layersStacks>
+  </org.eclipse.papyrus.layers.stackmodel.layers:LayersStackApplication>
+</xmi:XMI>
diff --git a/layers/org.eclipse.papyrus.layers.integrationtests/models/modeltestReload.notation b/layers/org.eclipse.papyrus.layers.integrationtests/models/modeltestReload.notation
new file mode 100755
index 0000000..99324ef
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.integrationtests/models/modeltestReload.notation
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+  <notation:Diagram xmi:id="_U7710H_HEeOcKbF7eArARg" type="PapyrusUMLClassDiagram" name="diagram1" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_V9uC8H_HEeOcKbF7eArARg" type="2008">
+      <children xmi:type="notation:DecorationNode" xmi:id="_V9uC8n_HEeOcKbF7eArARg" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_V9uC83_HEeOcKbF7eArARg" type="7017">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V9uDAn_HEeOcKbF7eArARg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_V9uDA3_HEeOcKbF7eArARg" key="showTitle" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_V9uC9H_HEeOcKbF7eArARg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_V9uC9X_HEeOcKbF7eArARg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_V9uC9n_HEeOcKbF7eArARg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V9uC93_HEeOcKbF7eArARg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_V9uC-H_HEeOcKbF7eArARg" type="7018">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V9uDBH_HEeOcKbF7eArARg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_V9uDBX_HEeOcKbF7eArARg" key="showTitle" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_V9uC-X_HEeOcKbF7eArARg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_V9uC-n_HEeOcKbF7eArARg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_V9uC-3_HEeOcKbF7eArARg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V9uC_H_HEeOcKbF7eArARg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_V9uC_X_HEeOcKbF7eArARg" type="7019">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V9uDBn_HEeOcKbF7eArARg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_V9uDB3_HEeOcKbF7eArARg" key="showTitle" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_V9uC_n_HEeOcKbF7eArARg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_V9uC_3_HEeOcKbF7eArARg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_V9uDAH_HEeOcKbF7eArARg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V9uDAX_HEeOcKbF7eArARg"/>
+      </children>
+      <element xmi:type="uml:Class" href="modeltestReload.uml#_V8q6EH_HEeOcKbF7eArARg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V9uC8X_HEeOcKbF7eArARg" x="134" y="136"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_U7710X_HEeOcKbF7eArARg"/>
+    <element xmi:type="uml:Model" href="modeltestReload.uml#_U7o64H_HEeOcKbF7eArARg"/>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_NIWn0IFTEeOzaYZM9B1O8A" type="PapyrusUMLClassDiagram" name="diagram2" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_N6z_gIFTEeOzaYZM9B1O8A" type="2008">
+      <children xmi:type="notation:DecorationNode" xmi:id="_N6z_goFTEeOzaYZM9B1O8A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_N6z_g4FTEeOzaYZM9B1O8A" type="7017">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_N66GIIFTEeOzaYZM9B1O8A" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_N66GIYFTEeOzaYZM9B1O8A" key="showTitle" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_N6z_hIFTEeOzaYZM9B1O8A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_N6z_hYFTEeOzaYZM9B1O8A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_N6z_hoFTEeOzaYZM9B1O8A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_N6z_h4FTEeOzaYZM9B1O8A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_N6z_iIFTEeOzaYZM9B1O8A" type="7018">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_N66GIoFTEeOzaYZM9B1O8A" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_N66GI4FTEeOzaYZM9B1O8A" key="showTitle" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_N6z_iYFTEeOzaYZM9B1O8A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_N6z_ioFTEeOzaYZM9B1O8A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_N6z_i4FTEeOzaYZM9B1O8A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_N6z_jIFTEeOzaYZM9B1O8A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_N6z_jYFTEeOzaYZM9B1O8A" type="7019">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_N66GJIFTEeOzaYZM9B1O8A" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_N66GJYFTEeOzaYZM9B1O8A" key="showTitle" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_N6z_joFTEeOzaYZM9B1O8A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_N6z_j4FTEeOzaYZM9B1O8A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_N6z_kIFTEeOzaYZM9B1O8A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_N6z_kYFTEeOzaYZM9B1O8A"/>
+      </children>
+      <element xmi:type="uml:Class" href="modeltestReload.uml#_N6blAIFTEeOzaYZM9B1O8A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_N6z_gYFTEeOzaYZM9B1O8A" x="230" y="134"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_NIWn0YFTEeOzaYZM9B1O8A"/>
+    <element xmi:type="uml:Model" href="modeltestReload.uml#_U7o64H_HEeOcKbF7eArARg"/>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_bmNYgIFTEeOzaYZM9B1O8A" type="PapyrusUMLClassDiagram" name="diagram3" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_cBNScIFTEeOzaYZM9B1O8A" type="2008">
+      <children xmi:type="notation:DecorationNode" xmi:id="_cBNScoFTEeOzaYZM9B1O8A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cBNSc4FTEeOzaYZM9B1O8A" type="7017">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cBNSgoFTEeOzaYZM9B1O8A" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cBNSg4FTEeOzaYZM9B1O8A" key="showTitle" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cBNSdIFTEeOzaYZM9B1O8A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cBNSdYFTEeOzaYZM9B1O8A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cBNSdoFTEeOzaYZM9B1O8A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cBNSd4FTEeOzaYZM9B1O8A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cBNSeIFTEeOzaYZM9B1O8A" type="7018">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cBNShIFTEeOzaYZM9B1O8A" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cBNShYFTEeOzaYZM9B1O8A" key="showTitle" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cBNSeYFTEeOzaYZM9B1O8A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cBNSeoFTEeOzaYZM9B1O8A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cBNSe4FTEeOzaYZM9B1O8A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cBNSfIFTEeOzaYZM9B1O8A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cBNSfYFTEeOzaYZM9B1O8A" type="7019">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cBNShoFTEeOzaYZM9B1O8A" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cBNSh4FTEeOzaYZM9B1O8A" key="showTitle" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cBNSfoFTEeOzaYZM9B1O8A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cBNSf4FTEeOzaYZM9B1O8A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cBNSgIFTEeOzaYZM9B1O8A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cBNSgYFTEeOzaYZM9B1O8A"/>
+      </children>
+      <element xmi:type="uml:Class" href="modeltestReload.uml#_cBHL0IFTEeOzaYZM9B1O8A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cBNScYFTEeOzaYZM9B1O8A" x="233" y="186"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_bmNYgYFTEeOzaYZM9B1O8A"/>
+    <element xmi:type="uml:Model" href="modeltestReload.uml#_U7o64H_HEeOcKbF7eArARg"/>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_FbHH8IFWEeOVd594nsh1bA" type="PapyrusUMLClassDiagram" name="diagram4" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_GXaYIIFWEeOVd594nsh1bA" type="2008">
+      <children xmi:type="notation:DecorationNode" xmi:id="_GXaYIoFWEeOVd594nsh1bA" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GXaYI4FWEeOVd594nsh1bA" type="7017">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GXaYMoFWEeOVd594nsh1bA" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GXaYM4FWEeOVd594nsh1bA" key="showTitle" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GXaYJIFWEeOVd594nsh1bA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GXaYJYFWEeOVd594nsh1bA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GXaYJoFWEeOVd594nsh1bA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GXaYJ4FWEeOVd594nsh1bA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GXaYKIFWEeOVd594nsh1bA" type="7018">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GXaYNIFWEeOVd594nsh1bA" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GXaYNYFWEeOVd594nsh1bA" key="showTitle" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GXaYKYFWEeOVd594nsh1bA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GXaYKoFWEeOVd594nsh1bA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GXaYK4FWEeOVd594nsh1bA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GXaYLIFWEeOVd594nsh1bA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GXaYLYFWEeOVd594nsh1bA" type="7019">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GXaYNoFWEeOVd594nsh1bA" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GXaYN4FWEeOVd594nsh1bA" key="showTitle" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GXaYLoFWEeOVd594nsh1bA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GXaYL4FWEeOVd594nsh1bA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GXaYMIFWEeOVd594nsh1bA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GXaYMYFWEeOVd594nsh1bA"/>
+      </children>
+      <element xmi:type="uml:Class" href="modeltestReload.uml#_GXB9oIFWEeOVd594nsh1bA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GXaYIYFWEeOVd594nsh1bA" x="314" y="98"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_FbHH8YFWEeOVd594nsh1bA"/>
+    <element xmi:type="uml:Model" href="modeltestReload.uml#_U7o64H_HEeOcKbF7eArARg"/>
+  </notation:Diagram>
+</xmi:XMI>
diff --git a/layers/org.eclipse.papyrus.layers.integrationtests/models/modeltestReload.uml b/layers/org.eclipse.papyrus.layers.integrationtests/models/modeltestReload.uml
new file mode 100755
index 0000000..fe951d4
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.integrationtests/models/modeltestReload.uml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20110701" xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xmi:id="_U7o64H_HEeOcKbF7eArARg" name="model">
+  <packagedElement xmi:type="uml:Class" xmi:id="_V8q6EH_HEeOcKbF7eArARg" name="Class1"/>
+  <packagedElement xmi:type="uml:Class" xmi:id="_N6blAIFTEeOzaYZM9B1O8A" name="Class2"/>
+  <packagedElement xmi:type="uml:Class" xmi:id="_cBHL0IFTEeOzaYZM9B1O8A" name="Class3"/>
+  <packagedElement xmi:type="uml:Class" xmi:id="_GXB9oIFWEeOVd594nsh1bA" name="Class4"/>
+</uml:Model>
diff --git a/layers/org.eclipse.papyrus.layers.integrationtests/plugin.properties b/layers/org.eclipse.papyrus.layers.integrationtests/plugin.properties
new file mode 100755
index 0000000..c2ffb7c
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.integrationtests/plugin.properties
@@ -0,0 +1,12 @@
+#################################################################################
+# Copyright (c) 2014 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#     Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+##################################################################################
+pluginName=Layers Integration Tests (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/layers/org.eclipse.papyrus.layers.integrationtests/test/org/eclipse/papyrus/layers/integrationtests/LayersStateAfterReloadTest.java b/layers/org.eclipse.papyrus.layers.integrationtests/test/org/eclipse/papyrus/layers/integrationtests/LayersStateAfterReloadTest.java
new file mode 100755
index 0000000..ecd281a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.integrationtests/test/org/eclipse/papyrus/layers/integrationtests/LayersStateAfterReloadTest.java
@@ -0,0 +1,256 @@
+/*****************************************************************************
+ * Copyright (c) 2014 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.integrationtests;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.infra.core.resource.BadArgumentExcetion;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.core.resource.NotFoundException;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationUtils;
+import org.eclipse.papyrus.integrationtests.editor.DiagramCreator;
+import org.eclipse.papyrus.integrationtests.editor.EclipseProject;
+import org.eclipse.papyrus.integrationtests.editor.ExecutionException;
+import org.eclipse.papyrus.integrationtests.editor.ProgramaticPapyrusEditor;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerState;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+import org.junit.Test;
+
+
+/**
+ * Tests checking the states of the layers after a reload of the model.
+ * The state should normally be "ATTACHED".
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersStateAfterReloadTest {
+
+	/**
+	 * Name of the plugin that is created.
+	 */
+	final protected String PLUGIN_PROJECT_NAME = "org.eclipse.papyrus.layers.integrationtests.tests";
+
+	/**
+	 * Name of the bundle containing resources to copied.
+	 */
+	final protected String BUNDLE_NAME = "org.eclipse.papyrus.layers.integrationtests";
+
+	/**
+	 * Test method for
+	 * {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}
+	 * .
+	 *
+	 * @throws LayersException
+	 * @throws ServiceException
+	 * @throws BadArgumentExcetion
+	 * @throws NotFoundException
+	 * @throws ExecutionException
+	 */
+	@Test
+	public void testReloadLayer() throws LayersException, ServiceException, NotFoundException, BadArgumentExcetion, ExecutionException {
+		// Create requested objects
+		// Create Editor
+		String modelName = "models/modeltestReload";
+		String diagramName = "diagram1";
+
+
+		EclipseProject eclipseProject = new EclipseProject(PLUGIN_PROJECT_NAME);
+		eclipseProject.copyResources(BUNDLE_NAME, modelName + ".di", modelName + ".notation", modelName + ".uml");
+
+		ProgramaticPapyrusEditor editorHandler = new ProgramaticPapyrusEditor(eclipseProject, modelName);
+		DiagramCreator diagramCreator = new DiagramCreator(editorHandler);
+
+
+		// Get the diagram:
+		// First the ModelSet, then the NotationModel, then the diagram by its name
+		ModelSet modelSet = editorHandler.getServiceRegistry().getService(ModelSet.class);
+		NotationModel notationModel = NotationUtils.getNotationModel(modelSet);
+		Diagram diagram = notationModel.getDiagram(diagramName);
+
+		// Get the LayerStack for the Layer
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+		LayersStackApplication application = layersModel.getLayerStackApplication();
+		LayersStack owningStack = application.lookupLayersStackFor(diagram);
+
+		// Recover tree
+		TopLayerOperator rootLayer = (TopLayerOperator) owningStack.getLayers();
+		Layer layer1 = (Layer) rootLayer.getLayers().get(0);
+
+		// Assert
+		assertNotNull("stack found in diagram", owningStack);
+		assertSame("state attached", LayerState.ATTACHED, owningStack.getState());
+
+		assertNotNull("Layer created", layer1);
+		assertSame("state attached", LayerState.ATTACHED, layer1.getState());
+		assertSame("application set", application, layer1.getApplication());
+		assertSame("owningStack set", owningStack, layer1.getOwningLayersStack());
+		assertSame("parent set", rootLayer, layer1.eContainer());
+	}
+
+	/**
+	 * Test method for
+	 * {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createRegExpLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}
+	 * .
+	 *
+	 * @throws LayersException
+	 * @throws ExecutionException
+	 * @throws ServiceException
+	 * @throws BadArgumentExcetion
+	 * @throws NotFoundException
+	 */
+	@Test
+	public void testReloadRegExpLayer() throws LayersException, ExecutionException, ServiceException, NotFoundException, BadArgumentExcetion {
+		// Create requested objects
+		// Create Editor
+		String modelName = "models/modeltestReload";
+		String diagramName = "diagram2";
+
+
+		EclipseProject eclipseProject = new EclipseProject(PLUGIN_PROJECT_NAME);
+		eclipseProject.copyResources(BUNDLE_NAME, modelName + ".di", modelName + ".notation", modelName + ".uml");
+
+		ProgramaticPapyrusEditor editorHandler = new ProgramaticPapyrusEditor(eclipseProject, modelName);
+
+		// Get the diagram:
+		// First the ModelSet, then the NotationModel, then the diagram by its name
+		ModelSet modelSet = editorHandler.getServiceRegistry().getService(ModelSet.class);
+		NotationModel notationModel = NotationUtils.getNotationModel(modelSet);
+		Diagram diagram = notationModel.getDiagram(diagramName);
+
+		// Get the LayerStack for the Layer
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+		LayersStackApplication application = layersModel.getLayerStackApplication();
+		LayersStack owningStack = application.lookupLayersStackFor(diagram);
+
+		// Recover tree
+		TopLayerOperator rootLayer = (TopLayerOperator) owningStack.getLayers();
+		RegExpLayer layer1 = (RegExpLayer) rootLayer.getLayers().get(0);
+
+		// asserts
+		assertNotNull("Layer created", layer1);
+		assertSame("state attached", LayerState.ATTACHED, layer1.getState());
+		assertSame("application set", application, layer1.getApplication());
+		assertSame("owningStack set", owningStack, layer1.getOwningLayersStack());
+		assertSame("parent set", rootLayer, layer1.eContainer());
+	}
+
+	/**
+	 * Test method for
+	 * {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createTopLayerOperator(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}
+	 * .
+	 *
+	 * @throws LayersException
+	 * @throws ServiceException
+	 * @throws ExecutionException
+	 * @throws BadArgumentExcetion
+	 * @throws NotFoundException
+	 */
+	@Test
+	public void testReloadTopLayerOperator() throws LayersException, ServiceException, ExecutionException, NotFoundException, BadArgumentExcetion {
+		// Create requested objects
+		// Create Editor
+		String modelName = "models/modeltestReload";
+		String diagramName = "diagram3";
+
+
+		EclipseProject eclipseProject = new EclipseProject(PLUGIN_PROJECT_NAME);
+		eclipseProject.copyResources(BUNDLE_NAME, modelName + ".di", modelName + ".notation", modelName + ".uml");
+
+		ProgramaticPapyrusEditor editorHandler = new ProgramaticPapyrusEditor(eclipseProject, modelName);
+
+		// Get the diagram:
+		// First the ModelSet, then the NotationModel, then the diagram by its name
+		ModelSet modelSet = editorHandler.getServiceRegistry().getService(ModelSet.class);
+		NotationModel notationModel = NotationUtils.getNotationModel(modelSet);
+		Diagram diagram = notationModel.getDiagram(diagramName);
+
+		// Get the LayerStack for the Layer
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+		LayersStackApplication application = layersModel.getLayerStackApplication();
+		LayersStack owningStack = application.lookupLayersStackFor(diagram);
+
+		// Recover tree
+		TopLayerOperator rootLayer = (TopLayerOperator) owningStack.getLayers();
+		TopLayerOperator layer1 = (TopLayerOperator) rootLayer.getLayers().get(0);
+
+		// asserts
+		assertNotNull("Layer created", layer1);
+		assertSame("state attached", LayerState.ATTACHED, layer1.getState());
+		assertSame("application set", application, layer1.getApplication());
+		assertSame("owningStack set", owningStack, layer1.getOwningLayersStack());
+		assertSame("parent set", rootLayer, layer1.eContainer());
+	}
+
+	/**
+	 * Test method for
+	 * {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createStackedLayerOperator(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}
+	 * .
+	 *
+	 * @throws LayersException
+	 * @throws ExecutionException
+	 * @throws ServiceException
+	 * @throws BadArgumentExcetion
+	 * @throws NotFoundException
+	 */
+	@Test
+	public void testCreateStackedLayerOperator() throws LayersException, ExecutionException, ServiceException, NotFoundException, BadArgumentExcetion {
+		// Create requested objects
+		// Create Editor
+		String modelName = "models/modeltestReload";
+		String diagramName = "diagram4";
+
+
+		EclipseProject eclipseProject = new EclipseProject(PLUGIN_PROJECT_NAME);
+		eclipseProject.copyResources(BUNDLE_NAME, modelName + ".di", modelName + ".notation", modelName + ".uml");
+
+		ProgramaticPapyrusEditor editorHandler = new ProgramaticPapyrusEditor(eclipseProject, modelName);
+
+		// Get the diagram:
+		// First the ModelSet, then the NotationModel, then the diagram by its name
+		ModelSet modelSet = editorHandler.getServiceRegistry().getService(ModelSet.class);
+		NotationModel notationModel = NotationUtils.getNotationModel(modelSet);
+		Diagram diagram = notationModel.getDiagram(diagramName);
+
+		// Get the LayerStack for the Layer
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+		LayersStackApplication application = layersModel.getLayerStackApplication();
+		LayersStack owningStack = application.lookupLayersStackFor(diagram);
+
+		// Recover tree
+		TopLayerOperator rootLayer = (TopLayerOperator) owningStack.getLayers();
+		StackedLayerOperator layer1 = (StackedLayerOperator) rootLayer.getLayers().get(0);
+
+		// asserts
+		assertNotNull("Layer created", layer1);
+		assertSame("state attached", LayerState.ATTACHED, layer1.getState());
+		assertSame("application set", application, layer1.getApplication());
+		assertSame("owningStack set", owningStack, layer1.getOwningLayersStack());
+		assertSame("parent set", rootLayer, layer1.eContainer());
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.notationmodel.edit/.classpath b/layers/org.eclipse.papyrus.layers.notationmodel.edit/.classpath
new file mode 100755
index 0000000..ad32c83
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.notationmodel.edit/.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/layers/org.eclipse.papyrus.layers.notationmodel.edit/.project b/layers/org.eclipse.papyrus.layers.notationmodel.edit/.project
new file mode 100755
index 0000000..77f975a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.notationmodel.edit/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.layers.notationmodel.edit</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/layers/org.eclipse.papyrus.layers.notationmodel.edit/.settings/org.eclipse.jdt.core.prefs b/layers/org.eclipse.papyrus.layers.notationmodel.edit/.settings/org.eclipse.jdt.core.prefs
new file mode 100755
index 0000000..94d61f0
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.notationmodel.edit/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,291 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+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/layers/org.eclipse.papyrus.layers.notationmodel.edit/.settings/org.eclipse.jdt.ui.prefs b/layers/org.eclipse.papyrus.layers.notationmodel.edit/.settings/org.eclipse.jdt.ui.prefs
new file mode 100755
index 0000000..954281d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.notationmodel.edit/.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.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
+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 v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\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>
diff --git a/layers/org.eclipse.papyrus.layers.notationmodel.edit/META-INF/MANIFEST.MF b/layers/org.eclipse.papyrus.layers.notationmodel.edit/META-INF/MANIFEST.MF
new file mode 100755
index 0000000..55117ef
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.notationmodel.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.gmf.runtime.notation;bundle-version="1.5.0",
+ org.eclipse.gmf.runtime.notation.edit;bundle-version="1.4.0",
+ org.eclipse.emf.edit;bundle-version="2.9.0",
+ org.eclipse.emf.ecore.edit;bundle-version="2.8.0"
+Export-Package: org.eclipse.papyrus.layers.notationmodel.edit
+Bundle-Vendor: %providerName
+Bundle-ActivationPolicy: lazy
+Bundle-Version: 1.2.0.qualifier
+Bundle-Name: %pluginName
+Bundle-Localization: plugin
+Bundle-ManifestVersion: 2
+Bundle-Activator: org.eclipse.papyrus.layers.notationmodel.edit.Activator
+Bundle-SymbolicName: org.eclipse.papyrus.layers.notationmodel.edit;singleton:=true
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/layers/org.eclipse.papyrus.layers.notationmodel.edit/about.html b/layers/org.eclipse.papyrus.layers.notationmodel.edit/about.html
new file mode 100755
index 0000000..d35d5ae
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.notationmodel.edit/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>June 5, 2007</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
diff --git a/layers/org.eclipse.papyrus.layers.notationmodel.edit/build.properties b/layers/org.eclipse.papyrus.layers.notationmodel.edit/build.properties
new file mode 100755
index 0000000..cdd2db7
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.notationmodel.edit/build.properties
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               about.html,\
+               plugin.properties
+src.includes = about.html
diff --git a/layers/org.eclipse.papyrus.layers.notationmodel.edit/plugin.properties b/layers/org.eclipse.papyrus.layers.notationmodel.edit/plugin.properties
new file mode 100755
index 0000000..3357465
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.notationmodel.edit/plugin.properties
@@ -0,0 +1,12 @@
+#################################################################################
+# 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 v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#     Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+##################################################################################
+pluginName=Notation Model Providers for Layers (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/layers/org.eclipse.papyrus.layers.notationmodel.edit/pom.xml b/layers/org.eclipse.papyrus.layers.notationmodel.edit/pom.xml
new file mode 100755
index 0000000..dce02d1
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.notationmodel.edit/pom.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.papyrus</groupId>
+		<artifactId>org.eclipse.papyrus.layers.parent</artifactId>
+		<version>1.2.0-SNAPSHOT</version>
+	</parent>
+	<artifactId>org.eclipse.papyrus.layers.notationmodel.edit</artifactId>
+	<packaging>eclipse-plugin</packaging>
+</project>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/Activator.java b/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/Activator.java
new file mode 100755
index 0000000..bd52ef4
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/Activator.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.notationmodel.edit;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.eclipse.papyrus.layers.notationmodel.edit"; //$NON-NLS-1$
+
+	// The shared instance
+	private static Activator plugin;
+
+	/**
+	 * The constructor
+	 */
+	public Activator() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 *
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	@Override
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 *
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	@Override
+	public void stop(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/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/ConnectorItemProvider.java b/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/ConnectorItemProvider.java
new file mode 100755
index 0000000..784dd41
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/ConnectorItemProvider.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.notationmodel.edit;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.gmf.runtime.notation.Connector;
+
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class ConnectorItemProvider extends org.eclipse.gmf.runtime.notation.provider.ConnectorItemProvider {
+
+	protected AdapterFactory domainAdapterFactory;
+
+	/**
+	 * Constructor.
+	 *
+	 * @param adapterFactory
+	 */
+	public ConnectorItemProvider(AdapterFactory adapterFactory, AdapterFactory domainAdapterFactory) {
+		super(adapterFactory);
+		this.domainAdapterFactory = domainAdapterFactory;
+	}
+
+
+	/**
+	 * Return the text of the underlying UML element if any.
+	 *
+	 * @see org.eclipse.gmf.runtime.notation.provider.ShapeItemProvider#getText(java.lang.Object)
+	 *
+	 * @param object
+	 * @return
+	 */
+	@Override
+	public String getText(Object object) {
+
+		// System.err.println("getText()");
+		Connector shape = (Connector) object;
+
+		Object domainObject = shape.getElement();
+		if (domainObject != null) {
+			IItemLabelProvider nestedProvider = (IItemLabelProvider) domainAdapterFactory.adapt(domainObject, IItemLabelProvider.class);
+			if (nestedProvider != null) {
+				return nestedProvider.getText(domainObject);
+			}
+		}
+		return super.getText(object);
+	}
+
+
+	/**
+	 * Return the image of the underlying UML element if any.
+	 *
+	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#getImage(java.lang.String)
+	 *
+	 * @param key
+	 * @return
+	 */
+	@Override
+	public Object getImage(Object object) {
+		// System.err.println("getImage()");
+		Connector shape = (Connector) object;
+
+		Object domainObject = shape.getElement();
+		if (domainObject != null) {
+			IItemLabelProvider nestedProvider = (IItemLabelProvider) domainAdapterFactory.adapt(domainObject, IItemLabelProvider.class);
+			if (nestedProvider != null) {
+				return nestedProvider.getImage(domainObject);
+			}
+		}
+		return super.getImage(object);
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/DiagramItemProvider.java b/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/DiagramItemProvider.java
new file mode 100755
index 0000000..25d9d3a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/DiagramItemProvider.java
@@ -0,0 +1,80 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.notationmodel.edit;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.gmf.runtime.notation.Connector;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.Shape;
+import org.eclipse.gmf.runtime.notation.View;
+
+
+/**
+ * Custom Diagram Item provider
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class DiagramItemProvider extends org.eclipse.gmf.runtime.notation.provider.DiagramItemProvider {
+
+
+	protected AdapterFactory domainAdapterFactory;
+
+	/**
+	 * Constructor.
+	 *
+	 * @param adapterFactory
+	 * @param domainAdapterFactory
+	 */
+	public DiagramItemProvider(AdapterFactory adapterFactory, AdapterFactory domainAdapterFactory) {
+		super(adapterFactory);
+		this.adapterFactory = adapterFactory;
+	}
+
+	@Override
+	public Collection<?> getChildren(Object object) {
+		return getChildren(object);
+	}
+
+	@Override
+	public Collection<?> getElements(Object object) {
+
+		Diagram diagram = (Diagram) object;
+		if (diagram.getChildren().size() == 0) {
+			return Collections.emptyList();
+		}
+
+		// TODO: improve the implementation by using a view list or
+		// by having an internal shadow list
+		List<View> children = diagram.getChildren();
+		List<View> res = new ArrayList<View>();
+		for (View v : children) {
+			if (v instanceof Shape || v instanceof Connector) {
+				res.add(v);
+			}
+
+		}
+
+		List<View> edges = diagram.getEdges();
+		for (View v : edges) {
+			if (v instanceof Shape || v instanceof Connector) {
+				res.add(v);
+			}
+
+		}
+		return res;
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/NodeItemProvider.java b/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/NodeItemProvider.java
new file mode 100755
index 0000000..c6aa965
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/NodeItemProvider.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.notationmodel.edit;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.gmf.runtime.notation.Node;
+
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class NodeItemProvider extends org.eclipse.gmf.runtime.notation.provider.NodeItemProvider {
+
+	protected AdapterFactory domainAdapterFactory;
+
+	/**
+	 * Constructor.
+	 *
+	 * @param adapterFactory
+	 */
+	public NodeItemProvider(AdapterFactory adapterFactory, AdapterFactory domainAdapterFactory) {
+		super(adapterFactory);
+		this.domainAdapterFactory = domainAdapterFactory;
+	}
+
+
+	/**
+	 * Return the text of the underlying UML element if any.
+	 *
+	 * @see org.eclipse.gmf.runtime.notation.provider.ShapeItemProvider#getText(java.lang.Object)
+	 *
+	 * @param object
+	 * @return
+	 */
+	@Override
+	public String getText(Object object) {
+
+		// System.err.println("getText()");
+		Node shape = (Node) object;
+
+		Object domainObject = shape.getElement();
+		if (domainObject != null) {
+			IItemLabelProvider nestedProvider = (IItemLabelProvider) domainAdapterFactory.adapt(domainObject, IItemLabelProvider.class);
+			if (nestedProvider != null) {
+				return nestedProvider.getText(domainObject);
+			}
+		}
+		return super.getText(object);
+	}
+
+
+	/**
+	 * Return the image of the underlying UML element if any.
+	 *
+	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#getImage(java.lang.String)
+	 *
+	 * @param key
+	 * @return
+	 */
+	@Override
+	public Object getImage(Object object) {
+		// System.err.println("getImage()");
+		Node shape = (Node) object;
+
+		Object domainObject = shape.getElement();
+		if (domainObject != null) {
+			IItemLabelProvider nestedProvider = (IItemLabelProvider) domainAdapterFactory.adapt(domainObject, IItemLabelProvider.class);
+			if (nestedProvider != null) {
+				return nestedProvider.getImage(domainObject);
+			}
+		}
+		return super.getImage(object);
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/NotationItemProviderAdapterFactory.java b/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/NotationItemProviderAdapterFactory.java
new file mode 100755
index 0000000..6c10454
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/NotationItemProviderAdapterFactory.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.notationmodel.edit;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.AdapterFactory;
+
+/**
+ * A ProviderAdapterFactory for notations elements in Layers.
+ * The associated providers allows to render notation elements as UML elements.
+ *
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class NotationItemProviderAdapterFactory extends org.eclipse.gmf.runtime.notation.provider.NotationItemProviderAdapterFactory {
+
+
+	/**
+	 * The {@link AdapterFactory} to which some methods will delegate to show business
+	 * models.
+	 */
+	protected AdapterFactory domainAdapterFactory;
+
+	/**
+	 * Constructor.
+	 *
+	 * @param domainAdapterFactory
+	 */
+	public NotationItemProviderAdapterFactory(AdapterFactory domainAdapterFactory) {
+		this.domainAdapterFactory = domainAdapterFactory;
+	}
+
+	/**
+	 * Use our DiagramAdapter.
+	 *
+	 * @see org.eclipse.gmf.runtime.notation.provider.NotationItemProviderAdapterFactory#createDiagramAdapter()
+	 *
+	 * @return
+	 */
+	@Override
+	public Adapter createDiagramAdapter() {
+		if (diagramItemProvider == null) {
+			diagramItemProvider = new DiagramItemProvider(this, domainAdapterFactory);
+		}
+
+		return diagramItemProvider;
+	}
+
+	@Override
+	public Adapter createShapeAdapter() {
+		if (shapeItemProvider == null) {
+			shapeItemProvider = new ShapeItemProvider(this, domainAdapterFactory);
+		}
+
+		return shapeItemProvider;
+	}
+
+	@Override
+	public Adapter createConnectorAdapter() {
+		if (connectorItemProvider == null) {
+			connectorItemProvider = new ConnectorItemProvider(this, domainAdapterFactory);
+		}
+
+		return connectorItemProvider;
+	}
+
+	@Override
+	public Adapter createNodeAdapter() {
+		if (nodeItemProvider == null) {
+			nodeItemProvider = new NodeItemProvider(this, domainAdapterFactory);
+		}
+
+		return nodeItemProvider;
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/ShapeItemProvider.java b/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/ShapeItemProvider.java
new file mode 100755
index 0000000..36523b2
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.notationmodel.edit/src/org/eclipse/papyrus/layers/notationmodel/edit/ShapeItemProvider.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.notationmodel.edit;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.gmf.runtime.notation.Shape;
+
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class ShapeItemProvider extends org.eclipse.gmf.runtime.notation.provider.ShapeItemProvider {
+
+	protected AdapterFactory domainAdapterFactory;
+
+	/**
+	 * Constructor.
+	 *
+	 * @param adapterFactory
+	 */
+	public ShapeItemProvider(AdapterFactory adapterFactory, AdapterFactory domainAdapterFactory) {
+		super(adapterFactory);
+		this.domainAdapterFactory = domainAdapterFactory;
+	}
+
+
+	/**
+	 * Return the text of the underlying UML element if any.
+	 *
+	 * @see org.eclipse.gmf.runtime.notation.provider.ShapeItemProvider#getText(java.lang.Object)
+	 *
+	 * @param object
+	 * @return
+	 */
+	@Override
+	public String getText(Object object) {
+
+		// System.err.println("getText()");
+		Shape shape = (Shape) object;
+
+		Object domainObject = shape.getElement();
+		if (domainObject != null) {
+			IItemLabelProvider nestedProvider = (IItemLabelProvider) domainAdapterFactory.adapt(domainObject, IItemLabelProvider.class);
+			if (nestedProvider != null) {
+				return nestedProvider.getText(domainObject);
+			}
+		}
+		return super.getText(object);
+	}
+
+
+	/**
+	 * Return the image of the underlying UML element if any.
+	 *
+	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#getImage(java.lang.String)
+	 *
+	 * @param key
+	 * @return
+	 */
+	@Override
+	public Object getImage(Object object) {
+		// System.err.println("getImage()");
+		Shape shape = (Shape) object;
+
+		Object domainObject = shape.getElement();
+		if (domainObject != null) {
+			IItemLabelProvider nestedProvider = (IItemLabelProvider) domainAdapterFactory.adapt(domainObject, IItemLabelProvider.class);
+			if (nestedProvider != null) {
+				return nestedProvider.getImage(domainObject);
+			}
+		}
+		return super.getImage(object);
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/.classpath b/layers/org.eclipse.papyrus.layers.runtime/.classpath
new file mode 100755
index 0000000..3e28c6b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/.classpath
@@ -0,0 +1,8 @@
+<?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="src" path="tests"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/layers/org.eclipse.papyrus.layers.runtime/.project b/layers/org.eclipse.papyrus.layers.runtime/.project
new file mode 100755
index 0000000..d6085b8
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.layers.runtime</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/layers/org.eclipse.papyrus.layers.runtime/.settings/org.eclipse.jdt.core.prefs b/layers/org.eclipse.papyrus.layers.runtime/.settings/org.eclipse.jdt.core.prefs
new file mode 100755
index 0000000..94d61f0
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,291 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+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/layers/org.eclipse.papyrus.layers.runtime/.settings/org.eclipse.jdt.ui.prefs b/layers/org.eclipse.papyrus.layers.runtime/.settings/org.eclipse.jdt.ui.prefs
new file mode 100755
index 0000000..954281d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/.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.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
+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 v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\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>
diff --git a/layers/org.eclipse.papyrus.layers.runtime/META-INF/MANIFEST.MF b/layers/org.eclipse.papyrus.layers.runtime/META-INF/MANIFEST.MF
new file mode 100755
index 0000000..826c041
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/META-INF/MANIFEST.MF
@@ -0,0 +1,22 @@
+Manifest-Version: 1.0
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.papyrus.layers.stackmodel;bundle-version="1.2.0",
+ org.eclipse.emf.ecore;bundle-version="2.9.0",
+ org.junit,
+ org.eclipse.papyrus.infra.core;bundle-version="1.2.0",
+ org.eclipse.core.resources;bundle-version="3.8.100",
+ org.eclipse.papyrus.infra.gmfdiag.common;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0"
+Export-Package: org.eclipse.papyrus.layers.runtime,
+ org.eclipse.papyrus.layers.runtime.model,
+ org.eclipse.papyrus.layers.runtime.service,
+ org.eclipse.papyrus.layers.runtime.utils
+Bundle-Vendor: %providerName
+Bundle-ActivationPolicy: lazy
+Bundle-Version: 1.2.0.qualifier
+Bundle-Name: %pluginName
+Bundle-Localization: plugin
+Bundle-ManifestVersion: 2
+Bundle-Activator: org.eclipse.papyrus.layers.runtime.Activator
+Bundle-SymbolicName: org.eclipse.papyrus.layers.runtime;singleton:=true
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/layers/org.eclipse.papyrus.layers.runtime/about.html b/layers/org.eclipse.papyrus.layers.runtime/about.html
new file mode 100755
index 0000000..d35d5ae
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/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>June 5, 2007</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
diff --git a/layers/org.eclipse.papyrus.layers.runtime/build.properties b/layers/org.eclipse.papyrus.layers.runtime/build.properties
new file mode 100755
index 0000000..6c261b9
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/build.properties
@@ -0,0 +1,9 @@
+source.. = src/,\
+           tests/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               about.html,\
+               plugin.properties
+src.includes = about.html
diff --git a/layers/org.eclipse.papyrus.layers.runtime/plugin.properties b/layers/org.eclipse.papyrus.layers.runtime/plugin.properties
new file mode 100755
index 0000000..40e8e6d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/plugin.properties
@@ -0,0 +1,12 @@
+#################################################################################
+# 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 v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#     Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+##################################################################################
+pluginName=Layers Runtime (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/layers/org.eclipse.papyrus.layers.runtime/plugin.xml b/layers/org.eclipse.papyrus.layers.runtime/plugin.xml
new file mode 100755
index 0000000..3204582
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/plugin.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.papyrus.infra.core.model">
+      <model
+            classname="org.eclipse.papyrus.layers.runtime.model.LayersModel"
+            description="Model used by layers.">
+      </model>
+   </extension>
+   <extension
+         point="org.eclipse.papyrus.infra.core.service">
+      <service
+            classname="org.eclipse.papyrus.layers.runtime.service.LayersApplicationService"
+            description="Service for Layers"
+            priority="1"
+            startKind="startup">
+         <dependsOn
+               serviceKeyRef="org.eclipse.emf.transaction.TransactionalEditingDomain">
+         </dependsOn>
+         <dependsOn
+               serviceKeyRef="org.eclipse.papyrus.infra.core.resource.ModelSet">
+         </dependsOn>
+         <dependsOn
+               serviceKeyRef="org.eclipse.papyrus.infra.ui.editor.IMultiDiagramEditor">
+         </dependsOn>
+      </service>
+   </extension>
+
+</plugin>
diff --git a/layers/org.eclipse.papyrus.layers.runtime/pom.xml b/layers/org.eclipse.papyrus.layers.runtime/pom.xml
new file mode 100755
index 0000000..2083154
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/pom.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.papyrus</groupId>
+		<artifactId>org.eclipse.papyrus.layers.parent</artifactId>
+		<version>1.2.0-SNAPSHOT</version>
+	</parent>
+	<artifactId>org.eclipse.papyrus.layers.runtime</artifactId>
+	<packaging>eclipse-plugin</packaging>
+</project>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/Activator.java b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/Activator.java
new file mode 100755
index 0000000..3b56997
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/Activator.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.papyrus.infra.core.log.LogHelper;
+import org.osgi.framework.BundleContext;
+
+public class Activator extends Plugin {
+
+	private static BundleContext context;
+
+	/** Logging helper */
+	public static LogHelper log;
+
+	static BundleContext getContext() {
+		return context;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 *
+	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+	 */
+	@Override
+	public void start(BundleContext bundleContext) throws Exception {
+		Activator.context = bundleContext;
+		// register the login helper
+		log = new LogHelper(this);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 *
+	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+	 */
+	@Override
+	public void stop(BundleContext bundleContext) throws Exception {
+		Activator.context = null;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/ILayersModelEventListener.java b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/ILayersModelEventListener.java
new file mode 100755
index 0000000..0257b4d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/ILayersModelEventListener.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+
+
+/**
+ * Class implementing this interface can listen to event from a {@link LayersStack}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public interface ILayersModelEventListener {
+
+	/**
+	 * Method called when a value is added to one layer.
+	 * The vent contains: the layer, the property name, the new value.
+	 *
+	 * @param notification
+	 */
+	public void propertyValueAdded(Notification notification);
+
+	public void propertyValueRemoved(Notification notification);
+
+	public void propertyValueChanged(Notification notification);
+
+	/**
+	 * Method called when a layer is added to one layer.
+	 * The event contains: the layer.
+	 *
+	 * @param notification
+	 */
+	public void layerAdded(Notification notification);
+
+	public void layerRemoved(Notification notification);
+
+	public void layerMoved(Notification notification);
+
+	public void layerSet(Notification notification);
+
+	/**
+	 * Method called when a view is added to one layer.
+	 * The event contains: the layer, the view.
+	 *
+	 * @param notification
+	 */
+	public void viewAddedToLayer(Notification notification);
+
+	public void viewRemovedFromLayer(Notification notification);
+
+	public void multiViewsRemovedFromLayer(Notification notification);
+
+	public void multiViewsAddedToLayer(Notification notification);
+
+	/**
+	 * Method called when a view is moved from one layer to another.
+	 * The event contains: the layer, the view.
+	 * Warning : this handler is never called in the current implementation.
+	 *
+	 * @param notification
+	 */
+	public void viewMovedBetweenLayer(Notification notification);
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/ILayersStackApplicationEventListener.java b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/ILayersStackApplicationEventListener.java
new file mode 100755
index 0000000..f009c7f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/ILayersStackApplicationEventListener.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+
+/**
+ * Class implementing this interface can listen to event from a {@link LayersStackApplication}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public interface ILayersStackApplicationEventListener {
+
+	/**
+	 * Called by events when a {@link LayersStack} is added to the {@link LayersStackApplication}
+	 *
+	 * @param msg
+	 */
+	public void layerStackAdded(Notification msg);
+
+	/**
+	 * Called by events when a {@link LayersStack} is removed from the {@link LayersStackApplication}
+	 *
+	 * @param msg
+	 */
+	public void layerStackRemoved(Notification msg);
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/INotationDiagramRemovedEventListener.java b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/INotationDiagramRemovedEventListener.java
new file mode 100755
index 0000000..60a4ef6
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/INotationDiagramRemovedEventListener.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel;
+
+
+/**
+ * Class implementing this interface can listen to diagram removed event from a {@link Resource}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public interface INotationDiagramRemovedEventListener {
+
+	/**
+	 * Called by events when a {@link Diagram} is removed from the {@link NotationModel}
+	 *
+	 * @param msg
+	 */
+	public void diagramRemoved(Notification msg);
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayerStackApplicationSynchronizer.java b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayerStackApplicationSynchronizer.java
new file mode 100755
index 0000000..b406f95
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayerStackApplicationSynchronizer.java
@@ -0,0 +1,417 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import static org.eclipse.papyrus.layers.runtime.Activator.log;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel;
+import org.eclipse.papyrus.layers.runtime.model.ILayersModelRootEventListener;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.eclipse.papyrus.layers.runtime.model.LayersModelEventRootNotifier;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+
+/**
+ *
+ * Listen to:
+ * - LayerStack added
+ * - application added/removed in LayerModel
+ *
+ * <br>
+ * The class has an internal state machine with two states: ApplicationExist and NoApplication. <br>
+ * In the ApplicationExist state, the class listen to {@link LayersStack} added/removed and to the Diagrams deletion. <br>
+ * In the NoApplication state, the class listen on the LayerModel to be informed when the application is created.
+ * When application is created, we change the state to ApplicationExist.
+ *
+ * There is an UML sm diagram of this in architecture.di.
+ *
+ *
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayerStackApplicationSynchronizer implements ILayersModelRootEventListener, ILayersStackApplicationEventListener, INotationDiagramRemovedEventListener {
+
+	/**
+	 * States used in the state machine.
+	 */
+	protected enum State {
+		NoApplication, ApplicationCreated, disposed
+	};
+
+	protected State state;
+
+	protected LayersModel layersModel;
+	protected NotationModel notationModel;
+
+	/**
+	 * All registered synchronizers.
+	 */
+	protected Map<Diagram, LayerStackSynchronizer> synchronizers = new HashMap<Diagram, LayerStackSynchronizer>();
+
+	/**
+	 * Notifier on Diagram removed event.
+	 */
+	protected NotationDiagramRemovedFromResourceEventNotifier notationDiagramRemovedNotifier;
+
+	/**
+	 * Notifier on LayerSTackApplication events
+	 */
+	protected LayersStackApplicationEventNotifier layersStackApplicationEventNotifier;
+
+	/**
+	 * Notifier on {@link LayersModel} events.
+	 */
+	protected LayersModelEventRootNotifier layersModelEventRootNotifier;
+
+	/**
+	 * Constructor.
+	 *
+	 */
+	public LayerStackApplicationSynchronizer(LayersModel layersModel, NotationModel notationModel) {
+
+		this.layersModel = layersModel;
+		this.notationModel = notationModel;
+
+		initState();
+	}
+
+	/**
+	 * Init the state of the object
+	 */
+	private void initState() {
+
+		if (layersModel.lookupLayerStackApplication() != null) {
+			transitionInitToApplicationCreatedState();
+		}
+		else {
+			transitionInitToNoApplicationState();
+		}
+	}
+
+	/**
+	 * Initialize the class for the NoApplication state:
+	 * - listen on LayersModel notifiers for application creation
+	 */
+	private void transitionInitToApplicationCreatedState() {
+		activateLayersModelAndDiagramDeletionNotifiers();
+		activateLayersModelRootNotifier();
+		createSynchronizerForExistingStacks();
+		state = State.ApplicationCreated;
+	}
+
+	/**
+	 * Initialize the class for the NoApplication state:
+	 * - listen on LayersModel notifiers for application creation
+	 */
+	private void transitionNoApplicationToApplicationCreatedState() {
+		activateLayersModelAndDiagramDeletionNotifiers();
+		activateLayersModelRootNotifier();
+		state = State.ApplicationCreated;
+	}
+
+	/**
+	 * Initialize the class for the ApplicationCreated state:
+	 * - listen on appropriate notifiers
+	 * - check if some LayerStack are already there.
+	 */
+	private void transitionInitToNoApplicationState() {
+		activateLayersModelRootNotifier();
+		state = State.NoApplication;
+	}
+
+	/**
+	 * Initialize the class for the ApplicationCreated state:
+	 * - listen on appropriate notifiers
+	 * - check if some LayerStack are already there.
+	 */
+	private void transitionApplicationCreatedToNoApplicationState() {
+		deactivateLayersModelAndDiagramDeletionNotifiers();
+		state = State.NoApplication;
+	}
+
+	/**
+	 * Create synchronizer for already created stack.
+	 * The application object must exist.
+	 */
+	private void createSynchronizerForExistingStacks() {
+
+		LayersStackApplication application = layersModel.lookupLayerStackApplication();
+		if (application == null) {
+			// Application is not set, skip.
+			return;
+		}
+
+		for (LayersStack stack : application.getLayersStacks()) {
+			if (stack.getDiagram() != null) {
+				addLayerStackSynchronizer(stack);
+			}
+		}
+
+	}
+
+
+
+	/**
+	 * @return the synchronizers
+	 */
+	public Map<Diagram, LayerStackSynchronizer> getSynchronizers() {
+		return synchronizers;
+	}
+
+
+	/**
+	 * @return the layersModel
+	 */
+	public LayersModel getLayersModel() {
+		return layersModel;
+	}
+
+
+	/**
+	 * @return the notationModel
+	 */
+	public NotationModel getNotationModel() {
+		return notationModel;
+	}
+
+	/**
+	 * Activate the listeners.
+	 *
+	 */
+	protected void activate() {
+		initState();
+	}
+
+	/**
+	 * Activate the listeners.
+	 *
+	 */
+	private void activateLayersModelRootNotifier() {
+		/**
+		 * Listen on layersModel to be inform when the application object is created.
+		 * When it is created, we can listen on it.
+		 */
+
+		layersModelEventRootNotifier = new LayersModelEventRootNotifier(layersModel);
+		layersModelEventRootNotifier.addEventListener(this);
+	}
+
+
+	/**
+	 * Activate the listeners.
+	 *
+	 */
+	private void deactivateLayersModelRootNotifier() {
+		/**
+		 * Listen on layersModel to be inform when the application object is created.
+		 * When it is created, we can listen on it.
+		 */
+		if (layersModelEventRootNotifier != null) {
+			layersModelEventRootNotifier.removeEventListener(this);
+			layersModelEventRootNotifier = null;
+		}
+	}
+
+	/**
+	 * Deactivate the listeners.
+	 *
+	 */
+	private void activateLayersModelAndDiagramDeletionNotifiers() {
+		/**
+		 * Listen on layersModel to be inform when the application object is created.
+		 * When it is created, we can listen on it.
+		 */
+		notationDiagramRemovedNotifier = new NotationDiagramRemovedFromResourceEventNotifier(notationModel);
+		notationDiagramRemovedNotifier.addLayersModelEventListener(this);
+
+		layersStackApplicationEventNotifier = new LayersStackApplicationEventNotifier(layersModel);
+		layersStackApplicationEventNotifier.addLayersModelEventListener(this);
+	}
+
+	/**
+	 * Deactivate listeners
+	 */
+	protected void deactivateLayersModelAndDiagramDeletionNotifiers() {
+		if (notationDiagramRemovedNotifier != null) {
+			notationDiagramRemovedNotifier.removeLayersModelEventListener(this);
+			notationDiagramRemovedNotifier = null;
+		}
+
+		if (layersStackApplicationEventNotifier != null) {
+			layersStackApplicationEventNotifier.removeLayersModelEventListener(this);
+			layersStackApplicationEventNotifier = null;
+		}
+	}
+
+	/**
+	 * Deactivate listeners
+	 */
+	protected void deactivate() {
+		deactivateLayersModelAndDiagramDeletionNotifiers();
+		deactivateLayersModelRootNotifier();
+	}
+
+	/**
+	 * Dispose the synchronizer
+	 */
+	public void dispose() {
+		// Deactivate listeners
+		deactivate();
+		layersModel = null;
+		notationModel = null;
+		state = State.disposed;
+	}
+
+	/**
+	 * Return true if the object is disposed.
+	 *
+	 * @return
+	 */
+	protected boolean isDisposed() {
+		return state == State.disposed;
+	}
+
+	/**
+	 * Called by events when a {@link LayersStack} is added to the {@link LayersStackApplication}
+	 *
+	 * @param msg
+	 */
+	@Override
+	public void layerStackAdded(Notification msg) {
+
+		if (log.isDebugEnabled()) {
+			log.debug("LayerStackApplicationSynchronizer.layerStackAdded : " + msg.getNewValue());
+		}
+
+		// Find the LayerStack
+		LayersStack stack = LayersStackApplicationEventNotifier.getAddedLayerStack(msg);
+
+		addLayerStackSynchronizer(stack);
+	}
+
+
+	/**
+	 * Create and add a {@link LayerStackSynchronizer} for the stack.
+	 * Do nothing if the stack has already a synchronizer.
+	 *
+	 * @param stack
+	 */
+	private void addLayerStackSynchronizer(LayersStack stack) {
+		// Check if already exist
+		if (lookupLayersStackSynchronizer(stack.getDiagram()) != null) {
+			return;
+		}
+
+		// Create a new synchronizer
+		LayerStackSynchronizer layerStackSynchronizer = new LayerStackSynchronizer(stack);
+		putLayersStackSynchronizer(layerStackSynchronizer);
+	}
+
+	/**
+	 * Lookup a {@link LayerStackSynchronizer} by its diagram.
+	 *
+	 * @param diagram
+	 * @return
+	 */
+	protected LayerStackSynchronizer lookupLayersStackSynchronizer(Diagram diagram) {
+		return synchronizers.get(diagram);
+	}
+
+	/**
+	 * Lookup a {@link LayerStackSynchronizer} by its diagram.
+	 *
+	 * @param diagram
+	 * @return
+	 */
+	protected void putLayersStackSynchronizer(LayerStackSynchronizer layerStackSynchronizer) {
+
+		synchronizers.put(layerStackSynchronizer.getDiagram(), layerStackSynchronizer);
+	}
+
+
+	/**
+	 * Called by events when a {@link LayersStack} is removed from the {@link LayersStackApplication}
+	 *
+	 * @param msg
+	 */
+	@Override
+	public void layerStackRemoved(Notification msg) {
+		if (log.isDebugEnabled()) {
+			log.debug("LayerStack is removed" + msg.getOldValue());
+		}
+
+		// Find the LayerStack
+		LayersStack stack = LayersStackApplicationEventNotifier.getRemovedLayerStack(msg);
+
+		LayerStackSynchronizer synchronizer = synchronizers.remove(stack.getDiagram());
+		synchronizer.dispose();
+
+		// Also remove from application
+
+	}
+
+	/**
+	 * Called by events when a {@link Diagram} is removed from the {@link NotationModel}
+	 *
+	 * @param msg
+	 */
+	@Override
+	public void diagramRemoved(Notification msg) {
+
+		if (log.isDebugEnabled()) {
+			log.debug(this.getClass().getSimpleName() + ".diagramRemoved() - " + msg.getOldValue());
+		}
+
+		if (state != State.ApplicationCreated) {
+			return;
+		}
+
+		// Find the diagram
+		Diagram diagram = NotationDiagramRemovedFromResourceEventNotifier.getRemovedDiagram(msg);
+
+		// Remove from application
+		// This should in turn remove the LayerStackSynchronizer from
+		// this class (LayerStackApplicationSynchronizer).
+		getLayersModel().lookupLayerStackApplication().removeLayersStackFor(diagram);
+
+		// check if really removed from this object
+		LayerStackSynchronizer synchronizer = synchronizers.remove(diagram);
+		if (synchronizer != null) {
+			// Should not happen
+			log.info(this.getClass().getSimpleName() + ".diagramRemoved() - synchronizer not completly cleaned. Finish the job.");
+			synchronizer.dispose();
+		}
+	}
+
+
+	@Override
+	public void layersModelRootAdded(Notification msg) {
+		if (state == State.NoApplication) {
+			transitionNoApplicationToApplicationCreatedState();
+		}
+
+	}
+
+
+	@Override
+	public void layersModelRootRemoved(Notification msg) {
+		if (state == State.ApplicationCreated) {
+			transitionApplicationCreatedToNoApplicationState();
+		}
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayerStackSynchronizer.java b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayerStackSynchronizer.java
new file mode 100755
index 0000000..f07e0f1
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayerStackSynchronizer.java
@@ -0,0 +1,728 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import static org.eclipse.papyrus.layers.runtime.Activator.log;
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.BadStateException;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewEventNotifier;
+import org.eclipse.papyrus.layers.stackmodel.notifier.IDiagramViewEventListener;
+
+
+/**
+ * This class is used to synchronize the diagram's properties when something
+ * change in the LayerStack.
+ * It listen on events from {@link LayersStack} and {@link Diagram}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayerStackSynchronizer implements IDiagramViewEventListener, ILayersModelEventListener {
+
+	/**
+	 * The observed diagram.
+	 */
+	protected Diagram diagram;
+
+	/**
+	 * The observed LayerStack.
+	 */
+	protected LayersStack layersStack;
+
+	/**
+	 * The application object. Required by some methods. <br>
+	 * Method requiring this object must check it before any use,
+	 * as this object can be null.
+	 *
+	 */
+	protected LayersStackApplication application;
+
+	/**
+	 * The notifier of layer model events.
+	 */
+	protected LayersModelEventNotifier layersModelEventNotifier;
+
+	/**
+	 * The notifier of layer model events.
+	 */
+	protected DiagramViewEventNotifier diagramViewEventNotifier;
+
+	/**
+	 * Constructor.
+	 *
+	 * @param layersStack
+	 *            The layerStack to listen to. It should have an associated diagram.
+	 *
+	 */
+	public LayerStackSynchronizer(LayersStack layersStack) {
+		this.diagram = layersStack.getDiagram();
+		this.layersStack = layersStack;
+
+		// try to get the application object
+		// it is the container of the layerStack
+		application = (LayersStackApplication) layersStack.eContainer();
+
+
+		activate();
+		// System.err.println("LayerStackSynchronizer( " +diagram.getName()+ " ) started");
+	}
+
+
+
+	/**
+	 * @return the diagram
+	 */
+	public Diagram getDiagram() {
+		return diagram;
+	}
+
+
+
+	/**
+	 * @return the layersStack
+	 */
+	public LayersStack getLayersStack() {
+		return layersStack;
+	}
+
+
+
+	/**
+	 * Activate the listeners.
+	 *
+	 */
+	protected void activate() {
+
+		diagramViewEventNotifier = new DiagramViewEventNotifier(diagram);
+		diagramViewEventNotifier.addEventListener(this);
+
+		layersModelEventNotifier = new LayersModelEventNotifier(layersStack);
+		layersModelEventNotifier.addLayersModelEventListener(this);
+
+	}
+
+	/**
+	 * Deactivate listeners
+	 */
+	protected void deactivate() {
+		diagramViewEventNotifier.removeEventListener(this);
+		diagramViewEventNotifier = null;
+
+		layersModelEventNotifier.removeLayersModelEventListener(this);
+		layersModelEventNotifier = null;
+	}
+
+	/**
+	 * Dispose the synchronizer
+	 */
+	protected void dispose() {
+		// Deactivate listeners
+		deactivate();
+		diagramViewEventNotifier = null;
+		layersModelEventNotifier = null;
+	}
+
+	/**
+	 * Return true if the object is disposed.
+	 *
+	 * @return
+	 */
+	protected boolean isDisposed() {
+		return diagramViewEventNotifier == null;
+	}
+
+	/**
+	 * Check if the application object is not null.
+	 * Throw an exception if the application object is null. <br>
+	 * In normal use, the Application is the container of the LayerStack.
+	 * It is set in the constructor of this class.
+	 *
+	 * @throws BadStateException
+	 */
+	protected void checkApplication() throws BadStateException {
+		if (application == null) {
+			throw new BadStateException("Attempt to call a method requireing the 'application object, but the Application object is not set. You must provide a LayerStack contained in its Application.");
+		}
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#propertyValueAdded(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void propertyValueAdded(Notification notification) {
+
+		if (log.isDebugEnabled()) {
+			log.debug(this.getClass().getSimpleName() + ".propertyValueAdded " + notification.getNewValue());
+		}
+
+		PropertySetter setter = null;
+		try {
+			// Name of the property
+			String propertyName = LayersModelEventUtils.PropertyEvents.getPropertyNameFromValueAdd(notification);
+
+			// Need to recompute the associated views
+			AbstractLayer layer = LayersModelEventUtils.PropertyEvents.getAbstractLayer(notification);
+			List<View> views = layer.getViews();
+			if (views.size() == 0) {
+				return;
+			}
+
+			checkApplication();
+			Property property = application.getPropertyRegistry().getProperty(propertyName);
+
+			List<ComputePropertyValueCommand> commands = layersStack.getViewsComputePropertyValueCommand(views, property);
+
+			setter = application.getPropertySetterRegistry().getPropertySetter(property);
+
+			// Walk each view and set the property
+			for (int i = 0; i < views.size(); i++) {
+
+				// set the value from the provided cmds.
+				// Do it if the cmd is not null
+				if (commands != null && commands.get(i) != null) {
+					setter.setValue(views.get(i), commands.get(i).getCmdValue());
+				}
+				else {
+					log.info(this.getClass().getSimpleName() + "ERROR - a cmd is null " + commands);
+				}
+			}
+		} catch (NotFoundException e) {
+			log.error(e);
+		} catch (LayersException e) {
+			log.error(e);
+		} catch (UnsupportedOperationException e) {
+			// A setter or getter is not implemented
+			throw new UnsupportedOperationException("setter='" + setter.getClass().getName() + "'", e);
+		}
+	}
+
+
+
+	@Override
+	public void propertyValueRemoved(Notification notification) {
+		if (log.isDebugEnabled()) {
+			log.debug(this.getClass().getSimpleName() + ".propertyValueRemoved " + notification.getOldValue());
+		}
+
+		try {
+			// Name of the property
+			String propertyName = LayersModelEventUtils.PropertyEvents.getPropertyNameFromValueRemove(notification);
+
+			// Need to recompute the associated views
+			AbstractLayer layer = LayersModelEventUtils.PropertyEvents.getAbstractLayer(notification);
+			List<View> views = layer.getViews();
+			if (views.size() == 0) {
+				return;
+			}
+
+			checkApplication();
+			Property property = application.getPropertyRegistry().getProperty(propertyName);
+
+			List<ComputePropertyValueCommand> commands = layersStack.getViewsComputePropertyValueCommand(views, property);
+			if (commands == null) {
+				// no command
+				return;
+			}
+
+			PropertySetter setter = application.getPropertySetterRegistry().getPropertySetter(property);
+
+			// Walk each view and set the property
+			for (int i = 0; i < views.size(); i++) {
+				// A command can be null
+				ComputePropertyValueCommand cmd = commands.get(i).getCmdValue();
+				if (cmd != null) {
+					setter.setValue(views.get(i), cmd.getCmdValue());
+				}
+
+			}
+		} catch (NotFoundException e) {
+			log.error(e);
+		} catch (LayersException e) {
+			log.error(e);
+		}
+	}
+
+
+
+	@Override
+	public void propertyValueChanged(Notification notification) {
+		if (log.isDebugEnabled()) {
+			log.debug(this.getClass().getSimpleName() + ".propertyValueChanged " + notification.getNewValue());
+		}
+
+		// If LayerExpression::IsLayerEnabled() is changed, treat it separately.
+		if (notification.getFeature() == LayersPackage.eINSTANCE.getLayerExpression_IsLayerEnabled()) {
+			propertyValueChangedIsLayerEnabled(notification);
+			return;
+		}
+
+		// Here, this should be a regular property that is modified
+		try {
+			// Name of the property
+			String propertyName = LayersModelEventUtils.PropertyEvents.getPropertyNameFromValueSet(notification);
+
+			// Need to recompute the associated views
+			AbstractLayer layer = LayersModelEventUtils.PropertyEvents.getAbstractLayer(notification);
+			List<View> views = layer.getViews();
+			if (views.size() == 0) {
+				return;
+			}
+
+			checkApplication();
+			Property property = application.getPropertyRegistry().getProperty(propertyName);
+
+			List<ComputePropertyValueCommand> commands = layersStack.getViewsComputePropertyValueCommand(views, property);
+			if (commands == null) {
+				return;
+			}
+
+			PropertySetter setter = application.getPropertySetterRegistry().getPropertySetter(property);
+
+			// Walk each view and set the property
+			for (int i = 0; i < views.size(); i++) {
+				ComputePropertyValueCommand getValueCmd = commands.get(i);
+				if (getValueCmd != null) {
+					setter.setValue(views.get(i), getValueCmd.getCmdValue());
+				}
+			}
+		} catch (NotFoundException e) {
+			log.error(e);
+		} catch (LayersException e) {
+			log.error(e);
+		}
+	}
+
+
+
+	/**
+	 * The LayerExpression::IsLayerEnabled() is changed. Refresh views and properties of the layer.
+	 *
+	 *
+	 * @param notification
+	 */
+	private void propertyValueChangedIsLayerEnabled(Notification notification) {
+
+		if (log.isDebugEnabled()) {
+			log.debug(this.getClass().getSimpleName() + ".propertyValueChangedIsLayerEnabled " + notification.getNewValue());
+
+		}
+
+		try {
+
+			checkApplication();
+
+			// Extract the affected layer
+			// AbstractLayer layer = LayersModelEventUtils.PropertyEvents.getAbstractLayer(notification);
+			AbstractLayer layer = (AbstractLayer) notification.getNotifier();
+
+			recomputePropertiesForAllViewsOf(layer);
+		} catch (NotFoundException e) {
+			log.error(e);
+		} catch (LayersException e) {
+			log.error(e);
+		}
+	}
+
+
+
+	/**
+	 * Recompute the specified properties for the specified views.
+	 *
+	 * @param views
+	 * @param properties
+	 * @throws LayersException
+	 */
+	private void recompute(List<View> views, List<Property> properties) throws LayersException {
+
+		// Iterate on views
+		for (View view : views) {
+			recompute(view, properties);
+		}
+
+	}
+
+
+
+	/**
+	 * Recompute the specified properties for the specified view.
+	 *
+	 * @param view
+	 * @param properties
+	 * @throws LayersException
+	 */
+	private void recompute(View view, List<Property> properties) throws LayersException {
+
+		List<ComputePropertyValueCommand> commands = layersStack.getPropertiesComputePropertyValueCommand(view, properties);
+		if (commands == null) {
+			// No property to set
+			return;
+		}
+
+		PropertySetter setter;
+		// Walk each cmd and set the property
+		for (int i = 0; i < commands.size(); i++) {
+			try {
+				Property property = properties.get(i);
+				setter = application.getPropertySetterRegistry().getPropertySetter(property);
+				// Set the value only if we have a getter command.
+				ComputePropertyValueCommand getterCmd = commands.get(i);
+				if (getterCmd != null) {
+					setter.setValue(view, getterCmd.getCmdValue());
+				}
+
+			} catch (NotFoundException e) {
+				// No setter found
+				log.error(e);
+			} catch (NullPointerException e) {
+				// A command is null
+			}
+		}
+
+	}
+
+
+
+	@Override
+	public void layerAdded(Notification notification) {
+		if (log.isDebugEnabled()) {
+			log.debug(this.getClass().getSimpleName() + ".layerAdded() " + notification.getNewValue());
+		}
+
+		if (!(notification.getNewValue() instanceof AbstractLayer)) {
+			log.info("TODO: " + this.getClass().getSimpleName() + ".layerAdded() " + notification.getOldValue() + " - recompute for LayerOperator not implemented yet.");
+			;
+			return;
+		}
+
+		// Extract the affected layer
+		AbstractLayer layer = (AbstractLayer) notification.getNewValue();
+
+		try {
+			checkApplication();
+			recomputePropertiesForAllViewsOf(layer);
+		} catch (LayersException e) {
+			log.error(e);
+		}
+
+	}
+
+
+
+	@Override
+	public void layerRemoved(Notification notification) {
+		if (log.isDebugEnabled()) {
+			log.debug(this.getClass().getSimpleName() + " layerRemoved() " + notification.getOldValue());
+		}
+
+		if (!(notification.getOldValue() instanceof AbstractLayer)) {
+			log.info("TODO: " + this.getClass().getSimpleName() + ".layerRemoved() " + notification.getOldValue() + " - recompute() after removing layerOperator not implemented yet.");
+			;
+			return;
+		}
+		// Extract the affected layer
+		AbstractLayer layer = (AbstractLayer) notification.getOldValue();
+
+		try {
+			checkApplication();
+			recomputePropertiesForAllViewsOf(layer);
+		} catch (LayersException e) {
+			log.error(e);
+		}
+
+	}
+
+
+
+	/**
+	 * Recompute the properties of the views attached to the specified layers.
+	 *
+	 * @param layer
+	 * @throws LayersException
+	 */
+	private void recomputePropertiesForAllViewsOf(AbstractLayer layer) throws LayersException {
+		// We need the list of affected properties
+		List<Property> properties = layer.getAttachedProperties();
+
+		// We need the list of affected Views.
+		List<View> views = layer.getViews();
+		if (views.size() == 0) {
+			return;
+		}
+
+		// For each view, recompute the Properties
+		recompute(views, properties);
+	}
+
+
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#layerMoved(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void layerMoved(Notification notification) {
+		if (log.isDebugEnabled()) {
+			log.debug(this.getClass().getSimpleName() + " layerMoved(not tested) " + notification.getNewValue());
+		}
+
+		// Extract the affected layer
+		AbstractLayer layer = (AbstractLayer) notification.getNewValue();
+
+		try {
+			checkApplication();
+			recomputePropertiesForAllViewsOf(layer);
+		} catch (LayersException e) {
+			log.error(e);
+		}
+
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#layerSet(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void layerSet(Notification notification) {
+		log.info(this.getClass().getSimpleName() + " layerSet(not implemented) " + notification.getNewValue());
+
+	}
+
+
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#viewAddedToLayer(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void viewAddedToLayer(Notification notification) {
+
+		if (log.isDebugEnabled()) {
+			log.debug(this.getClass().getSimpleName() + " viewAddedToLayer( " + notification.getNewValue() + " )");
+		}
+
+		// We need to find the view, the layer in which it is added,
+		// and the properties attached to this layer.
+		// Then, we compute this property and set it to the view.
+		try {
+			AbstractLayer layer = LayersModelEventUtils.PropertyEvents.getAbstractLayer(notification);
+			View view = LayersModelEventUtils.ViewEvents.getViewAdded(notification);
+
+
+			checkApplication();
+			List<Property> properties = layer.getAttachedProperties();
+
+			List<ComputePropertyValueCommand> commands = layersStack.getPropertiesComputePropertyValueCommand(view, properties);
+			if (commands == null) {
+				// No property to set
+				return;
+			}
+
+			PropertySetter setter;
+			// Walk each cmd and set the property
+			for (int i = 0; i < commands.size(); i++) {
+				try {
+					Property property = properties.get(i);
+					setter = application.getPropertySetterRegistry().getPropertySetter(property);
+					setter.setValue(view, commands.get(i).getCmdValue());
+				} catch (NotFoundException e) {
+					// No setter found
+					log.error("No setter found", e);
+				} catch (NullPointerException e) {
+					// A command is null
+				}
+			}
+		} catch (LayersException e) {
+			log.error(e);
+		}
+	}
+
+
+	@Override
+	public void multiViewsAddedToLayer(Notification notification) {
+
+		if (log.isDebugEnabled()) {
+			log.debug(this.getClass().getSimpleName() + ".multiViewsAddedToLayer( " + notification.getNewValue() + " )");
+		}
+
+		// We need to find the view, the layer in which it is added,
+		// and the properties attached to this layer.
+		// Then, we compute this property and set it to the view.
+		try {
+			AbstractLayer layer = LayersModelEventUtils.PropertyEvents.getAbstractLayer(notification);
+			List<View> views = LayersModelEventUtils.ViewEvents.getViewsAdded(notification);
+
+			checkApplication();
+			List<Property> properties = layer.getAttachedProperties();
+			recompute(views, properties);
+
+		} catch (LayersException e) {
+			log.error(e);
+		}
+
+	}
+
+
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#viewRemovedFromLayer(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void viewRemovedFromLayer(Notification notification) {
+		if (log.isDebugEnabled()) {
+			log.debug(this.getClass().getSimpleName() + " viewRemovedFromLayer( " + notification.getOldValue() + " )");
+		}
+
+		// We need to find the view, the layer in which it is added,
+		// and the properties attached to this layer.
+		// Then, we compute this property and set it to the view.
+		try {
+			AbstractLayer layer = LayersModelEventUtils.PropertyEvents.getAbstractLayer(notification);
+			View view = LayersModelEventUtils.ViewEvents.getViewRemoved(notification);
+
+			checkApplication();
+			List<Property> properties = layer.getAttachedProperties();
+
+			List<ComputePropertyValueCommand> commands = layersStack.getPropertiesComputePropertyValueCommand(view, properties);
+			if (commands == null) {
+				// No property to set
+				return;
+			}
+
+			PropertySetter setter;
+			// Walk each cmd and set the property
+			for (int i = 0; i < commands.size(); i++) {
+				try {
+					Property property = properties.get(i);
+					setter = application.getPropertySetterRegistry().getPropertySetter(property);
+					setter.setValue(view, commands.get(i).getCmdValue());
+				} catch (NotFoundException e) {
+					// No setter found
+					log.error("No setter found", e);
+				} catch (NullPointerException e) {
+					// A command is null
+				}
+			}
+		} catch (LayersException e) {
+			// TODO Auto-generated catch block
+			log.error(e);
+		}
+	}
+
+	@Override
+	public void multiViewsRemovedFromLayer(Notification notification) {
+
+		if (log.isDebugEnabled()) {
+			log.debug(this.getClass().getSimpleName() + " multiViewsRemovedFromLayer( " + notification.getOldValue() + " )");
+		}
+
+		// We need to find the view, the layer in which it is added,
+		// and the properties attached to this layer.
+		// Then, we compute this property and set it to the view.
+		try {
+			AbstractLayer layer = LayersModelEventUtils.PropertyEvents.getAbstractLayer(notification);
+			List<View> views = LayersModelEventUtils.ViewEvents.getViewsRemoved(notification);
+
+			checkApplication();
+			List<Property> properties = layer.getAttachedProperties();
+			recompute(views, properties);
+
+		} catch (LayersException e) {
+			log.error(e);
+		}
+
+	}
+
+
+
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#viewMovedBetweenLayer(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void viewMovedBetweenLayer(Notification notification) {
+		log.info(this.getClass().getSimpleName() + " viewMovedBetweenLayer(not implemented) " + notification.getNewValue());
+
+	}
+
+
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.notifier.IDiagramViewEventListener#diagramViewAdded(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param msg
+	 */
+	@Override
+	public void diagramViewAdded(Notification msg) {
+		log.info(this.getClass().getSimpleName() + " diagramViewAdded(not implemented) " + msg.getNewValue());
+
+		// WARNING !!!
+		// Some filtering should be done on the event.
+		// When a View is removed, the event is sent for each of its parts. This
+		// result in multiple events receiving.
+		// Only events on Shape and Links are useful. So, we need to
+		// do some filtering (in the DiagramViewEventNotifier ?).
+	}
+
+
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.notifier.IDiagramViewEventListener#diagramViewRemoved(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param msg
+	 */
+	@Override
+	public void diagramViewRemoved(Notification msg) {
+		log.info(this.getClass().getSimpleName() + " diagramViewRemoved(not implemented) " + msg.getOldValue());
+
+		// WARNING !!!
+		// Some filtering should be done on the event.
+		// When a View is removed, the event is sent for each of its parts. This
+		// result in multiple events receiving.
+		// Only events on Shape and Links are useful. So, we need to
+		// do some filtering (in the DiagramViewEventNotifier ?).
+	}
+
+
+
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayersModelEventNotifier.java b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayersModelEventNotifier.java
new file mode 100755
index 0000000..95a026a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayersModelEventNotifier.java
@@ -0,0 +1,452 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import static org.eclipse.papyrus.layers.runtime.Activator.log;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToTypeInstanceMapImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.util.ECoreUtils;
+
+/**
+ * This class listen to a {@link LayersStack} and send event to listeners.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersModelEventNotifier {
+
+	/**
+	 * The observed {@link LayersStack}.
+	 */
+	protected LayersStack layersStack;
+
+	/**
+	 * List of listener to notify.
+	 */
+	protected List<ILayersModelEventListener> listeners = new ArrayList<ILayersModelEventListener>();
+
+	/**
+	 * listener on layers changes.
+	 *
+	 */
+	protected Adapter layersListener = new EContentAdapter() {
+
+		@Override
+		public void notifyChanged(Notification notification) {
+			if (log.isDebugEnabled()) {
+				log.debug(this.getClass().getSimpleName() + ".event received " + notification.getFeature());
+			}
+
+			// Self atttach
+			super.notifyChanged(notification);
+
+			// Check layers modification
+			// There is two sources: LayerOperator::layers and LayersStack::layers
+			if (notification.getFeature() == LayersPackage.eINSTANCE.getLayerOperator_Layers()
+					|| notification.getFeature() == LayersPackage.eINSTANCE.getLayersStack_Layers()) {
+				// LayerOperator::layers || LayersStack::layers
+				// check the event type.
+				switch (notification.getEventType()) {
+				case Notification.SET:
+					fireLayerSet(notification);
+					break;
+				case Notification.ADD:
+					// A layer is added
+					fireLayerAdded(notification);
+					break;
+				case Notification.REMOVE:
+					// A layer is removed
+					fireLayerRemoved(notification);
+					break;
+				case Notification.MOVE:
+					// A layer is moved
+					fireLayerMoved(notification);
+					break;
+				}
+			}
+			// Check view event
+			// View event can by fired by: AbstractLayer::views
+			else if (notification.getFeature() == LayersPackage.eINSTANCE.getAbstractLayer_Views()) {
+
+				// check the event type.
+				switch (notification.getEventType()) {
+				case Notification.ADD:
+					// A layer is added
+					// the concerned view
+					// View view = (View)notification.getNewValue();
+					// AbstractLayer layer = (AbstractLayer)notification.getNotifier()
+
+					fireViewAddedToLayer(notification);
+					break;
+				case Notification.ADD_MANY:
+					// A layer is added
+					// the concerned view
+					// View view = (View)notification.getNewValue();
+					// AbstractLayer layer = (AbstractLayer)notification.getNotifier()
+
+					fireMultiViewsAddedToLayer(notification);
+					break;
+				case Notification.REMOVE:
+					// A layer is removed
+					// the concerned view
+					// View view = (View)notification.getOldValue();
+					// AbstractLayer layer = (AbstractLayer)notification.getNotifier()
+
+					fireViewRemovedFromLayer(notification);
+					break;
+				case Notification.REMOVE_MANY:
+					// A layer is removed
+					// the concerned view
+					// View view = (View)notification.getOldValue();
+					// AbstractLayer layer = (AbstractLayer)notification.getNotifier()
+
+					fireMultiViewsRemovedFromLayer(notification);
+					break;
+				}
+
+			}
+			// Check instance addition/deletion
+			// instance event can by fired by: AbstractLayer::propertyValuesMap
+			else if (notification.getFeature() == LayersPackage.eINSTANCE.getAbstractLayer_PropertyValueMap()) {
+				// check the event type.
+				switch (notification.getEventType()) {
+				// case Notification.SET:
+				// {
+				// // A key is added
+				// break;
+				// }
+				// case Notification.UNSET:
+				// // A key is added
+				// break;
+				case Notification.ADD:
+				{
+					// An entry is added
+					StringToTypeInstanceMapImpl entry = (StringToTypeInstanceMapImpl) notification.getNewValue();
+					// System.out.println("ADD" + entry.getValue()
+					// + ", key=" + entry.getKey());
+					// Add the corresponding instance to propertyValues
+					// Layer layer = (Layer)notification.getNotifier();
+					// String propertyName = entry.getKey();
+					// TypeInstance propertyValue = (TypeInstance)entry.getValue();
+					firePropertyValueAddedEvent(notification);
+					break;
+				}
+				case Notification.REMOVE:
+				{
+					// An entry is removed
+					StringToTypeInstanceMapImpl entry = (StringToTypeInstanceMapImpl) notification.getOldValue();
+					// System.out.println("REMOVE" + entry.getValue()
+					// + ", key=" + entry.getKey());
+					// Add the corresponding instance to propertyValues
+					// Layer layer = (Layer)notification.getNotifier();
+					// String propertyName = entry.getKey();
+					// TypeInstance propertyValue = (TypeInstance)entry.getValue();
+					firePropertyValueRemoved(notification);
+					break;
+				}
+				default:
+					break;
+				}
+
+			}
+			// Check if the isLayerEnabled is modified
+			// sources: LayerExpression::IsLayerEnabled
+			else if (notification.getFeature() == LayersPackage.eINSTANCE.getLayerExpression_IsLayerEnabled()) {
+				firePropertyValueChanged(notification);
+			}
+
+			// Check property instance modification event
+			// instance change event can by fired by: any modification in a subclass of TypeInstance
+			else {
+				try {
+					// Lookup if the event comes from a type instance
+					TypeInstance ancestor = (TypeInstance) ECoreUtils.lookupAncestorOfType((EObject) notification.getNotifier(), LayersPackage.eINSTANCE.getTypeInstance());
+					// originating layer
+					AbstractLayer layer = (AbstractLayer) ECoreUtils.lookupAncestorOfType((EObject) notification.getNotifier(), LayersPackage.eINSTANCE.getAbstractLayer());
+					// or: layer = (AbstractLayer)ancestor.eContainer().eContainer().eContainer();
+					// StringToTypeInstanceMapImpl entry = (StringToTypeInstanceMapImpl)ancestor.eContainer();
+					// String propertyName = entry.getKey();
+					// TypeInstance propertyValue = (TypeInstance)entry.getValue();
+					//
+					// String propertyName
+					// check the event type.
+					switch (notification.getEventType()) {
+					case Notification.SET:
+						// An instance value is set
+						firePropertyValueChanged(notification);
+						break;
+					case Notification.ADD:
+						// An instance value is set
+						firePropertyValueChanged(notification);
+						break;
+					case Notification.REMOVE:
+						// An instance value is set
+						firePropertyValueChanged(notification);
+						break;
+					}
+				} catch (NotFoundException e) {
+					// lookupAncestorOfType() found nothing
+					// silently fail
+				}
+
+
+
+			}
+
+		}
+	};
+
+	/**
+	 * Constructor.
+	 *
+	 * @param layersStack
+	 *            The observed {@link LayersStack}.
+	 */
+	public LayersModelEventNotifier(LayersStack layersStack) {
+		this.layersStack = layersStack;
+		activate();
+	}
+
+	/**
+	 * setup the listeners.
+	 */
+	protected void activate() {
+		layersStack.eAdapters().add(layersListener);
+
+	}
+
+	/**
+	 * remove the listeners.
+	 */
+	protected void deactivate() {
+		layersStack.eAdapters().remove(layersListener);
+
+	}
+
+	/**
+	 * Dispose this object.
+	 */
+	public void dispose() {
+
+		deactivate();
+		listeners.clear();
+		layersListener = null;
+	}
+
+	/**
+	 * Return true if the object is disposed.
+	 *
+	 * @return
+	 */
+	public boolean isDisposed() {
+		return layersListener == null;
+	}
+
+	/**
+	 * Add the specified listener to the list of listener.
+	 * Do not add it if the listener is already in the list.
+	 *
+	 * @param listener
+	 */
+	public void addLayersModelEventListener(ILayersModelEventListener listener) {
+
+		if (listener == null) {
+			return;
+		}
+
+		// Check if exist
+		if (listeners.contains(listener)) {
+			return;
+		}
+
+		listeners.add(listener);
+	}
+
+	/**
+	 * Remove the specified listener from the list of listeners.
+	 *
+	 * @param listener
+	 */
+	public void removeLayersModelEventListener(ILayersModelEventListener listener) {
+
+		listeners.remove(listener);
+	}
+
+	/**
+	 * Method called when a value is added to one layer.
+	 * The vent contains: the layer, the property name, the new value.
+	 *
+	 * @param notification
+	 */
+	public void firePropertyValueAddedEvent(Notification notification) {
+
+		for (ILayersModelEventListener listener : listeners) {
+			listener.propertyValueAdded(notification);
+		}
+	}
+
+	/**
+	 * Method called when a value is removed from one layer.
+	 * The vent contains: the layer, the property name, the new value.
+	 *
+	 * @param notification
+	 */
+	public void firePropertyValueRemoved(Notification notification) {
+
+		for (ILayersModelEventListener listener : listeners) {
+			listener.propertyValueRemoved(notification);
+		}
+	}
+
+	/**
+	 * Method called when a value is changed in one layer.
+	 * The vent contains: the layer, the property name, the new value.
+	 *
+	 * @param notification
+	 */
+	public void firePropertyValueChanged(Notification notification) {
+
+		for (ILayersModelEventListener listener : listeners) {
+			listener.propertyValueChanged(notification);
+		}
+	}
+
+	/**
+	 * Method called when a layer is added to one layer.
+	 * The event contains: the layer.
+	 *
+	 * @param notification
+	 */
+	public void fireLayerSet(Notification notification) {
+
+		for (ILayersModelEventListener listener : listeners) {
+			listener.layerSet(notification);
+		}
+	}
+
+	/**
+	 * Method called when a layer is added to one layer.
+	 * The event contains: the layer.
+	 *
+	 * @param notification
+	 */
+	public void fireLayerAdded(Notification notification) {
+
+		for (ILayersModelEventListener listener : listeners) {
+			listener.layerAdded(notification);
+		}
+	}
+
+	/**
+	 * Method called when a layer is removed from one layer.
+	 * The event contains: the layer.
+	 *
+	 * @param notification
+	 */
+	public void fireLayerRemoved(Notification notification) {
+
+		for (ILayersModelEventListener listener : listeners) {
+			listener.layerRemoved(notification);
+		}
+	}
+
+	/**
+	 * Method called when a layer is moved in LayerStack.
+	 * The event contains: the layer.
+	 *
+	 * @param notification
+	 */
+	public void fireLayerMoved(Notification notification) {
+
+		for (ILayersModelEventListener listener : listeners) {
+			listener.layerMoved(notification);
+		}
+	}
+
+
+	/**
+	 * Method called when a view is added to one layer.
+	 * The event contains: the layer, the view.
+	 *
+	 * @param notification
+	 */
+	public void fireViewAddedToLayer(Notification notification) {
+
+		for (ILayersModelEventListener listener : listeners) {
+			listener.viewAddedToLayer(notification);
+		}
+	}
+
+	/**
+	 * Method called when a view is added to one layer.
+	 * The event contains: the layer, the view.
+	 *
+	 * @param notification
+	 */
+	public void fireMultiViewsAddedToLayer(Notification notification) {
+
+		for (ILayersModelEventListener listener : listeners) {
+			listener.multiViewsAddedToLayer(notification);
+		}
+	}
+
+	/**
+	 * Method called when a view is removed from one layer.
+	 * The event contains: the layer, the view.
+	 *
+	 * @param notification
+	 */
+	public void fireViewRemovedFromLayer(Notification notification) {
+
+		for (ILayersModelEventListener listener : listeners) {
+			listener.viewRemovedFromLayer(notification);
+		}
+	}
+
+	/**
+	 * Method called when a view is removed from one layer.
+	 * The event contains: the layer, the view.
+	 *
+	 * @param notification
+	 */
+	public void fireMultiViewsRemovedFromLayer(Notification notification) {
+
+		for (ILayersModelEventListener listener : listeners) {
+			listener.multiViewsRemovedFromLayer(notification);
+		}
+	}
+
+	/**
+	 * Method called when a view is moved from one layer to another layer.
+	 * The event contains: the layer, the view.
+	 *
+	 * @param notification
+	 */
+	public void fireViewMovedBetweenLayer(Notification notification) {
+
+		for (ILayersModelEventListener listener : listeners) {
+			listener.viewMovedBetweenLayer(notification);
+		}
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayersModelEventUtils.java b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayersModelEventUtils.java
new file mode 100755
index 0000000..2d008f3
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayersModelEventUtils.java
@@ -0,0 +1,136 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToTypeInstanceMapImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.util.ECoreUtils;
+
+
+/**
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersModelEventUtils {
+
+
+	static public class PropertyEvents {
+
+		/**
+		 * Get the abstract layer containing the notifier.
+		 *
+		 * @param notification
+		 * @return
+		 * @throws NotFoundException
+		 */
+		static public AbstractLayer getAbstractLayer(Notification notification) throws NotFoundException {
+			return (AbstractLayer) ECoreUtils.lookupAncestorOfType((EObject) notification.getNotifier(), LayersPackage.eINSTANCE.getAbstractLayer());
+		}
+
+		/**
+		 * Get the name of the property concerned by the event.
+		 *
+		 * @return
+		 */
+		static public String getPropertyNameFromValueAdd(Notification notification) {
+
+			StringToTypeInstanceMapImpl entry = (StringToTypeInstanceMapImpl) notification.getNewValue();
+			return entry.getKey();
+		}
+
+		/**
+		 * Get the name of the property concerned by the event.
+		 *
+		 * @return
+		 */
+		static public String getPropertyNameFromValueRemove(Notification notification) {
+
+			StringToTypeInstanceMapImpl entry = (StringToTypeInstanceMapImpl) notification.getOldValue();
+			return entry.getKey();
+		}
+
+		/**
+		 * Get the name of the property concerned by the event.
+		 *
+		 * @return
+		 * @throws NotFoundException
+		 */
+		static public String getPropertyNameFromValueSet(Notification notification) throws NotFoundException {
+
+			StringToTypeInstanceMapImpl entry = (StringToTypeInstanceMapImpl) ECoreUtils.lookupAncestorOfType((EObject) notification.getNotifier(), LayersPackage.eINSTANCE.getStringToTypeInstanceMap());
+			return entry.getKey();
+		}
+	}
+
+	/**
+	 *
+	 *
+	 */
+	static public class ViewEvents {
+
+		/**
+		 * Get the abstract layer containing the notifier.
+		 *
+		 * @param notification
+		 * @return
+		 * @throws NotFoundException
+		 */
+		static public AbstractLayer getAbstractLayer(Notification notification) throws NotFoundException {
+			return (AbstractLayer) notification.getNotifier();
+		}
+
+		/**
+		 * Get the view added to layer
+		 *
+		 * @param notification
+		 * @return
+		 * @throws NotFoundException
+		 */
+		static public View getViewAdded(Notification notification) throws NotFoundException {
+			return (View) notification.getNewValue();
+		}
+
+		/**
+		 * Get the view removed from layer
+		 *
+		 * @param notification
+		 * @return
+		 * @throws NotFoundException
+		 */
+		static public View getViewRemoved(Notification notification) throws NotFoundException {
+			return (View) notification.getOldValue();
+		}
+
+		/**
+		 * Get the views[*] that have been removed from the layer.
+		 *
+		 * @param notification
+		 * @return
+		 */
+		public static List<View> getViewsRemoved(Notification notification) {
+			return (List<View>) notification.getOldValue();
+		}
+
+		public static List<View> getViewsAdded(Notification notification) {
+			return (List<View>) notification.getNewValue();
+		}
+
+
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayersStackAndApplicationLifeCycleEventNotifier.java b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayersStackAndApplicationLifeCycleEventNotifier.java
new file mode 100755
index 0000000..0f620f9
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayersStackAndApplicationLifeCycleEventNotifier.java
@@ -0,0 +1,308 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.layers.runtime.model.ILayersModelRootEventListener;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.eclipse.papyrus.layers.runtime.model.LayersModelEventRootNotifier;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+
+/**
+ * This class is used to notify listeners of events on the LayerStack life cycle.
+ * The class require the {@link LayersModel} to register itself to appropriate objects.
+ * The class take care to check if the {@link LayersStackApplication} exist or not.
+ * So, it can be used in all cases, even if the {@link LayersStackApplication} is not
+ * created.
+ *
+ * The following events are fired:
+ * <ul>
+ * <li>LayerStack added</li>
+ * <li>LayerStack removed</li>
+ * </ul>
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersStackAndApplicationLifeCycleEventNotifier {
+
+	/**
+	 * States used in the state machine.
+	 */
+	protected enum State {
+		NoApplication, ApplicationCreated, disposed
+	};
+
+	protected State state;
+
+	protected LayersModel layersModel;
+
+	/**
+	 * Notifier on {@link LayersStack} life cycle events
+	 */
+	protected LayersStackApplicationEventNotifier layersStackApplicationEventNotifier;
+
+	/**
+	 * Notifier on {@link LayersStackApplication} life cycle events.
+	 */
+	protected LayersModelEventRootNotifier layersModelEventRootNotifier;
+
+	/**
+	 * Listener on {@link LayersStackApplication} life cycle events
+	 */
+	protected ILayersModelRootEventListener layersStackApplicationLifeCycleEventListener = new ILayersModelRootEventListener() {
+
+		@Override
+		public void layersModelRootRemoved(Notification msg) {
+			if (state == State.ApplicationCreated) {
+				transitionApplicationCreatedToNoApplicationState();
+			}
+		}
+
+		@Override
+		public void layersModelRootAdded(Notification msg) {
+			if (state == State.NoApplication) {
+				transitionNoApplicationToApplicationCreatedState();
+			}
+		}
+	};
+
+	/**
+	 * Constructor.
+	 *
+	 * @param layersModel
+	 */
+	public LayersStackAndApplicationLifeCycleEventNotifier(LayersModel layersModel) {
+		this.layersModel = layersModel;
+		createListeners();
+		initState();
+	}
+
+	/**
+	 * Init the state of the object
+	 */
+	private void initState() {
+
+		if (layersModel.lookupLayerStackApplication() != null) {
+			transitionInitToApplicationCreatedState();
+		}
+		else {
+			transitionInitToNoApplicationState();
+		}
+	}
+
+	/**
+	 * Initialize the class for the NoApplication state:
+	 * - listen on LayersModel notifiers for application creation
+	 */
+	private void transitionInitToApplicationCreatedState() {
+		activateLayersStackLifeCycleEventNotifier();
+		state = State.ApplicationCreated;
+	}
+
+	/**
+	 * Initialize the class for the ApplicationCreated state:
+	 * - listen on appropriate notifiers
+	 * - check if some LayerStack are already there.
+	 */
+	private void transitionInitToNoApplicationState() {
+		state = State.NoApplication;
+	}
+
+	/**
+	 * Initialize the class for the NoApplication state:
+	 * - listen on LayersModel notifiers for application creation
+	 */
+	private void transitionNoApplicationToApplicationCreatedState() {
+		activateLayersStackLifeCycleEventNotifier();
+		state = State.ApplicationCreated;
+	}
+
+	/**
+	 * Initialize the class for the ApplicationCreated state:
+	 * - listen on appropriate notifiers
+	 * - check if some LayerStack are already there.
+	 */
+	private void transitionApplicationCreatedToNoApplicationState() {
+		deactivateLayersStackLifeCycleEventNotifier();
+		state = State.NoApplication;
+	}
+
+
+	/**
+	 * Activate the notifier.
+	 *
+	 */
+	protected void activate() {
+		createListeners();
+	}
+
+	/**
+	 * Deactivate listeners
+	 */
+	protected void deactivate() {
+		deleteListeners();
+	}
+
+	/**
+	 * Dispose the synchronizer
+	 */
+	protected void dispose() {
+		// Deactivate listeners
+		deleteListeners();
+		layersModel = null;
+		state = State.disposed;
+	}
+
+	/**
+	 * Return true if the object is disposed.
+	 *
+	 * @return
+	 */
+	protected boolean isDisposed() {
+		return state == State.disposed;
+	}
+
+	/**
+	 * Activate the notifier.
+	 */
+	private void activateLayersStackLifeCycleEventNotifier() {
+		layersStackApplicationEventNotifier.activate();
+
+	}
+
+	/**
+	 * Deactivate the notifier.
+	 */
+	private void deactivateLayersStackLifeCycleEventNotifier() {
+		layersStackApplicationEventNotifier.deactivate();
+
+	}
+
+
+	/**
+	 * Create and activate internal listeners
+	 */
+	private void createListeners() {
+		createLayersModelAndDiagramDeletionNotifiers();
+		createLayersModelRootNotifier();
+	}
+
+	/**
+	 * Deactivate internal listeners
+	 */
+	private void deleteListeners() {
+		deleteLayersModelAndDiagramDeletionNotifiers();
+		deleteLayersModelRootNotifier();
+	}
+
+	/**
+	 * Activate the listeners.
+	 *
+	 */
+	private void createLayersModelRootNotifier() {
+		/**
+		 * Listen on layersModel to be inform when the application object is created.
+		 * When it is created, we can listen on it.
+		 */
+
+		layersModelEventRootNotifier = new LayersModelEventRootNotifier(layersModel);
+		layersModelEventRootNotifier.addEventListener(layersStackApplicationLifeCycleEventListener);
+	}
+
+
+	/**
+	 * Deactivate the listeners.
+	 *
+	 */
+	private void deleteLayersModelRootNotifier() {
+		/**
+		 * Listen on layersModel to be inform when the application object is created.
+		 * When it is created, we can listen on it.
+		 */
+		if (layersModelEventRootNotifier != null) {
+			layersModelEventRootNotifier.removeEventListener(layersStackApplicationLifeCycleEventListener);
+			layersModelEventRootNotifier.dispose();
+			layersModelEventRootNotifier = null;
+		}
+	}
+
+	/**
+	 * Activate the listeners.
+	 *
+	 */
+	private void createLayersModelAndDiagramDeletionNotifiers() {
+		/**
+		 * Listen on layersModel to be inform when the application object is created.
+		 * When it is created, we can listen on it.
+		 */
+		layersStackApplicationEventNotifier = new LayersStackApplicationEventNotifier(layersModel, false);
+		// layersStackApplicationEventNotifier.addLayersModelEventListener(layersStackLifeCycleEventListener);
+	}
+
+	/**
+	 * Deactivate listeners
+	 */
+	protected void deleteLayersModelAndDiagramDeletionNotifiers() {
+		if (layersStackApplicationEventNotifier != null) {
+			// layersStackApplicationEventNotifier.removeLayersModelEventListener(layersStackLifeCycleEventListener);
+			layersStackApplicationEventNotifier.dispose();
+			layersStackApplicationEventNotifier = null;
+		}
+	}
+
+
+	/**
+	 * Add the specified listener to the list of listener.
+	 * Do not add it if the listener is already in the list.
+	 *
+	 * @param listener
+	 */
+	public void addLayersModelEventListener(ILayersStackApplicationEventListener listener) {
+		// Add to the inner notifier
+		layersStackApplicationEventNotifier.addLayersModelEventListener(listener);
+	}
+
+	/**
+	 * Remove the specified listener from the list of listeners.
+	 *
+	 * @param listener
+	 */
+	public void removeLayersModelEventListener(ILayersStackApplicationEventListener listener) {
+
+		layersStackApplicationEventNotifier.removeLayersModelEventListener(listener);
+	}
+
+	/**
+	 * Add the specified listener to the list of listener.
+	 * Do not add it if the listener is already in the list.
+	 *
+	 * @param listener
+	 */
+	public void addLayersStackApplicationLifeCycleEventListener(ILayersModelRootEventListener listener) {
+		// Add to the inner notifier
+		layersModelEventRootNotifier.addEventListener(listener);
+	}
+
+	/**
+	 * Remove the specified listener from the list of listeners.
+	 *
+	 * @param listener
+	 */
+	public void removeLayersStackApplicationLifeCycleEventListener(ILayersModelRootEventListener listener) {
+
+		layersModelEventRootNotifier.removeEventListener(listener);
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayersStackApplicationEventNotifier.java b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayersStackApplicationEventNotifier.java
new file mode 100755
index 0000000..b863841
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/LayersStackApplicationEventNotifier.java
@@ -0,0 +1,216 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+
+/**
+ * This class listen to a {@link LayersStackApplication} and send following to listeners:
+ * <ul>
+ * <li>LayerStack added</li>
+ * <li>LayerStack removed</li>
+ * </ul>
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersStackApplicationEventNotifier {
+
+	protected LayersModel layersModel;
+
+	/**
+	 * List of listener to notify.
+	 */
+	protected List<ILayersStackApplicationEventListener> listeners = new ArrayList<ILayersStackApplicationEventListener>();
+
+	/**
+	 * listener on LayerStack events
+	 */
+	protected Adapter layerStackListener = new AdapterImpl() {
+		@Override
+		public void notifyChanged(Notification msg) {
+
+			switch (msg.getFeatureID(LayersStackApplication.class)) {
+			case LayersPackage.LAYERS_STACK_APPLICATION__LAYERS_STACKS:
+				switch (msg.getEventType()) {
+				case Notification.ADD:
+					// a layerStack is added to application
+					// layerStack = msg.getNewValue()
+					layerStackAdded(msg);
+					break;
+
+				case Notification.REMOVE:
+					// a layerStack is removed from application
+					// layerStack = msg.getOldValue()
+					layerStackRemoved(msg);
+					break;
+
+				default:
+					break;
+				}
+				break;
+			}
+			;
+		};
+	};
+
+	/**
+	 * Constructor.
+	 *
+	 * @param layersModel
+	 */
+	public LayersStackApplicationEventNotifier(LayersModel layersModel) {
+		this.layersModel = layersModel;
+		activate();
+	}
+
+	/**
+	 * Constructor.
+	 *
+	 * @param layersModel
+	 * @param activate
+	 *            True if the notifier should be activated immediately. False otherwise.
+	 */
+	public LayersStackApplicationEventNotifier(LayersModel layersModel, boolean activate) {
+		this.layersModel = layersModel;
+		if (activate) {
+			activate();
+		}
+	}
+
+	/**
+	 * Activate the listeners.
+	 *
+	 */
+	protected void activate() {
+		// Listen on LayerStackApplication for LayerStack creation
+		// TODO Avoid to create the application here. Listen on its creation
+		// and listen on it when created.
+
+		LayersStackApplication application = layersModel.getLayerStackApplication();
+
+		application.eAdapters().add(layerStackListener);
+	}
+
+	/**
+	 * Deactivate listeners
+	 */
+	protected void deactivate() {
+		// The application can be already deactivated (because we are in dispose()
+		// See bug 431121
+		LayersStackApplication application = layersModel.lookupLayerStackApplication();
+		if (application != null) {
+			application.eAdapters().remove(layerStackListener);
+		}
+	}
+
+	/**
+	 * Dispose the synchronizer
+	 */
+	protected void dispose() {
+		// Deactivate listeners
+		deactivate();
+		layersModel = null;
+	}
+
+	/**
+	 * Return true if the object is disposed.
+	 *
+	 * @return
+	 */
+	protected boolean isDisposed() {
+		return layersModel == null;
+	}
+
+	/**
+	 * Add the specified listener to the list of listener.
+	 * Do not add it if the listener is already in the list.
+	 *
+	 * @param listener
+	 */
+	public void addLayersModelEventListener(ILayersStackApplicationEventListener listener) {
+
+		if (listener == null) {
+			return;
+		}
+
+		// Check if exist
+		if (listeners.contains(listener)) {
+			return;
+		}
+
+		listeners.add(listener);
+	}
+
+	/**
+	 * Remove the specified listener from the list of listeners.
+	 *
+	 * @param listener
+	 */
+	public void removeLayersModelEventListener(ILayersStackApplicationEventListener listener) {
+
+		listeners.remove(listener);
+	}
+
+	/**
+	 * Called by events when a {@link LayersStack} is added to the {@link LayersStackApplication}
+	 *
+	 * @param msg
+	 */
+	protected void layerStackAdded(Notification msg) {
+		for (ILayersStackApplicationEventListener listener : listeners) {
+			listener.layerStackAdded(msg);
+		}
+	}
+
+	/**
+	 * Called by events when a {@link LayersStack} is removed from the {@link LayersStackApplication}
+	 *
+	 * @param msg
+	 */
+	protected void layerStackRemoved(Notification msg) {
+		for (ILayersStackApplicationEventListener listener : listeners) {
+			listener.layerStackRemoved(msg);
+		}
+	}
+
+	/**
+	 * Utility method returning the layer stack in case of addedLayer event.
+	 *
+	 * @param msg
+	 * @return
+	 */
+	public static LayersStack getAddedLayerStack(Notification msg) {
+		return (LayersStack) msg.getNewValue();
+	}
+
+	/**
+	 * Utility method returning the layer stack in case of removeLayer event.
+	 *
+	 * @param msg
+	 * @return
+	 */
+	public static LayersStack getRemovedLayerStack(Notification msg) {
+		return (LayersStack) msg.getOldValue();
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/NotationDiagramHelper.java b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/NotationDiagramHelper.java
new file mode 100755
index 0000000..8b1fa89
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/NotationDiagramHelper.java
@@ -0,0 +1,207 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+
+/**
+ * This class manage a notation.Diagram. It allows to :
+ * <ul>
+ * <li>Add or remove a LayersStack</li>
+ * <li>get the LayersStackMngr if a LayersStack exist.</li>
+ * </ul>
+ *
+ * @author Cedric dumoulin
+ *
+ */
+public class NotationDiagramHelper {
+
+	/**
+	 * Associated Diagram.
+	 */
+	protected Diagram diagram;
+
+	/**
+	 * Layers model.
+	 */
+	protected LayersModel layersModel;
+
+	protected LayersStackApplication layersApplication;
+
+	// /**
+	// * The associated {@link LayersStackMngr}. Maybe null if no LayersStack is associated.
+	// */
+	// protected LayersStackMngr layerStackMngr;
+	//
+	// /**
+	// * Notifier sending event when the layerStack is added or removed.
+	// */
+	// private LayersStackAttachedNotifier layerStackAttachedNotifier;
+
+	// /**
+	// * Listen on events from the layerStackAttachedNotifier.
+	// */
+	// private LayersStackAttachedListener layerStackAttachedListener = new LayersStackAttachedListener() {
+	//
+	// public void layerStackRemoved(LayersStackAttachedEvent event) {
+	// layerStackMngr.dispose();
+	// layerStackMngr = null;
+	// }
+	//
+	// public void layerStackAttached(LayersStackAttachedEvent event) {
+	//
+	// if(layerStackMngr != null)
+	// {
+	// layerStackMngr.dispose();
+	// layerStackMngr = null;
+	// }
+	//
+	// layerStackMngr = new LayersStackMngr(event.getLayersStack());
+	// }
+	//
+	// public void diagramChanged(LayersStackAttachedEvent event) {
+	// // Not used because diagram is never set.
+	// if(layerStackMngr != null)
+	// {
+	// layerStackMngr.dispose();
+	// layerStackMngr = null;
+	// }
+	//
+	// layerStackMngr = new LayersStackMngr(event.getLayersStack());
+	//
+	// }
+	// };
+
+	/**
+	 * Constructor.
+	 * Construct the manager and initialize it.
+	 *
+	 * @param layersModel
+	 *
+	 */
+	public NotationDiagramHelper(LayersModel layersModel, Diagram diagram) {
+		this.diagram = diagram;
+		this.layersModel = layersModel;
+
+		// // Set the layerStackMngr if necessary
+		// LayersStack layerStack = LayersStackUtil.getInstance().lookupLayersStack(diagram);
+		// if(layerStack != null) {
+		// layerStackMngr = new LayersStackMngr(layerStack);
+		// }
+		//
+		// // Set the listeners on changes
+		// layerStackAttachedNotifier = new LayersStackAttachedNotifier(diagram);
+		// layerStackAttachedNotifier.addLayersStackAttachedEventListener(layerStackAttachedListener);
+
+		activate();
+	}
+
+	/**
+	 * Activate the manager.
+	 */
+	public void activate() {
+		// layerStackAttachedNotifier.activate();
+	}
+
+	/**
+	 * Deactivate the manager.
+	 */
+	public void deactivate() {
+		// layerStackAttachedNotifier.deactivate();
+	}
+
+	/**
+	 * Dispose all resources.
+	 */
+	public void dispose() {
+		// layerStackAttachedNotifier.deactivate();
+
+		diagram = null;
+	}
+
+
+	/**
+	 * @return the diagram
+	 */
+	public Diagram getDiagram() {
+		return diagram;
+	}
+
+
+	// /**
+	// * Return the {@link LayersStackMngr} if any. Throw an
+	// * @return the layerStackMngr
+	// * @throws NotSetException If the layerStackMngr is not set.
+	// */
+	// public LayersStackMngr getLayersStackMngr() throws NotSetException {
+	//
+	// if(layerStackMngr == null)
+	// throw new NotSetException(this.getClass().getSimpleName() + ".getLayersStackMngr(): layerStackMngr is not set.");
+	//
+	// return layerStackMngr;
+	// }
+
+	/**
+	 * Attach the {@link LayersStack} to the diagram.
+	 * Do nothing if a LayersStack is already attached.
+	 */
+	public void attachLayersStack() {
+
+		LayersStackApplication application = layersModel.getLayerStackApplication();
+		application.getLayersStackFor(diagram);
+	}
+
+	/**
+	 * detach the {@link LayersStack} from the diagram.
+	 * Do nothing if no LayersStack is attached.
+	 */
+	public void removeLayersStack() {
+		LayersStackApplication application = layersModel.getLayerStackApplication();
+		application.removeLayersStackFor(diagram);
+	}
+
+	/**
+	 * Return True if a {@link LayersStack} is attached to the diagram.
+	 *
+	 * @return True if a {@link LayersStack} is attached to the diagram.
+	 */
+	public boolean isLayersStackAttached() {
+		LayersStackApplication application = layersModel.lookupLayerStackApplication();
+		if (application == null) {
+			return false;
+		}
+		return application.isLayersStackAttachedFor(diagram);
+	}
+
+	// /**
+	// * Add a listener for the {@link LayersStackActivatedEvent}.
+	// *
+	// * @param listener
+	// */
+	// public void addLayersStackAttachedEventListener(LayersStackAttachedListener listener) {
+	// layerStackAttachedNotifier.addLayersStackAttachedEventListener(listener);
+	// }
+	//
+	// /**
+	// * Remove a listener for the {@link LayersStackActivatedEvent}.
+	// *
+	// * @param listener
+	// */
+	// public void removeLayersStackAttachedEventListener(LayersStackAttachedListener listener) {
+	// layerStackAttachedNotifier.removeLayersStackAttachedEventListener(listener);
+	// }
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/NotationDiagramRemovedFromResourceEventNotifier.java b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/NotationDiagramRemovedFromResourceEventNotifier.java
new file mode 100755
index 0000000..bdb3df2
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/NotationDiagramRemovedFromResourceEventNotifier.java
@@ -0,0 +1,167 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+
+/**
+ * This class listen to a {@link Resource} and send following events to listeners:
+ * <ul>
+ * <li>diagram removed</li>
+ * </ul>
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class NotationDiagramRemovedFromResourceEventNotifier {
+
+	protected NotationModel notationModel;
+
+	/**
+	 * List of listener to notify.
+	 */
+	protected List<INotationDiagramRemovedEventListener> listeners = new ArrayList<INotationDiagramRemovedEventListener>();
+
+	protected Adapter notationDiagramRemovedListener = new AdapterImpl() {
+		@Override
+		public void notifyChanged(Notification msg) {
+
+			// TODO When a Resource is unloaded, each diagram is removed and a corresponding event is fired.
+			// We need to separate event from a regular removal (user choose to remove a diagram) from events
+			// event fired by 'resource.unload()' (to be done).
+			if (msg.getEventType() == Notification.REMOVE
+					&& msg.getNotifier() instanceof Resource
+					&& msg.getOldValue() instanceof Diagram) {
+				// A diagram is removed from its resource
+				// System.err.println("Resource notified. Feature=" + msg.getFeature()
+				// + ", type="+ msg.getEventType()
+				// + ", newValue=" + msg.getNewValue()
+				// + ", oldValue=" + msg.getOldValue());
+				Resource resource = (Resource) msg.getNotifier();
+				// Fire event only if resource is loaded. This should avoid firing event when the
+				// diagram is removed because the resource is unloading.
+				if (resource.isLoaded()) {
+					fireDiagramRemovedEvent(msg);
+				}
+			}
+		};
+
+	};
+
+	/**
+	 * Constructor.
+	 *
+	 * @param layersModel
+	 */
+	public NotationDiagramRemovedFromResourceEventNotifier(NotationModel notationModel) {
+		this.notationModel = notationModel;
+		activate();
+	}
+
+	/**
+	 * Activate the listeners.
+	 *
+	 */
+	protected void activate() {
+		// Listen on diagram removed events
+		notationModel.getResource().eAdapters().add(notationDiagramRemovedListener);
+	}
+
+	/**
+	 * Deactivate listeners
+	 */
+	protected void deactivate() {
+		// Listen on diagram removed events
+		notationModel.getResource().eAdapters().remove(notationDiagramRemovedListener);
+	}
+
+	/**
+	 * Dispose the synchronizer
+	 */
+	protected void dispose() {
+		// Deactivate listeners
+		deactivate();
+		notationModel = null;
+	}
+
+	/**
+	 * Return true if the object is disposed.
+	 *
+	 * @return
+	 */
+	protected boolean isDisposed() {
+		return notationModel == null;
+	}
+
+	/**
+	 * Add the specified listener to the list of listener.
+	 * Do not add it if the listener is already in the list.
+	 *
+	 * @param listener
+	 */
+	public void addLayersModelEventListener(INotationDiagramRemovedEventListener listener) {
+
+		if (listener == null) {
+			return;
+		}
+
+		// Check if exist
+		if (listeners.contains(listener)) {
+			return;
+		}
+
+		listeners.add(listener);
+	}
+
+	/**
+	 * Remove the specified listener from the list of listeners.
+	 *
+	 * @param listener
+	 */
+	public void removeLayersModelEventListener(INotationDiagramRemovedEventListener listener) {
+
+		listeners.remove(listener);
+	}
+
+	/**
+	 * Called by events when a {@link LayersStack} is added to the {@link LayersStackApplication}
+	 *
+	 * @param msg
+	 */
+	protected void fireDiagramRemovedEvent(Notification msg) {
+		for (INotationDiagramRemovedEventListener listener : listeners) {
+			listener.diagramRemoved(msg);
+		}
+	}
+
+	/**
+	 * Get the removed diagram in case of diagramRemoved event
+	 *
+	 * @param msg
+	 * @return
+	 */
+	public static Diagram getRemovedDiagram(Notification msg) {
+		return (Diagram) msg.getOldValue();
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/model/ILayersModelRootEventListener.java b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/model/ILayersModelRootEventListener.java
new file mode 100755
index 0000000..8710ea8
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/model/ILayersModelRootEventListener.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime.model;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+
+/**
+ * Class implementing this interface can listen to event from a {@link LayersStackApplication}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public interface ILayersModelRootEventListener {
+
+	/**
+	 * Called by events when a root of type {@link LayersStackApplication} is added to the {@link LayersModel} elements.
+	 *
+	 * @param msg
+	 */
+	public void layersModelRootAdded(Notification msg);
+
+	/**
+	 * Called by events when a root of type {@link LayersStackApplication} is removed from the {@link Diagram} or one of its contained
+	 * elements.
+	 *
+	 * @param msg
+	 */
+	public void layersModelRootRemoved(Notification msg);
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/model/LayersModel.java b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/model/LayersModel.java
new file mode 100755
index 0000000..c24ee8a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/model/LayersModel.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime.model;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.infra.core.resource.AbstractModelWithSharedResource;
+import org.eclipse.papyrus.layers.runtime.LayersStackAndApplicationLifeCycleEventNotifier;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+
+/**
+ * This class declare the model used by the layer.
+ * This model is registered to Papyrus core ModelSet which take care to load the
+ * corresponding EMF resource.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersModel extends AbstractModelWithSharedResource<LayersStackApplication> {
+
+	/**
+	 * File extension used for notation.
+	 */
+	public static final String MODEL_FILE_EXTENSION = "di"; //$NON-NLS-1$
+
+	/**
+	 * Model ID.
+	 */
+	public static final String MODEL_ID = "org.eclipse.papyrus.layers.runtime.model.LayersModel"; //$NON-NLS-1$
+
+	/**
+	 * Identifier used to retrieve the model from the ModelManager
+	 *
+	 * @see org.eclipse.papyrus.infra.core.resource.AbstractBaseModel#getIdentifier()
+	 *
+	 * @return
+	 */
+	@Override
+	public String getIdentifier() {
+		return MODEL_ID;
+	}
+
+	/**
+	 * Get the extension used for TraceModel resources
+	 *
+	 * @see org.eclipse.papyrus.infra.core.resource.AbstractBaseModel#getModelFileExtension()
+	 *
+	 * @return
+	 */
+	@Override
+	protected String getModelFileExtension() {
+		return MODEL_FILE_EXTENSION;
+	}
+
+	/**
+	 * Return true if the provided object is a root of the model, false otherwise.
+	 * This method should be implemented by subclasses.
+	 *
+	 * @param object
+	 * @return
+	 */
+	@Override
+	protected boolean isModelRoot(EObject object) {
+		return object instanceof LayersStackApplication;
+	}
+
+	/**
+	 * Lookup for the {@link LayersStackApplication} instance
+	 *
+	 * @return the {@link LayersStackApplication} or null if not found.
+	 */
+	public LayersStackApplication lookupLayerStackApplication() {
+
+		return getModelRoot();
+	}
+
+	/**
+	 * Get the {@link LayersStackApplication} object. Create it if not found.
+	 *
+	 * @return
+	 */
+	public LayersStackApplication getLayerStackApplication() {
+		LayersStackApplication application = getModelRoot();
+		if (application != null) {
+			return application;
+		}
+		// Not found, create it
+		application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		addModelRoot(application);
+
+		return application;
+	}
+
+	/**
+	 * Remove the specified application from the model.
+	 *
+	 * @param application
+	 */
+	public void removeRoot(LayersStackApplication application) {
+		getResource().getContents().remove(application);
+
+	}
+
+	private LayersStackAndApplicationLifeCycleEventNotifier layersStackAndApplicationLifeCycleEventNotifier = null;
+
+	/**
+	 * Get the associated {@link LayersStackAndApplicationLifeCycleEventNotifier}.
+	 * There is only one such notifier associated to the model.
+	 *
+	 * @return
+	 */
+	public LayersStackAndApplicationLifeCycleEventNotifier getLayersStackLifeCycleEventNotifier() {
+
+
+		// TODO Use an adapter to share a single instance in the model itself.
+		if (layersStackAndApplicationLifeCycleEventNotifier == null) {
+			// Create it
+			layersStackAndApplicationLifeCycleEventNotifier = new LayersStackAndApplicationLifeCycleEventNotifier(this);
+		}
+
+		return layersStackAndApplicationLifeCycleEventNotifier;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/model/LayersModelEventRootNotifier.java b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/model/LayersModelEventRootNotifier.java
new file mode 100755
index 0000000..f01e0cb
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/model/LayersModelEventRootNotifier.java
@@ -0,0 +1,180 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+
+/**
+ * This class listen to a {@link LayersModel} and send following events to listeners:
+ * <ul>
+ * <li>root of type {@link LayersStackApplication} added</li>
+ * <li>root of type {@link LayersStackApplication} removed</li>
+ * </ul>
+ *
+ * @author cedric dumoulin
+ *         TODO Rename to LayersStackApplicationLifeCycleEventNotifier
+ */
+public class LayersModelEventRootNotifier {
+
+	protected LayersModel layersModel;
+
+	/**
+	 * List of listener to notify.
+	 */
+	protected List<ILayersModelRootEventListener> listeners = new ArrayList<ILayersModelRootEventListener>();
+
+	protected Adapter modelListener = new AdapterImpl() {
+
+		/**
+		 * Something happen on the tree of object
+		 *
+		 * @see org.eclipse.emf.ecore.util.EContentAdapter#notifyChanged(org.eclipse.emf.common.notify.Notification)
+		 *
+		 * @param msg
+		 */
+		@Override
+		public void notifyChanged(Notification notification) {
+
+
+			// Check Resource modification
+			// There is 1 sources:
+			// LayersModel::Resource::contents
+			if (notification.getFeatureID(Resource.class) == Resource.RESOURCE__CONTENTS) {
+				// LayerOperator::layers || LayersStack::layers
+				// check the event type.
+				switch (notification.getEventType()) {
+				case Notification.SET:
+
+					break;
+				case Notification.ADD:
+					// A root is added
+					if (notification.getNewValue() instanceof LayersStackApplication) {
+						fireLayersModelRootAddedEvent(notification);
+					}
+					break;
+				case Notification.REMOVE:
+					// A root is removed
+					if (notification.getOldValue() instanceof LayersStackApplication) {
+						fireLayersModelRootRemovedEvent(notification);
+					}
+					break;
+				}
+			}
+		}
+
+	};
+
+	/**
+	 * Constructor.
+	 *
+	 * @param layersModel
+	 */
+	public LayersModelEventRootNotifier(LayersModel layersModel) {
+		this.layersModel = layersModel;
+		activate();
+	}
+
+	/**
+	 * Activate the listeners.
+	 *
+	 */
+	protected void activate() {
+		// Listen on diagram removed events
+		layersModel.getResource().eAdapters().add(modelListener);
+	}
+
+	/**
+	 * Deactivate listeners
+	 */
+	protected void deactivate() {
+		// Listen on diagram removed events
+		layersModel.getResource().eAdapters().remove(modelListener);
+	}
+
+	/**
+	 * Dispose the synchronizer
+	 */
+	public void dispose() {
+		// Deactivate listeners
+		deactivate();
+		layersModel = null;
+	}
+
+	/**
+	 * Return true if the object is disposed.
+	 *
+	 * @return
+	 */
+	protected boolean isDisposed() {
+		return layersModel == null;
+	}
+
+	/**
+	 * Add the specified listener to the list of listener.
+	 * Do not add it if the listener is already in the list.
+	 *
+	 * @param listener
+	 */
+	public void addEventListener(ILayersModelRootEventListener listener) {
+
+		if (listener == null) {
+			return;
+		}
+
+		// Check if exist
+		if (listeners.contains(listener)) {
+			return;
+		}
+
+		listeners.add(listener);
+	}
+
+	/**
+	 * Remove the specified listener from the list of listeners.
+	 *
+	 * @param listener
+	 */
+	public void removeEventListener(ILayersModelRootEventListener listener) {
+
+		listeners.remove(listener);
+	}
+
+	/**
+	 * Called by events when a root is added to the {@link LayersModel}
+	 *
+	 * @param msg
+	 */
+	protected void fireLayersModelRootAddedEvent(Notification msg) {
+		for (ILayersModelRootEventListener listener : listeners) {
+			listener.layersModelRootAdded(msg);
+		}
+	}
+
+	/**
+	 * Called by events when a root is added to the {@link LayersModel}
+	 *
+	 * @param msg
+	 */
+	protected void fireLayersModelRootRemovedEvent(Notification msg) {
+		for (ILayersModelRootEventListener listener : listeners) {
+			listener.layersModelRootRemoved(msg);
+		}
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/notifier/AbstractDerivedViewLayerNotifier.java b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/notifier/AbstractDerivedViewLayerNotifier.java
new file mode 100755
index 0000000..e4d15c2
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/notifier/AbstractDerivedViewLayerNotifier.java
@@ -0,0 +1,134 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.runtime.notifier;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer;
+
+/**
+ * Common ancestor of DerivedViewLayerNotifier.
+ * This class maintains a list of listeners. It allows to add and remove listeners.
+ * If there is no more listener, stop listening on external events.
+ * Start listening on external events as soon as there is a listener.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public abstract class AbstractDerivedViewLayerNotifier {
+
+	/**
+	 * List of listeners that should be notified.
+	 */
+	protected List<RegExpLayer> listeners = new ArrayList<RegExpLayer>();
+
+	/**
+	 * Indicate if this Notifier is listening on externals events
+	 */
+	private boolean isListening = false;
+
+	/**
+	 * Attach the listener to this notifier.
+	 *
+	 * @param layer
+	 */
+	public void addListener(RegExpLayer listener) {
+		if (!listeners.contains(listener)) {
+			listeners.add(listener);
+			checkStartListening();
+		}
+	}
+
+	/**
+	 * Attach the listener to this notifier.
+	 *
+	 * @param layer
+	 */
+	public void removeListener(RegExpLayer listener) {
+		listeners.remove(listener);
+		checkStopListening();
+
+	}
+
+	/**
+	 * Attach the listener to this notifier.
+	 *
+	 * @param layer
+	 */
+	public void removeAllListeners() {
+		isListening = false;
+		listeners.clear();
+		stopListening();
+	}
+
+	/**
+	 * Check if we should start listening.
+	 * If the class is not listening on externals events, and there is some listeners, then
+	 * start listening (call {@link #startListening()} and set {@link #isListening()} to true.
+	 */
+	private void checkStartListening() {
+		if (!isListening() && listeners.size() > 0) {
+			isListening = true;
+			startListening();
+		}
+	}
+
+	/**
+	 * Check if we should stop listening.
+	 * If the class is listening on externals events, and there is no more listeners, then
+	 * stop listening (call {@link #stopListening()} and set {@link #isListening()} to false.
+	 */
+	private void checkStopListening() {
+		if (isListening() && listeners.size() == 0) {
+			isListening = false;
+			stopListening();
+		}
+	}
+
+	/**
+	 * fire the event to all registered listeners.
+	 */
+	public void fireEvent() {
+		for (RegExpLayer listener : listeners) {
+			// listener.evaluateExpr();
+		}
+	}
+
+	/**
+	 * Start listening on external events.
+	 * Should be implemented by subclass
+	 */
+	abstract protected void startListening();
+
+	/**
+	 * Stop listening on external events.
+	 * Should be implemented by subclass
+	 */
+	abstract protected void stopListening();
+
+	/**
+	 * Return true if this Notifier is listening on externals events.
+	 *
+	 * @return
+	 */
+	public boolean isListening() {
+		// This notifier is listening if there is some listener in the list
+		return isListening;
+	}
+
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/notifier/DiagramChangedEventNotifier.java b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/notifier/DiagramChangedEventNotifier.java
new file mode 100755
index 0000000..0b1320c
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/notifier/DiagramChangedEventNotifier.java
@@ -0,0 +1,67 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.runtime.notifier;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+
+/**
+ * Notify listeners when a change occurs on an domain element associated to an element of the LayerStack's diagram.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class DiagramChangedEventNotifier extends AbstractDerivedViewLayerNotifier {
+
+	/**
+	 * {@link LayersStack} containing the {@link Diagram} on which this notifier is listening changes.
+	 */
+	protected LayersStack layersStack;
+
+	/**
+	 *
+	 * Constructor.
+	 *
+	 * @param layersStack
+	 */
+	public DiagramChangedEventNotifier(LayersStack layersStack) {
+		this.layersStack = layersStack;
+	}
+
+	/**
+	 * Start listening on externals events that should be relayed by this Notifier.
+	 *
+	 * @see org.eclipse.papyrus.layers.runtime.notifier.AbstractDerivedViewLayerNotifier#startListening()
+	 *
+	 */
+	@Override
+	protected void startListening() {
+		// TODO Auto-generated method stub
+
+	}
+
+	/**
+	 * Start listening on externals events that should be relayed by this Notifier.
+	 *
+	 * @see org.eclipse.papyrus.layers.runtime.notifier.AbstractDerivedViewLayerNotifier#stopListening()
+	 *
+	 */
+	@Override
+	protected void stopListening() {
+		// TODO Auto-generated method stub
+
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/notifier/DomainChangedEventNotifier.java b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/notifier/DomainChangedEventNotifier.java
new file mode 100755
index 0000000..84803ff
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/notifier/DomainChangedEventNotifier.java
@@ -0,0 +1,67 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.runtime.notifier;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+
+/**
+ * Notify listeners when a change occurs on an domain element associated to an element of the LayerStack's diagram.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class DomainChangedEventNotifier extends AbstractDerivedViewLayerNotifier {
+
+	/**
+	 * {@link LayersStack} containing the {@link Diagram} on which this notifier is listening changes.
+	 */
+	protected LayersStack layersStack;
+
+	/**
+	 *
+	 * Constructor.
+	 *
+	 * @param layersStack
+	 */
+	public DomainChangedEventNotifier(LayersStack layersStack) {
+		this.layersStack = layersStack;
+	}
+
+	/**
+	 * Start listening on externals events that should be relayed by this Notifier.
+	 *
+	 * @see org.eclipse.papyrus.layers.runtime.notifier.AbstractDerivedViewLayerNotifier#startListening()
+	 *
+	 */
+	@Override
+	protected void startListening() {
+		// TODO Auto-generated method stub
+
+	}
+
+	/**
+	 * Start listening on externals events that should be relayed by this Notifier.
+	 *
+	 * @see org.eclipse.papyrus.layers.runtime.notifier.AbstractDerivedViewLayerNotifier#stopListening()
+	 *
+	 */
+	@Override
+	protected void stopListening() {
+		// TODO Auto-generated method stub
+
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/service/LayersApplicationService.java b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/service/LayersApplicationService.java
new file mode 100755
index 0000000..50bcb31
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/service/LayersApplicationService.java
@@ -0,0 +1,123 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime.service;
+
+import static org.eclipse.papyrus.layers.runtime.Activator.log;
+
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.core.resource.NotFoundException;
+import org.eclipse.papyrus.infra.core.services.IService;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.core.services.ServicesRegistry;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel;
+import org.eclipse.papyrus.layers.runtime.LayerStackApplicationSynchronizer;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class LayersApplicationService implements IService {
+
+	public static final String SERVICEID = "org.eclipse.papyrus.layers.runtime.service.LayersApplicationService";
+	/**
+	 * ModelSet to retrieve models
+	 */
+	protected ModelSet modelSet;
+
+	/**
+	 * The synchronizer used to listen on events and to synchronize layers and notation.
+	 */
+	protected LayerStackApplicationSynchronizer layersSynchronizer;
+	/**
+	 * associated layerModel.
+	 */
+	private LayersModel layersModel;
+
+	/**
+	 * The {@link NotationModel}
+	 */
+	private NotationModel notationModel;
+
+	/**
+	 * Constructor.
+	 *
+	 */
+	public LayersApplicationService() {
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.infra.core.services.IService#init(org.eclipse.papyrus.infra.core.services.ServicesRegistry)
+	 *
+	 * @param servicesRegistry
+	 * @throws ServiceException
+	 */
+	@Override
+	public void init(ServicesRegistry servicesRegistry) throws ServiceException {
+		// Retrieve required services.
+		modelSet = servicesRegistry.getService(ModelSet.class);
+		// multiDiagramEditor = servicesRegistry.getService(IMultiDiagramEditor.class);
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.infra.core.services.IService#startService()
+	 *
+	 * @throws ServiceException
+	 */
+	@Override
+	public void startService() throws ServiceException {
+
+		// Try to get the associated model
+		try {
+			layersModel = (LayersModel) modelSet.getModelChecked(LayersModel.MODEL_ID);
+			notationModel = (NotationModel) modelSet.getModelChecked(NotationModel.MODEL_ID);
+		} catch (NotFoundException e) {
+			throw new ServiceException("Can't get layer model", e);
+		} catch (ClassCastException e) {
+			throw new ServiceException("layersModel should be of type LayersModel", e);
+		}
+
+		// Check model
+		LayersStackApplication application = layersModel.getModelRoot();
+		boolean isAlreadyExist = (application != null);
+		if (log.isDebugEnabled()) {
+			if (isAlreadyExist) {
+				log.debug("LayerApplication already exist in modelSet");
+			}
+			else {
+				log.debug("LayerApplication do not exist in modelSet");
+			}
+		}
+
+		// Start synchronizer
+		layersSynchronizer = new LayerStackApplicationSynchronizer(layersModel, notationModel);
+
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.infra.core.services.IService#disposeService()
+	 *
+	 * @throws ServiceException
+	 */
+	@Override
+	public void disposeService() throws ServiceException {
+
+		layersSynchronizer.dispose();
+		layersSynchronizer = null;
+		layersModel = null;
+		modelSet = null;
+		// multiDiagramEditor = null;
+
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/utils/package-info.java b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/utils/package-info.java
new file mode 100755
index 0000000..9b7102f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/src/org/eclipse/papyrus/layers/runtime/utils/package-info.java
@@ -0,0 +1,16 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ * @author cedric dumoulin
+ *
+ */
+package org.eclipse.papyrus.layers.runtime.utils;
+
diff --git a/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/DiagramViewEventNotifierTest.java b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/DiagramViewEventNotifierTest.java
new file mode 100755
index 0000000..17cbb6f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/DiagramViewEventNotifierTest.java
@@ -0,0 +1,180 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.Node;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewEventNotifier;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class DiagramViewEventNotifierTest {
+
+	/**
+	 * URI used to store the created model.
+	 */
+	protected static final String PROJECT_MODEL_URI = "org.eclipse.papyrus.infra.core/tmp/model1.di";
+
+	/**
+	 * ModelSet created for each test
+	 */
+	protected ModelSet modelSet;
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+		// // Create ModelSet and Model
+		// ModelSet mngr = new ModelSet();
+		// // LayersModel
+		// LayersModel layersModel = new LayersModel();
+		// mngr.registerModel(layersModel);
+		// // Notation model
+		// NotationModel notationModel = new NotationModel();
+		// mngr.registerModel(notationModel);
+		// // Do create resources
+		// URI uri = URI.createPlatformResourceURI(PROJECT_MODEL_URI, true);
+		// mngr.createModels(uri);
+		//
+		// modelSet = mngr;
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+		// modelSet.unload();
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewEventNotifier#DiagramViewEventNotifier(org.eclipse.gmf.runtime.notation.Diagram)}.
+	 */
+	@Test
+	public void testDiagramViewEventNotifier() {
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+		DiagramViewEventNotifier notifier = new DiagramViewEventNotifier(diagram);
+		assertNotNull("notifier created", notifier);
+
+		// dispose
+		notifier.dispose();
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewEventNotifier#dispose()}.
+	 */
+	@Test
+	public void testDispose() {
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+		DiagramViewEventNotifier notifier = new DiagramViewEventNotifier(diagram);
+		assertNotNull("notifier created", notifier);
+
+		// dispose
+		assertFalse("notifier is disposed", notifier.isDisposed());
+		notifier.dispose();
+		assertTrue("notifier is disposed", notifier.isDisposed());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewEventNotifier#addEventListener(org.eclipse.papyrus.layers.runtime.IDiagramViewEventListener)}.
+	 */
+	@Test
+	@Ignore
+	public void testAddEventListener() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewEventNotifier#removeEventListener(org.eclipse.papyrus.layers.runtime.IDiagramViewEventListener)}.
+	 */
+	@Test
+	@Ignore
+	public void testRemoveEventListener() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewEventNotifier#fireDiagramViewAddedEvent(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testFireDiagramViewAddedEvent() {
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+		DiagramViewEventNotifier notifier = new DiagramViewEventNotifier(diagram);
+
+		TraceDiagramViewEventListener listener = new TraceDiagramViewEventListener();
+		notifier.addEventListener(listener);
+
+		// Add view
+		Node node1 = diagram.createChild(NotationPackage.eINSTANCE.getShape());
+
+		// Check for event
+		assertEquals("event found", "diagramViewAdded", listener.traces.get(0).name);
+
+		// Check inner creation
+		listener.traces.clear();
+		node1.createChild(NotationPackage.eINSTANCE.getShape());
+		assertEquals("event found", "diagramViewAdded", listener.traces.get(0).name);
+
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewEventNotifier#fireDiagramViewRemovedEvent(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testFireDiagramViewRemovedEvent() {
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+		DiagramViewEventNotifier notifier = new DiagramViewEventNotifier(diagram);
+
+		TraceDiagramViewEventListener listener = new TraceDiagramViewEventListener();
+		notifier.addEventListener(listener);
+
+		// Add view
+		Node node1 = diagram.createChild(NotationPackage.eINSTANCE.getShape());
+
+		// Check inner creation
+		listener.traces.clear();
+		node1.createChild(NotationPackage.eINSTANCE.getShape());
+
+		// Check if the node is a children of the diagram
+		assertTrue("event found", diagram.getChildren().contains(node1));
+
+		// Check remove
+		listener.traces.clear();
+		diagram.removeChild(node1);
+		assertFalse("event found", diagram.getChildren().contains(node1));
+
+		assertTrue("event found", listener.traces.contains("diagramViewRemoved"));
+		// assertEquals("event found", "diagramViewRemoved", listener.traces.get(0).name);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackApplicationSynchronizerEventTest.java b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackApplicationSynchronizerEventTest.java
new file mode 100755
index 0000000..36d4d34
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackApplicationSynchronizerEventTest.java
@@ -0,0 +1,235 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.eclipse.papyrus.layers.runtime.utils.TriggeredEventTraces;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class LayerStackApplicationSynchronizerEventTest {
+
+	/**
+	 * URI used to store the created model.
+	 */
+	protected static final String PROJECT_MODEL_URI = "org.eclipse.papyrus.infra.core/tmp/model1.di";
+
+	/**
+	 * ModelSet created for each test
+	 */
+	protected ModelSet modelSet;
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+		// Create ModelSet and Model
+		ModelSet mngr = new ModelSet();
+		// LayersModel
+		LayersModel layersModel = new LayersModel();
+		mngr.registerModel(layersModel);
+		// Notation model
+		NotationModel notationModel = new NotationModel();
+		mngr.registerModel(notationModel);
+		// Do create resources
+		URI uri = URI.createPlatformResourceURI(PROJECT_MODEL_URI, true);
+		mngr.createModels(uri);
+
+		modelSet = mngr;
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+		modelSet.unload();
+
+	}
+
+	/**
+	 * Test the correct creation of the modelSet
+	 */
+	@Test
+	public void testModelSetCreation() {
+
+		NotationModel notationModel = (NotationModel) modelSet.getModel(NotationModel.MODEL_ID);
+		assertNotNull("NotationModel is created", notationModel);
+		// Try to create a Diagram
+		notationModel.addDiagram(NotationFactory.eINSTANCE.createDiagram());
+		//
+		assertNotNull("Diagram is in the roots", notationModel.getResource().getContents().get(0));
+
+
+
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+		assertNotNull("LayerModel is created", layersModel);
+		assertNotNull("LayerStackApplication is created", layersModel.getLayerStackApplication());
+
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackApplicationSynchronizer#LayerStackApplicationSynchronizer(org.eclipse.papyrus.layers.runtime.model.LayersModel, org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel)}.
+	 */
+	@Test
+	public void testLayerStackApplicationSynchronizer() {
+
+		NotationModel notationModel = (NotationModel) modelSet.getModel(NotationModel.MODEL_ID);
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+
+		LayerStackApplicationSynchronizer synchronizer = new LayerStackApplicationSynchronizer(layersModel, notationModel);
+		assertNotNull("application created", synchronizer);
+
+		// dispose
+		synchronizer.dispose();
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackApplicationSynchronizer#LayerStackApplicationSynchronizer(org.eclipse.papyrus.layers.runtime.model.LayersModel, org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel)}.
+	 */
+	@Test
+	public void testDispose() {
+
+		NotationModel notationModel = (NotationModel) modelSet.getModel(NotationModel.MODEL_ID);
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+
+		LayerStackApplicationSynchronizer synchronizer = new LayerStackApplicationSynchronizer(layersModel, notationModel);
+		assertNotNull("application created", synchronizer.getLayersModel());
+
+		// Try to dispose
+		synchronizer.dispose();
+		assertNull("object is disposed", synchronizer.getLayersModel());
+	}
+
+	/**
+	 * Test Layer added event correctly catched
+	 */
+	@Test
+	public void testLayerAddedEventListener() {
+
+		NotationModel notationModel = (NotationModel) modelSet.getModel(NotationModel.MODEL_ID);
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		notationModel.addDiagram(diagram);
+		// Create a helper used to attach a LayerStack to diagram.
+		NotationDiagramHelper helper = new NotationDiagramHelper(layersModel, diagram);
+
+		// Create the synchronizer
+		TriggeredEventTraces traces = new TriggeredEventTraces();
+		LayerStackApplicationSynchronizer synchronizer = new LayerStackApplicationSynchronizerSubclass(layersModel, notationModel, traces);
+
+		// Add a layer Stack to the diagram
+		helper.attachLayersStack();
+
+		// Check if the appropriate method is called
+		assertEquals("event catched", "layerStackAdded", traces.get(0).name);
+		assertTrue("event catched", traces.contains("layerStackAdded"));
+
+		// dispose
+		synchronizer.dispose();
+	}
+
+	/**
+	 * Test Layer added event correctly catched
+	 */
+	@Test
+	public void testLayerRemovedEventListener() {
+
+		NotationModel notationModel = (NotationModel) modelSet.getModel(NotationModel.MODEL_ID);
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		notationModel.addDiagram(diagram);
+		// Create a helper used to attach a LayerStack to diagram.
+		NotationDiagramHelper helper = new NotationDiagramHelper(layersModel, diagram);
+
+		// Create the synchronizer
+		TriggeredEventTraces traces = new TriggeredEventTraces();
+		LayerStackApplicationSynchronizer synchronizer = new LayerStackApplicationSynchronizerSubclass(layersModel, notationModel, traces);
+
+		// Add a layer Stack to the diagram
+		helper.attachLayersStack();
+
+		traces.clear();
+		helper.removeLayersStack();
+
+		// Check if the appropriate method is called
+		assertTrue("event catched", traces.contains("layerStackRemoved"));
+
+		// dispose
+		synchronizer.dispose();
+	}
+
+	/**
+	 * Test Layer added event correctly catched
+	 */
+	@Test
+	public void testDiagramRemovedEventListener() {
+
+		NotationModel notationModel = (NotationModel) modelSet.getModel(NotationModel.MODEL_ID);
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+
+		// Create a diagram
+		Diagram diagram1 = NotationFactory.eINSTANCE.createDiagram();
+		notationModel.addDiagram(diagram1);
+		// Create a helper used to attach a LayerStack to diagram.
+		NotationDiagramHelper helperForDiag1 = new NotationDiagramHelper(layersModel, diagram1);
+
+		// Create a diagram
+		Diagram diagram2 = NotationFactory.eINSTANCE.createDiagram();
+		notationModel.addDiagram(diagram2);
+		// Create a helper used to attach a LayerStack to diagram.
+		NotationDiagramHelper helperForDiag2 = new NotationDiagramHelper(layersModel, diagram2);
+
+		// Create the synchronizer
+		TriggeredEventTraces traces = new TriggeredEventTraces();
+		LayerStackApplicationSynchronizer synchronizer = new LayerStackApplicationSynchronizerSubclass(layersModel, notationModel, traces);
+
+		// Add a layer Stack to the diagram
+		helperForDiag1.attachLayersStack();
+		helperForDiag2.attachLayersStack();
+
+		// Try to remove a diagram
+		traces.clear();
+		notationModel.getResource().getContents().remove(diagram2);
+
+
+		// Check if the appropriate method is called
+		assertTrue("event catched", traces.contains("diagramRemoved"));
+		// assertEquals("number of events", 1, traces.traces.size());
+		// assertEquals("diagram found in notification", diagram2, traces.traces.get(0).notifier.getOldValue());
+		assertEquals("diagram found in notification", diagram2, traces.getFirstEvent("diagramRemoved").notifier.getOldValue());
+
+		// dispose
+		synchronizer.dispose();
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackApplicationSynchronizerSubclass.java b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackApplicationSynchronizerSubclass.java
new file mode 100755
index 0000000..72d4912
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackApplicationSynchronizerSubclass.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.eclipse.papyrus.layers.runtime.utils.TriggeredEventTraces;
+
+
+/**
+ * This class subclass the {@link LayerStackApplicationSynchronizer} in order to record
+ * the calls to the method catching the events from the superclass.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayerStackApplicationSynchronizerSubclass extends LayerStackApplicationSynchronizer {
+
+	/**
+	 * List of recorded events.
+	 */
+	public TriggeredEventTraces traces;
+
+	/**
+	 * Constructor.
+	 *
+	 * @param layersModel
+	 * @param notationModel
+	 */
+	public LayerStackApplicationSynchronizerSubclass(LayersModel layersModel, NotationModel notationModel) {
+		super(layersModel, notationModel);
+		traces = new TriggeredEventTraces();
+	}
+
+
+	/**
+	 * Constructor.
+	 *
+	 * @param layersModel
+	 * @param notationModel
+	 * @param traces
+	 */
+	public LayerStackApplicationSynchronizerSubclass(LayersModel layersModel, NotationModel notationModel, TriggeredEventTraces traces) {
+		super(layersModel, notationModel);
+		this.traces = traces;
+	}
+
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.runtime.LayerStackApplicationSynchronizer#layerStackAdded(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param msg
+	 */
+	@Override
+	public void layerStackAdded(Notification msg) {
+		traces.addTrace("layerStackAdded", msg);
+		super.layerStackAdded(msg);
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.runtime.LayerStackApplicationSynchronizer#layerStackRemoved(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param msg
+	 */
+	@Override
+	public void layerStackRemoved(Notification msg) {
+		traces.addTrace("layerStackRemoved", msg);
+		super.layerStackRemoved(msg);
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.runtime.LayerStackApplicationSynchronizer#diagramRemoved(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param msg
+	 */
+	@Override
+	public void diagramRemoved(Notification msg) {
+		traces.addTrace("diagramRemoved", msg);
+		super.diagramRemoved(msg);
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackApplicationSynchronizerTest.java b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackApplicationSynchronizerTest.java
new file mode 100755
index 0000000..aeb79ed
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackApplicationSynchronizerTest.java
@@ -0,0 +1,336 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * Tests for the {@link LayerStackApplicationSynchronizer} class.
+ * This tests do not tests event received when models are modified.
+ * This tests tests method behavior when they are called directly.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayerStackApplicationSynchronizerTest {
+
+	/**
+	 * URI used to store the created model.
+	 */
+	protected static final String PROJECT_MODEL_URI = "org.eclipse.papyrus.infra.core/tmp/model1.di";
+
+	/**
+	 * ModelSet created for each test
+	 */
+	protected ModelSet modelSet;
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+		// Create ModelSet and Model
+		ModelSet mngr = new ModelSet();
+		// LayersModel
+		LayersModel layersModel = new LayersModel();
+		mngr.registerModel(layersModel);
+		// Notation model
+		NotationModel notationModel = new NotationModel();
+		mngr.registerModel(notationModel);
+		// Do create resources
+		URI uri = URI.createPlatformResourceURI(PROJECT_MODEL_URI, true);
+		mngr.createModels(uri);
+
+		modelSet = mngr;
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+		modelSet.unload();
+
+	}
+
+	/**
+	 * Test the correct creation of the modelSet
+	 */
+	@Test
+	public void testModelSetCreation() {
+
+		NotationModel notationModel = (NotationModel) modelSet.getModel(NotationModel.MODEL_ID);
+		assertNotNull("NotationModel is created", notationModel);
+		// Try to create a Diagram
+		notationModel.addDiagram(NotationFactory.eINSTANCE.createDiagram());
+		//
+		assertNotNull("Diagram is in the roots", notationModel.getResource().getContents().get(0));
+
+
+
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+		assertNotNull("LayerModel is created", layersModel);
+		assertNotNull("LayerStackApplication is created", layersModel.getLayerStackApplication());
+
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackApplicationSynchronizer#LayerStackApplicationSynchronizer(org.eclipse.papyrus.layers.runtime.model.LayersModel, org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel)}.
+	 */
+	@Test
+	public void testLayerStackApplicationSynchronizer() {
+		NotationModel notationModel = (NotationModel) modelSet.getModel(NotationModel.MODEL_ID);
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+
+		LayerStackApplicationSynchronizer synchronizer = new LayerStackApplicationSynchronizer(layersModel, notationModel);
+		assertNotNull("application created", synchronizer);
+
+		// dispose
+		synchronizer.dispose();
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackApplicationSynchronizer#getLayersModel()}.
+	 */
+	@Test
+	public void testGetLayersModel() {
+		NotationModel notationModel = (NotationModel) modelSet.getModel(NotationModel.MODEL_ID);
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+
+		LayerStackApplicationSynchronizer synchronizer = new LayerStackApplicationSynchronizer(layersModel, notationModel);
+		assertNotNull("layers model exist", synchronizer.getLayersModel());
+		assertSame("right layer model", layersModel, synchronizer.getLayersModel());
+
+		// dispose
+		synchronizer.dispose();
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackApplicationSynchronizer#getNotationModel()}.
+	 */
+	@Test
+	public void testGetNotationModel() {
+		NotationModel notationModel = (NotationModel) modelSet.getModel(NotationModel.MODEL_ID);
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+
+		LayerStackApplicationSynchronizer synchronizer = new LayerStackApplicationSynchronizer(layersModel, notationModel);
+		assertNotNull("layers model exist", synchronizer.getNotationModel());
+		assertSame("right layer model", notationModel, synchronizer.getNotationModel());
+
+		// dispose
+		synchronizer.dispose();
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackApplicationSynchronizer#dispose()}.
+	 */
+	@Test
+	public void testDispose() {
+		NotationModel notationModel = (NotationModel) modelSet.getModel(NotationModel.MODEL_ID);
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+
+		LayerStackApplicationSynchronizer synchronizer = new LayerStackApplicationSynchronizer(layersModel, notationModel);
+		assertNotNull("application created", synchronizer.getLayersModel());
+
+		// Try to dispose
+		assertFalse("object is disposed", synchronizer.isDisposed());
+		synchronizer.dispose();
+		assertTrue("object is disposed", synchronizer.isDisposed());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackApplicationSynchronizer#layerStackAdded(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testLayerStackAdded() {
+		NotationModel notationModel = (NotationModel) modelSet.getModel(NotationModel.MODEL_ID);
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+
+		// Init models
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		notationModel.addDiagram(diagram);
+		// Create a helper used to attach a LayerStack to diagram.
+		NotationDiagramHelper helper = new NotationDiagramHelper(layersModel, diagram);
+
+
+		LayerStackApplicationSynchronizer synchronizer = new LayerStackApplicationSynchronizer(layersModel, notationModel);
+		assertNotNull("application created", synchronizer);
+
+		// add a LayerStack to models
+		// in result, the method should be called
+		helper.attachLayersStack();
+
+		// Check if the appropriate LayerStackSynchronizer is created
+		assertNotNull("LayerStackSynchronizer added", synchronizer.getSynchronizers().get(diagram));
+
+		synchronizer.dispose();
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackApplicationSynchronizer#layerStackRemoved(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testLayerStackRemoved() {
+		NotationModel notationModel = (NotationModel) modelSet.getModel(NotationModel.MODEL_ID);
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+
+		// Init models
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		notationModel.addDiagram(diagram);
+		// Create a helper used to attach a LayerStack to diagram.
+		NotationDiagramHelper helper = new NotationDiagramHelper(layersModel, diagram);
+
+
+		LayerStackApplicationSynchronizer synchronizer = new LayerStackApplicationSynchronizer(layersModel, notationModel);
+		assertNotNull("application created", synchronizer);
+
+		// add a LayerStack to models
+		// in result, the method should be called
+		helper.attachLayersStack();
+
+		// Check if the appropriate LayerStackSynchronizer is created
+		assertNotNull("LayerStackSynchronizer added", synchronizer.getSynchronizers().get(diagram));
+
+		// Remove layer
+		helper.removeLayersStack();
+
+		assertNull("LayerStackSynchronizer removed", synchronizer.getSynchronizers().get(diagram));
+
+		synchronizer.dispose();
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackApplicationSynchronizer#diagramRemoved(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testDiagramRemoved() {
+		NotationModel notationModel = (NotationModel) modelSet.getModel(NotationModel.MODEL_ID);
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+
+		// Init models
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		notationModel.addDiagram(diagram);
+		// Create a helper used to attach a LayerStack to diagram.
+		NotationDiagramHelper helper = new NotationDiagramHelper(layersModel, diagram);
+
+
+		LayerStackApplicationSynchronizer synchronizer = new LayerStackApplicationSynchronizer(layersModel, notationModel);
+		assertNotNull("application created", synchronizer);
+
+		// add a LayerStack to models
+		// in result, the method should be called
+		helper.attachLayersStack();
+
+		// Check if the appropriate LayerStackSynchronizer is created
+		assertNotNull("LayerStackSynchronizer added", synchronizer.getSynchronizers().get(diagram));
+
+		// Remove diagram
+		notationModel.getResource().getContents().remove(diagram);
+
+		assertNull("LayerStackSynchronizer removed", synchronizer.getSynchronizers().get(diagram));
+
+		synchronizer.dispose();
+	}
+
+	/**
+	 * Test {@link LayerStackApplicationSynchronizer} start when an application object
+	 * with LayerStack already exist in the LayerModel.
+	 * Test if synchronizer are restarted for already existing Stacks.
+	 *
+	 */
+	@Test
+	public void testLayerStackApplicationSynchronizerRestartSynchronizer() {
+		NotationModel notationModel = (NotationModel) modelSet.getModel(NotationModel.MODEL_ID);
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+
+		// Init models
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		notationModel.addDiagram(diagram);
+		// Create a helper used to attach a LayerStack to diagram.
+		NotationDiagramHelper helper = new NotationDiagramHelper(layersModel, diagram);
+
+
+		// create a stack: this also create the application object in model.
+		helper.attachLayersStack();
+
+		// create synchronizer
+		LayerStackApplicationSynchronizer synchronizer = new LayerStackApplicationSynchronizer(layersModel, notationModel);
+		assertNotNull("application created", synchronizer);
+
+
+		// Check if the appropriate LayerStackSynchronizer is created
+		assertNotNull("LayerStackSynchronizer created", synchronizer.getSynchronizers().get(diagram));
+
+		// Check if we can add new LayerStack
+		Diagram diagram2 = NotationFactory.eINSTANCE.createDiagram();
+		notationModel.addDiagram(diagram2);
+		NotationDiagramHelper helper2 = new NotationDiagramHelper(layersModel, diagram2);
+		helper2.attachLayersStack();
+
+		// Check if the appropriate LayerStackSynchronizer is created
+		assertNotNull("LayerStackSynchronizer created", synchronizer.getSynchronizers().get(diagram2));
+
+
+		synchronizer.dispose();
+	}
+
+	/**
+	 * Test {@link LayerStackApplicationSynchronizer} start when NO application object
+	 * exist in the LayerModel.
+	 * Test if synchronizer is correctly started and accept new stack attachment.
+	 *
+	 */
+	@Test
+	public void testLayerStackApplicationSynchronizerStartWithNoApplicationInModel() {
+		NotationModel notationModel = (NotationModel) modelSet.getModel(NotationModel.MODEL_ID);
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+
+		// create synchronizer
+		LayerStackApplicationSynchronizer synchronizer = new LayerStackApplicationSynchronizer(layersModel, notationModel);
+		assertNotNull("application created", synchronizer);
+		// Here, the synchronizer should have not create an application !
+		assertNull("Application is not created in model", layersModel.lookupLayerStackApplication());
+
+		// Create a stack: first the diagram, then an helper, then the stack
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		notationModel.addDiagram(diagram);
+		// Create a helper used to attach a LayerStack to diagram.
+		NotationDiagramHelper helper = new NotationDiagramHelper(layersModel, diagram);
+		// create a stack: this also create the application object in model.
+		helper.attachLayersStack();
+
+		// Check if the appropriate LayerStackSynchronizer is created
+		assertNotNull("LayerStackSynchronizer created", synchronizer.getSynchronizers().get(diagram));
+		// Here, the application should be created (by the stack creation)
+		assertNotNull("Application is created in model", layersModel.lookupLayerStackApplication());
+
+
+		synchronizer.dispose();
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackSynchronizerSubclass.java b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackSynchronizerSubclass.java
new file mode 100755
index 0000000..2fbd146
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackSynchronizerSubclass.java
@@ -0,0 +1,185 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.layers.runtime.utils.TriggeredEventTraces;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+
+
+/**
+ * A subclass registering events
+ * For tests purpose.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayerStackSynchronizerSubclass extends LayerStackSynchronizer {
+
+	/**
+	 * List of recorded events.
+	 */
+	public TriggeredEventTraces traces;
+
+	/**
+	 * Constructor.
+	 *
+	 * @param layersStack
+	 */
+	public LayerStackSynchronizerSubclass(LayersStack layersStack) {
+		super(layersStack);
+		traces = new TriggeredEventTraces();
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#propertyValueAdded(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void propertyValueAdded(Notification notification) {
+		traces.addTrace("propertyValueAdded", notification);
+		super.propertyValueAdded(notification);
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#propertyValueRemoved(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void propertyValueRemoved(Notification notification) {
+		traces.addTrace("propertyValueRemoved", notification);
+		super.propertyValueRemoved(notification);
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#propertyValueChanged(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void propertyValueChanged(Notification notification) {
+		traces.addTrace("propertyValueChanged", notification);
+		super.propertyValueChanged(notification);
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#layerAdded(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void layerAdded(Notification notification) {
+		traces.addTrace("layerAdded", notification);
+		super.layerAdded(notification);
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#layerRemoved(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void layerRemoved(Notification notification) {
+		traces.addTrace("layerRemoved", notification);
+		super.layerRemoved(notification);
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#layerMoved(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void layerMoved(Notification notification) {
+		traces.addTrace("layerMoved", notification);
+		super.layerMoved(notification);
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#layerSet(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void layerSet(Notification notification) {
+		traces.addTrace("layerSet", notification);
+		super.layerSet(notification);
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#viewAddedToLayer(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void viewAddedToLayer(Notification notification) {
+		traces.addTrace("viewAddedToLayer", notification);
+		super.viewAddedToLayer(notification);
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#viewRemovedFromLayer(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void viewRemovedFromLayer(Notification notification) {
+		traces.addTrace("viewRemovedFromLayer", notification);
+		super.viewRemovedFromLayer(notification);
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#viewMovedBetweenLayer(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void viewMovedBetweenLayer(Notification notification) {
+		traces.addTrace("viewMovedBetweenLayer", notification);
+		super.viewMovedBetweenLayer(notification);
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#diagramViewAdded(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param msg
+	 */
+	@Override
+	public void diagramViewAdded(Notification msg) {
+		traces.addTrace("diagramViewAdded", msg);
+		super.diagramViewAdded(msg);
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#diagramViewRemoved(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param msg
+	 */
+	@Override
+	public void diagramViewRemoved(Notification msg) {
+		traces.addTrace("diagramViewRemoved", msg);
+		super.diagramViewRemoved(msg);
+	}
+
+	@Override
+	public void multiViewsAddedToLayer(Notification notification) {
+		traces.addTrace("multiViewsAddedToLayer", notification);
+		super.multiViewsAddedToLayer(notification);
+	}
+
+	@Override
+	public void multiViewsRemovedFromLayer(Notification notification) {
+		traces.addTrace("multiViewsRemovedFromLayer", notification);
+		super.multiViewsRemovedFromLayer(notification);
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackSynchronizerTest.java b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackSynchronizerTest.java
new file mode 100755
index 0000000..c0e9f9b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackSynchronizerTest.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.fail;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class LayerStackSynchronizerTest {
+
+	/**
+	 * URI used to store the created model.
+	 */
+	protected static final String PROJECT_MODEL_URI = "org.eclipse.papyrus.infra.core/tmp/model1.di";
+
+	/**
+	 * ModelSet created for each test
+	 */
+	protected ModelSet modelSet;
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+		// // Create ModelSet and Model
+		// ModelSet mngr = new ModelSet();
+		// // LayersModel
+		// LayersModel layersModel = new LayersModel();
+		// mngr.registerModel(layersModel);
+		// // Notation model
+		// NotationModel notationModel = new NotationModel();
+		// mngr.registerModel(notationModel);
+		// // Do create resources
+		// URI uri = URI.createPlatformResourceURI(PROJECT_MODEL_URI, true);
+		// mngr.createModels(uri);
+		//
+		// modelSet = mngr;
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+		// modelSet.unload();
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#LayerStackSynchronizer(org.eclipse.papyrus.layers.stackmodel.layers.LayersStack)}.
+	 */
+	@Test
+	public void testLayerStackSynchronizer() {
+		// Create a fake structure
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		LayersStack stack = LayersFactory.eINSTANCE.createLayersStack();
+		stack.setDiagram(diagram);
+
+
+		// Create the stack
+		LayerStackSynchronizer synchronizer = new LayerStackSynchronizer(stack);
+
+		// Check creation
+		assertNotNull("object created", synchronizer);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#getDiagram()}.
+	 */
+	@Test
+	public void testGetDiagram() {
+		// Create a fake structure
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		LayersStack stack = LayersFactory.eINSTANCE.createLayersStack();
+		stack.setDiagram(diagram);
+
+
+		// Create the stack
+		LayerStackSynchronizer synchronizer = new LayerStackSynchronizer(stack);
+
+		// Check creation
+		assertNotNull("getDiagram", synchronizer.getDiagram());
+		assertSame("getDiagram", diagram, synchronizer.getDiagram());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#getLayersStack()}.
+	 */
+	@Test
+	public void testGetLayersStack() {
+		// Create a fake structure
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		LayersStack stack = LayersFactory.eINSTANCE.createLayersStack();
+		stack.setDiagram(diagram);
+
+
+		// Create the stack
+		LayerStackSynchronizer synchronizer = new LayerStackSynchronizer(stack);
+
+		// Check creation
+		assertNotNull("getLayersStack", synchronizer.getLayersStack());
+		assertSame("getLayersStack", stack, synchronizer.getLayersStack());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#dispose()}.
+	 */
+	@Test
+	@Ignore
+	public void testDispose() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#isDisposed()}.
+	 */
+	@Test
+	@Ignore
+	public void testIsDisposed() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#propertyValueAdded(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	@Ignore
+	public void testPropertyValueAdded() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#propertyValueRemoved(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	@Ignore
+	public void testPropertyValueRemoved() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#propertyValueChanged(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	@Ignore
+	public void testPropertyValueChanged() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#layerAdded(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	@Ignore
+	public void testLayerAdded() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#layerRemoved(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	@Ignore
+	public void testLayerRemoved() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#layerMoved(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	@Ignore
+	public void testLayerMoved() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#layerSet(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	@Ignore
+	public void testLayerSet() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#viewAddedToLayer(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	@Ignore
+	public void testViewAddedToLayer() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#viewRemovedFromLayer(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	@Ignore
+	public void testViewRemovedFromLayer() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#viewMovedBetweenLayer(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	@Ignore
+	public void testViewMovedBetweenLayer() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#diagramViewAdded(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	@Ignore
+	public void testDiagramViewAdded() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#diagramViewRemoved(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	@Ignore
+	public void testDiagramViewRemoved() {
+		fail("Not yet implemented");
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackSynchronizerWithApplicationTest.java b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackSynchronizerWithApplicationTest.java
new file mode 100755
index 0000000..7b4a328
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayerStackSynchronizerWithApplicationTest.java
@@ -0,0 +1,694 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.layers.runtime.utils.TriggeredEventTraces;
+import org.eclipse.papyrus.layers.runtime.utils.TriggeredEventTraces.TriggeredEvent;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.StringInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ * Test the {@link LayerStackSynchronizer} by initializing it from the {@link LayersStackApplication} class.
+ *
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayerStackSynchronizerWithApplicationTest {
+
+	/**
+	 * URI used to store the created model.
+	 */
+	protected static final String PROJECT_MODEL_URI = "org.eclipse.papyrus.infra.core/tmp/model1.di";
+
+	/**
+	 * ModelSet created for each test
+	 */
+	protected ModelSet modelSet;
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+		// // Create ModelSet and Model
+		// ModelSet mngr = new ModelSet();
+		// // LayersModel
+		// LayersModel layersModel = new LayersModel();
+		// mngr.registerModel(layersModel);
+		// // Notation model
+		// NotationModel notationModel = new NotationModel();
+		// mngr.registerModel(notationModel);
+		// // Do create resources
+		// URI uri = URI.createPlatformResourceURI(PROJECT_MODEL_URI, true);
+		// mngr.createModels(uri);
+		//
+		// modelSet = mngr;
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+		// modelSet.unload();
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#LayerStackSynchronizer(org.eclipse.papyrus.layers.stackmodel.layers.LayersStack)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testLayerStackSynchronizer() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+		// Create stack
+		LayersStack stack = application.getLayersStackFor(diagram);
+
+		// Create synchronizer
+		LayerStackSynchronizer synchronizer = new LayerStackSynchronizer(stack);
+
+		// Check creation
+		assertNotNull("object created", synchronizer);
+
+		// Create a TopLayer
+		TopLayerOperator layer = LayersFactory.eINSTANCE.createTopLayerOperator();
+		layer.setApplication(application);
+
+		// Create Views
+		View view1 = NotationFactory.eINSTANCE.createShape();
+		View view2 = NotationFactory.eINSTANCE.createShape();
+		View view3 = NotationFactory.eINSTANCE.createShape();
+		View view4 = NotationFactory.eINSTANCE.createShape();
+
+		// Create Properties
+		int index = 0;
+		Property property1 = propertyRegistry.getProperties().get(index++);
+		Property property2 = propertyRegistry.getProperties().get(index++);
+		Property property3 = propertyRegistry.getProperties().get(index++);
+		Property property4 = propertyRegistry.getProperties().get(index++);
+
+		// Create layer1: views ={} propInstances={}
+		Layer layer1 = createLayer(layer, Arrays.asList(view1), Arrays.asList(property1));
+
+		// Create layer2: views ={} propInstances={}
+		Layer layer2 = createLayer(layer, Arrays.asList(view1, view2), Arrays.asList(property1, property2));
+
+		// Create layer3: views ={} propInstances={}
+		Layer layer3 = createLayer(layer, Arrays.asList(view3), Arrays.asList(property3));
+
+
+
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#getDiagram()}.
+	 */
+	@Test
+	public void testGetDiagram() {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+		// Create stack
+		LayersStack stack = application.getLayersStackFor(diagram);
+
+		// Create synchronizer
+		LayerStackSynchronizer synchronizer = new LayerStackSynchronizer(stack);
+
+
+		// Check creation
+		assertNotNull("getDiagram", synchronizer.getDiagram());
+		assertSame("getDiagram", diagram, synchronizer.getDiagram());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#getLayersStack()}.
+	 */
+	@Test
+	public void testGetLayersStack() {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+		// Create stack
+		LayersStack stack = application.getLayersStackFor(diagram);
+
+		// Create synchronizer
+		LayerStackSynchronizer synchronizer = new LayerStackSynchronizer(stack);
+
+
+		// Check creation
+		assertNotNull("getLayersStack", synchronizer.getLayersStack());
+		assertSame("getLayersStack", stack, synchronizer.getLayersStack());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#dispose()}.
+	 */
+	@Test
+	@Ignore
+	public void testDispose() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#isDisposed()}.
+	 */
+	@Test
+	@Ignore
+	public void testIsDisposed() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#propertyValueAdded(org.eclipse.emf.common.notify.Notification)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testPropertyValueAdded() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+		// Create stack
+		LayersStack stack = application.getLayersStackFor(diagram);
+
+		// Create a TopLayer
+		TopLayerOperator layer = LayersFactory.eINSTANCE.createTopLayerOperator();
+		layer.setApplication(application);
+		stack.setLayers(layer);
+
+		// Create synchronizer
+		LayerStackSynchronizerSubclass synchronizer = new LayerStackSynchronizerSubclass(stack);
+		TriggeredEventTraces traces = synchronizer.traces;
+
+		// Create Views
+		View view1 = NotationFactory.eINSTANCE.createShape();
+
+		// Create Properties
+		int index = 0;
+		Property property1 = propertyRegistry.getProperties().get(index++);
+		Property property2 = propertyRegistry.getProperties().get(index++);
+
+		// Create layer1: views ={} propInstances={}
+		Layer layer1 = createLayer(layer, Arrays.asList(view1), Arrays.asList(property1));
+
+		// Checks
+		traces.clear();
+		// add a property
+		layer1.addPropertyInstance(property2);
+
+		assertTrue("event sent", traces.size() > 0);
+		assertSame("event sent", "propertyValueAdded", traces.get(0).name);
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#propertyValueRemoved(org.eclipse.emf.common.notify.Notification)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testPropertyValueRemoved() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+		// Create stack
+		LayersStack stack = application.getLayersStackFor(diagram);
+
+		// Create a TopLayer
+		TopLayerOperator layer = LayersFactory.eINSTANCE.createTopLayerOperator();
+		layer.setApplication(application);
+		stack.setLayers(layer);
+
+		// Create synchronizer
+		LayerStackSynchronizerSubclass synchronizer = new LayerStackSynchronizerSubclass(stack);
+		TriggeredEventTraces traces = synchronizer.traces;
+
+		// Create Views
+		View view1 = NotationFactory.eINSTANCE.createShape();
+
+		// Create Properties
+		int index = 0;
+		Property property1 = propertyRegistry.getProperties().get(index++);
+		Property property2 = propertyRegistry.getProperties().get(index++);
+
+		// Create layer1: views ={} propInstances={}
+		Layer layer1 = createLayer(layer, Arrays.asList(view1), Arrays.asList(property1, property2));
+
+		// Checks
+		traces.clear();
+		// remove a property
+		layer1.removePropertyInstance(property2);
+
+		assertTrue("event sent", traces.size() > 0);
+		assertSame("event sent", "propertyValueRemoved", traces.get(0).name);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#propertyValueChanged(org.eclipse.emf.common.notify.Notification)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testPropertyValueChanged() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+		// Create stack
+		LayersStack stack = application.getLayersStackFor(diagram);
+
+		// Create a TopLayer
+		TopLayerOperator layer = LayersFactory.eINSTANCE.createTopLayerOperator();
+		layer.setApplication(application);
+		stack.setLayers(layer);
+
+		// Create synchronizer
+		LayerStackSynchronizerSubclass synchronizer = new LayerStackSynchronizerSubclass(stack);
+		TriggeredEventTraces traces = synchronizer.traces;
+
+		// Create Views
+		View view1 = NotationFactory.eINSTANCE.createShape();
+
+		// Create Properties
+		int index = 0;
+		Property property1 = propertyRegistry.getProperties().get(index++);
+		Property property2 = propertyRegistry.getProperties().get(index++);
+
+		// Create layer1: views ={} propInstances={}
+		Layer layer1 = createLayer(layer, Arrays.asList(view1), Arrays.asList(property1, property2));
+
+		// Checks
+		traces.clear();
+		// change a property value
+		TypeInstance value = layer1.getPropertyInstance(property1);
+		// Check the type of the instance
+		// We don't know the type as it is set externally in the Property registry.
+		if (value instanceof StringInstance) {
+			assertTrue("value is instance of String", value instanceof StringInstance);
+			StringInstance stringValue = (StringInstance) value;
+			stringValue.setValue("newValue");
+		}
+		else if (value instanceof BooleanInstance) {
+			BooleanInstance realValue = (BooleanInstance) value;
+			realValue.setValue(true);
+		}
+
+		// What for ?
+		layer1.removePropertyInstance(property2);
+
+		assertTrue("event sent", traces.size() > 0);
+		assertSame("event sent", "propertyValueChanged", traces.get(0).name);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#layerAdded(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	@Ignore
+	public void testLayerAdded() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#layerRemoved(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	@Ignore
+	public void testLayerRemoved() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#layerMoved(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	@Ignore
+	public void testLayerMoved() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#layerSet(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	@Ignore
+	public void testLayerSet() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#viewAddedToLayer(org.eclipse.emf.common.notify.Notification)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testViewAddedToLayer() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+		// Create stack
+		LayersStack stack = application.getLayersStackFor(diagram);
+
+		// Create a TopLayer
+		TopLayerOperator layer = LayersFactory.eINSTANCE.createTopLayerOperator();
+		layer.setApplication(application);
+		stack.setLayers(layer);
+
+		// Create synchronizer
+		LayerStackSynchronizerSubclass synchronizer = new LayerStackSynchronizerSubclass(stack);
+		TriggeredEventTraces traces = synchronizer.traces;
+
+		// Create Views
+		View view1 = NotationFactory.eINSTANCE.createShape();
+		View view2 = NotationFactory.eINSTANCE.createShape();
+
+		// Create Properties
+		int index = 0;
+		Property property1 = propertyRegistry.getProperties().get(index++);
+
+		// Create layer1: views ={} propInstances={}
+		Layer layer1 = createLayer(layer, Arrays.asList(view1), Arrays.asList(property1));
+
+		// action
+		traces.clear();
+		// remove a view
+		layer1.getViews().add(view2);
+
+		// assert
+		assertTrue("event sent", traces.size() > 0);
+		TriggeredEvent event = traces.get(0);
+		assertSame("event sent", "viewAddedToLayer", event.name);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#viewAddedToLayer(org.eclipse.emf.common.notify.Notification)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testNViewAddedToLayer() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+		// Create stack
+		LayersStack stack = application.getLayersStackFor(diagram);
+
+		// Create a TopLayer
+		TopLayerOperator layer = LayersFactory.eINSTANCE.createTopLayerOperator();
+		layer.setApplication(application);
+		stack.setLayers(layer);
+
+		// Create synchronizer
+		LayerStackSynchronizerSubclass synchronizer = new LayerStackSynchronizerSubclass(stack);
+		TriggeredEventTraces traces = synchronizer.traces;
+
+		// Create Views
+		View view1 = NotationFactory.eINSTANCE.createShape();
+		View view2 = NotationFactory.eINSTANCE.createShape();
+		View view3 = NotationFactory.eINSTANCE.createShape();
+
+		List<View> viewsToAttach = Arrays.asList(view1);
+		List<View> viewsToAdd = Arrays.asList(view2, view3);
+
+		// Create Properties
+		int index = 0;
+		Property property1 = propertyRegistry.getProperties().get(index++);
+
+		// Create layer1: views ={} propInstances={}
+		Layer layer1 = createLayer(layer, viewsToAttach, Arrays.asList(property1));
+
+		// action
+		traces.clear();
+		// remove a view
+		layer1.getViews().addAll(viewsToAdd);
+
+		// assert
+		assertTrue("event sent", traces.size() > 0);
+		TriggeredEvent event = traces.get(0);
+		assertSame("event sent", "multiViewsAddedToLayer", event.name);
+
+		// Check the collection
+		Notification notification = event.notifier;
+		assertNotNull("notification is set", notification);
+
+		List<View> addedViews = LayersModelEventUtils.ViewEvents.getViewsAdded(notification);
+		assertEquals("both removed list have the same size", viewsToAdd.size(), addedViews.size());
+		assertTrue("notification contains removed views", addedViews.containsAll(viewsToAdd));
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#viewRemovedFromLayer(org.eclipse.emf.common.notify.Notification)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testViewRemovedFromLayer() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+		// Create stack
+		LayersStack stack = application.getLayersStackFor(diagram);
+
+		// Create a TopLayer
+		TopLayerOperator layer = LayersFactory.eINSTANCE.createTopLayerOperator();
+		layer.setApplication(application);
+		stack.setLayers(layer);
+
+		// Create synchronizer
+		LayerStackSynchronizerSubclass synchronizer = new LayerStackSynchronizerSubclass(stack);
+		TriggeredEventTraces traces = synchronizer.traces;
+
+		// Create Views
+		View view1 = NotationFactory.eINSTANCE.createShape();
+		View view2 = NotationFactory.eINSTANCE.createShape();
+
+		// Create Properties
+		int index = 0;
+		Property property1 = propertyRegistry.getProperties().get(index++);
+
+		// Create layer1: views ={} propInstances={}
+		Layer layer1 = createLayer(layer, Arrays.asList(view1, view2), Arrays.asList(property1));
+
+		// action
+		traces.clear();
+		// remove a view
+		layer1.getViews().remove(view2);
+
+		// assert
+		assertTrue("event sent", traces.size() > 0);
+		TriggeredEvent event = traces.get(0);
+		assertSame("event sent", "viewRemovedFromLayer", event.name);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#viewRemovedFromLayer(org.eclipse.emf.common.notify.Notification)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testNViewRemovedFromLayer() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+		// Create stack
+		LayersStack stack = application.getLayersStackFor(diagram);
+
+		// Create a TopLayer
+		TopLayerOperator layer = LayersFactory.eINSTANCE.createTopLayerOperator();
+		layer.setApplication(application);
+		stack.setLayers(layer);
+
+		// Create synchronizer
+		LayerStackSynchronizerSubclass synchronizer = new LayerStackSynchronizerSubclass(stack);
+		TriggeredEventTraces traces = synchronizer.traces;
+
+		// Create Views
+		View view1 = NotationFactory.eINSTANCE.createShape();
+		View view2 = NotationFactory.eINSTANCE.createShape();
+		View view3 = NotationFactory.eINSTANCE.createShape();
+
+		List<View> viewsToAttach = Arrays.asList(view1, view2, view3);
+		List<View> viewsToRemove = Arrays.asList(view2, view3);
+
+
+		// Create Properties
+		int index = 0;
+		Property property1 = propertyRegistry.getProperties().get(index++);
+
+		// Create layer1: views ={} propInstances={}
+		Layer layer1 = createLayer(layer, viewsToAttach, Arrays.asList(property1));
+
+		// action
+		traces.clear();
+		// remove a view
+		layer1.getViews().removeAll(viewsToRemove);
+
+		// assert
+		assertTrue("event sent", traces.size() > 0);
+		TriggeredEvent event = traces.get(0);
+		assertSame("event sent", "multiViewsRemovedFromLayer", event.name);
+		// Check the collection
+		Notification notification = event.notifier;
+		assertNotNull("notification is set", notification);
+
+		List<View> removedViews = LayersModelEventUtils.ViewEvents.getViewsRemoved(notification);
+		assertEquals("both removed list have the same size", removedViews.size(), viewsToRemove.size());
+		assertTrue("notification contains removed views", removedViews.containsAll(viewsToRemove));
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#viewMovedBetweenLayer(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	@Ignore
+	public void testViewMovedBetweenLayer() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#diagramViewAdded(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	@Ignore
+	public void testDiagramViewAdded() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayerStackSynchronizer#diagramViewRemoved(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	@Ignore
+	public void testDiagramViewRemoved() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Create a layer with the specified view and property set
+	 *
+	 * @param asList
+	 * @param asList2
+	 * @return
+	 * @throws LayersException
+	 */
+	protected Layer createLayer(LayerOperator parent, List<View> views, List<Property> properties) throws LayersException {
+
+		// Create the layer
+		Layer layer = LayersFactory.eINSTANCE.createLayer();
+		// Set the application (needed ?)
+		layer.setApplication(parent.getApplication());
+		// Attach it to its parent
+		parent.getLayers().add(layer);
+
+
+		// Add views
+		for (View view : views) {
+			layer.getViews().add(view);
+		}
+
+		// Add property instances
+		for (Property property : properties) {
+			layer.addPropertyInstance(property);
+		}
+		return layer;
+	}
+
+	/**
+	 * Test method for {@link #createLayer(List, List)}
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testCreateLayer() throws LayersException {
+
+		// Create requested objects
+		TopLayerOperator layerParent = LayersFactory.eINSTANCE.createTopLayerOperator();
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		layerParent.setApplication(application);
+		PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+
+		// Create Views
+		View view1 = NotationFactory.eINSTANCE.createShape();
+		View view2 = NotationFactory.eINSTANCE.createShape();
+		View view3 = NotationFactory.eINSTANCE.createShape();
+
+		// Create Properties
+		int index = 0;
+		Property property1 = propertyRegistry.getProperties().get(index++);
+		Property property2 = propertyRegistry.getProperties().get(index++);
+		Property property3 = propertyRegistry.getProperties().get(index++);
+
+		// Create layer1: views ={} propInstances={}
+		Layer layer = createLayer(layerParent, Arrays.asList(view1, view2), Arrays.asList(property1, property2));
+
+		// Checks
+		assertNotNull("layer created", layer);
+		assertSame("views added", 2, layer.getViews().size());
+
+		assertSame("property instance added", 2, layer.getPropertyValueMap().values().size());
+		assertSame("property instance is correctly set", layer.getPropertyValueMap().get(property1.getName()), layer.getPropertyInstance(property1));
+		assertSame("property instance is correctly set", layer.getPropertyValueMap().get(property2.getName()), layer.getPropertyInstance(property2));
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayersModelEventNotifierTest.java b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayersModelEventNotifierTest.java
new file mode 100755
index 0000000..cb669c7
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayersModelEventNotifierTest.java
@@ -0,0 +1,590 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.runtime.utils.TriggeredEventTraces;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.util.PropertyUtils;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class LayersModelEventNotifierTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#LayersModelEventNotifier(org.eclipse.papyrus.layers.stackmodel.layers.LayersStack)}.
+	 */
+	@Test
+	public void testLayersModelEventNotifier() {
+
+		// Create a notifier
+		LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+		LayersModelEventNotifier notifier = new LayersModelEventNotifier(layersStack);
+
+		// // Add a trace listener
+		// ILayersModelEventListener listener = new TraceLayersModelEventListener();
+		// notifier.addLayersModelEventListener(listener);
+
+		// Check creation
+		assertNotNull("notifier created", notifier);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#activate()}.
+	 */
+	@Test
+	@Ignore
+	public void testActivate() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#deactivate()}.
+	 */
+	@Test
+	@Ignore
+	public void testDeactivate() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#dispose()}.
+	 */
+	@Test
+	public void testDispose() {
+		// Create a notifier
+		LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+		LayersModelEventNotifier notifier = new LayersModelEventNotifier(layersStack);
+
+		// Add a trace listener
+		TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+		notifier.addLayersModelEventListener(listener);
+
+		TriggeredEventTraces traces = listener.traces;
+		// Add a layer
+		LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+		layersStack.setLayers(layerOp1);
+
+		// dispose notifier
+		assertFalse("notifier disposed", notifier.isDisposed());
+		notifier.dispose();
+		assertTrue("notifier disposed", notifier.isDisposed());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#addLayersModelEventListener(org.eclipse.papyrus.layers.runtime.ILayersModelEventListener)}.
+	 */
+	@Test
+	public void testAddLayersModelEventListener() {
+		// Create a notifier
+		LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+		LayersModelEventNotifier notifier = new LayersModelEventNotifier(layersStack);
+
+		// Add a trace listener
+		ILayersModelEventListener listener = new TraceLayersModelEventListener();
+		notifier.addLayersModelEventListener(listener);
+
+		// Check creation
+		assertNotNull("notifier created", notifier);
+		assertTrue("listener added to internal list", notifier.listeners.contains(listener));
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#removeLayersModelEventListener(org.eclipse.papyrus.layers.runtime.ILayersModelEventListener)}.
+	 */
+	@Test
+	public void testRemoveLayersModelEventListener() {
+		// Create a notifier
+		LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+		LayersModelEventNotifier notifier = new LayersModelEventNotifier(layersStack);
+
+		// Add a trace listener
+		ILayersModelEventListener listener = new TraceLayersModelEventListener();
+		notifier.addLayersModelEventListener(listener);
+		assertTrue("listener added to internal list", notifier.listeners.contains(listener));
+
+		// Remove the listener
+		notifier.removeLayersModelEventListener(listener);
+		assertFalse("listener removed from internal list", notifier.listeners.contains(listener));
+
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#firePropertyValueAddedEvent(org.eclipse.emf.common.notify.Notification)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testFirePropertyValueAddedEvent() throws LayersException {
+		// Create a notifier
+		LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+		LayersModelEventNotifier notifier = new LayersModelEventNotifier(layersStack);
+
+		// Add a trace listener
+		TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+		notifier.addLayersModelEventListener(listener);
+
+		TriggeredEventTraces traces = listener.traces;
+		// Add a layer
+		LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+		System.err.println("setLayers(layerOp1)");
+		layersStack.setLayers(layerOp1);
+		// Check events
+		assertTrue("event recorded", traces.contains("layerSet"));
+		assertEquals("one event recorded", 1, traces.traces.size());
+		assertEquals("one event recorded", "layerSet", traces.traces.get(0).name);
+
+		// Add a layer
+		Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+		System.err.println("layerOp1.getLayers().add(layer1)");
+		layerOp1.getLayers().add(layer1);
+
+		// Add an instance to layer1
+		traces.traces.clear();
+		Property isSunday = PropertyUtils.getInstance().createProperty("isSunday", LayersPackage.eINSTANCE.getBooleanType());
+		layer1.addPropertyInstance(isSunday);
+		// Check events
+		assertEquals("one event recorded", "propertyValueAdded", traces.traces.get(0).name);
+		assertTrue("event recorded", traces.contains("propertyValueAdded"));
+		assertEquals("one event recorded", 1, traces.traces.size());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#firePropertyValueRemoved(org.eclipse.emf.common.notify.Notification)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testFirePropertyValueRemoved() throws LayersException {
+		// Create a notifier
+		LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+		LayersModelEventNotifier notifier = new LayersModelEventNotifier(layersStack);
+
+		// Add a trace listener
+		TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+		notifier.addLayersModelEventListener(listener);
+
+		TriggeredEventTraces traces = listener.traces;
+		// Add a layer
+		LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+		System.err.println("setLayers(layerOp1)");
+		layersStack.setLayers(layerOp1);
+		// Check events
+		assertTrue("event recorded", traces.contains("layerSet"));
+		assertEquals("one event recorded", 1, traces.traces.size());
+		assertEquals("one event recorded", "layerSet", traces.traces.get(0).name);
+
+		// Add a layer
+		Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+		System.err.println("layerOp1.getLayers().add(layer1)");
+		layerOp1.getLayers().add(layer1);
+
+		// Add an instance to layer1
+		String propertyName = "isSunday";
+		Property isSunday = PropertyUtils.getInstance().createProperty(propertyName, LayersPackage.eINSTANCE.getBooleanType());
+		layer1.addPropertyInstance(isSunday);
+
+		// Remove the instance
+		traces.traces.clear();
+		layer1.removePropertyInstance(isSunday);
+
+		// Check events
+		assertEquals("one event recorded", "propertyValueRemoved", traces.traces.get(0).name);
+		assertTrue("event recorded", traces.contains("propertyValueRemoved"));
+		assertEquals("one event recorded", 1, traces.traces.size());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#firePropertyValueChanged(org.eclipse.emf.common.notify.Notification)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testFirePropertyValueChanged() throws LayersException {
+		// Create a notifier
+		LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+		LayersModelEventNotifier notifier = new LayersModelEventNotifier(layersStack);
+
+		// Add a trace listener
+		TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+		notifier.addLayersModelEventListener(listener);
+
+		TriggeredEventTraces traces = listener.traces;
+		// create layer op
+		LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+		layersStack.setLayers(layerOp1);
+
+		// Add a layer
+		Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+		layerOp1.getLayers().add(layer1);
+
+		// Add an instance to layer1
+		String propertyName = "isSunday";
+		Property isSunday = PropertyUtils.getInstance().createProperty(propertyName, LayersPackage.eINSTANCE.getBooleanType());
+		BooleanInstance isSundayInstance = (BooleanInstance) layer1.addPropertyInstance(isSunday);
+
+		// Change the value of the instance
+		traces.traces.clear();
+		isSundayInstance.setValue(true);
+
+		// Check events
+		assertEquals("one event recorded", "propertyValueChanged", traces.traces.get(0).name);
+		assertTrue("event recorded", traces.contains("propertyValueChanged"));
+		assertEquals("one event recorded", 1, traces.traces.size());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#fireLayerAdded(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testFireLayerAdded() {
+		// Create a notifier
+		LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+		LayersModelEventNotifier notifier = new LayersModelEventNotifier(layersStack);
+
+		// Add a trace listener
+		TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+		notifier.addLayersModelEventListener(listener);
+
+		TriggeredEventTraces traces = listener.traces;
+		// Add a layer
+		LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+		System.err.println("setLayers(layerOp1)");
+		layersStack.setLayers(layerOp1);
+		// Check events
+		assertTrue("event recorded", traces.contains("layerSet"));
+		assertEquals("one event recorded", 1, traces.traces.size());
+		assertEquals("one event recorded", "layerSet", traces.traces.get(0).name);
+
+		// Add a layer
+		Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+		System.err.println("layerOp1.getLayers().add(layer1)");
+		layerOp1.getLayers().add(layer1);
+
+		// Check events
+		assertTrue("event recorded", traces.contains("layerAdded"));
+		assertEquals("one event recorded", 2, traces.traces.size());
+		assertEquals("one event recorded", "layerAdded", traces.traces.get(1).name);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#fireLayerRemoved(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testFireLayerRemoved() {
+		// Create a notifier
+		LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+		LayersModelEventNotifier notifier = new LayersModelEventNotifier(layersStack);
+
+		// Add a trace listener
+		TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+		notifier.addLayersModelEventListener(listener);
+
+		TriggeredEventTraces traces = listener.traces;
+		// Add a layer
+		LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+		layersStack.setLayers(layerOp1);
+
+		// Add a layer
+		Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+		layerOp1.getLayers().add(layer1);
+
+		// Remove layer
+		traces.clear();
+		layerOp1.getLayers().remove(layer1);
+
+		// Check events
+		assertTrue("event recorded", traces.contains("layerRemoved"));
+		assertEquals("one event recorded", 1, traces.traces.size());
+		assertEquals("one event recorded", "layerRemoved", traces.traces.get(0).name);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#fireLayerRemoved(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testFireLayerSetForRootLayer() {
+		// Create a notifier
+		LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+		LayersModelEventNotifier notifier = new LayersModelEventNotifier(layersStack);
+
+		// Add a trace listener
+		TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+		notifier.addLayersModelEventListener(listener);
+
+		TriggeredEventTraces traces = listener.traces;
+		// Add a layer as root
+		LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+		layersStack.setLayers(layerOp1);
+
+		// Add a layer
+		Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+		layerOp1.getLayers().add(layer1);
+
+		// Remove root layer
+		traces.clear();
+		layersStack.setLayers(null);
+
+		// Check events
+		assertTrue("event recorded", traces.contains("layerSet"));
+		assertEquals("one event recorded", 1, traces.traces.size());
+		assertEquals("one event recorded", "layerSet", traces.traces.get(0).name);
+		// Note that no event is sent for the nested layer
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#fireLayerRemoved(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testFireEventWhenRootLayerIsReplaced() {
+		// Create a notifier
+		LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+		LayersModelEventNotifier notifier = new LayersModelEventNotifier(layersStack);
+
+		// Add a trace listener
+		TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+		notifier.addLayersModelEventListener(listener);
+
+		TriggeredEventTraces traces = listener.traces;
+		// Add a layer as root
+		LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+		layersStack.setLayers(layerOp1);
+
+		// Add a layer
+		Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+		layerOp1.getLayers().add(layer1);
+
+		// replace root layer
+		traces.clear();
+		Layer layer2 = LayersFactory.eINSTANCE.createLayer();
+		layersStack.setLayers(layer2);
+
+		// Check events
+		assertTrue("event recorded", traces.contains("layerSet"));
+		assertEquals("one event recorded", 1, traces.traces.size());
+		assertEquals("one event recorded", "layerSet", traces.traces.get(0).name);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#fireLayerRemoved(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testFireEventWhenLayerIsReplaced() {
+		// Create a notifier
+		LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+		LayersModelEventNotifier notifier = new LayersModelEventNotifier(layersStack);
+
+		// Add a trace listener
+		TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+		notifier.addLayersModelEventListener(listener);
+
+		TriggeredEventTraces traces = listener.traces;
+		// Add a layer as root
+		LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+		layersStack.setLayers(layerOp1);
+
+		// Add a layer
+		Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+		layerOp1.getLayers().add(layer1);
+
+		// replace root layer
+		traces.clear();
+		Layer layer2 = LayersFactory.eINSTANCE.createLayer();
+		layerOp1.getLayers().set(0, layer2);
+
+		// Check events
+		assertTrue("event recorded", traces.contains("layerSet"));
+		assertEquals("one event recorded", 1, traces.traces.size());
+		assertEquals("one event recorded", "layerSet", traces.traces.get(0).name);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#fireLayerMoved(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testFireLayerMoved() {
+		// Create a notifier
+		LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+		LayersModelEventNotifier notifier = new LayersModelEventNotifier(layersStack);
+
+		// Add a trace listener
+		TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+		notifier.addLayersModelEventListener(listener);
+
+		TriggeredEventTraces traces = listener.traces;
+		// Add a layer
+		LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+		layersStack.setLayers(layerOp1);
+
+		// Add a layer
+		Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+		layerOp1.getLayers().add(layer1);
+
+		// Add a layer
+		Layer layer2 = LayersFactory.eINSTANCE.createLayer();
+		layerOp1.getLayers().add(layer2);
+
+		// move layer
+		// EMF list are EList, which contains a move operation
+		traces.clear();
+		EList<LayerExpression> list = layerOp1.getLayers();
+		list.move(0, layer2);
+
+		// Check events
+		assertTrue("event recorded", traces.contains("layerMoved"));
+		assertEquals("one event recorded", 1, traces.traces.size());
+		assertEquals("one event recorded", "layerMoved", traces.traces.get(0).name);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#fireViewAddedToLayer(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testFireViewAddedToLayer() {
+		// Create a notifier
+		LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+		LayersModelEventNotifier notifier = new LayersModelEventNotifier(layersStack);
+
+		// Add a trace listener
+		TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+		notifier.addLayersModelEventListener(listener);
+
+		TriggeredEventTraces traces = listener.traces;
+		// Add a layer
+		LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+		layersStack.setLayers(layerOp1);
+
+		// Add a layer
+		Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+		layerOp1.getLayers().add(layer1);
+
+		// Add a layer
+		Layer layer2 = LayersFactory.eINSTANCE.createLayer();
+		layerOp1.getLayers().add(layer2);
+
+		// add a view to layer1
+		traces.clear();
+		View view1 = NotationFactory.eINSTANCE.createShape();
+		layer1.getViews().add(view1);
+
+		// Check events
+		assertEquals("one event recorded", 1, traces.traces.size());
+		assertEquals("one event recorded", "viewAddedToLayer", traces.traces.get(0).name);
+		assertTrue("event recorded", traces.contains("viewAddedToLayer"));
+
+		// add a view to layer2
+		traces.clear();
+		View view2 = NotationFactory.eINSTANCE.createShape();
+		layer2.getViews().add(view2);
+
+		// Check events
+		assertEquals("one event recorded", 1, traces.traces.size());
+		assertEquals("one event recorded", "viewAddedToLayer", traces.traces.get(0).name);
+		assertTrue("event recorded", traces.contains("viewAddedToLayer"));
+
+		// Use the same view 2 times
+		traces.clear();
+		layer2.getViews().add(view1);
+		// Check events
+		assertEquals("one event recorded", 1, traces.traces.size());
+		assertEquals("one event recorded", "viewAddedToLayer", traces.traces.get(0).name);
+		assertTrue("event recorded", traces.contains("viewAddedToLayer"));
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#fireViewRemovedFromLayer(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testFireViewRemovedFromLayer() {
+		// Create a notifier
+		LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+		LayersModelEventNotifier notifier = new LayersModelEventNotifier(layersStack);
+
+		// Add a trace listener
+		TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+		notifier.addLayersModelEventListener(listener);
+
+		TriggeredEventTraces traces = listener.traces;
+		// Add a layer
+		LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+		layersStack.setLayers(layerOp1);
+
+		// Add a layer
+		Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+		layerOp1.getLayers().add(layer1);
+
+		// Add a layer
+		Layer layer2 = LayersFactory.eINSTANCE.createLayer();
+		layerOp1.getLayers().add(layer2);
+
+		// add a view to layer1
+		View view1 = NotationFactory.eINSTANCE.createShape();
+		layer1.getViews().add(view1);
+
+		// Remove the view
+		traces.clear();
+		layer1.getViews().remove(view1);
+
+		// Check events
+		assertEquals("one event recorded", 1, traces.traces.size());
+		assertEquals("one event recorded", "viewRemovedFromLayer", traces.traces.get(0).name);
+		assertTrue("event recorded", traces.contains("viewRemovedFromLayer"));
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventNotifier#fireViewMovedBetweenLayer(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	@Ignore
+	public void testFireViewMovedBetweenLayer() {
+		fail("Not yet implemented");
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayersStackAndApplicationLifeCycleEventNotifierTest.java b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayersStackAndApplicationLifeCycleEventNotifierTest.java
new file mode 100755
index 0000000..a52db14
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayersStackAndApplicationLifeCycleEventNotifierTest.java
@@ -0,0 +1,235 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+/**
+ * @author dumoulin
+ *
+ */
+public class LayersStackAndApplicationLifeCycleEventNotifierTest {
+
+	/**
+	 * URI used to store the created model.
+	 */
+	protected static final String PROJECT_MODEL_URI = "org.eclipse.papyrus.infra.core/tmp/model1.di";
+
+	/**
+	 * ModelSet created for each test
+	 */
+	protected ModelSet modelSet;
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+		// Create ModelSet and Model
+		ModelSet mngr = new ModelSet();
+		// LayersModel
+		LayersModel layersModel = new LayersModel();
+		mngr.registerModel(layersModel);
+		// Notation model
+		NotationModel notationModel = new NotationModel();
+		mngr.registerModel(notationModel);
+		// Do create resources
+		URI uri = URI.createPlatformResourceURI(PROJECT_MODEL_URI, true);
+		mngr.createModels(uri);
+
+		modelSet = mngr;
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+		modelSet.unload();
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersStackAndApplicationLifeCycleEventNotifier#LayersStackAndApplicationLifeCycleEventNotifier(org.eclipse.papyrus.layers.runtime.model.LayersModel)}.
+	 */
+	@Test
+	public void testLayersStackAndApplicationLifeCycleEventNotifier() {
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+
+		LayersStackAndApplicationLifeCycleEventNotifier notifier = new LayersStackAndApplicationLifeCycleEventNotifier(layersModel);
+		assertNotNull("application created", notifier);
+
+		// dispose
+		notifier.dispose();
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersStackAndApplicationLifeCycleEventNotifier#dispose()}.
+	 */
+	@Test
+	public void testDispose() {
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+
+		LayersStackAndApplicationLifeCycleEventNotifier synchronizer = new LayersStackAndApplicationLifeCycleEventNotifier(layersModel);
+		assertFalse("application created", synchronizer.isDisposed());
+
+		// Try to dispose
+		synchronizer.dispose();
+		assertTrue("object is disposed", synchronizer.isDisposed());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersStackAndApplicationLifeCycleEventNotifier#isDisposed()}.
+	 */
+	@Test
+	public void testIsDisposed() {
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+
+		LayersStackAndApplicationLifeCycleEventNotifier synchronizer = new LayersStackAndApplicationLifeCycleEventNotifier(layersModel);
+		assertFalse("application created", synchronizer.isDisposed());
+
+		// Try to dispose
+		synchronizer.dispose();
+		assertTrue("object is disposed", synchronizer.isDisposed());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersStackAndApplicationLifeCycleEventNotifier#addLayersModelEventListener(org.eclipse.papyrus.layers.runtime.ILayersStackApplicationEventListener)}.
+	 */
+	@Test
+	@Ignore
+	public void testAddLayersModelEventListener() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersStackAndApplicationLifeCycleEventNotifier#removeLayersModelEventListener(org.eclipse.papyrus.layers.runtime.ILayersStackApplicationEventListener)}.
+	 */
+	@Test
+	@Ignore
+	public void testRemoveLayersModelEventListener() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersStackAndApplicationLifeCycleEventNotifier#addLayersStackApplicationLifeCycleEventListener(org.eclipse.papyrus.layers.runtime.model.ILayersModelRootEventListener)}.
+	 */
+	@Test
+	@Ignore
+	public void testAddLayersStackApplicationLifeCycleEventListener() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersStackAndApplicationLifeCycleEventNotifier#removeLayersStackApplicationLifeCycleEventListener(org.eclipse.papyrus.layers.runtime.model.ILayersModelRootEventListener)}.
+	 */
+	@Test
+	@Ignore
+	public void testRemoveLayersStackApplicationLifeCycleEventListener() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test the correct creation of the modelSet
+	 */
+	@Test
+	public void testModelSetCreation() {
+
+		NotationModel notationModel = (NotationModel) modelSet.getModel(NotationModel.MODEL_ID);
+		assertNotNull("NotationModel is created", notationModel);
+		// Try to create a Diagram
+		notationModel.addDiagram(NotationFactory.eINSTANCE.createDiagram());
+		//
+		assertNotNull("Diagram is in the roots", notationModel.getResource().getContents().get(0));
+
+
+
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+		assertNotNull("LayerModel is created", layersModel);
+		assertNotNull("LayerStackApplication is created", layersModel.getLayerStackApplication());
+
+
+	}
+
+	/**
+	 * Test Layer added event correctly catched
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersStackApplicationEventNotifier#layerStackAdded(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testLayerStackAdded() {
+		NotationModel notationModel = (NotationModel) modelSet.getModel(NotationModel.MODEL_ID);
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		notationModel.addDiagram(diagram);
+		// Create a helper used to attach a LayerStack to diagram.
+		NotationDiagramHelper helper = new NotationDiagramHelper(layersModel, diagram);
+
+		// Create the notifier
+		TraceLayersStackApplicationEventListener traces = new TraceLayersStackApplicationEventListener();
+		LayersStackAndApplicationLifeCycleEventNotifier notifier = new LayersStackAndApplicationLifeCycleEventNotifier(layersModel);
+		notifier.addLayersModelEventListener(traces);
+
+		// Add a layer Stack to the diagram
+		helper.attachLayersStack();
+
+		// Check if the appropriate method is called
+		assertTrue("event catched", traces.traces.contains("layerStackAdded"));
+
+		// dispose
+		notifier.dispose();
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersStackApplicationEventNotifier#layerStackRemoved(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testLayerStackRemoved() {
+		NotationModel notationModel = (NotationModel) modelSet.getModel(NotationModel.MODEL_ID);
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		notationModel.addDiagram(diagram);
+		// Create a helper used to attach a LayerStack to diagram.
+		NotationDiagramHelper helper = new NotationDiagramHelper(layersModel, diagram);
+
+		// Create the notifier
+		TraceLayersStackApplicationEventListener traces = new TraceLayersStackApplicationEventListener();
+		LayersStackAndApplicationLifeCycleEventNotifier notifier = new LayersStackAndApplicationLifeCycleEventNotifier(layersModel);
+		notifier.addLayersModelEventListener(traces);
+
+		// Add a layer Stack to the diagram
+		helper.attachLayersStack();
+
+		traces.traces.clear();
+		helper.removeLayersStack();
+
+		// Check if the appropriate method is called
+		assertTrue("event catched", traces.traces.contains("layerStackRemoved"));
+
+		// dispose
+		notifier.dispose();
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayersStackApplicationEventNotifierTest.java b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayersStackApplicationEventNotifierTest.java
new file mode 100755
index 0000000..625a246
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/LayersStackApplicationEventNotifierTest.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class LayersStackApplicationEventNotifierTest {
+
+	/**
+	 * URI used to store the created model.
+	 */
+	protected static final String PROJECT_MODEL_URI = "org.eclipse.papyrus.infra.core/tmp/model1.di";
+
+	/**
+	 * ModelSet created for each test
+	 */
+	protected ModelSet modelSet;
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+		// Create ModelSet and Model
+		ModelSet mngr = new ModelSet();
+		// LayersModel
+		LayersModel layersModel = new LayersModel();
+		mngr.registerModel(layersModel);
+		// Notation model
+		NotationModel notationModel = new NotationModel();
+		mngr.registerModel(notationModel);
+		// Do create resources
+		URI uri = URI.createPlatformResourceURI(PROJECT_MODEL_URI, true);
+		mngr.createModels(uri);
+
+		modelSet = mngr;
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+		modelSet.unload();
+	}
+
+	/**
+	 * Test the correct creation of the modelSet
+	 */
+	@Test
+	public void testModelSetCreation() {
+
+		NotationModel notationModel = (NotationModel) modelSet.getModel(NotationModel.MODEL_ID);
+		assertNotNull("NotationModel is created", notationModel);
+		// Try to create a Diagram
+		notationModel.addDiagram(NotationFactory.eINSTANCE.createDiagram());
+		//
+		assertNotNull("Diagram is in the roots", notationModel.getResource().getContents().get(0));
+
+
+
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+		assertNotNull("LayerModel is created", layersModel);
+		assertNotNull("LayerStackApplication is created", layersModel.getLayerStackApplication());
+
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersStackApplicationEventNotifier#LayersStackApplicationEventNotifier(org.eclipse.papyrus.layers.runtime.model.LayersModel)}.
+	 */
+	@Test
+	public void testLayersStackApplicationEventNotifier() {
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+
+		LayersStackApplicationEventNotifier notifier = new LayersStackApplicationEventNotifier(layersModel);
+		assertNotNull("application created", notifier);
+
+		// dispose
+		notifier.dispose();
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersStackApplicationEventNotifier#dispose()}.
+	 */
+	@Test
+	public void testDispose() {
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+
+		LayersStackApplicationEventNotifier synchronizer = new LayersStackApplicationEventNotifier(layersModel);
+		assertFalse("application created", synchronizer.isDisposed());
+
+		// Try to dispose
+		synchronizer.dispose();
+		assertTrue("object is disposed", synchronizer.isDisposed());
+	}
+
+	/**
+	 * Test Layer added event correctly catched
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersStackApplicationEventNotifier#layerStackAdded(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testLayerStackAdded() {
+		NotationModel notationModel = (NotationModel) modelSet.getModel(NotationModel.MODEL_ID);
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		notationModel.addDiagram(diagram);
+		// Create a helper used to attach a LayerStack to diagram.
+		NotationDiagramHelper helper = new NotationDiagramHelper(layersModel, diagram);
+
+		// Create the notifier
+		TraceLayersStackApplicationEventListener traces = new TraceLayersStackApplicationEventListener();
+		LayersStackApplicationEventNotifier notifier = new LayersStackApplicationEventNotifier(layersModel);
+		notifier.addLayersModelEventListener(traces);
+
+		// Add a layer Stack to the diagram
+		helper.attachLayersStack();
+
+		// Check if the appropriate method is called
+		assertTrue("event catched", traces.traces.contains("layerStackAdded"));
+
+		// dispose
+		notifier.dispose();
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersStackApplicationEventNotifier#layerStackRemoved(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testLayerStackRemoved() {
+		NotationModel notationModel = (NotationModel) modelSet.getModel(NotationModel.MODEL_ID);
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		notationModel.addDiagram(diagram);
+		// Create a helper used to attach a LayerStack to diagram.
+		NotationDiagramHelper helper = new NotationDiagramHelper(layersModel, diagram);
+
+		// Create the notifier
+		TraceLayersStackApplicationEventListener traces = new TraceLayersStackApplicationEventListener();
+		LayersStackApplicationEventNotifier notifier = new LayersStackApplicationEventNotifier(layersModel);
+		notifier.addLayersModelEventListener(traces);
+
+		// Add a layer Stack to the diagram
+		helper.attachLayersStack();
+
+		traces.traces.clear();
+		helper.removeLayersStack();
+
+		// Check if the appropriate method is called
+		assertTrue("event catched", traces.traces.contains("layerStackRemoved"));
+
+		// dispose
+		notifier.dispose();
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/NotationDiagramMngrTest.java b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/NotationDiagramMngrTest.java
new file mode 100755
index 0000000..be96d8c
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/NotationDiagramMngrTest.java
@@ -0,0 +1,185 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class NotationDiagramMngrTest {
+
+	/**
+	 * URI used to store the created model.
+	 */
+	protected static final String PROJECT_MODEL_URI = "org.eclipse.papyrus.infra.core/tmp/model1.di";
+
+	/**
+	 * ModelSet created for each test
+	 */
+	protected ModelSet modelSet;
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+		// Create ModelSet and Model
+		ModelSet mngr = new ModelSet();
+		LayersModel layersModel = new LayersModel();
+		mngr.registerModel(layersModel);
+		// Do create resources
+		URI uri = URI.createPlatformResourceURI(PROJECT_MODEL_URI, true);
+		mngr.createModels(uri);
+
+		modelSet = mngr;
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+		modelSet.unload();
+
+	}
+
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.NotationDiagramHelper#NotationDiagramMngr(org.eclipse.gmf.runtime.notation.Diagram)}.
+	 */
+	@Test
+	public void testNotationDiagramHelper() {
+
+		// Create a Diagram
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Get LayersModel
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+
+		// Check creation
+		NotationDiagramHelper diagramHelper = new NotationDiagramHelper(layersModel, diagram);
+		assertNotNull("ManagerCreated", diagramHelper);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.NotationDiagramHelper#dispose()}.
+	 */
+	@Test
+	public void testDispose() {
+		// Create a Diagram
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Get LayersModel
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+
+
+		// Create mngr
+		NotationDiagramHelper diagramHelper = new NotationDiagramHelper(layersModel, diagram);
+
+		// Do dispose
+		diagramHelper.dispose();
+		// Check disposal
+		assertNull("disposed", diagramHelper.getDiagram());
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.NotationDiagramHelper#getDiagram()}.
+	 */
+	@Test
+	public void testGetDiagram() {
+		// Create a Diagram
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Get LayersModel
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+
+
+		// Create mngr
+		NotationDiagramHelper diagramHelper = new NotationDiagramHelper(layersModel, diagram);
+
+		// check
+		assertNotNull("getDiagram", diagramHelper.getDiagram());
+		assertSame("getDiagram", diagram, diagramHelper.getDiagram());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.NotationDiagramHelper#attachLayerStack()}.
+	 */
+	@Test
+	public void testAttachLayerStack() {
+		// Create a Diagram
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Get LayersModel
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+
+
+		// Create mngr
+		NotationDiagramHelper diagramHelper = new NotationDiagramHelper(layersModel, diagram);
+
+		diagramHelper.attachLayersStack();
+
+		assertTrue("LayerStack is attached to diagram", diagramHelper.isLayersStackAttached());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.NotationDiagramHelper#removeLayerStack()}.
+	 */
+	@Test
+	public void testRemoveLayerStack() {
+		// Create a Diagram
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Get LayersModel
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+
+
+		// Create mngr
+		NotationDiagramHelper diagramHelper = new NotationDiagramHelper(layersModel, diagram);
+
+		diagramHelper.attachLayersStack();
+		assertTrue("LayerStack is attached to diagram", diagramHelper.isLayersStackAttached());
+
+		// Try to remove LayerStack
+		diagramHelper.removeLayersStack();
+		assertFalse("LayerStack is detached from diagram", diagramHelper.isLayersStackAttached());
+
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.NotationDiagramHelper#isLayerStackAttached()}.
+	 */
+	@Test
+	public void testIsLayerStackAttached() {
+		// Create a Diagram
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Get LayersModel
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+
+
+		// Create mngr
+		NotationDiagramHelper diagramHelper = new NotationDiagramHelper(layersModel, diagram);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/NotationDiagramRemovedFromResourceEventNotifierTest.java b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/NotationDiagramRemovedFromResourceEventNotifierTest.java
new file mode 100755
index 0000000..b1dedac
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/NotationDiagramRemovedFromResourceEventNotifierTest.java
@@ -0,0 +1,187 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class NotationDiagramRemovedFromResourceEventNotifierTest {
+
+	/**
+	 * URI used to store the created model.
+	 */
+	protected static final String PROJECT_MODEL_URI = "org.eclipse.papyrus.infra.core/tmp/model1.di";
+
+	/**
+	 * ModelSet created for each test
+	 */
+	protected ModelSet modelSet;
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+		// Create ModelSet and Model
+		ModelSet mngr = new ModelSet();
+		// LayersModel
+		LayersModel layersModel = new LayersModel();
+		mngr.registerModel(layersModel);
+		// Notation model
+		NotationModel notationModel = new NotationModel();
+		mngr.registerModel(notationModel);
+		// Do create resources
+		URI uri = URI.createPlatformResourceURI(PROJECT_MODEL_URI, true);
+		mngr.createModels(uri);
+
+		modelSet = mngr;
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+		modelSet.unload();
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.NotationDiagramRemovedFromResourceEventNotifier#NotationDiagramRemovedFromResourceEventNotifier(org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel)}.
+	 */
+	@Test
+	public void testNotationDiagramRemovedFromResourceEventNotifier() {
+		NotationModel notationModel = (NotationModel) modelSet.getModel(NotationModel.MODEL_ID);
+
+		NotationDiagramRemovedFromResourceEventNotifier notifier = new NotationDiagramRemovedFromResourceEventNotifier(notationModel);
+		assertNotNull("application created", notifier);
+
+		// dispose
+		notifier.dispose();
+	}
+
+	/**
+	 * Test the correct creation of the modelSet
+	 */
+	@Test
+	public void testModelSetCreation() {
+
+		NotationModel notationModel = (NotationModel) modelSet.getModel(NotationModel.MODEL_ID);
+		assertNotNull("NotationModel is created", notationModel);
+		// Try to create a Diagram
+		notationModel.addDiagram(NotationFactory.eINSTANCE.createDiagram());
+		//
+		assertNotNull("Diagram is in the roots", notationModel.getResource().getContents().get(0));
+
+
+
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+		assertNotNull("LayerModel is created", layersModel);
+		assertNotNull("LayerStackApplication is created", layersModel.getLayerStackApplication());
+
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.NotationDiagramRemovedFromResourceEventNotifier#dispose()}.
+	 */
+	@Test
+	public void testDispose() {
+		NotationModel notationModel = (NotationModel) modelSet.getModel(NotationModel.MODEL_ID);
+
+		NotationDiagramRemovedFromResourceEventNotifier notifier = new NotationDiagramRemovedFromResourceEventNotifier(notationModel);
+		assertFalse("application created", notifier.isDisposed());
+
+		// Try to dispose
+		notifier.dispose();
+		assertTrue("object is disposed", notifier.isDisposed());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.NotationDiagramRemovedFromResourceEventNotifier#addLayersModelEventListener(org.eclipse.papyrus.layers.runtime.INotationDiagramRemovedEventListener)}.
+	 */
+	@Test
+	@Ignore
+	public void testAddLayersModelEventListener() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.NotationDiagramRemovedFromResourceEventNotifier#removeLayersModelEventListener(org.eclipse.papyrus.layers.runtime.INotationDiagramRemovedEventListener)}.
+	 */
+	@Test
+	@Ignore
+	public void testRemoveLayersModelEventListener() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.NotationDiagramRemovedFromResourceEventNotifier#fireDiagramRemovedEvent(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testFireDiagramRemovedEvent() {
+		NotationModel notationModel = (NotationModel) modelSet.getModel(NotationModel.MODEL_ID);
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+
+		// Create a diagram
+		Diagram diagram1 = NotationFactory.eINSTANCE.createDiagram();
+		notationModel.addDiagram(diagram1);
+		// Create a helper used to attach a LayerStack to diagram.
+		NotationDiagramHelper helperForDiag1 = new NotationDiagramHelper(layersModel, diagram1);
+
+		// Create a diagram
+		Diagram diagram2 = NotationFactory.eINSTANCE.createDiagram();
+		notationModel.addDiagram(diagram2);
+		// Create a helper used to attach a LayerStack to diagram.
+		NotationDiagramHelper helperForDiag2 = new NotationDiagramHelper(layersModel, diagram2);
+
+		// Create the synchronizer
+		NotationDiagramRemovedFromResourceEventNotifier notifier = new NotationDiagramRemovedFromResourceEventNotifier(notationModel);
+		TraceNotationDiagramRemovedFromResourceEventListener traces = new TraceNotationDiagramRemovedFromResourceEventListener();
+		notifier.addLayersModelEventListener(traces);
+
+		// Add a layer Stack to the diagram
+		helperForDiag1.attachLayersStack();
+		helperForDiag2.attachLayersStack();
+
+		// Try to remove a diagram
+		traces.traces.clear();
+		notationModel.getResource().getContents().remove(diagram2);
+
+
+		// Check if the appropriate method is called
+		assertTrue("event catched", traces.traces.contains("diagramRemoved"));
+		assertEquals("number of events", 1, traces.traces.size());
+		assertEquals("diagram found in notification", diagram2, traces.traces.get(0).notifier.getOldValue());
+
+		// dispose
+		notifier.dispose();
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/TraceDiagramViewEventListener.java b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/TraceDiagramViewEventListener.java
new file mode 100755
index 0000000..50efb21
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/TraceDiagramViewEventListener.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.layers.runtime.utils.TriggeredEventTraces;
+import org.eclipse.papyrus.layers.stackmodel.notifier.IDiagramViewEventListener;
+
+
+/**
+ * A listener on {@link LayersStackApplicationEventNotifier}. This listener trace events from
+ * the notifier.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class TraceDiagramViewEventListener implements IDiagramViewEventListener {
+
+	public TriggeredEventTraces traces = new TriggeredEventTraces();
+
+
+	@Override
+	public void diagramViewAdded(Notification msg) {
+		traces.addTrace("diagramViewAdded", msg);
+
+	}
+
+	@Override
+	public void diagramViewRemoved(Notification msg) {
+		traces.addTrace("diagramViewRemoved", msg);
+
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/TraceLayersModelEventListener.java b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/TraceLayersModelEventListener.java
new file mode 100755
index 0000000..dbcd650
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/TraceLayersModelEventListener.java
@@ -0,0 +1,153 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.layers.runtime.utils.TriggeredEventTraces;
+
+
+/**
+ * A listener on {@link LayersModelEventNotifier}. This listener trace events from
+ * the notifier.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class TraceLayersModelEventListener implements ILayersModelEventListener {
+
+	public TriggeredEventTraces traces = new TriggeredEventTraces();
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#propertyValueAdded(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void propertyValueAdded(Notification notification) {
+		traces.addTrace("propertyValueAdded", notification);
+
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#propertyValueRemoved(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void propertyValueRemoved(Notification notification) {
+		traces.addTrace("propertyValueRemoved", notification);
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#propertyValueChanged(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void propertyValueChanged(Notification notification) {
+		traces.addTrace("propertyValueChanged", notification);
+	}
+
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#layerAdded(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void layerSet(Notification notification) {
+		traces.addTrace("layerSet", notification);
+
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#layerAdded(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void layerAdded(Notification notification) {
+		traces.addTrace("layerAdded", notification);
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#layerRemoved(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void layerRemoved(Notification notification) {
+		traces.addTrace("layerRemoved", notification);
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#layerMoved(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void layerMoved(Notification notification) {
+		traces.addTrace("layerMoved", notification);
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#viewAddedToLayer(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void viewAddedToLayer(Notification notification) {
+		traces.addTrace("viewAddedToLayer", notification);
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#viewRemovedFromLayer(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void viewRemovedFromLayer(Notification notification) {
+		traces.addTrace("viewRemovedFromLayer", notification);
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#viewMovedBetweenLayer(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void viewMovedBetweenLayer(Notification notification) {
+		traces.addTrace("viewMovedBetweenLayer", notification);
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#multiViewsRemovedFromLayer(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void multiViewsRemovedFromLayer(Notification notification) {
+		traces.addTrace("multiViewsRemovedFromLayer", notification);
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#multiViewsAddedToLayer(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void multiViewsAddedToLayer(Notification notification) {
+		traces.addTrace("multiViewsAddedToLayer", notification);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/TraceLayersStackApplicationEventListener.java b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/TraceLayersStackApplicationEventListener.java
new file mode 100755
index 0000000..0ac0a18
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/TraceLayersStackApplicationEventListener.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.layers.runtime.utils.TriggeredEventTraces;
+
+
+/**
+ * A listener on {@link LayersStackApplicationEventNotifier}. This listener trace events from
+ * the notifier.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class TraceLayersStackApplicationEventListener implements ILayersStackApplicationEventListener {
+
+	public TriggeredEventTraces traces = new TriggeredEventTraces();
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.ILayersStackApplicationEventListener#layerStackAdded(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param msg
+	 */
+	@Override
+	public void layerStackAdded(Notification msg) {
+		traces.addTrace("layerStackAdded", msg);
+
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.ILayersStackApplicationEventListener#layerStackRemoved(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param msg
+	 */
+	@Override
+	public void layerStackRemoved(Notification msg) {
+		traces.addTrace("layerStackRemoved", msg);
+
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/TraceNotationDiagramRemovedFromResourceEventListener.java b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/TraceNotationDiagramRemovedFromResourceEventListener.java
new file mode 100755
index 0000000..16bcea1
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/TraceNotationDiagramRemovedFromResourceEventListener.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.layers.runtime.utils.TriggeredEventTraces;
+
+
+/**
+ * A listener on {@link NotationDiagramRemovedFromResourceEventNotifier}. This listener trace events from
+ * the notifier.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class TraceNotationDiagramRemovedFromResourceEventListener implements INotationDiagramRemovedEventListener {
+
+	public TriggeredEventTraces traces = new TriggeredEventTraces();
+
+
+	@Override
+	public void diagramRemoved(Notification msg) {
+		traces.addTrace("diagramRemoved", msg);
+
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/model/LayersModelRootEventNotifierTest.java b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/model/LayersModelRootEventNotifierTest.java
new file mode 100755
index 0000000..54bd275
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/model/LayersModelRootEventNotifierTest.java
@@ -0,0 +1,188 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime.model;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationModel;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class LayersModelRootEventNotifierTest {
+
+	/**
+	 * URI used to store the created model.
+	 */
+	protected static final String PROJECT_MODEL_URI = "org.eclipse.papyrus.infra.core/tmp/model1.di";
+
+	/**
+	 * ModelSet created for each test
+	 */
+	protected ModelSet modelSet;
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+		// Create ModelSet and Model
+		ModelSet mngr = new ModelSet();
+		// LayersModel
+		LayersModel layersModel = new LayersModel();
+		mngr.registerModel(layersModel);
+		// Notation model
+		NotationModel notationModel = new NotationModel();
+		mngr.registerModel(notationModel);
+		// Do create resources
+		URI uri = URI.createPlatformResourceURI(PROJECT_MODEL_URI, true);
+		mngr.createModels(uri);
+
+		modelSet = mngr;
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+		modelSet.unload();
+	}
+
+	/**
+	 * Test the correct creation of the modelSet
+	 */
+	@Test
+	public void testModelSetCreation() {
+
+		NotationModel notationModel = (NotationModel) modelSet.getModel(NotationModel.MODEL_ID);
+		assertNotNull("NotationModel is created", notationModel);
+		// Try to create a Diagram
+		notationModel.addDiagram(NotationFactory.eINSTANCE.createDiagram());
+		//
+		assertNotNull("Diagram is in the roots", notationModel.getResource().getContents().get(0));
+
+
+
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+		assertNotNull("LayerModel is created", layersModel);
+		assertNotNull("LayerStackApplication is created", layersModel.getLayerStackApplication());
+
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventRootNotifier#LayersModelEventRootNotifier(org.eclipse.gmf.runtime.notation.Diagram)}.
+	 */
+	@Test
+	public void testLayersModelEventRootNotifier() {
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+		LayersModelEventRootNotifier notifier = new LayersModelEventRootNotifier(layersModel);
+
+
+		assertNotNull("notifier created", notifier);
+
+		// dispose
+		notifier.dispose();
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventRootNotifier#dispose()}.
+	 */
+	@Test
+	public void testDispose() {
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+		LayersModelEventRootNotifier notifier = new LayersModelEventRootNotifier(layersModel);
+
+		assertNotNull("notifier created", notifier);
+
+		// dispose
+		assertFalse("notifier is disposed", notifier.isDisposed());
+		notifier.dispose();
+		assertTrue("notifier is disposed", notifier.isDisposed());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventRootNotifier#addEventListener(org.eclipse.papyrus.layers.runtime.ILayersModelEventRootListener)}.
+	 */
+	@Test
+	@Ignore
+	public void testAddEventListener() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersModelEventRootNotifier#removeEventListener(org.eclipse.papyrus.layers.runtime.ILayersModelEventRootListener)}.
+	 */
+	@Test
+	@Ignore
+	public void testRemoveEventListener() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link LayersModelEventRootNotifier#fireLayersModelRootAddedEvent(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testFireLayersModelRootAddedEvent() {
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+		LayersModelEventRootNotifier notifier = new LayersModelEventRootNotifier(layersModel);
+
+		TraceLayersModelRootEventListener listener = new TraceLayersModelRootEventListener();
+		notifier.addEventListener(listener);
+
+		// Add root
+		@SuppressWarnings("unused")
+		LayersStackApplication application = layersModel.getLayerStackApplication();
+
+		// Check for event
+		assertTrue("event sent", listener.traces.size() > 0);
+		assertEquals("event found", "layersModelRootAdded", listener.traces.get(0).name);
+
+
+	}
+
+	/**
+	 * Test method for {@link LayersModelEventRootNotifier#fireLayersModelRootRemovedEvent(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testFireLayersModelRootRemovedEvent() {
+		LayersModel layersModel = (LayersModel) modelSet.getModel(LayersModel.MODEL_ID);
+		LayersModelEventRootNotifier notifier = new LayersModelEventRootNotifier(layersModel);
+
+		TraceLayersModelRootEventListener listener = new TraceLayersModelRootEventListener();
+		notifier.addEventListener(listener);
+
+		// Add root
+		LayersStackApplication application = layersModel.getLayerStackApplication();
+
+		// Check remove
+		listener.traces.clear();
+		layersModel.removeRoot(application);
+		assertTrue("event sent", listener.traces.size() > 0);
+		assertEquals("event found", "layersModelRootRemoved", listener.traces.get(0).name);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/model/LayersModelTest.java b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/model/LayersModelTest.java
new file mode 100755
index 0000000..2a10d99
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/model/LayersModelTest.java
@@ -0,0 +1,113 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime.model;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class LayersModelTest {
+
+	/**
+	 * URI used to store the created model.
+	 */
+	protected static final String PROJECT_MODEL_URI = "org.eclipse.papyrus.infra.core/tmp/model1.di";
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.model.LayersModel#LayersModel()}.
+	 *
+	 * @throws CoreException
+	 * @throws IOException
+	 */
+	@Test
+	public void testLayersModel() throws CoreException, IOException {
+		// Create ModelSet and Model
+		ModelSet mngr = new ModelSet();
+		LayersModel layersModel = new LayersModel();
+		mngr.registerModel(layersModel);
+		// Do create resources
+		URI uri = URI.createPlatformResourceURI(PROJECT_MODEL_URI, true);
+		mngr.createModels(uri);
+
+		// Check if root exist
+		assertNotNull("layer model root created", layersModel.getLayerStackApplication());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.model.LayersModel#lookupLayerStackApplication()}.
+	 */
+	@Test
+	public void testLookupLayerStackApplication() {
+		// Create ModelSet and Model
+		ModelSet mngr = new ModelSet();
+		LayersModel layersModel = new LayersModel();
+		mngr.registerModel(layersModel);
+		// Do create resources
+		URI uri = URI.createPlatformResourceURI(PROJECT_MODEL_URI, true);
+		mngr.createModels(uri);
+
+		// Check if application lookup
+		assertNull("lookup application return null", layersModel.lookupLayerStackApplication());
+
+		// Get the application, this create it
+		assertNotNull("layer model root created", layersModel.getLayerStackApplication());
+		// lookup again, this found the application
+		assertNotNull("layer model root created", layersModel.lookupLayerStackApplication());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.model.LayersModel#getLayerStackApplication()}.
+	 */
+	@Test
+	public void testGetLayerStackApplication() {
+		// Create ModelSet and Model
+		ModelSet mngr = new ModelSet();
+		LayersModel layersModel = new LayersModel();
+		mngr.registerModel(layersModel);
+		// Do create resources
+		URI uri = URI.createPlatformResourceURI(PROJECT_MODEL_URI, true);
+		mngr.createModels(uri);
+
+		// Check if root exist
+		assertNotNull("layer model root created", layersModel.getLayerStackApplication());
+		assertTrue("LayerStackApplication is found", layersModel.getLayerStackApplication() instanceof LayersStackApplication);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/model/TraceLayersModelRootEventListener.java b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/model/TraceLayersModelRootEventListener.java
new file mode 100755
index 0000000..e57ce42
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/model/TraceLayersModelRootEventListener.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime.model;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.layers.runtime.NotationDiagramRemovedFromResourceEventNotifier;
+import org.eclipse.papyrus.layers.runtime.utils.TriggeredEventTraces;
+
+
+/**
+ * A listener on {@link NotationDiagramRemovedFromResourceEventNotifier}. This listener trace events from
+ * the notifier.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class TraceLayersModelRootEventListener implements ILayersModelRootEventListener {
+
+	public TriggeredEventTraces traces = new TriggeredEventTraces();
+
+
+	@Override
+	public void layersModelRootAdded(Notification msg) {
+		traces.addTrace("layersModelRootAdded", msg);
+	}
+
+
+	@Override
+	public void layersModelRootRemoved(Notification msg) {
+		traces.addTrace("layersModelRootRemoved", msg);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/utils/ECoreUtilsTest.java b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/utils/ECoreUtilsTest.java
new file mode 100755
index 0000000..cdce3ae
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/utils/ECoreUtilsTest.java
@@ -0,0 +1,101 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime.utils;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.util.ECoreUtils;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class ECoreUtilsTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.util.ECoreUtils#isAncestorInstanceOf(org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EClass)}.
+	 */
+	@Test
+	public void testIsAncestorInstanceOf() {
+		// Create a tree of EObject
+		TopLayerOperator layerOperator = LayersFactory.eINSTANCE.createTopLayerOperator();
+		Layer layer = LayersFactory.eINSTANCE.createLayer();
+		layerOperator.getLayers().add(layer);
+
+		TypeInstance instance2 = LayersFactory.eINSTANCE.createBooleanInstance();
+		layer.getPropertyValueMap().put("prop1", instance2);
+
+		// Check ancestor
+		assertTrue("ancestor found", ECoreUtils.isAncestorInstanceOf(instance2, LayersPackage.eINSTANCE.getTypeInstance()));
+		assertTrue("ancestor found", ECoreUtils.isAncestorInstanceOf(instance2, LayersPackage.eINSTANCE.getLayer()));
+		assertTrue("ancestor found", ECoreUtils.isAncestorInstanceOf(instance2, LayersPackage.eINSTANCE.getTopLayerOperator()));
+		assertTrue("ancestor found", ECoreUtils.isAncestorInstanceOf(instance2, LayersPackage.eINSTANCE.getLayerOperator()));
+
+		assertFalse("no ancestor found", ECoreUtils.isAncestorInstanceOf(instance2, LayersPackage.eINSTANCE.getLayersStack()));
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.util.ECoreUtils#lookupAncestorOfType(org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EClass)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testLookupAncestorOfType() throws LayersException {
+		// Create a tree of EObject
+		TopLayerOperator layerOperator = LayersFactory.eINSTANCE.createTopLayerOperator();
+		Layer layer = LayersFactory.eINSTANCE.createLayer();
+		layerOperator.getLayers().add(layer);
+
+		TypeInstance instance2 = LayersFactory.eINSTANCE.createBooleanInstance();
+		layer.getPropertyValueMap().put("prop1", instance2);
+
+		// Check ancestor
+		assertEquals("ancestor found", instance2, ECoreUtils.lookupAncestorOfType(instance2, LayersPackage.eINSTANCE.getTypeInstance()));
+		assertEquals("ancestor found", layer, ECoreUtils.lookupAncestorOfType(instance2, LayersPackage.eINSTANCE.getLayer()));
+		assertEquals("ancestor found", layerOperator, ECoreUtils.lookupAncestorOfType(instance2, LayersPackage.eINSTANCE.getTopLayerOperator()));
+		assertEquals("ancestor found", layerOperator, ECoreUtils.lookupAncestorOfType(instance2, LayersPackage.eINSTANCE.getLayerOperator()));
+
+		try {
+			ECoreUtils.lookupAncestorOfType(instance2, LayersPackage.eINSTANCE.getLayersStack());
+			fail("Exception is thrown");
+		} catch (LayersException e) {
+			// Ok, we expect an exception
+		}
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/utils/NotationDiagramTestUtils.java b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/utils/NotationDiagramTestUtils.java
new file mode 100755
index 0000000..683ddc2
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/utils/NotationDiagramTestUtils.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime.utils;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+
+
+/**
+ * Set of utilities on Notation for testing purposes
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class NotationDiagramTestUtils {
+
+	/**
+	 * Constructor.
+	 *
+	 */
+	public NotationDiagramTestUtils() {
+	}
+
+	public Diagram newDiagram() {
+
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		return diagram;
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/utils/TriggeredEventTraces.java b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/utils/TriggeredEventTraces.java
new file mode 100755
index 0000000..2cfbdd7
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.runtime/tests/org/eclipse/papyrus/layers/runtime/utils/TriggeredEventTraces.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.runtime.utils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+
+
+/**
+ * This class is used to record a list of traces.
+ * Traces are for event triggered by a method.
+ * This class is for tests purpose.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class TriggeredEventTraces {
+
+
+	/**
+	 * List of recorded events
+	 */
+	public List<TriggeredEvent> traces = new ArrayList<TriggeredEvent>();
+
+	/**
+	 * Clear all traces.
+	 */
+	public void clear() {
+		traces.clear();
+	}
+
+	/**
+	 * Add a trace to the list of traces
+	 *
+	 * @param name
+	 * @param notification
+	 */
+	public void addTrace(String name, Notification notification) {
+		traces.add(new TriggeredEvent(name, notification));
+	}
+
+	/**
+	 * Return true if one of the trace has the specified name.
+	 *
+	 * @param name
+	 * @return
+	 */
+	public boolean contains(String name) {
+		if (name == null) {
+			return false;
+		}
+
+		for (TriggeredEvent event : traces) {
+			if (name.equals(event.name)) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * Return true if one of the trace has the specified name.
+	 *
+	 * @param name
+	 *            Name of the event to found
+	 * @return the first event with the specified name, or null if nothing is found.
+	 */
+	public TriggeredEvent getFirstEvent(String name) {
+		if (name == null) {
+			return null;
+		}
+
+		for (TriggeredEvent event : traces) {
+			if (name.equals(event.name)) {
+				return event;
+			}
+		}
+		return null;
+	}
+
+
+	/**
+	 * A record of an event
+	 *
+	 */
+	public class TriggeredEvent {
+		public String name;
+		public Notification notifier;
+		public Object object;
+
+		/**
+		 * Constructor.
+		 *
+		 * @param name
+		 * @param notifier
+		 */
+		public TriggeredEvent(String name, Notification notifier) {
+			this.name = name;
+			this.notifier = notifier;
+		}
+
+		/**
+		 * Constructor.
+		 *
+		 * @param name
+		 * @param object
+		 */
+		public TriggeredEvent(String name, Object object) {
+			this.name = name;
+			this.object = object;
+		}
+
+	}
+
+
+	/**
+	 * Return the number of traces
+	 *
+	 * @return
+	 */
+	public int size() {
+		return traces.size();
+	}
+
+	/**
+	 * Get the specified trace.
+	 *
+	 * @param i
+	 * @return
+	 */
+	public TriggeredEvent get(int index) {
+		return traces.get(index);
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.diagram/.classpath b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/.classpath
new file mode 100755
index 0000000..ad32c83
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/.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/layers/org.eclipse.papyrus.layers.stackmodel.diagram/.project b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/.project
new file mode 100755
index 0000000..446a774
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.layers.stackmodel.diagram</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.diagram/.settings/org.eclipse.jdt.core.prefs b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/.settings/org.eclipse.jdt.core.prefs
new file mode 100755
index 0000000..94d61f0
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,291 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+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/layers/org.eclipse.papyrus.layers.stackmodel.diagram/.settings/org.eclipse.jdt.ui.prefs b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/.settings/org.eclipse.jdt.ui.prefs
new file mode 100755
index 0000000..954281d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/.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.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
+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 v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\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>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.diagram/META-INF/MANIFEST.MF b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/META-INF/MANIFEST.MF
new file mode 100755
index 0000000..0ca4478
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/META-INF/MANIFEST.MF
@@ -0,0 +1,27 @@
+Manifest-Version: 1.0
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.papyrus.infra.core;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.emf;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.emf.diagram.common;bundle-version="1.2.0",
+ org.eclipse.emf.ecore;bundle-version="2.9.0",
+ org.eclipse.gmf.runtime.notation;bundle-version="1.5.0",
+ org.eclipse.papyrus.layers.stackmodel.editor;bundle-version="1.2.0",
+ org.eclipse.emf.transaction;bundle-version="1.4.0",
+ org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0",
+ org.eclipse.core.expressions,
+ org.eclipse.gmf.runtime.diagram.ui.resources.editor,
+ org.eclipse.papyrus.layers.runtime;bundle-version="1.2.0",
+ org.eclipse.gmf.runtime.diagram.ui;bundle-version="1.7.0",
+ org.eclipse.ui.ide;bundle-version="3.10.0",
+ org.eclipse.papyrus.infra.ui;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.core.sasheditor;bundle-version="1.2.0"
+Bundle-Vendor: %providerName
+Bundle-ActivationPolicy: lazy
+Bundle-Version: 1.2.0.qualifier
+Bundle-Name: %pluginName
+Bundle-Localization: plugin
+Bundle-ManifestVersion: 2
+Bundle-Activator: org.eclipse.papyrus.layers.stackmodel.diagram.Activator
+Bundle-SymbolicName: org.eclipse.papyrus.layers.stackmodel.diagram;singleton:=true
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.diagram/about.html b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/about.html
new file mode 100755
index 0000000..d35d5ae
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/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>June 5, 2007</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.diagram/build.properties b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/build.properties
new file mode 100755
index 0000000..cd72b05
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/build.properties
@@ -0,0 +1,9 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               about.html,\
+               icons/,\
+               plugin.properties
+src.includes = about.html
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.diagram/icons/layerDiagram.gif b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/icons/layerDiagram.gif
new file mode 100755
index 0000000..d077125
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/icons/layerDiagram.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.diagram/plugin.properties b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/plugin.properties
new file mode 100755
index 0000000..e1b95ae
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/plugin.properties
@@ -0,0 +1,12 @@
+#################################################################################
+# 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 v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#     Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+##################################################################################
+pluginName=Layers Papyrus Diagram (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.diagram/plugin.xml b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/plugin.xml
new file mode 100755
index 0000000..f295961
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/plugin.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.papyrus.infra.ui.papyrusDiagram">
+      <editorDiagram
+            actionBarContributorId="org.eclipse.papyrus.uml.diagram.common.part.UMLDiagramActionBarContributor"
+            contextId="defaultContext"
+            factoryClass="org.eclipse.papyrus.layers.stackmodel.diagram.LayersTreeDiagramEditorFactory"
+            icon="icons/layerDiagram.gif">
+      </editorDiagram>
+   </extension>
+   <extension
+         point="org.eclipse.ui.commands">
+      <command
+            description="Create a Layers Tree Editor (EMF Tree Editor)"
+            id="org.eclipse.papyrus.layers.stackmodel.diagram.createDiagram"
+            name="Create Layers Tree">
+      </command>
+      <command
+            description="Create a child of the selected model element"
+            id="org.eclipse.papyrus.layers.stackmodel.diagram.ui.handlers.emfchildrenmenu"
+            name="Create Child">
+      </command>
+   </extension>
+   <extension
+         point="org.eclipse.ui.handlers">
+      <handler
+            class="org.eclipse.papyrus.layers.stackmodel.diagram.CreateLayersTreeDiagramHandler"
+            commandId="org.eclipse.papyrus.layers.stackmodel.diagram.createDiagram">
+         <enabledWhen>
+            <with
+                  variable="activeEditorId">
+               <equals
+                     value="org.eclipse.papyrus.infra.core.papyrusEditor">
+               </equals>
+            </with>
+         </enabledWhen>
+      </handler>
+      <handler
+            class="org.eclipse.papyrus.layers.stackmodel.diagram.ui.handlers.ShowCreateChildCommand"
+            commandId="org.eclipse.papyrus.layers.stackmodel.diagram.ui.handlers.emfchildrenmenu">
+      </handler>
+   </extension>
+   <extension
+         point="org.eclipse.ui.menus">
+      <menuContribution
+            locationURI="menu:org.eclipse.papyrus.ui.menu">
+         <menu
+               id="org.eclipse.papyrus.uml.diagram.ui.menu.diagrams"
+               label="Diagrams">
+            <command
+                  commandId="org.eclipse.papyrus.layers.stackmodel.diagram.createDiagram"
+                  icon="icons/layerDiagram.gif"
+                  label="Create a new Layer Tree"
+                  style="push"
+                  tooltip="Create a new Layers Tree">
+            </command>
+         </menu>
+      </menuContribution>
+      <menuContribution
+            locationURI="toolbar:org.eclipse.ui.main.toolbar">
+         <toolbar
+               id="org.eclipse.papyrus.ui.toolbar">
+            <command
+                  commandId="org.eclipse.papyrus.layers.stackmodel.diagram.createDiagram"
+                  icon="icons/layerDiagram.gif"
+                  label="Create a new Layers Tree"
+                  style="push"
+                  tooltip="Create a new Layers Tree">
+            </command>
+         </toolbar>
+      </menuContribution>
+      <menuContribution
+            locationURI="popup:org.eclipse.papyrus.layers.stackmodel.diagram.ui.contextmenu">
+         <menu
+               id="org.eclipse.papyrus.layers.stackmodel.diagram"
+               label="Diagrams">
+            <command
+                  commandId="org.eclipse.papyrus.layers.stackmodel.diagram.createDiagram"
+                  icon="icons/layerDiagram.gif"
+                  label="Create a new Layer Tree"
+                  style="push"
+                  tooltip="Create a new Layers Tree">
+            </command>
+         </menu>
+      </menuContribution>
+      <menuContribution
+            allPopups="false"
+            locationURI="popup:org.eclipse.papyrus.layers.stackmodel.diagram.ui.contextmenu">
+         <menu
+               id="org.eclipse.papyrus.layers.stackmodel.ui.popupmenu"
+               label="Layers">
+         </menu>
+      </menuContribution>
+   </extension>
+
+</plugin>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.diagram/pom.xml b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/pom.xml
new file mode 100755
index 0000000..5407504
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/pom.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.papyrus</groupId>
+		<artifactId>org.eclipse.papyrus.layers.parent</artifactId>
+		<version>1.2.0-SNAPSHOT</version>
+	</parent>
+	<artifactId>org.eclipse.papyrus.layers.stackmodel.diagram</artifactId>
+	<packaging>eclipse-plugin</packaging>
+</project>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/Activator.java b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/Activator.java
new file mode 100755
index 0000000..4822558
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/Activator.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.diagram;
+
+import org.eclipse.papyrus.infra.core.log.LogHelper;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.eclipse.papyrus.layers.stackmodel.diagram"; //$NON-NLS-1$
+
+	// The shared instance
+	private static Activator plugin;
+
+	public static LogHelper log;
+
+	/**
+	 * The constructor
+	 */
+	public Activator() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 *
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	@Override
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+		log = new LogHelper(this);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 *
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	@Override
+	public void stop(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/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/CreateLayersTreeDiagramHandler.java b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/CreateLayersTreeDiagramHandler.java
new file mode 100755
index 0000000..cb1fa40
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/CreateLayersTreeDiagramHandler.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.diagram;
+
+import org.eclipse.papyrus.infra.core.services.ServicesRegistry;
+import org.eclipse.papyrus.infra.emf.diagram.common.handler.CreateDiagramHandler;
+
+public class CreateLayersTreeDiagramHandler extends CreateDiagramHandler {
+
+	@Override
+	protected void addNewDiagram(ServicesRegistry registry) {
+		addNewDiagram("Layers Tree Editor", LayersTreeDiagramEditorFactory.EMF_DIAGRAM_TYPE, null, registry);
+	}
+
+	public void createDiagram(ServicesRegistry registry) {
+		addNewDiagram(registry);
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/DynamicContextMenu.java b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/DynamicContextMenu.java
new file mode 100755
index 0000000..b0ef035
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/DynamicContextMenu.java
@@ -0,0 +1,501 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.diagram;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+import org.eclipse.emf.edit.ui.action.ControlAction;
+import org.eclipse.emf.edit.ui.action.CopyAction;
+import org.eclipse.emf.edit.ui.action.CreateChildAction;
+import org.eclipse.emf.edit.ui.action.CreateSiblingAction;
+import org.eclipse.emf.edit.ui.action.CutAction;
+import org.eclipse.emf.edit.ui.action.DeleteAction;
+import org.eclipse.emf.edit.ui.action.LoadResourceAction;
+import org.eclipse.emf.edit.ui.action.PasteAction;
+import org.eclipse.emf.edit.ui.action.RedoAction;
+import org.eclipse.emf.edit.ui.action.UndoAction;
+import org.eclipse.emf.edit.ui.action.ValidateAction;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IContributionManager;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.action.SubContributionItem;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.papyrus.layers.stackmodel.layers.presentation.LayersActionBarContributor;
+import org.eclipse.papyrus.layers.stackmodel.layers.presentation.LayersEditorPlugin;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+
+/**
+ *
+ * This class manage the dynamic menu for Layer diagram.
+ * It is a modification of the original {@link LayersActionBarContributor}. <br>
+ * Code is copied from the generated {@link LayersActionBarContributor}.
+ * Changes are made in order to work with Papyrus.
+ *
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class DynamicContextMenu implements ISelectionChangedListener {
+	/**
+	 * This keeps track of the active editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IEditorPart activeEditorPart;
+
+	/**
+	 * This keeps track of the current selection provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ISelectionProvider selectionProvider;
+
+	/**
+	 * The workbench page; <code>null</code> until <code>init</code> is called.
+	 */
+	private IWorkbenchPage page;
+
+	/**
+	 * This action opens the Properties view.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IAction showPropertiesViewAction =
+			new Action(LayersEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) {
+				@Override
+				public void run() {
+					try {
+						getPage().showView("org.eclipse.ui.views.PropertySheet");
+					}
+					catch (PartInitException exception) {
+						LayersEditorPlugin.INSTANCE.log(exception);
+					}
+				}
+			};
+
+	/**
+	 * This action refreshes the viewer of the current editor if the editor
+	 * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IAction refreshViewerAction =
+			new Action(LayersEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) {
+				@Override
+				public boolean isEnabled() {
+					return activeEditorPart instanceof IViewerProvider;
+				}
+
+				@Override
+				public void run() {
+					if (activeEditorPart instanceof IViewerProvider) {
+						Viewer viewer = ((IViewerProvider) activeEditorPart).getViewer();
+						if (viewer != null) {
+							viewer.refresh();
+						}
+					}
+				}
+			};
+
+	/**
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor
+	 * generated for the current selection by the item provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<IAction> createChildActions;
+
+	/**
+	 * This is the menu manager into which menu contribution items should be added for CreateChild actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IMenuManager createChildMenuManager;
+
+	/**
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor
+	 * generated for the current selection by the item provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<IAction> createSiblingActions;
+
+	/**
+	 * This is the menu manager into which menu contribution items should be added for CreateSibling actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IMenuManager createSiblingMenuManager;
+
+	/**
+	 * This is the action used to implement delete.
+	 */
+	protected DeleteAction deleteAction;
+
+	/**
+	 * This is the action used to implement cut.
+	 */
+	protected CutAction cutAction;
+
+	/**
+	 * This is the action used to implement copy.
+	 */
+	protected CopyAction copyAction;
+
+	/**
+	 * This is the action used to implement paste.
+	 */
+	protected PasteAction pasteAction;
+
+	/**
+	 * This is the action used to implement undo.
+	 */
+	protected UndoAction undoAction;
+
+	/**
+	 * This is the action used to implement redo.
+	 */
+	protected RedoAction redoAction;
+
+	/**
+	 * This is the action used to load a resource.
+	 */
+	protected LoadResourceAction loadResourceAction;
+
+	/**
+	 * This is the action used to control or uncontrol a contained object.
+	 */
+	protected ControlAction controlAction;
+
+	/**
+	 * This is the action used to perform validation.
+	 */
+	protected ValidateAction validateAction;
+
+	/**
+	 * This creates an instance of the contributor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public DynamicContextMenu(IEditorPart part) {
+		loadResourceAction = new LoadResourceAction();
+		validateAction = new ValidateAction();
+		controlAction = new ControlAction();
+
+		// Added init
+		this.page = part.getEditorSite().getPage();
+		setActiveEditor(part);
+
+		MenuManager menuManager = new MenuManager();
+		menuManager.add(new Separator("additions"));
+		menuManager.add(new Separator("edit"));
+		contributeToMenu(menuManager);
+	}
+
+	/**
+	 * This adds to the menu bar a menu and some separators for editor additions,
+	 * as well as the sub-menus for object creation items.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void contributeToMenu(IMenuManager menuManager) {
+
+		IMenuManager submenuManager = new MenuManager(LayersEditorPlugin.INSTANCE.getString("_UI_LayersEditor_menu"), "org.eclipse.papyrus.layers.stackmodel.layersMenuID");
+		// menuManager.insertAfter("additions", submenuManager);
+		menuManager.add(submenuManager);
+		submenuManager.add(new Separator("settings"));
+		submenuManager.add(new Separator("actions"));
+		submenuManager.add(new Separator("additions"));
+		submenuManager.add(new Separator("additions-end"));
+
+		// Prepare for CreateChild item addition or removal.
+		//
+		createChildMenuManager = new MenuManager(LayersEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+		submenuManager.insertBefore("additions", createChildMenuManager);
+
+		// Prepare for CreateSibling item addition or removal.
+		//
+		createSiblingMenuManager = new MenuManager(LayersEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+		submenuManager.insertBefore("additions", createSiblingMenuManager);
+
+		// Force an update because Eclipse hides empty menus now.
+		//
+		submenuManager.addMenuListener
+				(new IMenuListener() {
+					@Override
+					public void menuAboutToShow(IMenuManager menuManager) {
+						menuManager.updateAll(true);
+					}
+				});
+
+		addGlobalActions(submenuManager);
+	}
+
+	/**
+	 * When the active editor changes, this remembers the change and registers with it as a selection provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void setActiveEditor(IEditorPart part) {
+		activeEditorPart = part;
+
+		// Switch to the new selection provider.
+		//
+		if (selectionProvider != null) {
+			selectionProvider.removeSelectionChangedListener(this);
+		}
+		if (part == null) {
+			selectionProvider = null;
+		}
+		else {
+			selectionProvider = part.getSite().getSelectionProvider();
+			selectionProvider.addSelectionChangedListener(this);
+
+			// Fake a selection changed event to update the menus.
+			//
+			if (selectionProvider.getSelection() != null) {
+				selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection()));
+			}
+		}
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener},
+	 * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings
+	 * that can be added to the selected object and updating the menus accordingly.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void selectionChanged(SelectionChangedEvent event) {
+		// Remove any menu items for old selection.
+		//
+		if (createChildMenuManager != null) {
+			depopulateManager(createChildMenuManager, createChildActions);
+		}
+		if (createSiblingMenuManager != null) {
+			depopulateManager(createSiblingMenuManager, createSiblingActions);
+		}
+
+		// Query the new selection for appropriate new child/sibling descriptors
+		//
+		Collection<?> newChildDescriptors = null;
+		Collection<?> newSiblingDescriptors = null;
+
+		ISelection selection = event.getSelection();
+		if (selection instanceof IStructuredSelection && ((IStructuredSelection) selection).size() == 1) {
+			Object object = ((IStructuredSelection) selection).getFirstElement();
+
+			EditingDomain domain = ((IEditingDomainProvider) activeEditorPart).getEditingDomain();
+
+			newChildDescriptors = domain.getNewChildDescriptors(object, null);
+			newSiblingDescriptors = domain.getNewChildDescriptors(null, object);
+		}
+
+		// Generate actions for selection; populate and redraw the menus.
+		//
+		createChildActions = generateCreateChildActions(newChildDescriptors, selection);
+		createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection);
+
+		if (createChildMenuManager != null) {
+			populateManager(createChildMenuManager, createChildActions, null);
+			createChildMenuManager.update(true);
+		}
+		if (createSiblingMenuManager != null) {
+			populateManager(createSiblingMenuManager, createSiblingActions, null);
+			createSiblingMenuManager.update(true);
+		}
+	}
+
+	/**
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>,
+	 * and returns the collection of these actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) {
+		Collection<IAction> actions = new ArrayList<IAction>();
+		if (descriptors != null) {
+			for (Object descriptor : descriptors) {
+				actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));
+			}
+		}
+		return actions;
+	}
+
+	/**
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>,
+	 * and returns the collection of these actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) {
+		Collection<IAction> actions = new ArrayList<IAction>();
+		if (descriptors != null) {
+			for (Object descriptor : descriptors) {
+				actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
+			}
+		}
+		return actions;
+	}
+
+	/**
+	 * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection,
+	 * by inserting them before the specified contribution item <code>contributionID</code>.
+	 * If <code>contributionID</code> is <code>null</code>, they are simply added.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) {
+		if (actions != null) {
+			for (IAction action : actions) {
+				if (contributionID != null) {
+					manager.insertBefore(contributionID, action);
+				}
+				else {
+					manager.add(action);
+				}
+			}
+		}
+	}
+
+	/**
+	 * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) {
+		if (actions != null) {
+			IContributionItem[] items = manager.getItems();
+			for (int i = 0; i < items.length; i++) {
+				// Look into SubContributionItems
+				//
+				IContributionItem contributionItem = items[i];
+				while (contributionItem instanceof SubContributionItem) {
+					contributionItem = ((SubContributionItem) contributionItem).getInnerItem();
+				}
+
+				// Delete the ActionContributionItems with matching action.
+				//
+				if (contributionItem instanceof ActionContributionItem) {
+					IAction action = ((ActionContributionItem) contributionItem).getAction();
+					if (actions.contains(action)) {
+						manager.remove(contributionItem);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * This populates the pop-up menu before it appears.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void menuAboutToShow(IMenuManager menuManager) {
+
+		// System.err.println("menuAboutToShow("+ menuManager.getId()+ ")");
+		MenuManager submenuManager = null;
+
+		submenuManager = new MenuManager(LayersEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+		populateManager(submenuManager, createChildActions, null);
+		// menuManager.insertBefore("edit", submenuManager);
+		menuManager.add(submenuManager);
+
+		submenuManager = new MenuManager(LayersEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+		populateManager(submenuManager, createSiblingActions, null);
+		// menuManager.insertBefore("edit", submenuManager);
+		menuManager.add(submenuManager);
+	}
+
+	/**
+	 * This inserts global actions before the "additions-end" separator.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addGlobalActions(IMenuManager menuManager) {
+		menuManager.insertAfter("additions-end", new Separator("ui-actions"));
+		menuManager.insertAfter("ui-actions", showPropertiesViewAction);
+
+		refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());
+		menuManager.insertAfter("ui-actions", refreshViewerAction);
+
+	}
+
+	/**
+	 * Returns this contributor's workbench page.
+	 *
+	 * @return the workbench page
+	 */
+	public IWorkbenchPage getPage() {
+		return page;
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/LayersDiagramActionBarContributor.java b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/LayersDiagramActionBarContributor.java
new file mode 100755
index 0000000..1614eea
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/LayersDiagramActionBarContributor.java
@@ -0,0 +1,457 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.diagram;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+import org.eclipse.emf.edit.ui.action.ControlAction;
+import org.eclipse.emf.edit.ui.action.CreateChildAction;
+import org.eclipse.emf.edit.ui.action.CreateSiblingAction;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.action.LoadResourceAction;
+import org.eclipse.emf.edit.ui.action.ValidateAction;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IContributionManager;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.action.SubContributionItem;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.papyrus.layers.stackmodel.layers.presentation.LayersActionBarContributor;
+import org.eclipse.papyrus.layers.stackmodel.layers.presentation.LayersEditorPlugin;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+
+/**
+ *
+ * This is the action bar contributor for the Layers model diagram editor. <br>
+ * Code is copied from the generated {@link LayersActionBarContributor}.
+ * Changes are made in order to work with Papyrus.
+ *
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayersDiagramActionBarContributor
+		extends EditingDomainActionBarContributor
+		implements ISelectionChangedListener {
+	/**
+	 * This keeps track of the active editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IEditorPart activeEditorPart;
+
+	/**
+	 * This keeps track of the current selection provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ISelectionProvider selectionProvider;
+
+	/**
+	 * This action opens the Properties view.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IAction showPropertiesViewAction =
+			new Action(LayersEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) {
+				@Override
+				public void run() {
+					try {
+						getPage().showView("org.eclipse.ui.views.PropertySheet");
+					}
+					catch (PartInitException exception) {
+						LayersEditorPlugin.INSTANCE.log(exception);
+					}
+				}
+			};
+
+	/**
+	 * This action refreshes the viewer of the current editor if the editor
+	 * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IAction refreshViewerAction =
+			new Action(LayersEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) {
+				@Override
+				public boolean isEnabled() {
+					return activeEditorPart instanceof IViewerProvider;
+				}
+
+				@Override
+				public void run() {
+					if (activeEditorPart instanceof IViewerProvider) {
+						Viewer viewer = ((IViewerProvider) activeEditorPart).getViewer();
+						if (viewer != null) {
+							viewer.refresh();
+						}
+					}
+				}
+			};
+
+	/**
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor
+	 * generated for the current selection by the item provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<IAction> createChildActions;
+
+	/**
+	 * This is the menu manager into which menu contribution items should be added for CreateChild actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IMenuManager createChildMenuManager;
+
+	/**
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor
+	 * generated for the current selection by the item provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<IAction> createSiblingActions;
+
+	/**
+	 * This is the menu manager into which menu contribution items should be added for CreateSibling actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IMenuManager createSiblingMenuManager;
+
+	/**
+	 * This creates an instance of the contributor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayersDiagramActionBarContributor() {
+		super(ADDITIONS_LAST_STYLE);
+		loadResourceAction = new LoadResourceAction();
+		validateAction = new ValidateAction();
+		controlAction = new ControlAction();
+	}
+
+	/**
+	 * This adds Separators for editor additions to the tool bar.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void contributeToToolBar(IToolBarManager toolBarManager) {
+		toolBarManager.add(new Separator("layers-settings"));
+		toolBarManager.add(new Separator("layers-additions"));
+	}
+
+	/**
+	 * This adds to the menu bar a menu and some separators for editor additions,
+	 * as well as the sub-menus for object creation items.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void contributeToMenu(IMenuManager menuManager) {
+		super.contributeToMenu(menuManager);
+
+		IMenuManager submenuManager = new MenuManager(LayersEditorPlugin.INSTANCE.getString("_UI_LayersEditor_menu"), "org.eclipse.papyrus.layers.stackmodel.layersMenuID");
+		menuManager.insertAfter("additions", submenuManager);
+		submenuManager.add(new Separator("settings"));
+		submenuManager.add(new Separator("actions"));
+		submenuManager.add(new Separator("additions"));
+		submenuManager.add(new Separator("additions-end"));
+
+		// Prepare for CreateChild item addition or removal.
+		//
+		createChildMenuManager = new MenuManager(LayersEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+		submenuManager.insertBefore("additions", createChildMenuManager);
+
+		// Prepare for CreateSibling item addition or removal.
+		//
+		createSiblingMenuManager = new MenuManager(LayersEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+		submenuManager.insertBefore("additions", createSiblingMenuManager);
+
+		// Force an update because Eclipse hides empty menus now.
+		//
+		submenuManager.addMenuListener
+				(new IMenuListener() {
+					@Override
+					public void menuAboutToShow(IMenuManager menuManager) {
+						menuManager.updateAll(true);
+					}
+				});
+
+		addGlobalActions(submenuManager);
+	}
+
+	/**
+	 * When the active editor changes, this remembers the change and registers with it as a selection provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setActiveEditor(IEditorPart part) {
+		super.setActiveEditor(part);
+		activeEditorPart = part;
+
+		// Switch to the new selection provider.
+		//
+		if (selectionProvider != null) {
+			selectionProvider.removeSelectionChangedListener(this);
+		}
+		if (part == null) {
+			selectionProvider = null;
+		}
+		else {
+			selectionProvider = part.getSite().getSelectionProvider();
+			selectionProvider.addSelectionChangedListener(this);
+
+			// Fake a selection changed event to update the menus.
+			//
+			if (selectionProvider.getSelection() != null) {
+				selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection()));
+			}
+		}
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener},
+	 * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings
+	 * that can be added to the selected object and updating the menus accordingly.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void selectionChanged(SelectionChangedEvent event) {
+		// Remove any menu items for old selection.
+		//
+		if (createChildMenuManager != null) {
+			depopulateManager(createChildMenuManager, createChildActions);
+		}
+		if (createSiblingMenuManager != null) {
+			depopulateManager(createSiblingMenuManager, createSiblingActions);
+		}
+
+		// Query the new selection for appropriate new child/sibling descriptors
+		//
+		Collection<?> newChildDescriptors = null;
+		Collection<?> newSiblingDescriptors = null;
+
+		ISelection selection = event.getSelection();
+		if (selection instanceof IStructuredSelection && ((IStructuredSelection) selection).size() == 1) {
+			Object object = ((IStructuredSelection) selection).getFirstElement();
+
+			EditingDomain domain = ((IEditingDomainProvider) activeEditorPart).getEditingDomain();
+
+			newChildDescriptors = domain.getNewChildDescriptors(object, null);
+			newSiblingDescriptors = domain.getNewChildDescriptors(null, object);
+		}
+
+		// Generate actions for selection; populate and redraw the menus.
+		//
+		createChildActions = generateCreateChildActions(newChildDescriptors, selection);
+		createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection);
+
+		if (createChildMenuManager != null) {
+			populateManager(createChildMenuManager, createChildActions, null);
+			createChildMenuManager.update(true);
+		}
+		if (createSiblingMenuManager != null) {
+			populateManager(createSiblingMenuManager, createSiblingActions, null);
+			createSiblingMenuManager.update(true);
+		}
+	}
+
+	/**
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>,
+	 * and returns the collection of these actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) {
+		Collection<IAction> actions = new ArrayList<IAction>();
+		if (descriptors != null) {
+			for (Object descriptor : descriptors) {
+				actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));
+			}
+		}
+		return actions;
+	}
+
+	/**
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>,
+	 * and returns the collection of these actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) {
+		Collection<IAction> actions = new ArrayList<IAction>();
+		if (descriptors != null) {
+			for (Object descriptor : descriptors) {
+				actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
+			}
+		}
+		return actions;
+	}
+
+	/**
+	 * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection,
+	 * by inserting them before the specified contribution item <code>contributionID</code>.
+	 * If <code>contributionID</code> is <code>null</code>, they are simply added.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) {
+		if (actions != null) {
+			for (IAction action : actions) {
+				if (contributionID != null) {
+					manager.insertBefore(contributionID, action);
+				}
+				else {
+					manager.add(action);
+				}
+			}
+		}
+	}
+
+	/**
+	 * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) {
+		if (actions != null) {
+			IContributionItem[] items = manager.getItems();
+			for (int i = 0; i < items.length; i++) {
+				// Look into SubContributionItems
+				//
+				IContributionItem contributionItem = items[i];
+				while (contributionItem instanceof SubContributionItem) {
+					contributionItem = ((SubContributionItem) contributionItem).getInnerItem();
+				}
+
+				// Delete the ActionContributionItems with matching action.
+				//
+				if (contributionItem instanceof ActionContributionItem) {
+					IAction action = ((ActionContributionItem) contributionItem).getAction();
+					if (actions.contains(action)) {
+						manager.remove(contributionItem);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * This populates the pop-up menu before it appears.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void menuAboutToShow(IMenuManager menuManager) {
+		super.menuAboutToShow(menuManager);
+		MenuManager submenuManager = null;
+
+		submenuManager = new MenuManager(LayersEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+		populateManager(submenuManager, createChildActions, null);
+		menuManager.insertBefore("edit", submenuManager);
+
+		submenuManager = new MenuManager(LayersEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+		populateManager(submenuManager, createSiblingActions, null);
+		menuManager.insertBefore("edit", submenuManager);
+	}
+
+	/**
+	 * This inserts global actions before the "additions-end" separator.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void addGlobalActions(IMenuManager menuManager) {
+		menuManager.insertAfter("additions-end", new Separator("ui-actions"));
+		menuManager.insertAfter("ui-actions", showPropertiesViewAction);
+
+		refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());
+		menuManager.insertAfter("ui-actions", refreshViewerAction);
+
+		super.addGlobalActions(menuManager);
+	}
+
+	/**
+	 * This ensures that a delete action will clean up all references to deleted objects.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected boolean removeAllReferencesOnDelete() {
+		return true;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/LayersTreeDiagramEditorFactory.java b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/LayersTreeDiagramEditorFactory.java
new file mode 100755
index 0000000..6e9bf12
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/LayersTreeDiagramEditorFactory.java
@@ -0,0 +1,232 @@
+/*******************************************************************************
+ * Copyright (c) 2013, 2014 LIFL, CEA LIST, and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ *     Christian W. Damus (CEA) - bug 392301
+ *
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.diagram;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.papyrus.infra.core.editor.BackboneException;
+import org.eclipse.papyrus.infra.core.sasheditor.contentprovider.IEditorModel;
+import org.eclipse.papyrus.infra.core.sasheditor.contentprovider.IPageModel;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.core.services.ServicesRegistry;
+import org.eclipse.papyrus.infra.ui.extension.diagrameditor.EditorDescriptor;
+import org.eclipse.papyrus.infra.ui.extension.diagrameditor.IPluggableEditorFactory;
+import org.eclipse.papyrus.infra.ui.multidiagram.actionbarcontributor.ActionBarContributorRegistry;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.part.EditorActionBarContributor;
+
+/**
+ * @author Cedric Dumoulin
+ * @author Remi Schnekenburger
+ * @author Patrick Tessier
+ */
+public class LayersTreeDiagramEditorFactory implements IPluggableEditorFactory {
+
+	/**
+	 * Descriptor of the editor. Values come from the declaration in the extension point. The
+	 * descriptor is set by the EditorFactory.
+	 */
+	private EditorDescriptor editorDescriptor;
+
+	/**
+	 * ServiceRegistry that can be provided to created editors.
+	 */
+	private ServicesRegistry serviceRegistry;
+
+	/** name of the diagram in the di model */
+	public static final String EMF_DIAGRAM_TYPE = "layersTree";
+
+	public LayersTreeDiagramEditorFactory() {
+	}
+
+	/**
+	 * Initialize the factory with useful Classes.
+	 *
+	 * @see IPluggableEditorFactory#init(ServicesRegistry, EditorDescriptor)
+	 *
+	 * @param serviceRegistry
+	 *            Service registry that will be provided to created editor.
+	 * @param editorDescriptor
+	 *            Descriptor containing data from the Eclipse Extension.
+	 */
+	@Override
+	public void init(ServicesRegistry serviceRegistry, EditorDescriptor editorDescriptor) {
+		this.editorDescriptor = editorDescriptor;
+		this.serviceRegistry = serviceRegistry;
+
+	}
+
+	/**
+	 * TODO Implements next methods
+	 *
+	 * @see org.eclipse.papyrus.infra.ui.extension.diagrameditor.IPluggableEditorFactory#createIPageModel(java.lang.Object)
+	 * @param pageIdentifier
+	 * @return
+	 *
+	 */
+	@Override
+	public IPageModel createIPageModel(Object pageIdentifier) {
+		return new EmfTreeEditorModel((Diagram) pageIdentifier, serviceRegistry);
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.infra.ui.extension.diagrameditor.IPluggableEditorFactory#isPageModelFactoryFor(java.lang.Object)
+	 * @param pageIdentifier
+	 * @return
+	 *
+	 */
+	@Override
+	public boolean isPageModelFactoryFor(Object pageIdentifier) {
+		if (pageIdentifier instanceof Diagram) {
+			Diagram diagram = (Diagram) pageIdentifier;
+
+			if (EMF_DIAGRAM_TYPE.equals(diagram.getType())) {
+				return true;
+			}
+		}
+		// no
+		return false;
+	}
+
+	/**
+	 * Model used to describe an instance of this editor in the SashSystem.
+	 *
+	 */
+	public class EmfTreeEditorModel implements IEditorModel {
+
+		/**
+		 * The object used as page identifier and rawModel.
+		 */
+		private Diagram pageIdentifier;
+
+		private ServicesRegistry servicesRegistry;
+
+		private Image tabIcon;
+
+		/**
+		 *
+		 * Constructor.
+		 *
+		 * @param pageIdentifier
+		 * @param servicesRegistry
+		 */
+		public EmfTreeEditorModel(Diagram pageIdentifier, ServicesRegistry servicesRegistry) {
+			this.pageIdentifier = pageIdentifier;
+			this.servicesRegistry = servicesRegistry;
+		}
+
+		/**
+		 * Create the instance of the editor.
+		 *
+		 * @see org.eclipse.papyrus.sasheditor.contentprovider.IEditorModel#createIEditorPart()
+		 * @return
+		 * @throws PartInitException
+		 *
+		 */
+		@Override
+		public IEditorPart createIEditorPart() throws PartInitException {
+			try {
+				return new LayersTreeEditorDiagram(servicesRegistry);
+			} catch (ServiceException e) {
+				throw new PartInitException("Can't create Di2Editor.", e);
+			} catch (BackboneException e) {
+				throw new PartInitException("Can't create Di2Editor.", e);
+			}
+		}
+
+		@Override
+		public EditorActionBarContributor getActionBarContributor() {
+
+			String actionBarId = editorDescriptor.getActionBarContributorId();
+
+			// Do nothing if no EditorActionBarContributor is specify.
+			if (actionBarId == null || actionBarId.length() == 0) {
+				return null;
+			}
+
+			// Try to get it.
+
+			// Get ServiceRegistry
+			ActionBarContributorRegistry registry;
+			try {
+				registry = servicesRegistry
+						.getService(ActionBarContributorRegistry.class);
+			} catch (ServiceException e) {
+				// Service not found
+				// TODO Log the error
+				e.printStackTrace();
+				return null;
+			}
+
+			try {
+				return registry.getActionBarContributor(actionBarId);
+			} catch (BackboneException e) {
+				// TODO Log the error and throw an exception instead
+				e.printStackTrace();
+				return null;
+			}
+		}
+
+		/**
+		 *
+		 * @see org.eclipse.papyrus.sasheditor.contentprovider.IPageModel#getRawModel()
+		 * @return
+		 *
+		 */
+		@Override
+		public Object getRawModel() {
+			return pageIdentifier;
+		}
+
+		/**
+		 *
+		 * @see org.eclipse.papyrus.sasheditor.contentprovider.IPageModel#getTabIcon()
+		 * @return
+		 *
+		 */
+		@Override
+		public Image getTabIcon() {
+			if (tabIcon == null) {
+				ImageDescriptor imageDescriptor = editorDescriptor.getIcon();
+				if (imageDescriptor != null) {
+					tabIcon = imageDescriptor.createImage();
+				}
+			}
+
+			return tabIcon;
+		}
+
+		/**
+		 *
+		 * @see org.eclipse.papyrus.sasheditor.contentprovider.IPageModel#getTabTitle()
+		 * @return
+		 *
+		 */
+		@Override
+		public String getTabTitle() {
+			return "Layers Tree Editor";
+		}
+
+		@Override
+		public void dispose() {
+			if (tabIcon != null) {
+				tabIcon.dispose();
+				tabIcon = null;
+			}
+		}
+
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/LayersTreeEditorDiagram.java b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/LayersTreeEditorDiagram.java
new file mode 100755
index 0000000..ae94d97
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/LayersTreeEditorDiagram.java
@@ -0,0 +1,244 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.diagram;
+
+import java.util.EventObject;
+import java.util.Iterator;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.command.CommandStackListener;
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.papyrus.infra.core.editor.BackboneException;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.core.services.ServicesRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.presentation.LayersEditor;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.ide.IGotoMarker;
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.PropertySheetPage;
+
+/**
+ * This is an example of a EMF UML model editor. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayersTreeEditorDiagram extends LayersEditor implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker {
+
+	/**
+	 * ServiceRegistry used to retrieve needed services. This registry is provided by the multieditor.
+	 */
+	protected ServicesRegistry servicesRegistry;
+
+	protected CommandStackListener commandStackListener;
+
+	/**
+	 *
+	 * Constructor. Create an DiEditor using the {@link ServicesRegistry}.
+	 *
+	 * @param servicesRegistry
+	 */
+	public LayersTreeEditorDiagram(ServicesRegistry servicesRegistry) throws ServiceException, BackboneException {
+		this.servicesRegistry = servicesRegistry;
+		initEditor();
+	}
+
+	/**
+	 * Init the editor from the specified context.
+	 * Set the editing domain used by the EMF editor.
+	 *
+	 * @param editorContext
+	 * @throws ServiceException
+	 */
+	private void initEditor() throws ServiceException {
+
+		TransactionalEditingDomain papyrusEditingDomain = servicesRegistry.getService(TransactionalEditingDomain.class);
+		CommandStack commandStack = papyrusEditingDomain.getCommandStack();
+
+		// Add a listener to set the most recent command's affected objects to be the selection of
+		// the viewer with focus.
+		//
+
+		commandStackListener = new CommandStackListener() {
+
+			/**
+			 * called when command stack has changed
+			 *
+			 * @see org.eclipse.emf.common.command.CommandStackListener#commandStackChanged(java.util.EventObject)
+			 *
+			 * @param event
+			 */
+			@Override
+			public void commandStackChanged(final EventObject event) {
+				if (getContainer().isDisposed()) {
+					return;
+				}
+				getContainer().getDisplay().asyncExec(new Runnable() {
+
+					@Override
+					public void run() {
+						firePropertyChange(IEditorPart.PROP_DIRTY);
+
+						// Try to select the affected objects.
+						//
+						Command mostRecentCommand = ((CommandStack) event.getSource()).getMostRecentCommand();
+						if (mostRecentCommand != null) {
+							setSelectionToViewer(mostRecentCommand.getAffectedObjects());
+						}
+
+						for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext();) {
+
+							PropertySheetPage propertySheetPage = i.next();
+
+							if ((propertySheetPage.getControl() == null)
+									|| propertySheetPage.getControl().isDisposed()) {
+
+								i.remove();
+							} else {
+								propertySheetPage.refresh();
+							}
+						}
+					}
+				});
+			}
+
+		};
+
+		commandStack.addCommandStackListener(commandStackListener);
+
+		// Create the editing domain with a special command stack.
+		//
+		// Set the resourceSet wth our own resourceSet.
+		// editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new
+		// HashMap<Resource, Boolean>());
+
+		ResourceSet resourceSet = papyrusEditingDomain.getResourceSet();
+		editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, resourceSet);
+
+		// editingDomain = editorContext.getTransactionalEditingDomain();
+		// editingDomain.setResourceToReadOnlyMap(new HashMap<Resource, Boolean>());
+	}
+
+	/**
+	 * This is the method called to load a resource into the editing domain's resource set based on
+	 * the editor's input. Put the existing model into the editingDomain. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void createModel() {
+		// model is already created and loaded. Do nothing.
+	}
+
+	/**
+	 * This is for implementing {@link IEditorPart} and simply saves the model file. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void doSave(IProgressMonitor progressMonitor) {
+	}
+
+	/**
+	 * This also changes the editor's input. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void doSaveAs() {
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void doSaveAs(URI uri, IEditorInput editorInput) {
+	}
+
+	@Override
+	public void init(IEditorSite site, IEditorInput editorInput) {
+		super.init(site, editorInput);
+		setPartName("Layers Editor");
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public IActionBars getActionBars() {
+		try {
+			return getActionBarContributor().getActionBars();
+		} catch (NullPointerException e) {
+			// If we are nested, we have not access to ActionBarContributor()
+			return null;
+		}
+	}
+
+	@Override
+	public void dispose() {
+		// super.dispose(); //FIXME: Fails on a ClassCastException: The ActionBarContributor is not accessible
+		try {
+			TransactionalEditingDomain papyrusEditingDomain = servicesRegistry.getService(TransactionalEditingDomain.class);
+			CommandStack commandStack = papyrusEditingDomain.getCommandStack();
+			commandStack.removeCommandStackListener(commandStackListener);
+		} catch (ServiceException e) {
+			Activator.log.error(e);
+		}
+	}
+
+	/**
+	 * Has we have no actionBarContributor, we can't get the status line. So skip this method.
+	 */
+	@Override
+	public void setStatusLineManager(ISelection selection) {
+
+	}
+
+	/**
+	 * Disable the native property sheet page.
+	 */
+	@Override
+	public IPropertySheetPage getPropertySheetPage() {
+
+		// return null;
+		return super.getPropertySheetPage();
+	}
+
+	protected DynamicContextMenu dynamicContextMenu;
+
+	@Override
+	public void menuAboutToShow(IMenuManager menuManager) {
+
+		if (dynamicContextMenu == null) {
+			dynamicContextMenu = new DynamicContextMenu(this);
+		}
+		dynamicContextMenu.menuAboutToShow(menuManager);
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/ui/handlers/AbstractLayerCommand.java b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/ui/handlers/AbstractLayerCommand.java
new file mode 100755
index 0000000..814a3c8
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/ui/handlers/AbstractLayerCommand.java
@@ -0,0 +1,245 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ *     Christian W. Damus - bug 485220
+ *     
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.diagram.ui.handlers;
+
+
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.ISashWindowsContainer;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.ui.util.ServiceUtilsForIEvaluationContext;
+import org.eclipse.papyrus.layers.runtime.NotationDiagramHelper;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.ui.IEditorPart;
+
+/**
+ * Base class for Commands on Layers.
+ * This class provide utility methods to find the current Layer, LayerStack, ...
+ *
+ * @author cedric dumoulin
+ *
+ */
+public abstract class AbstractLayerCommand extends AbstractHandler {
+
+	/**
+	 * Constructor.
+	 *
+	 */
+	public AbstractLayerCommand() {
+		super();
+	}
+
+	/**
+	 * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+	 * @param event
+	 * @return
+	 * @throws ExecutionException
+	 *
+	 */
+	@Override
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+		executeTransaction(event);
+
+		return null;
+	}
+
+	/**
+	 * Execute as transaction
+	 *
+	 * @param event
+	 */
+	private void executeTransaction(ExecutionEvent event) {
+
+		// Get requested objects
+		final NotationDiagramHelper notationDiagramHelper;
+		TransactionalEditingDomain editingDomain;
+		try {
+			IEvaluationContext context = getIEvaluationContext(event);
+			notationDiagramHelper = lookupNotationDiagramHelperChecked(context);
+			editingDomain = lookupTransactionalEditingDomain(context);
+		} catch (NotFoundException e) {
+			// silently fails
+			return;
+		} catch (ServiceException e) {
+			// silently fails
+			return;
+		}
+
+
+		Command cmd = new RecordingCommand(editingDomain, getCommandName()) {
+
+			@Override
+			protected void doExecute() {
+				AbstractLayerCommand.this.doExecute(notationDiagramHelper);
+			}
+
+
+		};
+
+		editingDomain.getCommandStack().execute(cmd);
+
+	}
+
+	/**
+	 * Get the name used in the {@link RecordingCommand}. This name will be visible in
+	 * undo/redo.
+	 *
+	 * @return The command name to show.
+	 */
+	public abstract String getCommandName();
+
+	/**
+	 * Do the execution of the command.
+	 * Subclass should implements this method.
+	 *
+	 * @param notationDiagramHelper
+	 */
+	protected abstract void doExecute(NotationDiagramHelper notationDiagramHelper);
+
+	// /**
+	// *
+	// * @return
+	// * @throws NotFoundException
+	// */
+	// protected LayerStackMngr lookupLayerStackMngrChecked() throws NotFoundException {
+	//
+	// return lookupLayersViewChecked().getLayerStackMngrChecked();
+	//
+	// }
+
+
+	protected IEvaluationContext getIEvaluationContext(ExecutionEvent event) throws NotFoundException {
+		try {
+			return (IEvaluationContext) event.getApplicationContext();
+		} catch (ClassCastException e) {
+			throw new NotFoundException("IEvaluationContext can't be found.");
+		}
+
+	}
+
+	/**
+	 * Try to lookup the TransactionalEditingDomain.
+	 *
+	 * @return
+	 * @throws ServiceException
+	 *             If the Editing domain can't be found.
+	 */
+	protected TransactionalEditingDomain lookupTransactionalEditingDomain(IEvaluationContext context) throws ServiceException {
+
+		// Get page from the event !
+		// IWorkbenchPage page = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage();
+
+		return ServiceUtilsForIEvaluationContext.getInstance().getTransactionalEditingDomain(context);
+	}
+
+	/**
+	 * Called by framework. Need to set the enabled flag.
+	 *
+	 * @see org.eclipse.core.commands.AbstractHandler#setEnabled(java.lang.Object)
+	 *
+	 * @param evaluationContext
+	 */
+	@Override
+	public void setEnabled(Object evaluationContext) {
+
+		if (!(evaluationContext instanceof IEvaluationContext)) {
+			setBaseEnabled(false);
+			// System.out.println(getCommandName() + ".setEnabled(" + isEnabled() + ") - no context");
+			return;
+		}
+
+		IEvaluationContext context = (IEvaluationContext) evaluationContext;
+
+		try {
+			NotationDiagramHelper diagramHelper = lookupNotationDiagramHelperChecked(context);
+
+			// Ask the subclass
+			setBaseEnabled(isEnabled(diagramHelper));
+
+		} catch (ServiceException e) {
+			// Can't find ServiceRegistry: disable
+			setBaseEnabled(false);
+		} catch (NotFoundException e) {
+			// Can't find ServiceRegistry: disable
+			setBaseEnabled(false);
+		}
+
+
+		// System.out.println(getCommandName() + ".setEnabled(" + isEnabled() + ")");
+	}
+
+	/**
+	 * Return true if the action is enabled, false otherwise.
+	 * Subclasses should implements this method. The default implementation return true.
+	 *
+	 * @param notationDiagramHelper
+	 * @return
+	 */
+	public boolean isEnabled(NotationDiagramHelper notationDiagramHelper) {
+		return true;
+	}
+
+	// /**
+	// *
+	// * @return
+	// * @throws NotFoundException
+	// */
+	// protected LayerStackMngr lookupLayerStackMngrChecked() throws NotFoundException {
+	//
+	// return lookupLayersViewChecked().getLayerStackMngrChecked();
+	//
+	// }
+
+	/**
+	 * Get the notation diagram helper.
+	 * This method can be used from {@link #execute(ExecutionEvent)} or {@link #setEnabled(Object)}.
+	 *
+	 * @return The
+	 * @throws NotFoundException
+	 * @throws ServiceException
+	 */
+	protected NotationDiagramHelper lookupNotationDiagramHelperChecked(IEvaluationContext context) throws NotFoundException, ServiceException {
+
+
+		// Get page from the event !
+		// IWorkbenchPage page = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage();
+
+		IEditorPart editor = ServiceUtilsForIEvaluationContext.getInstance().getService(ISashWindowsContainer.class, context).getActiveEditor();
+
+		if (!(editor instanceof DiagramDocumentEditor)) {
+			throw new NotFoundException("Selected editor do not contains Diagram");
+		}
+		DiagramDocumentEditor diagramEditor = (DiagramDocumentEditor) editor;
+
+		Diagram diagram = diagramEditor.getDiagram();
+		if (diagram == null) {
+			throw new NotFoundException("Selected editor do not contains Diagram");
+		}
+
+		// Lookup the Layer model
+		LayersModel layersModel = (LayersModel) ServiceUtilsForIEvaluationContext.getInstance().getModelSet(context).getModel(LayersModel.MODEL_ID);
+		// Return a new instance of the Helper
+		return new NotationDiagramHelper(layersModel, diagram);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/ui/handlers/DynamicCreateChildMenu.java b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/ui/handlers/DynamicCreateChildMenu.java
new file mode 100755
index 0000000..66a0102
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/ui/handlers/DynamicCreateChildMenu.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.diagram.ui.handlers;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.CompoundContributionItem;
+import org.eclipse.ui.menus.CommandContributionItem;
+
+
+/**
+ * This class is responsible to create the dynamic menu allowing to create
+ * child elements of a Layer Model.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class DynamicCreateChildMenu extends CompoundContributionItem {
+
+	/**
+	 * @see org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()
+	 *
+	 * @return
+	 */
+	@Override
+	protected IContributionItem[] getContributionItems() {
+		// System.err.println("getContributionItems()");
+		IContributionItem[] items = new IContributionItem[1];
+
+		Map<String, String> parms = new HashMap<String, String>();
+		parms.put("groupBy", "Severity");
+		items[0] = new CommandContributionItem(PlatformUI.getWorkbench().getActiveWorkbenchWindow(), null,
+				"org.eclipse.ui.views.problems.grouping",
+				parms, null, null, null, "Severity", null,
+				null, CommandContributionItem.STYLE_PUSH);
+		return items;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/ui/handlers/ShowCreateChildCommand.java b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/ui/handlers/ShowCreateChildCommand.java
new file mode 100755
index 0000000..0ab0ec6
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.diagram/src/org/eclipse/papyrus/layers/stackmodel/diagram/ui/handlers/ShowCreateChildCommand.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.diagram.ui.handlers;
+
+import org.eclipse.core.commands.IHandler;
+import org.eclipse.papyrus.layers.runtime.NotationDiagramHelper;
+
+
+/**
+ * Add a layer stack to a diagram.
+ * This is performed on the current LayerStack Viewer.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class ShowCreateChildCommand extends AbstractLayerCommand implements IHandler {
+
+
+	/**
+	 * @see org.eclipse.papyrus.layers2.ui.view.commands.AbstractLayerCommand#getCommandName()
+	 *
+	 * @return
+	 */
+	@Override
+	public String getCommandName() {
+		return "Attach Layer Stack";
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers2.ui.view.commands.AbstractLayerCommand#doExecute(org.eclipse.papyrus.layers.application.NotationDiagramMngr)
+	 *
+	 * @param notationDiagramHelper
+	 */
+	@Override
+	protected void doExecute(NotationDiagramHelper notationDiagramHelper) {
+		notationDiagramHelper.attachLayersStack();
+	}
+
+
+	/**
+	 * Return true if it is possible to attach aLyerStack.
+	 */
+	@Override
+	public boolean isEnabled(NotationDiagramHelper notationDiagramHelper) {
+		return !notationDiagramHelper.isLayersStackAttached();
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/.classpath b/layers/org.eclipse.papyrus.layers.stackmodel.edit/.classpath
new file mode 100755
index 0000000..ad32c83
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/.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/layers/org.eclipse.papyrus.layers.stackmodel.edit/.project b/layers/org.eclipse.papyrus.layers.stackmodel.edit/.project
new file mode 100755
index 0000000..7d3dc93
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.layers.stackmodel.edit</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/.settings/org.eclipse.jdt.core.prefs b/layers/org.eclipse.papyrus.layers.stackmodel.edit/.settings/org.eclipse.jdt.core.prefs
new file mode 100755
index 0000000..94d61f0
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,291 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+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/layers/org.eclipse.papyrus.layers.stackmodel.edit/.settings/org.eclipse.jdt.ui.prefs b/layers/org.eclipse.papyrus.layers.stackmodel.edit/.settings/org.eclipse.jdt.ui.prefs
new file mode 100755
index 0000000..954281d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/.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.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
+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 v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\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>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/META-INF/MANIFEST.MF b/layers/org.eclipse.papyrus.layers.stackmodel.edit/META-INF/MANIFEST.MF
new file mode 100755
index 0000000..e624965
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,22 @@
+Manifest-Version: 1.0
+Export-Package: org.eclipse.papyrus.layers.configmodel.layersconfig.provider,
+ org.eclipse.papyrus.layers.stackmodel.layers.provider,
+ org.eclipse.papyrus.layers.stackmodel.layers.provider.custom
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.papyrus.layers.stackmodel;bundle-version="1.2.0";visibility:=reexport,
+ org.eclipse.emf.edit;visibility:=reexport,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.emf.ecore.edit;visibility:=reexport,
+ org.eclipse.gmf.runtime.notation;visibility:=reexport,
+ org.eclipse.gmf.runtime.notation.edit;visibility:=reexport,
+ org.eclipse.uml2.common.edit;visibility:=reexport
+Bundle-Vendor: %providerName
+Bundle-ActivationPolicy: lazy
+Bundle-ClassPath: .
+Bundle-Version: 1.2.0.qualifier
+Bundle-Name: %pluginName
+Bundle-Localization: plugin
+Bundle-ManifestVersion: 2
+Bundle-Activator: org.eclipse.papyrus.layers.stackmodel.layers.provider.LayersEditPlugin$Implementation
+Bundle-SymbolicName: org.eclipse.papyrus.layers.stackmodel.edit;singleton:=true
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/about.html b/layers/org.eclipse.papyrus.layers.stackmodel.edit/about.html
new file mode 100755
index 0000000..d35d5ae
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/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>June 5, 2007</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/build.properties b/layers/org.eclipse.papyrus.layers.stackmodel.edit/build.properties
new file mode 100755
index 0000000..b686a6b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/build.properties
@@ -0,0 +1,12 @@
+#
+
+bin.includes = .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties,\
+               about.html
+jars.compile.order = .
+source.. = src/
+output.. = bin/
+src.includes = about.html
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateAbstractLayer_propertyValueMap_StringToTypeInstanceMap.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateAbstractLayer_propertyValueMap_StringToTypeInstanceMap.gif
new file mode 100755
index 0000000..46a3c0c
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateAbstractLayer_propertyValueMap_StringToTypeInstanceMap.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFillInstance_fillColor_ColorInstance.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFillInstance_fillColor_ColorInstance.gif
new file mode 100755
index 0000000..7b652ac
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFillInstance_fillColor_ColorInstance.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_BooleanType.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_BooleanType.gif
new file mode 100755
index 0000000..517abc7
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_BooleanType.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Color.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Color.gif
new file mode 100755
index 0000000..40ef685
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Color.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_CustomType.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_CustomType.gif
new file mode 100755
index 0000000..d56a04b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_CustomType.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Fill.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Fill.gif
new file mode 100755
index 0000000..1ebcee0
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Fill.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Folder.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Folder.gif
new file mode 100755
index 0000000..40ef685
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Folder.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_FontType.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_FontType.gif
new file mode 100755
index 0000000..5a308e5
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_FontType.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_IntType.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_IntType.gif
new file mode 100755
index 0000000..ad157ff
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_IntType.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_LayersStackApplication.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_LayersStackApplication.gif
new file mode 100755
index 0000000..bf50c76
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_LayersStackApplication.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_LineType.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_LineType.gif
new file mode 100755
index 0000000..ad157ff
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_LineType.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Metamodel.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Metamodel.gif
new file mode 100755
index 0000000..3408e14
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Metamodel.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Property.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Property.gif
new file mode 100755
index 0000000..2c857d7
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_Property.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_StringType.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_StringType.gif
new file mode 100755
index 0000000..28525df
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_elements_StringType.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_Folder.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_Folder.gif
new file mode 100755
index 0000000..40ef685
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_Folder.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_FolderElement.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_FolderElement.gif
new file mode 100755
index 0000000..aced3dd
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_FolderElement.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_InstanciableElement.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_InstanciableElement.gif
new file mode 100755
index 0000000..997e434
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_InstanciableElement.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_LayerOperatorConfig.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_LayerOperatorConfig.gif
new file mode 100755
index 0000000..d56a04b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_LayerOperatorConfig.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_LayerOperatorMultipleBinding.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_LayerOperatorMultipleBinding.gif
new file mode 100755
index 0000000..aced3dd
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_LayerOperatorMultipleBinding.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_LayerOperatorToOperatorBinding.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_LayerOperatorToOperatorBinding.gif
new file mode 100755
index 0000000..9a73c8d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_LayerOperatorToOperatorBinding.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_OperatorConfig.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_OperatorConfig.gif
new file mode 100755
index 0000000..8a4acfb
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_OperatorConfig.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_PropertyId.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_PropertyId.gif
new file mode 100755
index 0000000..159895b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_PropertyId.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_TypeConfig.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_TypeConfig.gif
new file mode 100755
index 0000000..5fc9320
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateFolder_folderElements_TypeConfig.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerDescriptorRegistry_layerDescriptors_LayerDescriptor.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerDescriptorRegistry_layerDescriptors_LayerDescriptor.gif
new file mode 100755
index 0000000..261e1fa
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerDescriptorRegistry_layerDescriptors_LayerDescriptor.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerDescriptorRegistry_layerDescriptors_RegExpLayerDescriptor.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerDescriptorRegistry_layerDescriptors_RegExpLayerDescriptor.gif
new file mode 100755
index 0000000..9a4c243
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerDescriptorRegistry_layerDescriptors_RegExpLayerDescriptor.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerDescriptorRegistry_layerDescriptors_SimpleLayerDescriptor.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerDescriptorRegistry_layerDescriptors_SimpleLayerDescriptor.gif
new file mode 100755
index 0000000..b7be165
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerDescriptorRegistry_layerDescriptors_SimpleLayerDescriptor.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerNamedStyle_layersStack_LayersStack.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerNamedStyle_layersStack_LayersStack.gif
new file mode 100755
index 0000000..bb83437
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerNamedStyle_layersStack_LayersStack.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_AndStackedLayerOperatorDescriptor.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_AndStackedLayerOperatorDescriptor.gif
new file mode 100755
index 0000000..4a574b1
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_AndStackedLayerOperatorDescriptor.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_LayerOperatorDescriptor.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_LayerOperatorDescriptor.gif
new file mode 100755
index 0000000..1dbde94
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_LayerOperatorDescriptor.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_OrStackedLayerOperatorDescriptor.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_OrStackedLayerOperatorDescriptor.gif
new file mode 100755
index 0000000..6544d14
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_OrStackedLayerOperatorDescriptor.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_StackedLayerOperatorDescriptor.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_StackedLayerOperatorDescriptor.gif
new file mode 100755
index 0000000..09741e8
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_StackedLayerOperatorDescriptor.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_TopLayerOperatorDescriptor.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_TopLayerOperatorDescriptor.gif
new file mode 100755
index 0000000..700bd5e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_descriptors_TopLayerOperatorDescriptor.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_propertyOperators_CustomPropertyOperator.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_propertyOperators_CustomPropertyOperator.gif
new file mode 100755
index 0000000..da050a4
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_propertyOperators_CustomPropertyOperator.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_propertyOperators_DefaultPropertyOperator.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_propertyOperators_DefaultPropertyOperator.gif
new file mode 100755
index 0000000..8d289e3
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_propertyOperators_DefaultPropertyOperator.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_propertyOperators_PropertyOperator.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_propertyOperators_PropertyOperator.gif
new file mode 100755
index 0000000..dcbeb3e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorDescriptorRegistry_propertyOperators_PropertyOperator.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorMultipleBinding_bindings_OperatorBinding.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorMultipleBinding_bindings_OperatorBinding.gif
new file mode 100755
index 0000000..0cd2b13
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorMultipleBinding_bindings_OperatorBinding.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorMultipleBinding_bindings_SimpleBinding.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorMultipleBinding_bindings_SimpleBinding.gif
new file mode 100755
index 0000000..a188f9e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperatorMultipleBinding_bindings_SimpleBinding.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_AllViewsDerivedLayer.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_AllViewsDerivedLayer.gif
new file mode 100755
index 0000000..b2b20e5
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_AllViewsDerivedLayer.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_CustomLayerOperator.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_CustomLayerOperator.gif
new file mode 100755
index 0000000..d44bc94
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_CustomLayerOperator.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_Layer.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_Layer.gif
new file mode 100755
index 0000000..5bfbb66
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_Layer.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_RegExpLayer.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_RegExpLayer.gif
new file mode 100755
index 0000000..c2b071b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_RegExpLayer.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_StackedLayerOperator.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_StackedLayerOperator.gif
new file mode 100755
index 0000000..d799c18
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_StackedLayerOperator.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_TopLayerOperator.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_TopLayerOperator.gif
new file mode 100755
index 0000000..46106a3
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayerOperator_layers_TopLayerOperator.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayer_propertyValueMap_StringToTypeInstanceMap.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayer_propertyValueMap_StringToTypeInstanceMap.gif
new file mode 100755
index 0000000..2bed2e1
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayer_propertyValueMap_StringToTypeInstanceMap.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayer_propertyValues_BooleanInstance.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayer_propertyValues_BooleanInstance.gif
new file mode 100755
index 0000000..3eb3c30
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayer_propertyValues_BooleanInstance.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayer_propertyValues_IntInstance.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayer_propertyValues_IntInstance.gif
new file mode 100755
index 0000000..01f8ed6
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayer_propertyValues_IntInstance.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayer_propertyValues_StringInstance.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayer_propertyValues_StringInstance.gif
new file mode 100755
index 0000000..6a0e6fc
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayer_propertyValues_StringInstance.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_factory_LayerApplicationFactory.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_factory_LayerApplicationFactory.gif
new file mode 100755
index 0000000..85a51d1
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_factory_LayerApplicationFactory.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_layerDescriptorRegistry_LayerDescriptorRegistry.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_layerDescriptorRegistry_LayerDescriptorRegistry.gif
new file mode 100755
index 0000000..978ee2b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_layerDescriptorRegistry_LayerDescriptorRegistry.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_layerOperatorDescriptorRegistry_LayerOperatorDescriptorRegistry.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_layerOperatorDescriptorRegistry_LayerOperatorDescriptorRegistry.gif
new file mode 100755
index 0000000..d8aebba
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_layerOperatorDescriptorRegistry_LayerOperatorDescriptorRegistry.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_layerStackRegistry_LayerStackDescriptorRegistry.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_layerStackRegistry_LayerStackDescriptorRegistry.gif
new file mode 100755
index 0000000..375192a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_layerStackRegistry_LayerStackDescriptorRegistry.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_layersStacks_LayersStack.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_layersStacks_LayersStack.gif
new file mode 100755
index 0000000..64e6523
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_layersStacks_LayersStack.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_propertyRegistry_PropertyRegistry.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_propertyRegistry_PropertyRegistry.gif
new file mode 100755
index 0000000..85a51d1
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_propertyRegistry_PropertyRegistry.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_propertySetterRegistry_PropertySetterRegistry.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_propertySetterRegistry_PropertySetterRegistry.gif
new file mode 100755
index 0000000..ed30ca5
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStackApplication_propertySetterRegistry_PropertySetterRegistry.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_AllViewsDerivedLayer.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_AllViewsDerivedLayer.gif
new file mode 100755
index 0000000..28ed761
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_AllViewsDerivedLayer.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_CustomLayerOperator.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_CustomLayerOperator.gif
new file mode 100755
index 0000000..845e9f4
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_CustomLayerOperator.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_Layer.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_Layer.gif
new file mode 100755
index 0000000..dac0ebb
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_Layer.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_RegExpLayer.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_RegExpLayer.gif
new file mode 100755
index 0000000..424142e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_RegExpLayer.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_StackedLayerOperator.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_StackedLayerOperator.gif
new file mode 100755
index 0000000..252ab40
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_StackedLayerOperator.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_TopLayerOperator.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_TopLayerOperator.gif
new file mode 100755
index 0000000..cd537c8
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateLayersStack_layers_TopLayerOperator.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertyRegistry_properties_Property.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertyRegistry_properties_Property.gif
new file mode 100755
index 0000000..9679858
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertyRegistry_properties_Property.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertyRegistry_typeRegistry_TypeRegistry.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertyRegistry_typeRegistry_TypeRegistry.gif
new file mode 100755
index 0000000..033a89e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertyRegistry_typeRegistry_TypeRegistry.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_FillPropertySetter.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_FillPropertySetter.gif
new file mode 100755
index 0000000..f8fc1d5
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_FillPropertySetter.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_FontPropertySetter.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_FontPropertySetter.gif
new file mode 100755
index 0000000..7e48702
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_FontPropertySetter.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_IsValidPropertySetter.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_IsValidPropertySetter.gif
new file mode 100755
index 0000000..05c17b3
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_IsValidPropertySetter.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_IsVisiblePropertySetter.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_IsVisiblePropertySetter.gif
new file mode 100755
index 0000000..53a716e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_IsVisiblePropertySetter.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_LinePropertySetter.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_LinePropertySetter.gif
new file mode 100755
index 0000000..38bb022
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_LinePropertySetter.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_NullPropertySetter.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_NullPropertySetter.gif
new file mode 100755
index 0000000..a7d0fbc
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_NullPropertySetter.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_PropertySetter.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_PropertySetter.gif
new file mode 100755
index 0000000..05eb255
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_PropertySetter.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_isAbstractUmlSetter.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_isAbstractUmlSetter.gif
new file mode 100755
index 0000000..53a716e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_propertySetters_isAbstractUmlSetter.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_setterMap_StringToPropertySetter.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_setterMap_StringToPropertySetter.gif
new file mode 100755
index 0000000..4d10d57
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreatePropertySetterRegistry_setterMap_StringToPropertySetter.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_BooleanInstance.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_BooleanInstance.gif
new file mode 100755
index 0000000..889a6dd
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_BooleanInstance.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_ColorInstance.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_ColorInstance.gif
new file mode 100755
index 0000000..b021070
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_ColorInstance.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_FillInstance.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_FillInstance.gif
new file mode 100755
index 0000000..3be3f93
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_FillInstance.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_FontInstance.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_FontInstance.gif
new file mode 100755
index 0000000..7faa8da
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_FontInstance.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_IntInstance.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_IntInstance.gif
new file mode 100755
index 0000000..d9a8b0c
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_IntInstance.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_LineInstance.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_LineInstance.gif
new file mode 100755
index 0000000..d9a8b0c
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_LineInstance.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_NullInstance.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_NullInstance.gif
new file mode 100755
index 0000000..cece060
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_NullInstance.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_StringInstance.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_StringInstance.gif
new file mode 100755
index 0000000..b3062f7
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateProperty_defaultValue_StringInstance.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertyIndexMap_value_PropertyIndex.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertyIndexMap_value_PropertyIndex.gif
new file mode 100755
index 0000000..34611db
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertyIndexMap_value_PropertyIndex.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_FillPropertySetter.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_FillPropertySetter.gif
new file mode 100755
index 0000000..9d0e539
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_FillPropertySetter.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_FontPropertySetter.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_FontPropertySetter.gif
new file mode 100755
index 0000000..12ec17b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_FontPropertySetter.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_IsValidPropertySetter.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_IsValidPropertySetter.gif
new file mode 100755
index 0000000..051fac7
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_IsValidPropertySetter.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_IsVisiblePropertySetter.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_IsVisiblePropertySetter.gif
new file mode 100755
index 0000000..f5718d5
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_IsVisiblePropertySetter.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_LinePropertySetter.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_LinePropertySetter.gif
new file mode 100755
index 0000000..f7e8a7b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_LinePropertySetter.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_NullPropertySetter.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_NullPropertySetter.gif
new file mode 100755
index 0000000..3d5c10a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_NullPropertySetter.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_PropertySetter.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_PropertySetter.gif
new file mode 100755
index 0000000..396a4d7
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_PropertySetter.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_isAbstractUmlSetter.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_isAbstractUmlSetter.gif
new file mode 100755
index 0000000..f5718d5
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToPropertySetter_value_isAbstractUmlSetter.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_BooleanInstance.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_BooleanInstance.gif
new file mode 100755
index 0000000..01247e3
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_BooleanInstance.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_ColorInstance.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_ColorInstance.gif
new file mode 100755
index 0000000..578475a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_ColorInstance.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_FillInstance.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_FillInstance.gif
new file mode 100755
index 0000000..21f8952
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_FillInstance.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_FontInstance.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_FontInstance.gif
new file mode 100755
index 0000000..fb71f8b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_FontInstance.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_IntInstance.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_IntInstance.gif
new file mode 100755
index 0000000..e891a2b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_IntInstance.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_LineInstance.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_LineInstance.gif
new file mode 100755
index 0000000..e891a2b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_LineInstance.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_NullInstance.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_NullInstance.gif
new file mode 100755
index 0000000..b5e551d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_NullInstance.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_StringInstance.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_StringInstance.gif
new file mode 100755
index 0000000..dbbf504
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeInstanceMap_value_StringInstance.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_BooleanType.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_BooleanType.gif
new file mode 100755
index 0000000..d203b1d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_BooleanType.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_Color.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_Color.gif
new file mode 100755
index 0000000..81984fd
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_Color.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_CustomType.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_CustomType.gif
new file mode 100755
index 0000000..983575c
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_CustomType.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_Fill.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_Fill.gif
new file mode 100755
index 0000000..b25c629
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_Fill.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_FontType.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_FontType.gif
new file mode 100755
index 0000000..eef1935
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_FontType.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_IntType.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_IntType.gif
new file mode 100755
index 0000000..9dd025a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_IntType.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_LineType.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_LineType.gif
new file mode 100755
index 0000000..9dd025a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_LineType.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_StringType.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_StringType.gif
new file mode 100755
index 0000000..385b365
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateStringToTypeMap_value_StringType.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateTypeRegistry_types_StringToTypeMap.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateTypeRegistry_types_StringToTypeMap.gif
new file mode 100755
index 0000000..d9e27ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/ctool16/CreateTypeRegistry_types_StringToTypeMap.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/AbstractLayerOperator.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/AbstractLayerOperator.gif
new file mode 100755
index 0000000..a26660e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/AbstractLayerOperator.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/AllViewsDerivedLayer.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/AllViewsDerivedLayer.gif
new file mode 100755
index 0000000..5274202
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/AllViewsDerivedLayer.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/AndStackedLayerOperatorDescriptor.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/AndStackedLayerOperatorDescriptor.gif
new file mode 100755
index 0000000..ea58a65
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/AndStackedLayerOperatorDescriptor.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/BooleanInstance.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/BooleanInstance.gif
new file mode 100755
index 0000000..f412370
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/BooleanInstance.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/BooleanType.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/BooleanType.gif
new file mode 100755
index 0000000..a17dc7d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/BooleanType.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Color.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Color.gif
new file mode 100755
index 0000000..b1f8afa
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Color.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/ColorInstance.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/ColorInstance.gif
new file mode 100755
index 0000000..f412370
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/ColorInstance.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/CustomLayerOperator.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/CustomLayerOperator.gif
new file mode 100755
index 0000000..a17dc7d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/CustomLayerOperator.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/CustomPropertyOperator.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/CustomPropertyOperator.gif
new file mode 100755
index 0000000..05dc74a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/CustomPropertyOperator.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/CustomType.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/CustomType.gif
new file mode 100755
index 0000000..83afb9b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/CustomType.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/DefaultPropertyOperator.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/DefaultPropertyOperator.gif
new file mode 100755
index 0000000..7c2aaac
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/DefaultPropertyOperator.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Fill.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Fill.gif
new file mode 100755
index 0000000..8a5c70c
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Fill.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FillInstance.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FillInstance.gif
new file mode 100755
index 0000000..f412370
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FillInstance.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FillPropertySetter.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FillPropertySetter.gif
new file mode 100755
index 0000000..5a9bc75
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FillPropertySetter.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Folder.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Folder.gif
new file mode 100755
index 0000000..b1f8afa
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Folder.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FolderElement.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FolderElement.gif
new file mode 100755
index 0000000..cb1755a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FolderElement.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FontInstance.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FontInstance.gif
new file mode 100755
index 0000000..f412370
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FontInstance.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FontPropertySetter.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FontPropertySetter.gif
new file mode 100755
index 0000000..7b7c428
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FontPropertySetter.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FontType.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FontType.gif
new file mode 100755
index 0000000..e4bc22d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/FontType.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/InstanciableElement.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/InstanciableElement.gif
new file mode 100755
index 0000000..4365960
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/InstanciableElement.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/IntInstance.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/IntInstance.gif
new file mode 100755
index 0000000..f412370
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/IntInstance.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/IntType.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/IntType.gif
new file mode 100755
index 0000000..d3dc5a9
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/IntType.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/IsValidPropertySetter.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/IsValidPropertySetter.gif
new file mode 100755
index 0000000..cb1755a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/IsValidPropertySetter.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/IsVisiblePropertySetter.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/IsVisiblePropertySetter.gif
new file mode 100755
index 0000000..c3370c7
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/IsVisiblePropertySetter.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Layer.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Layer.gif
new file mode 100755
index 0000000..9f55117
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Layer.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerApplicationFactory.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerApplicationFactory.gif
new file mode 100755
index 0000000..c8d381f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerApplicationFactory.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerDescriptor.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerDescriptor.gif
new file mode 100755
index 0000000..420eee1
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerDescriptor.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerDescriptorRegistry.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerDescriptorRegistry.gif
new file mode 100755
index 0000000..a17dc7d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerDescriptorRegistry.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerNamedStyle.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerNamedStyle.gif
new file mode 100755
index 0000000..106881e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerNamedStyle.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorConfig.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorConfig.gif
new file mode 100755
index 0000000..83afb9b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorConfig.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorDescriptor.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorDescriptor.gif
new file mode 100755
index 0000000..caf2804
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorDescriptor.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorDescriptorRegistry.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorDescriptorRegistry.gif
new file mode 100755
index 0000000..98b351f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorDescriptorRegistry.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorMultipleBinding.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorMultipleBinding.gif
new file mode 100755
index 0000000..cb1755a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorMultipleBinding.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorToOperatorBinding.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorToOperatorBinding.gif
new file mode 100755
index 0000000..53500da
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerOperatorToOperatorBinding.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerStackDescriptorRegistry.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerStackDescriptorRegistry.gif
new file mode 100755
index 0000000..2b69256
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayerStackDescriptorRegistry.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayersStack.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayersStack.gif
new file mode 100755
index 0000000..f830b32
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayersStack.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayersStackApplication.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayersStackApplication.gif
new file mode 100755
index 0000000..b4ac2ec
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LayersStackApplication.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LineInstance.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LineInstance.gif
new file mode 100755
index 0000000..f412370
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LineInstance.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LinePropertySetter.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LinePropertySetter.gif
new file mode 100755
index 0000000..338fb8d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LinePropertySetter.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LineType.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LineType.gif
new file mode 100755
index 0000000..d3dc5a9
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/LineType.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Metamodel.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Metamodel.gif
new file mode 100755
index 0000000..14af8aa
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Metamodel.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/NullInstance.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/NullInstance.gif
new file mode 100755
index 0000000..f412370
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/NullInstance.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/NullPropertySetter.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/NullPropertySetter.gif
new file mode 100755
index 0000000..4365960
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/NullPropertySetter.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/OperatorBinding.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/OperatorBinding.gif
new file mode 100755
index 0000000..89ad5da
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/OperatorBinding.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/OperatorConfig.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/OperatorConfig.gif
new file mode 100755
index 0000000..ef56c14
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/OperatorConfig.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/OrStackedLayerOperatorDescriptor.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/OrStackedLayerOperatorDescriptor.gif
new file mode 100755
index 0000000..c3370c7
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/OrStackedLayerOperatorDescriptor.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Property.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Property.gif
new file mode 100755
index 0000000..136e3b2
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/Property.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertyId.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertyId.gif
new file mode 100755
index 0000000..134551b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertyId.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertyIndex.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertyIndex.gif
new file mode 100755
index 0000000..c4a8af4
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertyIndex.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertyOperator.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertyOperator.gif
new file mode 100755
index 0000000..c4a8af4
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertyOperator.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertyRegistry.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertyRegistry.gif
new file mode 100755
index 0000000..c8d381f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertyRegistry.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertySetter.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertySetter.gif
new file mode 100755
index 0000000..7bac4fd
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertySetter.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertySetterRegistry.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertySetterRegistry.gif
new file mode 100755
index 0000000..106881e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/PropertySetterRegistry.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/RegExpLayer.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/RegExpLayer.gif
new file mode 100755
index 0000000..5274202
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/RegExpLayer.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/RegExpLayerDescriptor.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/RegExpLayerDescriptor.gif
new file mode 100755
index 0000000..7bac4fd
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/RegExpLayerDescriptor.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/SimpleBinding.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/SimpleBinding.gif
new file mode 100755
index 0000000..420eee1
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/SimpleBinding.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/SimpleLayerDescriptor.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/SimpleLayerDescriptor.gif
new file mode 100755
index 0000000..b1f8afa
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/SimpleLayerDescriptor.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StackedLayerOperator.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StackedLayerOperator.gif
new file mode 100755
index 0000000..6329a4e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StackedLayerOperator.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StackedLayerOperatorDescriptor.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StackedLayerOperatorDescriptor.gif
new file mode 100755
index 0000000..98b351f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StackedLayerOperatorDescriptor.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringInstance.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringInstance.gif
new file mode 100755
index 0000000..f412370
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringInstance.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringToPropertyIndexMap.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringToPropertyIndexMap.gif
new file mode 100755
index 0000000..db7414e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringToPropertyIndexMap.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringToPropertySetter.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringToPropertySetter.gif
new file mode 100755
index 0000000..cdd3b76
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringToPropertySetter.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringToTypeInstanceMap.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringToTypeInstanceMap.gif
new file mode 100755
index 0000000..249fda9
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringToTypeInstanceMap.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringToTypeMap.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringToTypeMap.gif
new file mode 100755
index 0000000..739ebbf
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringToTypeMap.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringType.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringType.gif
new file mode 100755
index 0000000..05dc74a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/StringType.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/TopLayerOperator.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/TopLayerOperator.gif
new file mode 100755
index 0000000..af9f5f2
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/TopLayerOperator.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/TopLayerOperatorDescriptor.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/TopLayerOperatorDescriptor.gif
new file mode 100755
index 0000000..c4fb30e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/TopLayerOperatorDescriptor.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/TypeConfig.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/TypeConfig.gif
new file mode 100755
index 0000000..caf2804
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/TypeConfig.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/TypeRegistry.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/TypeRegistry.gif
new file mode 100755
index 0000000..a26660e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/TypeRegistry.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/isAbstractUmlSetter.gif b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/isAbstractUmlSetter.gif
new file mode 100755
index 0000000..c3370c7
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/icons/full/obj16/isAbstractUmlSetter.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/plugin.properties b/layers/org.eclipse.papyrus.layers.stackmodel.edit/plugin.properties
new file mode 100755
index 0000000..8aef34c
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/plugin.properties
@@ -0,0 +1,236 @@
+#
+
+pluginName = Layers Edit Support (Incubation)
+providerName = Eclipse Modeling Project
+
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_LayerNamedStyle_type = Layer Named Style
+_UI_LayersStack_type = Stack
+_UI_LayerExpression_type = Layer Expression
+_UI_LayerDescriptor_type = Layer Descriptor
+_UI_Layer_type = Layer
+_UI_TypeInstance_type = Type Instance
+_UI_StringToTypeInstanceMap_type = String To Type Instance Map
+_UI_Property_type = Property
+_UI_FolderElement_type = Folder Element
+_UI_Type_type = Type
+_UI_Metamodel_type = Metamodel
+_UI_Folder_type = Folder
+_UI_IntInstance_type = Int :
+_UI_BooleanInstance_type = Boolean :
+_UI_StringInstance_type = String :
+_UI_IntType_type = Int Type
+_UI_BooleanType_type = Boolean Type
+_UI_StringType_type = String Type
+_UI_CustomType_type = Custom Type
+_UI_LayersStackApplication_type = Stack Application
+_UI_LayerStackDescriptorRegistry_type = Layer Stack Descriptor Registry
+_UI_PropertyRegistry_type = Property Registry
+_UI_StringToPropertyIndexMap_type = String To Property Index Map
+_UI_PropertyIndex_type = Property Index
+_UI_LayerOperator_type = Layer Operator
+_UI_AbstractLayerOperator_type = Layer Operator
+_UI_TopLayerOperator_type = Layer Operator (Top)
+_UI_StackedLayerOperator_type = Layer Operator (Stacked)
+_UI_CustomLayerOperator_type = Layer Operator (Custom)
+_UI_Unknown_type = Object
+
+_UI_Unknown_datatype= Value
+
+_UI_LayerNamedStyle_layersStack_feature = Layers Stack
+_UI_LayersStack_layers_feature = Layers
+_UI_LayerExpression_name_feature = Name
+_UI_LayerExpression_description_feature = Description
+_UI_Layer_propertyValues_feature = Property Values
+_UI_Layer_propertyValueMap_feature = Property Value Map
+_UI_Layer_layerDescriptor_feature = Layer Descriptor
+_UI_Layer_views_feature = Views
+_UI_StringToTypeInstanceMap_key_feature = Key
+_UI_StringToTypeInstanceMap_value_feature = Value
+_UI_Property_type_feature = Type
+_UI_Property_defaultValue_feature = Default Value
+_UI_Property_name_feature = Name
+_UI_Property_description_feature = Description
+_UI_Type_metamodel_feature = Metamodel
+_UI_Type_name_feature = Name
+_UI_Type_description_feature = Description
+_UI_Metamodel_name_feature = Name
+_UI_Metamodel_description_feature = Description
+_UI_Metamodel_nsuri_feature = Nsuri
+_UI_Metamodel_pluginID_feature = Plugin ID
+_UI_Metamodel_ePackageInstanceName_feature = EPackage Instance Name
+_UI_Metamodel_isTypeValid_feature = Is Type Valid
+_UI_Folder_elements_feature = Elements
+_UI_Folder_name_feature = Name
+_UI_IntInstance_value_feature = Value
+_UI_BooleanInstance_value_feature = Value
+_UI_StringInstance_value_feature = Value
+_UI_CustomType_classifier_feature = Classifier
+_UI_LayersStackApplication_layersStacks_feature = Layers Stacks
+_UI_LayersStackApplication_layerStackRegistry_feature = Layer Stack Registry
+_UI_LayersStackApplication_propertyRegistry_feature = Property Registry
+_UI_PropertyRegistry_properties_feature = Properties
+_UI_PropertyRegistry_propertyIndexes_feature = Property Indexes
+_UI_StringToPropertyIndexMap_value_feature = Value
+_UI_StringToPropertyIndexMap_key_feature = Key
+_UI_PropertyIndex_property_feature = Property
+_UI_PropertyIndex_index_feature = Index
+_UI_LayerOperator_layers_feature = Layers
+_UI_Unknown_feature = Unspecified
+
+_UI_LayersStack_name_feature = Name
+_UI_LayersStack_description_feature = Description
+_UI_TypeRegistry_type = Type Registry
+_UI_StringToTypeMap_type = String To Type Map
+_UI_PropertyRegistry_typeRegistry_feature = Type Registry
+_UI_TypeRegistry_types_feature = Types
+_UI_StringToTypeMap_value_feature = Value
+_UI_StringToTypeMap_key_feature = Key
+_UI_ApplicationDependantElement_type = Application Dependant Element
+_UI_LayerDescriptorRegistry_type = Layer Descriptor Registry
+_UI_LayerApplicationFactory_type = Layer Application Factory
+_UI_SimpleLayerDescriptor_type = Simple Layer Descriptor
+_UI_RegExpLayerDescriptor_type = Reg Exp Layer Descriptor
+_UI_LayersStack_diagram_feature = Diagram
+_UI_ApplicationDependantElement_application_feature = Application
+_UI_LayersStackApplication_layerDescriptorRegistry_feature = Layer Descriptor Registry
+_UI_LayersStackApplication_factory_feature = Factory
+_UI_LayerDescriptorRegistry_layerDescriptors_feature = Layer Descriptors
+_UI_LayerDescriptor_propertyRegistry_feature = Property Registry
+_UI_LayerApplicationFactory_application_feature = Application
+_UI_NullInstance_type = Null Instance
+_UI_AbstractLayer_type = Abstract Layer
+_UI_RegExpLayer_type = Reg Exp Layer
+_UI_AbstractLayer_propertyValues_feature = Property Values
+_UI_AbstractLayer_propertyValueMap_feature = Property Value Map
+_UI_AbstractLayer_layerDescriptor_feature = Layer Descriptor
+_UI_AbstractLayer_views_feature = Views
+_UI_Color_type = Color
+_UI_ColorInstance_type = Color :
+_UI_FillInstance_type = Fill Transparency :
+_UI_Fill_type = Fill Color :
+_UI_ColorInstance_value_feature = Value
+_UI_FillInstance_transparency_feature = Transparency
+_UI_FillInstance_fillColor_feature = Fill Color
+_UI_PropertySetterRegistry_type = Property Setter Registry
+_UI_PropertySetter_type = Property Setter
+_UI_FillPropertySetter_type = Fill Property Setter
+_UI_IsValidPropertySetter_type = Is Valid Property Setter
+_UI_LayersStackApplication_propertySetterRegistry_feature = Property Setter Registry
+_UI_Property_index_feature = Index
+_UI_PropertySetterRegistry_propertySetters_feature = Property Setters
+_UI_PropertySetterRegistry_application_feature = Application
+_UI_PropertySetter_property_feature = Property
+_UI_StringToPropertySetter_type = String To Property Setter
+_UI_PropertySetterRegistry_setterMap_feature = Setter Map
+_UI_StringToPropertySetter_key_feature = Key
+_UI_StringToPropertySetter_value_feature = Value
+_UI_PropertySetter_propertyName_feature = Property Name
+_UI_NullPropertySetter_type = Null Property Setter
+_UI_ComputePropertyValueCommandItf_type = Compute Property Value Command Itf
+_UI_AbstractLayer_attachedProperties_feature = Attached Properties
+_UI_LineType_type = Line Type
+_UI_LineInstance_type = Line Instance
+_UI_LineInstance_lineColor_feature = Line Color
+_UI_LineInstance_lineWith_feature = Line With
+_UI_LinePropertySetter_type = Line Property Setter
+_UI_FontPropertySetter_type = Font Property Setter
+_UI_FontInstance_type = Font :
+_UI_FontType_type = Font Type
+_UI_FontInstance_fontColor_feature = Font Color
+_UI_FontInstance_fontName_feature = Font Name
+_UI_FontInstance_fontHeigh_feature = Font Heigh
+_UI_FontInstance_bold_feature = Bold
+_UI_IsVisiblePropertySetter_type = Is Visible Property Setter
+_UI_LayerOperatorDescriptor_type = Layer Operator Descriptor
+_UI_PropertyOperator_type = Property Operator
+_UI_LayerOperatorDescriptorRegistry_type = Layer Operator Descriptor Registry
+_UI_AbstractLayerOperator_layerOperatorDescriptor_feature = Layer Operator Descriptor
+_UI_LayerOperatorDescriptor_propertyOperators_feature = Property Operators
+_UI_LayerOperatorDescriptor_name_feature = Name
+_UI_PropertyOperator_name_feature = Name
+_UI_LayerOperatorDescriptorRegistry_descriptors_feature = Descriptors
+_UI_LayerOperatorDescriptorRegistry_propertyOperators_feature = Property Operators
+_UI_LayerOperatorDescriptorRegistry_propertyCollectionSize_feature = Property Collection Size
+_UI_DefaultPropertyOperator_type = Default Property Operator
+_UI_LayerOperatorDescriptor_defaultOperator_feature = Default Operator
+_UI_TopLayerOperatorDescriptor_type = Top Layer Operator Descriptor
+_UI_StackedLayerOperatorDescriptor_type = Stacked Layer Operator Descriptor
+_UI_CustomPropertyOperator_type = Custom Property Operator
+_UI_CustomPropertyOperator_classname_feature = Classname
+_UI_CustomPropertyOperator_operatorInstance_feature = Operator Instance
+_UI_LayersStackApplication_layerOperatorDescriptorRegistry_feature = Layer Operator Descriptor Registry
+_UI_AbstractLayerOperator_layerOperatorDescriptorName_feature = Layer Operator Descriptor Name
+_UI_LayerExpression_isEnabled_feature = Is Enabled
+_UI_LayerExpression_isUserEnabled_feature = Is User Enabled
+_UI_AndStackedLayerOperatorDescriptor_type = And Stacked Layer Operator Descriptor
+_UI_OrStackedLayerOperatorDescriptor_type = Or Stacked Layer Operator Descriptor
+_UI_LayerOperatorDescriptorRegistry_defaultOperator_feature = Default Operator
+_UI_PropertyRegistry_propertiesCount_feature = Properties Count
+_UI_CustomPropertyOperator_classBundleID_feature = Class Bundle ID
+_UI_LayerOperatorConfig_type = Layer Operator Config
+_UI_InstanciableElement_type = Instanciable Element
+_UI_OperatorConfig_type = Operator Config
+_UI_PropertyId_type = Property Id
+_UI_LayerOperatorToOperatorBinding_type = Layer Operator To Operator Binding
+_UI_Folder_folderElements_feature = Folder Elements
+_UI_FolderElement_name_feature = Name
+_UI_InstanciableElement_classname_feature = Classname
+_UI_InstanciableElement_bundleID_feature = Bundle ID
+_UI_InstanciableElement_displayName_feature = Display Name
+_UI_InstanciableElement_iconPath_feature = Icon Path
+_UI_OperatorConfig_propertyId_feature = Property Id
+_UI_LayerOperatorToOperatorBinding_operators_feature = Operators
+_UI_LayerOperatorToOperatorBinding_layerOperator_feature = Layer Operator
+_UI_LayersOperatorBinding_type = Layers Operator Binding
+_UI_LayerOperatorMultipleBinding_type = Layer Operator Multiple Binding
+_UI_SimpleBinding_type = Simple Binding
+_UI_LayerOperatorMultipleBinding_layerOperatorConfig_feature = Layer Operator Config
+_UI_LayerOperatorMultipleBinding_bindings_feature = Bindings
+_UI_SimpleBinding_operators_feature = Operators
+_UI_SimpleBinding_layerOperatorMultipleBinding_feature = Layer Operator Multiple Binding
+_UI_OperatorBinding_type = Operator Binding
+_UI_OperatorBinding_operator_feature = Operator
+_UI_OperatorBinding_layerOperatorConfig_feature = Layer Operator Config
+_UI_OperatorBinding_owner_feature = Owner
+_UI_OperatorBinding_propertyId_feature = Property Id
+_UI_InstanciableElement_classnameKind_feature = Classname Kind
+_UI_ClassnameKind_UNDEFINED_literal = UNDEFINED
+_UI_ClassnameKind_EMF_CLASSNAME_literal = EMF_CLASSNAME
+_UI_ClassnameKind_POJO_CLASSNAME_literal = POJO_CLASSNAME
+_UI_ClassnameKind_NOT_FOUND_literal = NOT_FOUND
+_UI_TypeConfig_type = Type Config
+_UI_PropertyId_type_feature = Type
+_UI_isAbstractUmlSetter_type = is Abstract Uml Setter
+_UI_RegExpLayer_expr_feature = Expr
+_UI_RegExpLayer_language_feature = Language
+_UI_IsAbstractUmlSetter_type = Is Abstract Uml Setter
+_UI_LayerExpression_isLayerEnabledInternal_feature = Is Layer Enabled Internal
+_UI_LayerExpression_isLayerEnabled_feature = Is Layer Enabled
+_UI_RegExpLayer_isLevel1DomainChangedEventDependant_feature = Is Level1 Domain Changed Event Dependant
+_UI_RegExpLayer_isAnyDomainChangedEventDependant_feature = Is Any Domain Changed Event Dependant
+_UI_RegExpLayer_isLevel1DiagramChangedEventdependant_feature = Is Level1 Diagram Changed Eventdependant
+_UI_RegExpLayer_isAnyDiagramChangedEventDependant_feature = Is Any Diagram Changed Event Dependant
+_UI_RegExpLayer_expressionContextObjectType_feature = Expression Context Object Type
+_UI_RegExpLayer_isDomainChangedEventDependant_feature = Is Domain Changed Event Dependant
+_UI_RegExpLayer_domainChangedEventLevel_feature = Domain Changed Event Level
+_UI_RegExpLayer_isDiagramChangedEventDependant_feature = Is Diagram Changed Event Dependant
+_UI_RegExpLayer_diagramChangedEventLevel_feature = Diagram Changed Event Level
+_UI_EventLevel_level1_literal = level1
+_UI_EventLevel_allLevels_literal = allLevels
+_UI_LayerExpression_isBranchEnabled_feature = Is Branch Enabled
+_UI_LayerExpression_owningLayersStack_feature = Owning Layers Stack
+_UI_AllViewsDerivedLayer_type = All Views Derived Layer
+_UI_LayerExpression_state_feature = State
+_UI_LayerState_detached_literal = detached
+_UI_LayerState_attached_literal = attached
+_UI_LayersStack_state_feature = State
+_UI_LayersContainer_type = Container
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/plugin.xml b/layers/org.eclipse.papyrus.layers.stackmodel.edit/plugin.xml
new file mode 100755
index 0000000..66a3304
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/plugin.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated layers -->
+      <factory
+            uri="org.eclipse.papyrus.layers.0.10"
+            class="org.eclipse.papyrus.layers.stackmodel.layers.provider.LayersItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated layersconfig -->
+      <factory
+            uri="org.eclipse.papyrus.layersconfig.0.10"
+            class="org.eclipse.papyrus.layers.configmodel.layersconfig.provider.LayersconfigItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+</plugin>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/pom.xml b/layers/org.eclipse.papyrus.layers.stackmodel.edit/pom.xml
new file mode 100755
index 0000000..6b739ae
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/pom.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.papyrus</groupId>
+		<artifactId>org.eclipse.papyrus.layers.parent</artifactId>
+		<version>1.2.0-SNAPSHOT</version>
+	</parent>
+	<artifactId>org.eclipse.papyrus.layers.stackmodel.edit</artifactId>
+	<packaging>eclipse-plugin</packaging>
+</project>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/FolderElementItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/FolderElementItemProvider.java
new file mode 100755
index 0000000..0e8d744
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/FolderElementItemProvider.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.FolderElement;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.FolderElement} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class FolderElementItemProvider
+		extends ItemProviderAdapter
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public FolderElementItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_FolderElement_name_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_FolderElement_name_feature", "_UI_FolderElement_type"),
+						LayersconfigPackage.Literals.FOLDER_ELEMENT__NAME,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This returns FolderElement.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/FolderElement"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((FolderElement) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_FolderElement_type") :
+				getString("_UI_FolderElement_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(FolderElement.class)) {
+		case LayersconfigPackage.FOLDER_ELEMENT__NAME:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return LayersconfigEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/FolderItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/FolderItemProvider.java
new file mode 100755
index 0000000..d39fd47
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/FolderItemProvider.java
@@ -0,0 +1,196 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.Folder;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigFactory;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.Folder} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class FolderItemProvider
+		extends FolderElementItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public FolderItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(LayersconfigPackage.Literals.FOLDER__FOLDER_ELEMENTS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns Folder.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Folder"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((Folder) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_Folder_type") :
+				getString("_UI_Folder_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Folder.class)) {
+		case LayersconfigPackage.FOLDER__FOLDER_ELEMENTS:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersconfigPackage.Literals.FOLDER__FOLDER_ELEMENTS,
+						LayersconfigFactory.eINSTANCE.createFolder()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersconfigPackage.Literals.FOLDER__FOLDER_ELEMENTS,
+						LayersconfigFactory.eINSTANCE.createLayerOperatorConfig()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersconfigPackage.Literals.FOLDER__FOLDER_ELEMENTS,
+						LayersconfigFactory.eINSTANCE.createOperatorConfig()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersconfigPackage.Literals.FOLDER__FOLDER_ELEMENTS,
+						LayersconfigFactory.eINSTANCE.createPropertyId()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersconfigPackage.Literals.FOLDER__FOLDER_ELEMENTS,
+						LayersconfigFactory.eINSTANCE.createTypeConfig()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersconfigPackage.Literals.FOLDER__FOLDER_ELEMENTS,
+						LayersconfigFactory.eINSTANCE.createLayerOperatorMultipleBinding()));
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/InstanciableElementItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/InstanciableElementItemProvider.java
new file mode 100755
index 0000000..a694a8d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/InstanciableElementItemProvider.java
@@ -0,0 +1,259 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class InstanciableElementItemProvider
+		extends FolderElementItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public InstanciableElementItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addClassnamePropertyDescriptor(object);
+			addBundleIDPropertyDescriptor(object);
+			addDisplayNamePropertyDescriptor(object);
+			addIconPathPropertyDescriptor(object);
+			addClassnameKindPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Classname feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addClassnamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_InstanciableElement_classname_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_InstanciableElement_classname_feature", "_UI_InstanciableElement_type"),
+						LayersconfigPackage.Literals.INSTANCIABLE_ELEMENT__CLASSNAME,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Bundle ID feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addBundleIDPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_InstanciableElement_bundleID_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_InstanciableElement_bundleID_feature", "_UI_InstanciableElement_type"),
+						LayersconfigPackage.Literals.INSTANCIABLE_ELEMENT__BUNDLE_ID,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Display Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addDisplayNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_InstanciableElement_displayName_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_InstanciableElement_displayName_feature", "_UI_InstanciableElement_type"),
+						LayersconfigPackage.Literals.INSTANCIABLE_ELEMENT__DISPLAY_NAME,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Icon Path feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addIconPathPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_InstanciableElement_iconPath_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_InstanciableElement_iconPath_feature", "_UI_InstanciableElement_type"),
+						LayersconfigPackage.Literals.INSTANCIABLE_ELEMENT__ICON_PATH,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Classname Kind feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addClassnameKindPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_InstanciableElement_classnameKind_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_InstanciableElement_classnameKind_feature", "_UI_InstanciableElement_type"),
+						LayersconfigPackage.Literals.INSTANCIABLE_ELEMENT__CLASSNAME_KIND,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This returns InstanciableElement.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/InstanciableElement"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((InstanciableElement) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_InstanciableElement_type") :
+				getString("_UI_InstanciableElement_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(InstanciableElement.class)) {
+		case LayersconfigPackage.INSTANCIABLE_ELEMENT__CLASSNAME:
+		case LayersconfigPackage.INSTANCIABLE_ELEMENT__BUNDLE_ID:
+		case LayersconfigPackage.INSTANCIABLE_ELEMENT__DISPLAY_NAME:
+		case LayersconfigPackage.INSTANCIABLE_ELEMENT__ICON_PATH:
+		case LayersconfigPackage.INSTANCIABLE_ELEMENT__CLASSNAME_KIND:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/LayerOperatorConfigItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/LayerOperatorConfigItemProvider.java
new file mode 100755
index 0000000..c331967
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/LayerOperatorConfigItemProvider.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayerOperatorConfigItemProvider
+		extends InstanciableElementItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayerOperatorConfigItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns LayerOperatorConfig.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LayerOperatorConfig"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LayerOperatorConfig) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_LayerOperatorConfig_type") :
+				getString("_UI_LayerOperatorConfig_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/LayerOperatorMultipleBindingItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/LayerOperatorMultipleBindingItemProvider.java
new file mode 100755
index 0000000..55b35e5
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/LayerOperatorMultipleBindingItemProvider.java
@@ -0,0 +1,196 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigFactory;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayerOperatorMultipleBindingItemProvider
+		extends FolderElementItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayerOperatorMultipleBindingItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addLayerOperatorConfigPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Layer Operator Config feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addLayerOperatorConfigPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_LayerOperatorMultipleBinding_layerOperatorConfig_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_LayerOperatorMultipleBinding_layerOperatorConfig_feature", "_UI_LayerOperatorMultipleBinding_type"),
+						LayersconfigPackage.Literals.LAYER_OPERATOR_MULTIPLE_BINDING__LAYER_OPERATOR_CONFIG,
+						true,
+						false,
+						true,
+						null,
+						null,
+						null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(LayersconfigPackage.Literals.LAYER_OPERATOR_MULTIPLE_BINDING__BINDINGS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LayerOperatorMultipleBinding.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LayerOperatorMultipleBinding"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LayerOperatorMultipleBinding) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_LayerOperatorMultipleBinding_type") :
+				getString("_UI_LayerOperatorMultipleBinding_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LayerOperatorMultipleBinding.class)) {
+		case LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__BINDINGS:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersconfigPackage.Literals.LAYER_OPERATOR_MULTIPLE_BINDING__BINDINGS,
+						LayersconfigFactory.eINSTANCE.createOperatorBinding()));
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/LayersconfigEditPlugin.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/LayersconfigEditPlugin.java
new file mode 100755
index 0000000..46f51e8
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/LayersconfigEditPlugin.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the Layersconfig edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public final class LayersconfigEditPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static final LayersconfigEditPlugin INSTANCE = new LayersconfigEditPlugin();
+
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayersconfigEditPlugin() {
+		super(new ResourceLocator[] {
+				});
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static class Implementation extends EclipsePlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/LayersconfigItemProviderAdapterFactory.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/LayersconfigItemProviderAdapterFactory.java
new file mode 100755
index 0000000..6fe30f3
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/LayersconfigItemProviderAdapterFactory.java
@@ -0,0 +1,399 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.util.LayersconfigAdapterFactory;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayersconfigItemProviderAdapterFactory extends LayersconfigAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayersconfigItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.configmodel.layersconfig.Folder} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected FolderItemProvider folderItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.Folder}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createFolderAdapter() {
+		if (folderItemProvider == null) {
+			folderItemProvider = new FolderItemProvider(this);
+		}
+
+		return folderItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerOperatorConfigItemProvider layerOperatorConfigItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createLayerOperatorConfigAdapter() {
+		if (layerOperatorConfigItemProvider == null) {
+			layerOperatorConfigItemProvider = new LayerOperatorConfigItemProvider(this);
+		}
+
+		return layerOperatorConfigItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected OperatorConfigItemProvider operatorConfigItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createOperatorConfigAdapter() {
+		if (operatorConfigItemProvider == null) {
+			operatorConfigItemProvider = new OperatorConfigItemProvider(this);
+		}
+
+		return operatorConfigItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected PropertyIdItemProvider propertyIdItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createPropertyIdAdapter() {
+		if (propertyIdItemProvider == null) {
+			propertyIdItemProvider = new PropertyIdItemProvider(this);
+		}
+
+		return propertyIdItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected TypeConfigItemProvider typeConfigItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createTypeConfigAdapter() {
+		if (typeConfigItemProvider == null) {
+			typeConfigItemProvider = new TypeConfigItemProvider(this);
+		}
+
+		return typeConfigItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerOperatorMultipleBindingItemProvider layerOperatorMultipleBindingItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createLayerOperatorMultipleBindingAdapter() {
+		if (layerOperatorMultipleBindingItemProvider == null) {
+			layerOperatorMultipleBindingItemProvider = new LayerOperatorMultipleBindingItemProvider(this);
+		}
+
+		return layerOperatorMultipleBindingItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected OperatorBindingItemProvider operatorBindingItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createOperatorBindingAdapter() {
+		if (operatorBindingItemProvider == null) {
+			operatorBindingItemProvider = new OperatorBindingItemProvider(this);
+		}
+
+		return operatorBindingItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || (((Class<?>) type).isInstance(adapter))) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void dispose() {
+		if (folderItemProvider != null) {
+			folderItemProvider.dispose();
+		}
+		if (layerOperatorConfigItemProvider != null) {
+			layerOperatorConfigItemProvider.dispose();
+		}
+		if (operatorConfigItemProvider != null) {
+			operatorConfigItemProvider.dispose();
+		}
+		if (propertyIdItemProvider != null) {
+			propertyIdItemProvider.dispose();
+		}
+		if (typeConfigItemProvider != null) {
+			typeConfigItemProvider.dispose();
+		}
+		if (layerOperatorMultipleBindingItemProvider != null) {
+			layerOperatorMultipleBindingItemProvider.dispose();
+		}
+		if (operatorBindingItemProvider != null) {
+			operatorBindingItemProvider.dispose();
+		}
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/OperatorBindingItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/OperatorBindingItemProvider.java
new file mode 100755
index 0000000..11b8e36
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/OperatorBindingItemProvider.java
@@ -0,0 +1,209 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class OperatorBindingItemProvider
+		extends ItemProviderAdapter
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public OperatorBindingItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addOperatorPropertyDescriptor(object);
+			addLayerOperatorConfigPropertyDescriptor(object);
+			addPropertyIdPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Operator feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addOperatorPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_OperatorBinding_operator_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_OperatorBinding_operator_feature", "_UI_OperatorBinding_type"),
+						LayersconfigPackage.Literals.OPERATOR_BINDING__OPERATOR,
+						true,
+						false,
+						true,
+						null,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Layer Operator Config feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addLayerOperatorConfigPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_OperatorBinding_layerOperatorConfig_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_OperatorBinding_layerOperatorConfig_feature", "_UI_OperatorBinding_type"),
+						LayersconfigPackage.Literals.OPERATOR_BINDING__LAYER_OPERATOR_CONFIG,
+						false,
+						false,
+						false,
+						null,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Property Id feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addPropertyIdPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_OperatorBinding_propertyId_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_OperatorBinding_propertyId_feature", "_UI_OperatorBinding_type"),
+						LayersconfigPackage.Literals.OPERATOR_BINDING__PROPERTY_ID,
+						true,
+						false,
+						true,
+						null,
+						null,
+						null));
+	}
+
+	/**
+	 * This returns OperatorBinding.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/OperatorBinding"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_OperatorBinding_type");
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return LayersconfigEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/OperatorConfigItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/OperatorConfigItemProvider.java
new file mode 100755
index 0000000..429ad0f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/OperatorConfigItemProvider.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class OperatorConfigItemProvider
+		extends InstanciableElementItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public OperatorConfigItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns OperatorConfig.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/OperatorConfig"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((OperatorConfig) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_OperatorConfig_type") :
+				getString("_UI_OperatorConfig_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/PropertyIdItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/PropertyIdItemProvider.java
new file mode 100755
index 0000000..089715d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/PropertyIdItemProvider.java
@@ -0,0 +1,151 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class PropertyIdItemProvider
+		extends FolderElementItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public PropertyIdItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addTypePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_PropertyId_type_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_PropertyId_type_feature", "_UI_PropertyId_type"),
+						LayersconfigPackage.Literals.PROPERTY_ID__TYPE,
+						true,
+						false,
+						true,
+						null,
+						null,
+						null));
+	}
+
+	/**
+	 * This returns PropertyId.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/PropertyId"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((PropertyId) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_PropertyId_type") :
+				getString("_UI_PropertyId_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/TypeConfigItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/TypeConfigItemProvider.java
new file mode 100755
index 0000000..c163742
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/configmodel/layersconfig/provider/TypeConfigItemProvider.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class TypeConfigItemProvider
+		extends FolderElementItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public TypeConfigItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns TypeConfig.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/TypeConfig"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((TypeConfig) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_TypeConfig_type") :
+				getString("_UI_TypeConfig_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/AbstractLayerItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/AbstractLayerItemProvider.java
new file mode 100755
index 0000000..9790a4d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/AbstractLayerItemProvider.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class AbstractLayerItemProvider
+		extends LayerExpressionItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public AbstractLayerItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addPropertyValuesPropertyDescriptor(object);
+			addLayerDescriptorPropertyDescriptor(object);
+			addViewsPropertyDescriptor(object);
+			addAttachedPropertiesPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Property Values feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addPropertyValuesPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_AbstractLayer_propertyValues_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_AbstractLayer_propertyValues_feature", "_UI_AbstractLayer_type"),
+						LayersPackage.Literals.ABSTRACT_LAYER__PROPERTY_VALUES,
+						true,
+						false,
+						true,
+						null,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Layer Descriptor feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addLayerDescriptorPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_AbstractLayer_layerDescriptor_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_AbstractLayer_layerDescriptor_feature", "_UI_AbstractLayer_type"),
+						LayersPackage.Literals.ABSTRACT_LAYER__LAYER_DESCRIPTOR,
+						true,
+						false,
+						true,
+						null,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Views feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addViewsPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_AbstractLayer_views_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_AbstractLayer_views_feature", "_UI_AbstractLayer_type"),
+						LayersPackage.Literals.ABSTRACT_LAYER__VIEWS,
+						true,
+						false,
+						true,
+						null,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Attached Properties feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addAttachedPropertiesPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_AbstractLayer_attachedProperties_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_AbstractLayer_attachedProperties_feature", "_UI_AbstractLayer_type"),
+						LayersPackage.Literals.ABSTRACT_LAYER__ATTACHED_PROPERTIES,
+						true,
+						false,
+						true,
+						null,
+						null,
+						null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(LayersPackage.Literals.ABSTRACT_LAYER__PROPERTY_VALUE_MAP);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((AbstractLayer) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_AbstractLayer_type") :
+				getString("_UI_AbstractLayer_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(AbstractLayer.class)) {
+		case LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUE_MAP:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.ABSTRACT_LAYER__PROPERTY_VALUE_MAP,
+						LayersFactory.eINSTANCE.create(LayersPackage.Literals.STRING_TO_TYPE_INSTANCE_MAP)));
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/AbstractLayerOperatorItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/AbstractLayerOperatorItemProvider.java
new file mode 100755
index 0000000..bdd0037
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/AbstractLayerOperatorItemProvider.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class AbstractLayerOperatorItemProvider
+		extends LayerOperatorItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public AbstractLayerOperatorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addLayerOperatorDescriptorPropertyDescriptor(object);
+			addLayerOperatorDescriptorNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Layer Operator Descriptor feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addLayerOperatorDescriptorPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_AbstractLayerOperator_layerOperatorDescriptor_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_AbstractLayerOperator_layerOperatorDescriptor_feature", "_UI_AbstractLayerOperator_type"),
+						LayersPackage.Literals.ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR,
+						true,
+						false,
+						true,
+						null,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Layer Operator Descriptor Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addLayerOperatorDescriptorNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_AbstractLayerOperator_layerOperatorDescriptorName_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_AbstractLayerOperator_layerOperatorDescriptorName_feature", "_UI_AbstractLayerOperator_type"),
+						LayersPackage.Literals.ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR_NAME,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This returns AbstractLayerOperator.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/AbstractLayerOperator"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((AbstractLayerOperator) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_AbstractLayerOperator_type") :
+				getString("_UI_AbstractLayerOperator_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(AbstractLayerOperator.class)) {
+		case LayersPackage.ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR_NAME:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/AllViewsDerivedLayerItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/AllViewsDerivedLayerItemProvider.java
new file mode 100755
index 0000000..6d26fec
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/AllViewsDerivedLayerItemProvider.java
@@ -0,0 +1,115 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.stackmodel.layers.AllViewsDerivedLayer;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.AllViewsDerivedLayer} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class AllViewsDerivedLayerItemProvider
+		extends AbstractLayerItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public AllViewsDerivedLayerItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns AllViewsDerivedLayer.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/AllViewsDerivedLayer"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((AllViewsDerivedLayer) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_AllViewsDerivedLayer_type") :
+				getString("_UI_AllViewsDerivedLayer_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/AndStackedLayerOperatorDescriptorItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/AndStackedLayerOperatorDescriptorItemProvider.java
new file mode 100755
index 0000000..267f8e9
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/AndStackedLayerOperatorDescriptorItemProvider.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.stackmodel.layers.AndStackedLayerOperatorDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.AndStackedLayerOperatorDescriptor} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class AndStackedLayerOperatorDescriptorItemProvider
+		extends StackedLayerOperatorDescriptorItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public AndStackedLayerOperatorDescriptorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns AndStackedLayerOperatorDescriptor.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/AndStackedLayerOperatorDescriptor"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((AndStackedLayerOperatorDescriptor) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_AndStackedLayerOperatorDescriptor_type") :
+				getString("_UI_AndStackedLayerOperatorDescriptor_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/ApplicationDependantElementItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/ApplicationDependantElementItemProvider.java
new file mode 100755
index 0000000..747a785
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/ApplicationDependantElementItemProvider.java
@@ -0,0 +1,149 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.ApplicationDependantElement} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ApplicationDependantElementItemProvider
+		extends ItemProviderAdapter
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public ApplicationDependantElementItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addApplicationPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Application feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addApplicationPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_ApplicationDependantElement_application_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_ApplicationDependantElement_application_feature", "_UI_ApplicationDependantElement_type"),
+						LayersPackage.Literals.APPLICATION_DEPENDANT_ELEMENT__APPLICATION,
+						true,
+						false,
+						true,
+						null,
+						null,
+						null));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_ApplicationDependantElement_type");
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return LayersEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/BooleanInstanceItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/BooleanInstanceItemProvider.java
new file mode 100755
index 0000000..96749bc
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/BooleanInstanceItemProvider.java
@@ -0,0 +1,158 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class BooleanInstanceItemProvider
+		extends TypeInstanceItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public BooleanInstanceItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addValuePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Value feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addValuePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_BooleanInstance_value_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_BooleanInstance_value_feature", "_UI_BooleanInstance_type"),
+						LayersPackage.Literals.BOOLEAN_INSTANCE__VALUE,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This returns BooleanInstance.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/BooleanInstance"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public String getText(Object object) {
+		BooleanInstance booleanInstance = (BooleanInstance) object;
+		String propertyName = getInstancePropertyName(object);
+		return ("".equals(propertyName) ? getString("_UI_BooleanInstance_type") : "'" + propertyName + "'") + "=" + booleanInstance.isValue();
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(BooleanInstance.class)) {
+		case LayersPackage.BOOLEAN_INSTANCE__VALUE:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/BooleanTypeItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/BooleanTypeItemProvider.java
new file mode 100755
index 0000000..ca777a2
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/BooleanTypeItemProvider.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanType;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class BooleanTypeItemProvider
+		extends TypeItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public BooleanTypeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns BooleanType.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/BooleanType"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((BooleanType) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_BooleanType_type") :
+				getString("_UI_BooleanType_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/ColorInstanceItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/ColorInstanceItemProvider.java
new file mode 100755
index 0000000..27c1365
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/ColorInstanceItemProvider.java
@@ -0,0 +1,158 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ColorInstanceItemProvider
+		extends TypeInstanceItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public ColorInstanceItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addValuePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Value feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addValuePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_ColorInstance_value_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_ColorInstance_value_feature", "_UI_ColorInstance_type"),
+						LayersPackage.Literals.COLOR_INSTANCE__VALUE,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This returns ColorInstance.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ColorInstance"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public String getText(Object object) {
+		ColorInstance colorInstance = (ColorInstance) object;
+		String propertyName = getInstancePropertyName(object);
+		return ("".equals(propertyName) ? getString("_UI_ColorInstance_type") : "'" + propertyName + "'") + "=" + colorInstance.getValue();
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(ColorInstance.class)) {
+		case LayersPackage.COLOR_INSTANCE__VALUE:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/ColorItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/ColorItemProvider.java
new file mode 100755
index 0000000..5d26095
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/ColorItemProvider.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.stackmodel.layers.Color;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.Color} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ColorItemProvider
+		extends TypeItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public ColorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns Color.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Color"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((Color) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_Color_type") :
+				getString("_UI_Color_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/CustomLayerOperatorItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/CustomLayerOperatorItemProvider.java
new file mode 100755
index 0000000..d25df6e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/CustomLayerOperatorItemProvider.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomLayerOperator;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.CustomLayerOperator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class CustomLayerOperatorItemProvider
+		extends LayerOperatorItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public CustomLayerOperatorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns CustomLayerOperator.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/CustomLayerOperator"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((CustomLayerOperator) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_CustomLayerOperator_type") :
+				getString("_UI_CustomLayerOperator_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/CustomPropertyOperatorItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/CustomPropertyOperatorItemProvider.java
new file mode 100755
index 0000000..0e5e8ff
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/CustomPropertyOperatorItemProvider.java
@@ -0,0 +1,208 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class CustomPropertyOperatorItemProvider
+		extends PropertyOperatorItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public CustomPropertyOperatorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addClassnamePropertyDescriptor(object);
+			addOperatorInstancePropertyDescriptor(object);
+			addClassBundleIDPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Classname feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addClassnamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_CustomPropertyOperator_classname_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_CustomPropertyOperator_classname_feature", "_UI_CustomPropertyOperator_type"),
+						LayersPackage.Literals.CUSTOM_PROPERTY_OPERATOR__CLASSNAME,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Operator Instance feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addOperatorInstancePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_CustomPropertyOperator_operatorInstance_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_CustomPropertyOperator_operatorInstance_feature", "_UI_CustomPropertyOperator_type"),
+						LayersPackage.Literals.CUSTOM_PROPERTY_OPERATOR__OPERATOR_INSTANCE,
+						true,
+						false,
+						true,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Class Bundle ID feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addClassBundleIDPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_CustomPropertyOperator_classBundleID_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_CustomPropertyOperator_classBundleID_feature", "_UI_CustomPropertyOperator_type"),
+						LayersPackage.Literals.CUSTOM_PROPERTY_OPERATOR__CLASS_BUNDLE_ID,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This returns CustomPropertyOperator.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/CustomPropertyOperator"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((CustomPropertyOperator) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_CustomPropertyOperator_type") :
+				getString("_UI_CustomPropertyOperator_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(CustomPropertyOperator.class)) {
+		case LayersPackage.CUSTOM_PROPERTY_OPERATOR__CLASSNAME:
+		case LayersPackage.CUSTOM_PROPERTY_OPERATOR__CLASS_BUNDLE_ID:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/CustomTypeItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/CustomTypeItemProvider.java
new file mode 100755
index 0000000..1f9b35e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/CustomTypeItemProvider.java
@@ -0,0 +1,159 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomType;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.CustomType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class CustomTypeItemProvider
+		extends TypeItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public CustomTypeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addClassifierPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Classifier feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addClassifierPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_CustomType_classifier_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_CustomType_classifier_feature", "_UI_CustomType_type"),
+						LayersPackage.Literals.CUSTOM_TYPE__CLASSIFIER,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This returns CustomType.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/CustomType"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((CustomType) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_CustomType_type") :
+				getString("_UI_CustomType_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(CustomType.class)) {
+		case LayersPackage.CUSTOM_TYPE__CLASSIFIER:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/DefaultPropertyOperatorItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/DefaultPropertyOperatorItemProvider.java
new file mode 100755
index 0000000..d20f532
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/DefaultPropertyOperatorItemProvider.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class DefaultPropertyOperatorItemProvider
+		extends PropertyOperatorItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public DefaultPropertyOperatorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns DefaultPropertyOperator.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/DefaultPropertyOperator"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((DefaultPropertyOperator) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_DefaultPropertyOperator_type") :
+				getString("_UI_DefaultPropertyOperator_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FillInstanceItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FillInstanceItemProvider.java
new file mode 100755
index 0000000..124ae36
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FillInstanceItemProvider.java
@@ -0,0 +1,200 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.FillInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.FillInstance} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class FillInstanceItemProvider
+		extends TypeInstanceItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public FillInstanceItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addTransparencyPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Transparency feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addTransparencyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_FillInstance_transparency_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_FillInstance_transparency_feature", "_UI_FillInstance_type"),
+						LayersPackage.Literals.FILL_INSTANCE__TRANSPARENCY,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(LayersPackage.Literals.FILL_INSTANCE__FILL_COLOR);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns FillInstance.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/FillInstance"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public String getText(Object object) {
+		FillInstance fillInstance = (FillInstance) object;
+		String propertyName = getInstancePropertyName(object);
+		return ("".equals(propertyName) ? getString("_UI_FillInstance_type") : "'" + propertyName + "'") + "=" + fillInstance.getTransparency();
+	}
+
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(FillInstance.class)) {
+		case LayersPackage.FILL_INSTANCE__TRANSPARENCY:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		case LayersPackage.FILL_INSTANCE__FILL_COLOR:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.FILL_INSTANCE__FILL_COLOR,
+						LayersFactory.eINSTANCE.createColorInstance()));
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FillItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FillItemProvider.java
new file mode 100755
index 0000000..ee3e3ec
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FillItemProvider.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.stackmodel.layers.Fill;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.Fill} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class FillItemProvider
+		extends TypeItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public FillItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns Fill.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Fill"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((Fill) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_Fill_type") :
+				getString("_UI_Fill_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FillPropertySetterItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FillPropertySetterItemProvider.java
new file mode 100755
index 0000000..fc3ec6b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FillPropertySetterItemProvider.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.stackmodel.layers.FillPropertySetter;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.FillPropertySetter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class FillPropertySetterItemProvider
+		extends PropertySetterItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public FillPropertySetterItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns FillPropertySetter.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/FillPropertySetter"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((FillPropertySetter) object).getPropertyName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_FillPropertySetter_type") :
+				getString("_UI_FillPropertySetter_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FolderElementItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FolderElementItemProvider.java
new file mode 100755
index 0000000..bdf264a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FolderElementItemProvider.java
@@ -0,0 +1,123 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.FolderElement} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class FolderElementItemProvider
+		extends ItemProviderAdapter
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public FolderElementItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_FolderElement_type");
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return LayersEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FolderItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FolderItemProvider.java
new file mode 100755
index 0000000..de458ac
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FolderItemProvider.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.Folder;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.Folder} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class FolderItemProvider
+		extends FolderElementItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public FolderItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_Folder_name_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Folder_name_feature", "_UI_Folder_type"),
+						LayersPackage.Literals.FOLDER__NAME,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(LayersPackage.Literals.FOLDER__ELEMENTS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns Folder.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Folder"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((Folder) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_Folder_type") :
+				getString("_UI_Folder_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Folder.class)) {
+		case LayersPackage.FOLDER__NAME:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		case LayersPackage.FOLDER__ELEMENTS:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.FOLDER__ELEMENTS,
+						LayersFactory.eINSTANCE.createLayersStackApplication()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.FOLDER__ELEMENTS,
+						LayersFactory.eINSTANCE.createProperty()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.FOLDER__ELEMENTS,
+						LayersFactory.eINSTANCE.createMetamodel()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.FOLDER__ELEMENTS,
+						LayersFactory.eINSTANCE.createFolder()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.FOLDER__ELEMENTS,
+						LayersFactory.eINSTANCE.createIntType()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.FOLDER__ELEMENTS,
+						LayersFactory.eINSTANCE.createBooleanType()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.FOLDER__ELEMENTS,
+						LayersFactory.eINSTANCE.createStringType()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.FOLDER__ELEMENTS,
+						LayersFactory.eINSTANCE.createCustomType()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.FOLDER__ELEMENTS,
+						LayersFactory.eINSTANCE.createColor()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.FOLDER__ELEMENTS,
+						LayersFactory.eINSTANCE.createFill()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.FOLDER__ELEMENTS,
+						LayersFactory.eINSTANCE.createLineType()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.FOLDER__ELEMENTS,
+						LayersFactory.eINSTANCE.createFontType()));
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FontInstanceItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FontInstanceItemProvider.java
new file mode 100755
index 0000000..df5022f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FontInstanceItemProvider.java
@@ -0,0 +1,236 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.FontInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class FontInstanceItemProvider
+		extends TypeInstanceItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public FontInstanceItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addFontColorPropertyDescriptor(object);
+			addFontNamePropertyDescriptor(object);
+			addFontHeighPropertyDescriptor(object);
+			addBoldPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Font Color feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addFontColorPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_FontInstance_fontColor_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_FontInstance_fontColor_feature", "_UI_FontInstance_type"),
+						LayersPackage.Literals.FONT_INSTANCE__FONT_COLOR,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Font Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addFontNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_FontInstance_fontName_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_FontInstance_fontName_feature", "_UI_FontInstance_type"),
+						LayersPackage.Literals.FONT_INSTANCE__FONT_NAME,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Font Heigh feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addFontHeighPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_FontInstance_fontHeigh_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_FontInstance_fontHeigh_feature", "_UI_FontInstance_type"),
+						LayersPackage.Literals.FONT_INSTANCE__FONT_HEIGH,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Bold feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addBoldPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_FontInstance_bold_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_FontInstance_bold_feature", "_UI_FontInstance_type"),
+						LayersPackage.Literals.FONT_INSTANCE__BOLD,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This returns FontInstance.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/FontInstance"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((FontInstance) object).getFontName();
+
+		String propertyName = getInstancePropertyName(object);
+		return ("".equals(propertyName) ? getString("_UI_FontInstance_type") : "'" + propertyName + "'")
+				+ "=" + label;
+
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(FontInstance.class)) {
+		case LayersPackage.FONT_INSTANCE__FONT_COLOR:
+		case LayersPackage.FONT_INSTANCE__FONT_NAME:
+		case LayersPackage.FONT_INSTANCE__FONT_HEIGH:
+		case LayersPackage.FONT_INSTANCE__BOLD:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FontPropertySetterItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FontPropertySetterItemProvider.java
new file mode 100755
index 0000000..692e93e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FontPropertySetterItemProvider.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.stackmodel.layers.FontPropertySetter;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.FontPropertySetter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class FontPropertySetterItemProvider
+		extends PropertySetterItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public FontPropertySetterItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns FontPropertySetter.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/FontPropertySetter"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((FontPropertySetter) object).getPropertyName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_FontPropertySetter_type") :
+				getString("_UI_FontPropertySetter_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FontTypeItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FontTypeItemProvider.java
new file mode 100755
index 0000000..621b770
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/FontTypeItemProvider.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.stackmodel.layers.FontType;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.FontType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class FontTypeItemProvider
+		extends TypeItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public FontTypeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns FontType.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/FontType"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((FontType) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_FontType_type") :
+				getString("_UI_FontType_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IntInstanceItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IntInstanceItemProvider.java
new file mode 100755
index 0000000..a9b3187
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IntInstanceItemProvider.java
@@ -0,0 +1,157 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.IntInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.IntInstance} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class IntInstanceItemProvider
+		extends TypeInstanceItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public IntInstanceItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addValuePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Value feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addValuePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_IntInstance_value_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_IntInstance_value_feature", "_UI_IntInstance_type"),
+						LayersPackage.Literals.INT_INSTANCE__VALUE,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This returns IntInstance.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/IntInstance"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		IntInstance intInstance = (IntInstance) object;
+		return getString("_UI_IntInstance_type") + " " + intInstance.getValue();
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(IntInstance.class)) {
+		case LayersPackage.INT_INSTANCE__VALUE:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IntTypeItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IntTypeItemProvider.java
new file mode 100755
index 0000000..96d866b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IntTypeItemProvider.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.stackmodel.layers.IntType;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.IntType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class IntTypeItemProvider
+		extends TypeItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public IntTypeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns IntType.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/IntType"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((IntType) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_IntType_type") :
+				getString("_UI_IntType_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IsAbstractUmlSetterItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IsAbstractUmlSetterItemProvider.java
new file mode 100755
index 0000000..e34daa9
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IsAbstractUmlSetterItemProvider.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.stackmodel.layers.IsAbstractUmlSetter;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.IsAbstractUmlSetter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class IsAbstractUmlSetterItemProvider
+		extends PropertySetterItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public IsAbstractUmlSetterItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns IsAbstractUmlSetter.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/IsAbstractUmlSetter"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((IsAbstractUmlSetter) object).getPropertyName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_IsAbstractUmlSetter_type") :
+				getString("_UI_IsAbstractUmlSetter_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IsValidPropertySetterItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IsValidPropertySetterItemProvider.java
new file mode 100755
index 0000000..dc0096d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IsValidPropertySetterItemProvider.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.stackmodel.layers.IsValidPropertySetter;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.IsValidPropertySetter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class IsValidPropertySetterItemProvider
+		extends PropertySetterItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public IsValidPropertySetterItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns IsValidPropertySetter.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/IsValidPropertySetter"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((IsValidPropertySetter) object).getPropertyName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_IsValidPropertySetter_type") :
+				getString("_UI_IsValidPropertySetter_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IsVisiblePropertySetterItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IsVisiblePropertySetterItemProvider.java
new file mode 100755
index 0000000..35a206c
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/IsVisiblePropertySetterItemProvider.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.stackmodel.layers.IsVisiblePropertySetter;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.IsVisiblePropertySetter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class IsVisiblePropertySetterItemProvider
+		extends PropertySetterItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public IsVisiblePropertySetterItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns IsVisiblePropertySetter.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/IsVisiblePropertySetter"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((IsVisiblePropertySetter) object).getPropertyName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_IsVisiblePropertySetter_type") :
+				getString("_UI_IsVisiblePropertySetter_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerApplicationFactoryItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerApplicationFactoryItemProvider.java
new file mode 100755
index 0000000..bbb6c56
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerApplicationFactoryItemProvider.java
@@ -0,0 +1,135 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayerApplicationFactoryItemProvider
+		extends ItemProviderAdapter
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayerApplicationFactoryItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns LayerApplicationFactory.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LayerApplicationFactory"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_LayerApplicationFactory_type");
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return LayersEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerDescriptorItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerDescriptorItemProvider.java
new file mode 100755
index 0000000..1e39b1a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerDescriptorItemProvider.java
@@ -0,0 +1,161 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayerDescriptorItemProvider
+		extends ItemProviderAdapter
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayerDescriptorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addPropertyRegistryPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Property Registry feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addPropertyRegistryPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_LayerDescriptor_propertyRegistry_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_LayerDescriptor_propertyRegistry_feature", "_UI_LayerDescriptor_type"),
+						LayersPackage.Literals.LAYER_DESCRIPTOR__PROPERTY_REGISTRY,
+						true,
+						false,
+						true,
+						null,
+						null,
+						null));
+	}
+
+	/**
+	 * This returns LayerDescriptor.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LayerDescriptor"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_LayerDescriptor_type");
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return LayersEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerDescriptorRegistryItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerDescriptorRegistryItemProvider.java
new file mode 100755
index 0000000..e8bc804
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerDescriptorRegistryItemProvider.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayerDescriptorRegistryItemProvider
+		extends ItemProviderAdapter
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayerDescriptorRegistryItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(LayersPackage.Literals.LAYER_DESCRIPTOR_REGISTRY__LAYER_DESCRIPTORS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LayerDescriptorRegistry.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LayerDescriptorRegistry"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_LayerDescriptorRegistry_type");
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LayerDescriptorRegistry.class)) {
+		case LayersPackage.LAYER_DESCRIPTOR_REGISTRY__LAYER_DESCRIPTORS:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYER_DESCRIPTOR_REGISTRY__LAYER_DESCRIPTORS,
+						LayersFactory.eINSTANCE.createLayerDescriptor()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYER_DESCRIPTOR_REGISTRY__LAYER_DESCRIPTORS,
+						LayersFactory.eINSTANCE.createSimpleLayerDescriptor()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYER_DESCRIPTOR_REGISTRY__LAYER_DESCRIPTORS,
+						LayersFactory.eINSTANCE.createRegExpLayerDescriptor()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return LayersEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerExpressionItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerExpressionItemProvider.java
new file mode 100755
index 0000000..690dce3
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerExpressionItemProvider.java
@@ -0,0 +1,297 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayerExpressionItemProvider
+		extends
+		ApplicationDependantElementItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayerExpressionItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNamePropertyDescriptor(object);
+			addDescriptionPropertyDescriptor(object);
+			addIsLayerEnabledInternalPropertyDescriptor(object);
+			addIsLayerEnabledPropertyDescriptor(object);
+			addIsBranchEnabledPropertyDescriptor(object);
+			addOwningLayersStackPropertyDescriptor(object);
+			addStatePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_LayerExpression_name_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_LayerExpression_name_feature", "_UI_LayerExpression_type"),
+						LayersPackage.Literals.LAYER_EXPRESSION__NAME,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Description feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addDescriptionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_LayerExpression_description_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_LayerExpression_description_feature", "_UI_LayerExpression_type"),
+						LayersPackage.Literals.LAYER_EXPRESSION__DESCRIPTION,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Is Layer Enabled Internal feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addIsLayerEnabledInternalPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_LayerExpression_isLayerEnabledInternal_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_LayerExpression_isLayerEnabledInternal_feature", "_UI_LayerExpression_type"),
+						LayersPackage.Literals.LAYER_EXPRESSION__IS_LAYER_ENABLED_INTERNAL,
+						false,
+						false,
+						false,
+						ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Is Layer Enabled feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addIsLayerEnabledPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_LayerExpression_isLayerEnabled_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_LayerExpression_isLayerEnabled_feature", "_UI_LayerExpression_type"),
+						LayersPackage.Literals.LAYER_EXPRESSION__IS_LAYER_ENABLED,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Is Branch Enabled feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addIsBranchEnabledPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_LayerExpression_isBranchEnabled_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_LayerExpression_isBranchEnabled_feature", "_UI_LayerExpression_type"),
+						LayersPackage.Literals.LAYER_EXPRESSION__IS_BRANCH_ENABLED,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Owning Layers Stack feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addOwningLayersStackPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_LayerExpression_owningLayersStack_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_LayerExpression_owningLayersStack_feature", "_UI_LayerExpression_type"),
+						LayersPackage.Literals.LAYER_EXPRESSION__OWNING_LAYERS_STACK,
+						true,
+						false,
+						true,
+						null,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the State feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addStatePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_LayerExpression_state_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_LayerExpression_state_feature", "_UI_LayerExpression_type"),
+						LayersPackage.Literals.LAYER_EXPRESSION__STATE,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LayerExpression) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_LayerExpression_type") :
+				getString("_UI_LayerExpression_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LayerExpression.class)) {
+		case LayersPackage.LAYER_EXPRESSION__NAME:
+		case LayersPackage.LAYER_EXPRESSION__DESCRIPTION:
+		case LayersPackage.LAYER_EXPRESSION__IS_LAYER_ENABLED_INTERNAL:
+		case LayersPackage.LAYER_EXPRESSION__IS_LAYER_ENABLED:
+		case LayersPackage.LAYER_EXPRESSION__IS_BRANCH_ENABLED:
+		case LayersPackage.LAYER_EXPRESSION__STATE:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerItemProvider.java
new file mode 100755
index 0000000..deb6018
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerItemProvider.java
@@ -0,0 +1,126 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.Layer} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayerItemProvider
+		extends
+		AbstractLayerItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayerItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns Layer.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Layer"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((Layer) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_Layer_type") :
+				getString("_UI_Layer_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerNamedStyleItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerNamedStyleItemProvider.java
new file mode 100755
index 0000000..7ffd6da
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerNamedStyleItemProvider.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.gmf.runtime.notation.provider.NamedStyleItemProvider;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayerNamedStyleItemProvider
+		extends NamedStyleItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayerNamedStyleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(LayersPackage.Literals.LAYER_NAMED_STYLE__LAYERS_STACK);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LayerNamedStyle.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LayerNamedStyle"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LayerNamedStyle) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_LayerNamedStyle_type") :
+				getString("_UI_LayerNamedStyle_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LayerNamedStyle.class)) {
+		case LayersPackage.LAYER_NAMED_STYLE__LAYERS_STACK:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 *
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection/* <Object> */newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYER_NAMED_STYLE__LAYERS_STACK,
+						LayersFactory.eINSTANCE.createLayersStack()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return LayersEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerOperatorDescriptorItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerOperatorDescriptorItemProvider.java
new file mode 100755
index 0000000..b207775
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerOperatorDescriptorItemProvider.java
@@ -0,0 +1,197 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayerOperatorDescriptorItemProvider
+		extends ItemProviderAdapter
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayerOperatorDescriptorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addPropertyOperatorsPropertyDescriptor(object);
+			addNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Property Operators feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addPropertyOperatorsPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_LayerOperatorDescriptor_propertyOperators_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_LayerOperatorDescriptor_propertyOperators_feature", "_UI_LayerOperatorDescriptor_type"),
+						LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS,
+						true,
+						false,
+						true,
+						null,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_LayerOperatorDescriptor_name_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_LayerOperatorDescriptor_name_feature", "_UI_LayerOperatorDescriptor_type"),
+						LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR__NAME,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This returns LayerOperatorDescriptor.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LayerOperatorDescriptor"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LayerOperatorDescriptor) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_LayerOperatorDescriptor_type") :
+				getString("_UI_LayerOperatorDescriptor_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LayerOperatorDescriptor.class)) {
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR__NAME:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return LayersEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerOperatorDescriptorRegistryItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerOperatorDescriptorRegistryItemProvider.java
new file mode 100755
index 0000000..afc51ba
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerOperatorDescriptorRegistryItemProvider.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayerOperatorDescriptorRegistryItemProvider
+		extends ItemProviderAdapter
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayerOperatorDescriptorRegistryItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addPropertyCollectionSizePropertyDescriptor(object);
+			addDefaultOperatorPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Property Collection Size feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addPropertyCollectionSizePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_LayerOperatorDescriptorRegistry_propertyCollectionSize_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_LayerOperatorDescriptorRegistry_propertyCollectionSize_feature", "_UI_LayerOperatorDescriptorRegistry_type"),
+						LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_COLLECTION_SIZE,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Default Operator feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addDefaultOperatorPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_LayerOperatorDescriptorRegistry_defaultOperator_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_LayerOperatorDescriptorRegistry_defaultOperator_feature", "_UI_LayerOperatorDescriptorRegistry_type"),
+						LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DEFAULT_OPERATOR,
+						true,
+						false,
+						true,
+						null,
+						null,
+						null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS);
+			childrenFeatures.add(LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_OPERATORS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LayerOperatorDescriptorRegistry.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LayerOperatorDescriptorRegistry"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		LayerOperatorDescriptorRegistry layerOperatorDescriptorRegistry = (LayerOperatorDescriptorRegistry) object;
+		return getString("_UI_LayerOperatorDescriptorRegistry_type") + " " + layerOperatorDescriptorRegistry.getPropertyCollectionSize();
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LayerOperatorDescriptorRegistry.class)) {
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_COLLECTION_SIZE:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS:
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_OPERATORS:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS,
+						LayersFactory.eINSTANCE.createLayerOperatorDescriptor()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS,
+						LayersFactory.eINSTANCE.createTopLayerOperatorDescriptor()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS,
+						LayersFactory.eINSTANCE.createStackedLayerOperatorDescriptor()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS,
+						LayersFactory.eINSTANCE.createAndStackedLayerOperatorDescriptor()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS,
+						LayersFactory.eINSTANCE.createOrStackedLayerOperatorDescriptor()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_OPERATORS,
+						LayersFactory.eINSTANCE.createPropertyOperator()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_OPERATORS,
+						LayersFactory.eINSTANCE.createDefaultPropertyOperator()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_OPERATORS,
+						LayersFactory.eINSTANCE.createCustomPropertyOperator()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return LayersEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerOperatorItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerOperatorItemProvider.java
new file mode 100755
index 0000000..2d8bdc2
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerOperatorItemProvider.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayerOperatorItemProvider
+		extends LayerExpressionItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayerOperatorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(LayersPackage.Literals.LAYER_OPERATOR__LAYERS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LayerOperator) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_LayerOperator_type") :
+				getString("_UI_LayerOperator_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LayerOperator.class)) {
+		case LayersPackage.LAYER_OPERATOR__LAYERS:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYER_OPERATOR__LAYERS,
+						LayersFactory.eINSTANCE.createTopLayerOperator()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYER_OPERATOR__LAYERS,
+						LayersFactory.eINSTANCE.createStackedLayerOperator()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYER_OPERATOR__LAYERS,
+						LayersFactory.eINSTANCE.createCustomLayerOperator()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYER_OPERATOR__LAYERS,
+						LayersFactory.eINSTANCE.createRegExpLayer()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYER_OPERATOR__LAYERS,
+						LayersFactory.eINSTANCE.createLayer()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYER_OPERATOR__LAYERS,
+						LayersFactory.eINSTANCE.createAllViewsDerivedLayer()));
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerStackDescriptorRegistryItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerStackDescriptorRegistryItemProvider.java
new file mode 100755
index 0000000..7488585
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayerStackDescriptorRegistryItemProvider.java
@@ -0,0 +1,135 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerStackDescriptorRegistry} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayerStackDescriptorRegistryItemProvider
+		extends ItemProviderAdapter
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayerStackDescriptorRegistryItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns LayerStackDescriptorRegistry.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LayerStackDescriptorRegistry"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_LayerStackDescriptorRegistry_type");
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return LayersEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayersEditPlugin.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayersEditPlugin.java
new file mode 100755
index 0000000..7a1e835
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayersEditPlugin.java
@@ -0,0 +1,109 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.provider.EcoreEditPlugin;
+import org.eclipse.gmf.runtime.notation.NotationEditPlugin;
+
+/**
+ * This is the central singleton for the Layers edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public final class LayersEditPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static final LayersEditPlugin INSTANCE = new LayersEditPlugin();
+
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayersEditPlugin() {
+		super(new ResourceLocator[] {
+				EcoreEditPlugin.INSTANCE,
+				NotationEditPlugin.INSTANCE,
+		});
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static class Implementation extends EclipsePlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayersItemProviderAdapterFactory.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayersItemProviderAdapterFactory.java
new file mode 100755
index 0000000..a51f69e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayersItemProviderAdapterFactory.java
@@ -0,0 +1,1827 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.stackmodel.layers.util.LayersAdapterFactory;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayersItemProviderAdapterFactory extends LayersAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayersItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerNamedStyleItemProvider layerNamedStyleItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createLayerNamedStyleAdapter() {
+		if (layerNamedStyleItemProvider == null) {
+			layerNamedStyleItemProvider = new LayerNamedStyleItemProvider(this);
+		}
+
+		return layerNamedStyleItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayersStackItemProvider layersStackItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createLayersStackAdapter() {
+		if (layersStackItemProvider == null) {
+			layersStackItemProvider = new LayersStackItemProvider(this);
+		}
+
+		return layersStackItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerDescriptorItemProvider layerDescriptorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createLayerDescriptorAdapter() {
+		if (layerDescriptorItemProvider == null) {
+			layerDescriptorItemProvider = new LayerDescriptorItemProvider(this);
+		}
+
+		return layerDescriptorItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerApplicationFactoryItemProvider layerApplicationFactoryItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createLayerApplicationFactoryAdapter() {
+		if (layerApplicationFactoryItemProvider == null) {
+			layerApplicationFactoryItemProvider = new LayerApplicationFactoryItemProvider(this);
+		}
+
+		return layerApplicationFactoryItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected PropertySetterRegistryItemProvider propertySetterRegistryItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createPropertySetterRegistryAdapter() {
+		if (propertySetterRegistryItemProvider == null) {
+			propertySetterRegistryItemProvider = new PropertySetterRegistryItemProvider(this);
+		}
+
+		return propertySetterRegistryItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link java.util.Map.Entry} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected StringToPropertySetterItemProvider stringToPropertySetterItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link java.util.Map.Entry}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createStringToPropertySetterAdapter() {
+		if (stringToPropertySetterItemProvider == null) {
+			stringToPropertySetterItemProvider = new StringToPropertySetterItemProvider(this);
+		}
+
+		return stringToPropertySetterItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.Layer} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerItemProvider layerItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.Layer}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createLayerAdapter() {
+		if (layerItemProvider == null) {
+			layerItemProvider = new LayerItemProvider(this);
+		}
+
+		return layerItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.Color} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ColorItemProvider colorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.Color}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createColorAdapter() {
+		if (colorItemProvider == null) {
+			colorItemProvider = new ColorItemProvider(this);
+		}
+
+		return colorItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ColorInstanceItemProvider colorInstanceItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createColorInstanceAdapter() {
+		if (colorInstanceItemProvider == null) {
+			colorInstanceItemProvider = new ColorInstanceItemProvider(this);
+		}
+
+		return colorInstanceItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.FillInstance} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected FillInstanceItemProvider fillInstanceItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.FillInstance}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createFillInstanceAdapter() {
+		if (fillInstanceItemProvider == null) {
+			fillInstanceItemProvider = new FillInstanceItemProvider(this);
+		}
+
+		return fillInstanceItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.Fill} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected FillItemProvider fillItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.Fill}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createFillAdapter() {
+		if (fillItemProvider == null) {
+			fillItemProvider = new FillItemProvider(this);
+		}
+
+		return fillItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.FillPropertySetter} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected FillPropertySetterItemProvider fillPropertySetterItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.FillPropertySetter}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createFillPropertySetterAdapter() {
+		if (fillPropertySetterItemProvider == null) {
+			fillPropertySetterItemProvider = new FillPropertySetterItemProvider(this);
+		}
+
+		return fillPropertySetterItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.IsValidPropertySetter} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IsValidPropertySetterItemProvider isValidPropertySetterItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.IsValidPropertySetter}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createIsValidPropertySetterAdapter() {
+		if (isValidPropertySetterItemProvider == null) {
+			isValidPropertySetterItemProvider = new IsValidPropertySetterItemProvider(this);
+		}
+
+		return isValidPropertySetterItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.NullPropertySetter} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected NullPropertySetterItemProvider nullPropertySetterItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.NullPropertySetter}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createNullPropertySetterAdapter() {
+		if (nullPropertySetterItemProvider == null) {
+			nullPropertySetterItemProvider = new NullPropertySetterItemProvider(this);
+		}
+
+		return nullPropertySetterItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.LineType} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LineTypeItemProvider lineTypeItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LineType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createLineTypeAdapter() {
+		if (lineTypeItemProvider == null) {
+			lineTypeItemProvider = new LineTypeItemProvider(this);
+		}
+
+		return lineTypeItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.LineInstance} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LineInstanceItemProvider lineInstanceItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LineInstance}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createLineInstanceAdapter() {
+		if (lineInstanceItemProvider == null) {
+			lineInstanceItemProvider = new LineInstanceItemProvider(this);
+		}
+
+		return lineInstanceItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.LinePropertySetter} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LinePropertySetterItemProvider linePropertySetterItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LinePropertySetter}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createLinePropertySetterAdapter() {
+		if (linePropertySetterItemProvider == null) {
+			linePropertySetterItemProvider = new LinePropertySetterItemProvider(this);
+		}
+
+		return linePropertySetterItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.FontPropertySetter} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected FontPropertySetterItemProvider fontPropertySetterItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.FontPropertySetter}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createFontPropertySetterAdapter() {
+		if (fontPropertySetterItemProvider == null) {
+			fontPropertySetterItemProvider = new FontPropertySetterItemProvider(this);
+		}
+
+		return fontPropertySetterItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected FontInstanceItemProvider fontInstanceItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createFontInstanceAdapter() {
+		if (fontInstanceItemProvider == null) {
+			fontInstanceItemProvider = new FontInstanceItemProvider(this);
+		}
+
+		return fontInstanceItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.FontType} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected FontTypeItemProvider fontTypeItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.FontType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createFontTypeAdapter() {
+		if (fontTypeItemProvider == null) {
+			fontTypeItemProvider = new FontTypeItemProvider(this);
+		}
+
+		return fontTypeItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.IsVisiblePropertySetter} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IsVisiblePropertySetterItemProvider isVisiblePropertySetterItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.IsVisiblePropertySetter}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createIsVisiblePropertySetterAdapter() {
+		if (isVisiblePropertySetterItemProvider == null) {
+			isVisiblePropertySetterItemProvider = new IsVisiblePropertySetterItemProvider(this);
+		}
+
+		return isVisiblePropertySetterItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerOperatorDescriptorRegistryItemProvider layerOperatorDescriptorRegistryItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createLayerOperatorDescriptorRegistryAdapter() {
+		if (layerOperatorDescriptorRegistryItemProvider == null) {
+			layerOperatorDescriptorRegistryItemProvider = new LayerOperatorDescriptorRegistryItemProvider(this);
+		}
+
+		return layerOperatorDescriptorRegistryItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperatorDescriptor} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected TopLayerOperatorDescriptorItemProvider topLayerOperatorDescriptorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperatorDescriptor}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createTopLayerOperatorDescriptorAdapter() {
+		if (topLayerOperatorDescriptorItemProvider == null) {
+			topLayerOperatorDescriptorItemProvider = new TopLayerOperatorDescriptorItemProvider(this);
+		}
+
+		return topLayerOperatorDescriptorItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperatorDescriptor} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected StackedLayerOperatorDescriptorItemProvider stackedLayerOperatorDescriptorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperatorDescriptor}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createStackedLayerOperatorDescriptorAdapter() {
+		if (stackedLayerOperatorDescriptorItemProvider == null) {
+			stackedLayerOperatorDescriptorItemProvider = new StackedLayerOperatorDescriptorItemProvider(this);
+		}
+
+		return stackedLayerOperatorDescriptorItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected CustomPropertyOperatorItemProvider customPropertyOperatorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createCustomPropertyOperatorAdapter() {
+		if (customPropertyOperatorItemProvider == null) {
+			customPropertyOperatorItemProvider = new CustomPropertyOperatorItemProvider(this);
+		}
+
+		return customPropertyOperatorItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.AndStackedLayerOperatorDescriptor} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected AndStackedLayerOperatorDescriptorItemProvider andStackedLayerOperatorDescriptorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.AndStackedLayerOperatorDescriptor}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createAndStackedLayerOperatorDescriptorAdapter() {
+		if (andStackedLayerOperatorDescriptorItemProvider == null) {
+			andStackedLayerOperatorDescriptorItemProvider = new AndStackedLayerOperatorDescriptorItemProvider(this);
+		}
+
+		return andStackedLayerOperatorDescriptorItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.OrStackedLayerOperatorDescriptor} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected OrStackedLayerOperatorDescriptorItemProvider orStackedLayerOperatorDescriptorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.OrStackedLayerOperatorDescriptor}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createOrStackedLayerOperatorDescriptorAdapter() {
+		if (orStackedLayerOperatorDescriptorItemProvider == null) {
+			orStackedLayerOperatorDescriptorItemProvider = new OrStackedLayerOperatorDescriptorItemProvider(this);
+		}
+
+		return orStackedLayerOperatorDescriptorItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.IsAbstractUmlSetter} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IsAbstractUmlSetterItemProvider isAbstractUmlSetterItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.IsAbstractUmlSetter}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createIsAbstractUmlSetterAdapter() {
+		if (isAbstractUmlSetterItemProvider == null) {
+			isAbstractUmlSetterItemProvider = new IsAbstractUmlSetterItemProvider(this);
+		}
+
+		return isAbstractUmlSetterItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.AllViewsDerivedLayer} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected AllViewsDerivedLayerItemProvider allViewsDerivedLayerItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.AllViewsDerivedLayer}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createAllViewsDerivedLayerAdapter() {
+		if (allViewsDerivedLayerItemProvider == null) {
+			allViewsDerivedLayerItemProvider = new AllViewsDerivedLayerItemProvider(this);
+		}
+
+		return allViewsDerivedLayerItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link java.util.Map.Entry} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected StringToTypeInstanceMapItemProvider stringToTypeInstanceMapItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link java.util.Map.Entry}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createStringToTypeInstanceMapAdapter() {
+		if (stringToTypeInstanceMapItemProvider == null) {
+			stringToTypeInstanceMapItemProvider = new StringToTypeInstanceMapItemProvider(this);
+		}
+
+		return stringToTypeInstanceMapItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.Property} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected PropertyItemProvider propertyItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.Property}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createPropertyAdapter() {
+		if (propertyItemProvider == null) {
+			propertyItemProvider = new PropertyItemProvider(this);
+		}
+
+		return propertyItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected MetamodelItemProvider metamodelItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createMetamodelAdapter() {
+		if (metamodelItemProvider == null) {
+			metamodelItemProvider = new MetamodelItemProvider(this);
+		}
+
+		return metamodelItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.Folder} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected FolderItemProvider folderItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.Folder}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createFolderAdapter() {
+		if (folderItemProvider == null) {
+			folderItemProvider = new FolderItemProvider(this);
+		}
+
+		return folderItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.IntInstance} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IntInstanceItemProvider intInstanceItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.IntInstance}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createIntInstanceAdapter() {
+		if (intInstanceItemProvider == null) {
+			intInstanceItemProvider = new IntInstanceItemProvider(this);
+		}
+
+		return intInstanceItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected BooleanInstanceItemProvider booleanInstanceItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createBooleanInstanceAdapter() {
+		if (booleanInstanceItemProvider == null) {
+			booleanInstanceItemProvider = new BooleanInstanceItemProvider(this);
+		}
+
+		return booleanInstanceItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.StringInstance} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected StringInstanceItemProvider stringInstanceItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.StringInstance}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createStringInstanceAdapter() {
+		if (stringInstanceItemProvider == null) {
+			stringInstanceItemProvider = new StringInstanceItemProvider(this);
+		}
+
+		return stringInstanceItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.IntType} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IntTypeItemProvider intTypeItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.IntType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createIntTypeAdapter() {
+		if (intTypeItemProvider == null) {
+			intTypeItemProvider = new IntTypeItemProvider(this);
+		}
+
+		return intTypeItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanType} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected BooleanTypeItemProvider booleanTypeItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createBooleanTypeAdapter() {
+		if (booleanTypeItemProvider == null) {
+			booleanTypeItemProvider = new BooleanTypeItemProvider(this);
+		}
+
+		return booleanTypeItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.StringType} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected StringTypeItemProvider stringTypeItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.StringType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createStringTypeAdapter() {
+		if (stringTypeItemProvider == null) {
+			stringTypeItemProvider = new StringTypeItemProvider(this);
+		}
+
+		return stringTypeItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.CustomType} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected CustomTypeItemProvider customTypeItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.CustomType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createCustomTypeAdapter() {
+		if (customTypeItemProvider == null) {
+			customTypeItemProvider = new CustomTypeItemProvider(this);
+		}
+
+		return customTypeItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerOperatorDescriptorItemProvider layerOperatorDescriptorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createLayerOperatorDescriptorAdapter() {
+		if (layerOperatorDescriptorItemProvider == null) {
+			layerOperatorDescriptorItemProvider = new LayerOperatorDescriptorItemProvider(this);
+		}
+
+		return layerOperatorDescriptorItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected PropertyOperatorItemProvider propertyOperatorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createPropertyOperatorAdapter() {
+		if (propertyOperatorItemProvider == null) {
+			propertyOperatorItemProvider = new PropertyOperatorItemProvider(this);
+		}
+
+		return propertyOperatorItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected DefaultPropertyOperatorItemProvider defaultPropertyOperatorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createDefaultPropertyOperatorAdapter() {
+		if (defaultPropertyOperatorItemProvider == null) {
+			defaultPropertyOperatorItemProvider = new DefaultPropertyOperatorItemProvider(this);
+		}
+
+		return defaultPropertyOperatorItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayersStackApplicationItemProvider layersStackApplicationItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createLayersStackApplicationAdapter() {
+		if (layersStackApplicationItemProvider == null) {
+			layersStackApplicationItemProvider = new LayersStackApplicationItemProvider(this);
+		}
+
+		return layersStackApplicationItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerStackDescriptorRegistry} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerStackDescriptorRegistryItemProvider layerStackDescriptorRegistryItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerStackDescriptorRegistry}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createLayerStackDescriptorRegistryAdapter() {
+		if (layerStackDescriptorRegistryItemProvider == null) {
+			layerStackDescriptorRegistryItemProvider = new LayerStackDescriptorRegistryItemProvider(this);
+		}
+
+		return layerStackDescriptorRegistryItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected PropertyRegistryItemProvider propertyRegistryItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createPropertyRegistryAdapter() {
+		if (propertyRegistryItemProvider == null) {
+			propertyRegistryItemProvider = new PropertyRegistryItemProvider(this);
+		}
+
+		return propertyRegistryItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link java.util.Map.Entry} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected StringToPropertyIndexMapItemProvider stringToPropertyIndexMapItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link java.util.Map.Entry}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createStringToPropertyIndexMapAdapter() {
+		if (stringToPropertyIndexMapItemProvider == null) {
+			stringToPropertyIndexMapItemProvider = new StringToPropertyIndexMapItemProvider(this);
+		}
+
+		return stringToPropertyIndexMapItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.SimpleLayerDescriptor} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected SimpleLayerDescriptorItemProvider simpleLayerDescriptorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.SimpleLayerDescriptor}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createSimpleLayerDescriptorAdapter() {
+		if (simpleLayerDescriptorItemProvider == null) {
+			simpleLayerDescriptorItemProvider = new SimpleLayerDescriptorItemProvider(this);
+		}
+
+		return simpleLayerDescriptorItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayerDescriptor} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected RegExpLayerDescriptorItemProvider regExpLayerDescriptorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayerDescriptor}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createRegExpLayerDescriptorAdapter() {
+		if (regExpLayerDescriptorItemProvider == null) {
+			regExpLayerDescriptorItemProvider = new RegExpLayerDescriptorItemProvider(this);
+		}
+
+		return regExpLayerDescriptorItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.NullInstance} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected NullInstanceItemProvider nullInstanceItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.NullInstance}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createNullInstanceAdapter() {
+		if (nullInstanceItemProvider == null) {
+			nullInstanceItemProvider = new NullInstanceItemProvider(this);
+		}
+
+		return nullInstanceItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected RegExpLayerItemProvider regExpLayerItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createRegExpLayerAdapter() {
+		if (regExpLayerItemProvider == null) {
+			regExpLayerItemProvider = new RegExpLayerItemProvider(this);
+		}
+
+		return regExpLayerItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected PropertyIndexItemProvider propertyIndexItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createPropertyIndexAdapter() {
+		if (propertyIndexItemProvider == null) {
+			propertyIndexItemProvider = new PropertyIndexItemProvider(this);
+		}
+
+		return propertyIndexItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected TypeRegistryItemProvider typeRegistryItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createTypeRegistryAdapter() {
+		if (typeRegistryItemProvider == null) {
+			typeRegistryItemProvider = new TypeRegistryItemProvider(this);
+		}
+
+		return typeRegistryItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link java.util.Map.Entry} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected StringToTypeMapItemProvider stringToTypeMapItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link java.util.Map.Entry}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createStringToTypeMapAdapter() {
+		if (stringToTypeMapItemProvider == null) {
+			stringToTypeMapItemProvider = new StringToTypeMapItemProvider(this);
+		}
+
+		return stringToTypeMapItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerDescriptorRegistryItemProvider layerDescriptorRegistryItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createLayerDescriptorRegistryAdapter() {
+		if (layerDescriptorRegistryItemProvider == null) {
+			layerDescriptorRegistryItemProvider = new LayerDescriptorRegistryItemProvider(this);
+		}
+
+		return layerDescriptorRegistryItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected TopLayerOperatorItemProvider topLayerOperatorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createTopLayerOperatorAdapter() {
+		if (topLayerOperatorItemProvider == null) {
+			topLayerOperatorItemProvider = new TopLayerOperatorItemProvider(this);
+		}
+
+		return topLayerOperatorItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected StackedLayerOperatorItemProvider stackedLayerOperatorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createStackedLayerOperatorAdapter() {
+		if (stackedLayerOperatorItemProvider == null) {
+			stackedLayerOperatorItemProvider = new StackedLayerOperatorItemProvider(this);
+		}
+
+		return stackedLayerOperatorItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.layers.stackmodel.layers.CustomLayerOperator} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected CustomLayerOperatorItemProvider customLayerOperatorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.CustomLayerOperator}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter createCustomLayerOperatorAdapter() {
+		if (customLayerOperatorItemProvider == null) {
+			customLayerOperatorItemProvider = new CustomLayerOperatorItemProvider(this);
+		}
+
+		return customLayerOperatorItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || (((Class<?>) type).isInstance(adapter))) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void dispose() {
+		if (layerNamedStyleItemProvider != null) {
+			layerNamedStyleItemProvider.dispose();
+		}
+		if (layersStackItemProvider != null) {
+			layersStackItemProvider.dispose();
+		}
+		if (layersStackApplicationItemProvider != null) {
+			layersStackApplicationItemProvider.dispose();
+		}
+		if (layerStackDescriptorRegistryItemProvider != null) {
+			layerStackDescriptorRegistryItemProvider.dispose();
+		}
+		if (propertyRegistryItemProvider != null) {
+			propertyRegistryItemProvider.dispose();
+		}
+		if (propertyItemProvider != null) {
+			propertyItemProvider.dispose();
+		}
+		if (metamodelItemProvider != null) {
+			metamodelItemProvider.dispose();
+		}
+		if (typeRegistryItemProvider != null) {
+			typeRegistryItemProvider.dispose();
+		}
+		if (stringToTypeMapItemProvider != null) {
+			stringToTypeMapItemProvider.dispose();
+		}
+		if (layerDescriptorRegistryItemProvider != null) {
+			layerDescriptorRegistryItemProvider.dispose();
+		}
+		if (layerDescriptorItemProvider != null) {
+			layerDescriptorItemProvider.dispose();
+		}
+		if (layerApplicationFactoryItemProvider != null) {
+			layerApplicationFactoryItemProvider.dispose();
+		}
+		if (propertySetterRegistryItemProvider != null) {
+			propertySetterRegistryItemProvider.dispose();
+		}
+		if (stringToPropertySetterItemProvider != null) {
+			stringToPropertySetterItemProvider.dispose();
+		}
+		if (layerOperatorDescriptorRegistryItemProvider != null) {
+			layerOperatorDescriptorRegistryItemProvider.dispose();
+		}
+		if (layerOperatorDescriptorItemProvider != null) {
+			layerOperatorDescriptorItemProvider.dispose();
+		}
+		if (propertyOperatorItemProvider != null) {
+			propertyOperatorItemProvider.dispose();
+		}
+		if (defaultPropertyOperatorItemProvider != null) {
+			defaultPropertyOperatorItemProvider.dispose();
+		}
+		if (stringToTypeInstanceMapItemProvider != null) {
+			stringToTypeInstanceMapItemProvider.dispose();
+		}
+		if (folderItemProvider != null) {
+			folderItemProvider.dispose();
+		}
+		if (intInstanceItemProvider != null) {
+			intInstanceItemProvider.dispose();
+		}
+		if (booleanInstanceItemProvider != null) {
+			booleanInstanceItemProvider.dispose();
+		}
+		if (stringInstanceItemProvider != null) {
+			stringInstanceItemProvider.dispose();
+		}
+		if (intTypeItemProvider != null) {
+			intTypeItemProvider.dispose();
+		}
+		if (booleanTypeItemProvider != null) {
+			booleanTypeItemProvider.dispose();
+		}
+		if (stringTypeItemProvider != null) {
+			stringTypeItemProvider.dispose();
+		}
+		if (customTypeItemProvider != null) {
+			customTypeItemProvider.dispose();
+		}
+		if (topLayerOperatorItemProvider != null) {
+			topLayerOperatorItemProvider.dispose();
+		}
+		if (stackedLayerOperatorItemProvider != null) {
+			stackedLayerOperatorItemProvider.dispose();
+		}
+		if (customLayerOperatorItemProvider != null) {
+			customLayerOperatorItemProvider.dispose();
+		}
+		if (propertyIndexItemProvider != null) {
+			propertyIndexItemProvider.dispose();
+		}
+		if (stringToPropertyIndexMapItemProvider != null) {
+			stringToPropertyIndexMapItemProvider.dispose();
+		}
+		if (simpleLayerDescriptorItemProvider != null) {
+			simpleLayerDescriptorItemProvider.dispose();
+		}
+		if (regExpLayerDescriptorItemProvider != null) {
+			regExpLayerDescriptorItemProvider.dispose();
+		}
+		if (nullInstanceItemProvider != null) {
+			nullInstanceItemProvider.dispose();
+		}
+		if (regExpLayerItemProvider != null) {
+			regExpLayerItemProvider.dispose();
+		}
+		if (layerItemProvider != null) {
+			layerItemProvider.dispose();
+		}
+		if (colorItemProvider != null) {
+			colorItemProvider.dispose();
+		}
+		if (colorInstanceItemProvider != null) {
+			colorInstanceItemProvider.dispose();
+		}
+		if (fillInstanceItemProvider != null) {
+			fillInstanceItemProvider.dispose();
+		}
+		if (fillItemProvider != null) {
+			fillItemProvider.dispose();
+		}
+		if (fillPropertySetterItemProvider != null) {
+			fillPropertySetterItemProvider.dispose();
+		}
+		if (isValidPropertySetterItemProvider != null) {
+			isValidPropertySetterItemProvider.dispose();
+		}
+		if (nullPropertySetterItemProvider != null) {
+			nullPropertySetterItemProvider.dispose();
+		}
+		if (lineTypeItemProvider != null) {
+			lineTypeItemProvider.dispose();
+		}
+		if (lineInstanceItemProvider != null) {
+			lineInstanceItemProvider.dispose();
+		}
+		if (linePropertySetterItemProvider != null) {
+			linePropertySetterItemProvider.dispose();
+		}
+		if (fontPropertySetterItemProvider != null) {
+			fontPropertySetterItemProvider.dispose();
+		}
+		if (fontInstanceItemProvider != null) {
+			fontInstanceItemProvider.dispose();
+		}
+		if (fontTypeItemProvider != null) {
+			fontTypeItemProvider.dispose();
+		}
+		if (isVisiblePropertySetterItemProvider != null) {
+			isVisiblePropertySetterItemProvider.dispose();
+		}
+		if (topLayerOperatorDescriptorItemProvider != null) {
+			topLayerOperatorDescriptorItemProvider.dispose();
+		}
+		if (stackedLayerOperatorDescriptorItemProvider != null) {
+			stackedLayerOperatorDescriptorItemProvider.dispose();
+		}
+		if (customPropertyOperatorItemProvider != null) {
+			customPropertyOperatorItemProvider.dispose();
+		}
+		if (andStackedLayerOperatorDescriptorItemProvider != null) {
+			andStackedLayerOperatorDescriptorItemProvider.dispose();
+		}
+		if (orStackedLayerOperatorDescriptorItemProvider != null) {
+			orStackedLayerOperatorDescriptorItemProvider.dispose();
+		}
+		if (isAbstractUmlSetterItemProvider != null) {
+			isAbstractUmlSetterItemProvider.dispose();
+		}
+		if (allViewsDerivedLayerItemProvider != null) {
+			allViewsDerivedLayerItemProvider.dispose();
+		}
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayersStackApplicationItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayersStackApplicationItemProvider.java
new file mode 100755
index 0000000..3cedebb
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayersStackApplicationItemProvider.java
@@ -0,0 +1,210 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayersStackApplicationItemProvider
+		extends FolderElementItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayersStackApplicationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(LayersPackage.Literals.LAYERS_STACK_APPLICATION__LAYERS_STACKS);
+			childrenFeatures.add(LayersPackage.Literals.LAYERS_STACK_APPLICATION__LAYER_STACK_REGISTRY);
+			childrenFeatures.add(LayersPackage.Literals.LAYERS_STACK_APPLICATION__PROPERTY_REGISTRY);
+			childrenFeatures.add(LayersPackage.Literals.LAYERS_STACK_APPLICATION__LAYER_DESCRIPTOR_REGISTRY);
+			childrenFeatures.add(LayersPackage.Literals.LAYERS_STACK_APPLICATION__FACTORY);
+			childrenFeatures.add(LayersPackage.Literals.LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY);
+			childrenFeatures.add(LayersPackage.Literals.LAYERS_STACK_APPLICATION__LAYER_OPERATOR_DESCRIPTOR_REGISTRY);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LayersStackApplication.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LayersStackApplication"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_LayersStackApplication_type");
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LayersStackApplication.class)) {
+		case LayersPackage.LAYERS_STACK_APPLICATION__LAYERS_STACKS:
+		case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_STACK_REGISTRY:
+		case LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_REGISTRY:
+		case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_DESCRIPTOR_REGISTRY:
+		case LayersPackage.LAYERS_STACK_APPLICATION__FACTORY:
+		case LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY:
+		case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_OPERATOR_DESCRIPTOR_REGISTRY:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYERS_STACK_APPLICATION__LAYERS_STACKS,
+						LayersFactory.eINSTANCE.createLayersStack()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYERS_STACK_APPLICATION__LAYER_STACK_REGISTRY,
+						LayersFactory.eINSTANCE.createLayerStackDescriptorRegistry()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYERS_STACK_APPLICATION__PROPERTY_REGISTRY,
+						LayersFactory.eINSTANCE.createPropertyRegistry()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYERS_STACK_APPLICATION__LAYER_DESCRIPTOR_REGISTRY,
+						LayersFactory.eINSTANCE.createLayerDescriptorRegistry()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYERS_STACK_APPLICATION__FACTORY,
+						LayersFactory.eINSTANCE.createLayerApplicationFactory()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY,
+						LayersFactory.eINSTANCE.createPropertySetterRegistry()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYERS_STACK_APPLICATION__LAYER_OPERATOR_DESCRIPTOR_REGISTRY,
+						LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry()));
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayersStackItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayersStackItemProvider.java
new file mode 100755
index 0000000..761afc6
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LayersStackItemProvider.java
@@ -0,0 +1,321 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayersStackItemProvider
+		extends ItemProviderAdapter
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayersStackItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNamePropertyDescriptor(object);
+			addDescriptionPropertyDescriptor(object);
+			addDiagramPropertyDescriptor(object);
+			addStatePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_LayersStack_name_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_LayersStack_name_feature", "_UI_LayersStack_type"),
+						LayersPackage.Literals.LAYERS_STACK__NAME,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Description feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addDescriptionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_LayersStack_description_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_LayersStack_description_feature", "_UI_LayersStack_type"),
+						LayersPackage.Literals.LAYERS_STACK__DESCRIPTION,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Diagram feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addDiagramPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_LayersStack_diagram_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_LayersStack_diagram_feature", "_UI_LayersStack_type"),
+						LayersPackage.Literals.LAYERS_STACK__DIAGRAM,
+						true,
+						false,
+						true,
+						null,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the State feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addStatePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_LayersStack_state_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_LayersStack_state_feature", "_UI_LayersStack_type"),
+						LayersPackage.Literals.LAYERS_STACK__STATE,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(LayersPackage.Literals.LAYERS_STACK__LAYERS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LayersStack.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LayersStack"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public String getText(Object object) {
+		LayersStack stack = (LayersStack) object;
+		String label = ((LayersStack) object).getName();
+
+		if (label == null || label.length() == 0) {
+			try {
+				label = stack.getDiagram().getName();
+			} catch (NullPointerException e) {
+				return getString("_UI_LayersStack_type");
+			}
+		}
+
+		return "Stack " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LayersStack.class)) {
+		case LayersPackage.LAYERS_STACK__NAME:
+		case LayersPackage.LAYERS_STACK__DESCRIPTION:
+		case LayersPackage.LAYERS_STACK__STATE:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		case LayersPackage.LAYERS_STACK__LAYERS:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYERS_STACK__LAYERS,
+						LayersFactory.eINSTANCE.createTopLayerOperator()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYERS_STACK__LAYERS,
+						LayersFactory.eINSTANCE.createStackedLayerOperator()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYERS_STACK__LAYERS,
+						LayersFactory.eINSTANCE.createCustomLayerOperator()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYERS_STACK__LAYERS,
+						LayersFactory.eINSTANCE.createRegExpLayer()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYERS_STACK__LAYERS,
+						LayersFactory.eINSTANCE.createLayer()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.LAYERS_STACK__LAYERS,
+						LayersFactory.eINSTANCE.createAllViewsDerivedLayer()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return LayersEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LineInstanceItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LineInstanceItemProvider.java
new file mode 100755
index 0000000..c4221b3
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LineInstanceItemProvider.java
@@ -0,0 +1,185 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LineInstance;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LineInstance} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LineInstanceItemProvider
+		extends TypeInstanceItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LineInstanceItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addLineColorPropertyDescriptor(object);
+			addLineWithPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Line Color feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addLineColorPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_LineInstance_lineColor_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_LineInstance_lineColor_feature", "_UI_LineInstance_type"),
+						LayersPackage.Literals.LINE_INSTANCE__LINE_COLOR,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Line With feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addLineWithPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_LineInstance_lineWith_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_LineInstance_lineWith_feature", "_UI_LineInstance_type"),
+						LayersPackage.Literals.LINE_INSTANCE__LINE_WITH,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This returns LineInstance.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LineInstance"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public String getText(Object object) {
+		LineInstance lineInstance = (LineInstance) object;
+		String propertyName = getInstancePropertyName(object);
+		return ("".equals(propertyName) ? getString("_UI_LineInstance_type") : "'" + propertyName + "'")
+				+ " with=" + lineInstance.getLineWith()
+				+ ", color=" + lineInstance.getLineColor();
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LineInstance.class)) {
+		case LayersPackage.LINE_INSTANCE__LINE_COLOR:
+		case LayersPackage.LINE_INSTANCE__LINE_WITH:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LinePropertySetterItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LinePropertySetterItemProvider.java
new file mode 100755
index 0000000..ff729b0
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LinePropertySetterItemProvider.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.stackmodel.layers.LinePropertySetter;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LinePropertySetter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LinePropertySetterItemProvider
+		extends PropertySetterItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LinePropertySetterItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns LinePropertySetter.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LinePropertySetter"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LinePropertySetter) object).getPropertyName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_LinePropertySetter_type") :
+				getString("_UI_LinePropertySetter_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LineTypeItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LineTypeItemProvider.java
new file mode 100755
index 0000000..95d14fe
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/LineTypeItemProvider.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.stackmodel.layers.LineType;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.LineType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LineTypeItemProvider
+		extends TypeItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LineTypeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns LineType.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LineType"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LineType) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_LineType_type") :
+				getString("_UI_LineType_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/MetamodelItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/MetamodelItemProvider.java
new file mode 100755
index 0000000..3449979
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/MetamodelItemProvider.java
@@ -0,0 +1,284 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Metamodel;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class MetamodelItemProvider
+		extends FolderElementItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public MetamodelItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNamePropertyDescriptor(object);
+			addDescriptionPropertyDescriptor(object);
+			addNsuriPropertyDescriptor(object);
+			addPluginIDPropertyDescriptor(object);
+			addEPackageInstanceNamePropertyDescriptor(object);
+			addIsTypeValidPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_Metamodel_name_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Metamodel_name_feature", "_UI_Metamodel_type"),
+						LayersPackage.Literals.METAMODEL__NAME,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Description feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addDescriptionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_Metamodel_description_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Metamodel_description_feature", "_UI_Metamodel_type"),
+						LayersPackage.Literals.METAMODEL__DESCRIPTION,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Nsuri feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addNsuriPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_Metamodel_nsuri_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Metamodel_nsuri_feature", "_UI_Metamodel_type"),
+						LayersPackage.Literals.METAMODEL__NSURI,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Plugin ID feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addPluginIDPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_Metamodel_pluginID_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Metamodel_pluginID_feature", "_UI_Metamodel_type"),
+						LayersPackage.Literals.METAMODEL__PLUGIN_ID,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the EPackage Instance Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addEPackageInstanceNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_Metamodel_ePackageInstanceName_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Metamodel_ePackageInstanceName_feature", "_UI_Metamodel_type"),
+						LayersPackage.Literals.METAMODEL__EPACKAGE_INSTANCE_NAME,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Is Type Valid feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addIsTypeValidPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_Metamodel_isTypeValid_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Metamodel_isTypeValid_feature", "_UI_Metamodel_type"),
+						LayersPackage.Literals.METAMODEL__IS_TYPE_VALID,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This returns Metamodel.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Metamodel"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((Metamodel) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_Metamodel_type") :
+				getString("_UI_Metamodel_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Metamodel.class)) {
+		case LayersPackage.METAMODEL__NAME:
+		case LayersPackage.METAMODEL__DESCRIPTION:
+		case LayersPackage.METAMODEL__NSURI:
+		case LayersPackage.METAMODEL__PLUGIN_ID:
+		case LayersPackage.METAMODEL__EPACKAGE_INSTANCE_NAME:
+		case LayersPackage.METAMODEL__IS_TYPE_VALID:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/NullInstanceItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/NullInstanceItemProvider.java
new file mode 100755
index 0000000..5babe50
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/NullInstanceItemProvider.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.NullInstance} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class NullInstanceItemProvider
+		extends TypeInstanceItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public NullInstanceItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns NullInstance.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/NullInstance"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_NullInstance_type");
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/NullPropertySetterItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/NullPropertySetterItemProvider.java
new file mode 100755
index 0000000..f5c28b2
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/NullPropertySetterItemProvider.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.stackmodel.layers.NullPropertySetter;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.NullPropertySetter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class NullPropertySetterItemProvider
+		extends PropertySetterItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public NullPropertySetterItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns NullPropertySetter.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/NullPropertySetter"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((NullPropertySetter) object).getPropertyName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_NullPropertySetter_type") :
+				getString("_UI_NullPropertySetter_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/OrStackedLayerOperatorDescriptorItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/OrStackedLayerOperatorDescriptorItemProvider.java
new file mode 100755
index 0000000..8f32a89
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/OrStackedLayerOperatorDescriptorItemProvider.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.stackmodel.layers.OrStackedLayerOperatorDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.OrStackedLayerOperatorDescriptor} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class OrStackedLayerOperatorDescriptorItemProvider
+		extends StackedLayerOperatorDescriptorItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public OrStackedLayerOperatorDescriptorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns OrStackedLayerOperatorDescriptor.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/OrStackedLayerOperatorDescriptor"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((OrStackedLayerOperatorDescriptor) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_OrStackedLayerOperatorDescriptor_type") :
+				getString("_UI_OrStackedLayerOperatorDescriptor_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertyIndexItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertyIndexItemProvider.java
new file mode 100755
index 0000000..2d5ceaa
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertyIndexItemProvider.java
@@ -0,0 +1,195 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class PropertyIndexItemProvider
+		extends ItemProviderAdapter
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public PropertyIndexItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addPropertyPropertyDescriptor(object);
+			addIndexPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Property feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addPropertyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_PropertyIndex_property_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_PropertyIndex_property_feature", "_UI_PropertyIndex_type"),
+						LayersPackage.Literals.PROPERTY_INDEX__PROPERTY,
+						true,
+						false,
+						true,
+						null,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Index feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addIndexPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_PropertyIndex_index_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_PropertyIndex_index_feature", "_UI_PropertyIndex_type"),
+						LayersPackage.Literals.PROPERTY_INDEX__INDEX,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This returns PropertyIndex.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/PropertyIndex"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		PropertyIndex propertyIndex = (PropertyIndex) object;
+		return getString("_UI_PropertyIndex_type") + " " + propertyIndex.getIndex();
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(PropertyIndex.class)) {
+		case LayersPackage.PROPERTY_INDEX__INDEX:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return LayersEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertyItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertyItemProvider.java
new file mode 100755
index 0000000..aac3002
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertyItemProvider.java
@@ -0,0 +1,309 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.Property} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class PropertyItemProvider
+		extends FolderElementItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public PropertyItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addTypePropertyDescriptor(object);
+			addNamePropertyDescriptor(object);
+			addDescriptionPropertyDescriptor(object);
+			addIndexPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_Property_type_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Property_type_feature", "_UI_Property_type"),
+						LayersPackage.Literals.PROPERTY__TYPE,
+						true,
+						false,
+						true,
+						null,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_Property_name_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Property_name_feature", "_UI_Property_type"),
+						LayersPackage.Literals.PROPERTY__NAME,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Description feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addDescriptionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_Property_description_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Property_description_feature", "_UI_Property_type"),
+						LayersPackage.Literals.PROPERTY__DESCRIPTION,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Index feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addIndexPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_Property_index_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Property_index_feature", "_UI_Property_type"),
+						LayersPackage.Literals.PROPERTY__INDEX,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(LayersPackage.Literals.PROPERTY__DEFAULT_VALUE);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns Property.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/Property"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((Property) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_Property_type") :
+				getString("_UI_Property_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Property.class)) {
+		case LayersPackage.PROPERTY__NAME:
+		case LayersPackage.PROPERTY__DESCRIPTION:
+		case LayersPackage.PROPERTY__INDEX:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		case LayersPackage.PROPERTY__DEFAULT_VALUE:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.PROPERTY__DEFAULT_VALUE,
+						LayersFactory.eINSTANCE.createIntInstance()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.PROPERTY__DEFAULT_VALUE,
+						LayersFactory.eINSTANCE.createBooleanInstance()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.PROPERTY__DEFAULT_VALUE,
+						LayersFactory.eINSTANCE.createStringInstance()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.PROPERTY__DEFAULT_VALUE,
+						LayersFactory.eINSTANCE.createNullInstance()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.PROPERTY__DEFAULT_VALUE,
+						LayersFactory.eINSTANCE.createColorInstance()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.PROPERTY__DEFAULT_VALUE,
+						LayersFactory.eINSTANCE.createFillInstance()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.PROPERTY__DEFAULT_VALUE,
+						LayersFactory.eINSTANCE.createLineInstance()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.PROPERTY__DEFAULT_VALUE,
+						LayersFactory.eINSTANCE.createFontInstance()));
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertyOperatorItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertyOperatorItemProvider.java
new file mode 100755
index 0000000..5c79e6a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertyOperatorItemProvider.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class PropertyOperatorItemProvider
+		extends ItemProviderAdapter
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public PropertyOperatorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_PropertyOperator_name_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_PropertyOperator_name_feature", "_UI_PropertyOperator_type"),
+						LayersPackage.Literals.PROPERTY_OPERATOR__NAME,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This returns PropertyOperator.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/PropertyOperator"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((PropertyOperator) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_PropertyOperator_type") :
+				getString("_UI_PropertyOperator_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(PropertyOperator.class)) {
+		case LayersPackage.PROPERTY_OPERATOR__NAME:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return LayersEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertyRegistryItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertyRegistryItemProvider.java
new file mode 100755
index 0000000..b4e0709
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertyRegistryItemProvider.java
@@ -0,0 +1,219 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class PropertyRegistryItemProvider
+		extends ItemProviderAdapter
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public PropertyRegistryItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addPropertiesCountPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Properties Count feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addPropertiesCountPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_PropertyRegistry_propertiesCount_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_PropertyRegistry_propertiesCount_feature", "_UI_PropertyRegistry_type"),
+						LayersPackage.Literals.PROPERTY_REGISTRY__PROPERTIES_COUNT,
+						false,
+						false,
+						false,
+						ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(LayersPackage.Literals.PROPERTY_REGISTRY__PROPERTIES);
+			childrenFeatures.add(LayersPackage.Literals.PROPERTY_REGISTRY__TYPE_REGISTRY);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns PropertyRegistry.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/PropertyRegistry"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		PropertyRegistry propertyRegistry = (PropertyRegistry) object;
+		return getString("_UI_PropertyRegistry_type") + " " + propertyRegistry.getPropertiesCount();
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(PropertyRegistry.class)) {
+		case LayersPackage.PROPERTY_REGISTRY__PROPERTIES_COUNT:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		case LayersPackage.PROPERTY_REGISTRY__PROPERTIES:
+		case LayersPackage.PROPERTY_REGISTRY__TYPE_REGISTRY:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.PROPERTY_REGISTRY__PROPERTIES,
+						LayersFactory.eINSTANCE.createProperty()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.PROPERTY_REGISTRY__TYPE_REGISTRY,
+						LayersFactory.eINSTANCE.createTypeRegistry()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return LayersEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertySetterItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertySetterItemProvider.java
new file mode 100755
index 0000000..1a93520
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertySetterItemProvider.java
@@ -0,0 +1,197 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class PropertySetterItemProvider
+		extends ItemProviderAdapter
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public PropertySetterItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addPropertyPropertyDescriptor(object);
+			addPropertyNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Property feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addPropertyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_PropertySetter_property_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_PropertySetter_property_feature", "_UI_PropertySetter_type"),
+						LayersPackage.Literals.PROPERTY_SETTER__PROPERTY,
+						true,
+						false,
+						true,
+						null,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Property Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addPropertyNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_PropertySetter_propertyName_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_PropertySetter_propertyName_feature", "_UI_PropertySetter_type"),
+						LayersPackage.Literals.PROPERTY_SETTER__PROPERTY_NAME,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This returns PropertySetter.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/PropertySetter"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((PropertySetter) object).getPropertyName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_PropertySetter_type") :
+				getString("_UI_PropertySetter_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(PropertySetter.class)) {
+		case LayersPackage.PROPERTY_SETTER__PROPERTY_NAME:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return LayersEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertySetterRegistryItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertySetterRegistryItemProvider.java
new file mode 100755
index 0000000..3d70562
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/PropertySetterRegistryItemProvider.java
@@ -0,0 +1,219 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class PropertySetterRegistryItemProvider
+		extends ItemProviderAdapter
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public PropertySetterRegistryItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(LayersPackage.Literals.PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS);
+			childrenFeatures.add(LayersPackage.Literals.PROPERTY_SETTER_REGISTRY__SETTER_MAP);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns PropertySetterRegistry.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/PropertySetterRegistry"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_PropertySetterRegistry_type");
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(PropertySetterRegistry.class)) {
+		case LayersPackage.PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS:
+		case LayersPackage.PROPERTY_SETTER_REGISTRY__SETTER_MAP:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS,
+						LayersFactory.eINSTANCE.createFillPropertySetter()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS,
+						LayersFactory.eINSTANCE.createIsValidPropertySetter()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS,
+						LayersFactory.eINSTANCE.createNullPropertySetter()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS,
+						LayersFactory.eINSTANCE.createLinePropertySetter()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS,
+						LayersFactory.eINSTANCE.createFontPropertySetter()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS,
+						LayersFactory.eINSTANCE.createIsVisiblePropertySetter()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS,
+						LayersFactory.eINSTANCE.createIsAbstractUmlSetter()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.PROPERTY_SETTER_REGISTRY__SETTER_MAP,
+						LayersFactory.eINSTANCE.create(LayersPackage.Literals.STRING_TO_PROPERTY_SETTER)));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return LayersEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/RegExpLayerDescriptorItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/RegExpLayerDescriptorItemProvider.java
new file mode 100755
index 0000000..5f916ed
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/RegExpLayerDescriptorItemProvider.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayerDescriptor} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class RegExpLayerDescriptorItemProvider
+		extends LayerDescriptorItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public RegExpLayerDescriptorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns RegExpLayerDescriptor.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/RegExpLayerDescriptor"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_RegExpLayerDescriptor_type");
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/RegExpLayerItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/RegExpLayerItemProvider.java
new file mode 100755
index 0000000..bd21bac
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/RegExpLayerItemProvider.java
@@ -0,0 +1,309 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class RegExpLayerItemProvider
+		extends AbstractLayerItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public RegExpLayerItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addExprPropertyDescriptor(object);
+			addLanguagePropertyDescriptor(object);
+			addIsDomainChangedEventDependantPropertyDescriptor(object);
+			addDomainChangedEventLevelPropertyDescriptor(object);
+			addIsDiagramChangedEventDependantPropertyDescriptor(object);
+			addDiagramChangedEventLevelPropertyDescriptor(object);
+			addExpressionContextObjectTypePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Expr feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addExprPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_RegExpLayer_expr_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_RegExpLayer_expr_feature", "_UI_RegExpLayer_type"),
+						LayersPackage.Literals.REG_EXP_LAYER__EXPR,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Language feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addLanguagePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_RegExpLayer_language_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_RegExpLayer_language_feature", "_UI_RegExpLayer_type"),
+						LayersPackage.Literals.REG_EXP_LAYER__LANGUAGE,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Is Domain Changed Event Dependant feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addIsDomainChangedEventDependantPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_RegExpLayer_isDomainChangedEventDependant_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_RegExpLayer_isDomainChangedEventDependant_feature", "_UI_RegExpLayer_type"),
+						LayersPackage.Literals.REG_EXP_LAYER__IS_DOMAIN_CHANGED_EVENT_DEPENDANT,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Domain Changed Event Level feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addDomainChangedEventLevelPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_RegExpLayer_domainChangedEventLevel_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_RegExpLayer_domainChangedEventLevel_feature", "_UI_RegExpLayer_type"),
+						LayersPackage.Literals.REG_EXP_LAYER__DOMAIN_CHANGED_EVENT_LEVEL,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Is Diagram Changed Event Dependant feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addIsDiagramChangedEventDependantPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_RegExpLayer_isDiagramChangedEventDependant_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_RegExpLayer_isDiagramChangedEventDependant_feature", "_UI_RegExpLayer_type"),
+						LayersPackage.Literals.REG_EXP_LAYER__IS_DIAGRAM_CHANGED_EVENT_DEPENDANT,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Diagram Changed Event Level feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addDiagramChangedEventLevelPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_RegExpLayer_diagramChangedEventLevel_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_RegExpLayer_diagramChangedEventLevel_feature", "_UI_RegExpLayer_type"),
+						LayersPackage.Literals.REG_EXP_LAYER__DIAGRAM_CHANGED_EVENT_LEVEL,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Expression Context Object Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addExpressionContextObjectTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_RegExpLayer_expressionContextObjectType_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_RegExpLayer_expressionContextObjectType_feature", "_UI_RegExpLayer_type"),
+						LayersPackage.Literals.REG_EXP_LAYER__EXPRESSION_CONTEXT_OBJECT_TYPE,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This returns RegExpLayer.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/RegExpLayer"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((RegExpLayer) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_RegExpLayer_type") :
+				getString("_UI_RegExpLayer_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(RegExpLayer.class)) {
+		case LayersPackage.REG_EXP_LAYER__EXPR:
+		case LayersPackage.REG_EXP_LAYER__LANGUAGE:
+		case LayersPackage.REG_EXP_LAYER__IS_DOMAIN_CHANGED_EVENT_DEPENDANT:
+		case LayersPackage.REG_EXP_LAYER__DOMAIN_CHANGED_EVENT_LEVEL:
+		case LayersPackage.REG_EXP_LAYER__IS_DIAGRAM_CHANGED_EVENT_DEPENDANT:
+		case LayersPackage.REG_EXP_LAYER__DIAGRAM_CHANGED_EVENT_LEVEL:
+		case LayersPackage.REG_EXP_LAYER__EXPRESSION_CONTEXT_OBJECT_TYPE:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/SimpleLayerDescriptorItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/SimpleLayerDescriptorItemProvider.java
new file mode 100755
index 0000000..2967cea
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/SimpleLayerDescriptorItemProvider.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.SimpleLayerDescriptor} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class SimpleLayerDescriptorItemProvider
+		extends LayerDescriptorItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public SimpleLayerDescriptorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns SimpleLayerDescriptor.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/SimpleLayerDescriptor"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_SimpleLayerDescriptor_type");
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StackedLayerOperatorDescriptorItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StackedLayerOperatorDescriptorItemProvider.java
new file mode 100755
index 0000000..8b453a4
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StackedLayerOperatorDescriptorItemProvider.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperatorDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperatorDescriptor} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class StackedLayerOperatorDescriptorItemProvider
+		extends LayerOperatorDescriptorItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public StackedLayerOperatorDescriptorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns StackedLayerOperatorDescriptor.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/StackedLayerOperatorDescriptor"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((StackedLayerOperatorDescriptor) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_StackedLayerOperatorDescriptor_type") :
+				getString("_UI_StackedLayerOperatorDescriptor_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StackedLayerOperatorItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StackedLayerOperatorItemProvider.java
new file mode 100755
index 0000000..8829b1d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StackedLayerOperatorItemProvider.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class StackedLayerOperatorItemProvider
+		extends AbstractLayerOperatorItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public StackedLayerOperatorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns StackedLayerOperator.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/StackedLayerOperator"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public String getText(Object object) {
+		// String label = ((StackedLayerOperator)object).getName();
+		// return label == null || label.length() == 0 ?
+		// getString("_UI_StackedLayerOperator_type") :
+		// getString("_UI_StackedLayerOperator_type") + " " + label;
+
+		// Actually, we use an StackedLayerOperator as a concrete class for every type of layer operator
+		// (to be changed))
+		AbstractLayerOperator layer = ((AbstractLayerOperator) object);
+		if (!layer.isDescriptorSet()) {
+			// Original behavior
+			String label = ((AbstractLayerOperator) object).getName();
+			return label == null || label.length() == 0 ?
+					getString("_UI_AbstractLayerOperator_type") :
+					getString("_UI_AbstractLayerOperator_type") + " " + label;
+		}
+
+		// Custom behavior
+		String label = layer.getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_AbstractLayerOperator_type") :
+				getString("_UI_AbstractLayerOperator_type") + " (" + layer.getLayerOperatorDescriptor().getName() + ") " + label;
+
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringInstanceItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringInstanceItemProvider.java
new file mode 100755
index 0000000..8cbaf7d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringInstanceItemProvider.java
@@ -0,0 +1,159 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.StringInstance;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.StringInstance} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class StringInstanceItemProvider
+		extends TypeInstanceItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public StringInstanceItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addValuePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Value feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addValuePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_StringInstance_value_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_StringInstance_value_feature", "_UI_StringInstance_type"),
+						LayersPackage.Literals.STRING_INSTANCE__VALUE,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This returns StringInstance.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/StringInstance"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((StringInstance) object).getValue();
+		return label == null || label.length() == 0 ?
+				getString("_UI_StringInstance_type") :
+				getString("_UI_StringInstance_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(StringInstance.class)) {
+		case LayersPackage.STRING_INSTANCE__VALUE:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringToPropertyIndexMapItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringToPropertyIndexMapItemProvider.java
new file mode 100755
index 0000000..bf3735e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringToPropertyIndexMapItemProvider.java
@@ -0,0 +1,212 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link java.util.Map.Entry} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class StringToPropertyIndexMapItemProvider
+		extends ItemProviderAdapter
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public StringToPropertyIndexMapItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addKeyPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Key feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addKeyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_StringToPropertyIndexMap_key_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_StringToPropertyIndexMap_key_feature", "_UI_StringToPropertyIndexMap_type"),
+						LayersPackage.Literals.STRING_TO_PROPERTY_INDEX_MAP__KEY,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(LayersPackage.Literals.STRING_TO_PROPERTY_INDEX_MAP__VALUE);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns StringToPropertyIndexMap.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/StringToPropertyIndexMap"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		Map.Entry<?, ?> stringToPropertyIndexMap = (Map.Entry<?, ?>) object;
+		return "" + stringToPropertyIndexMap.getKey() + " -> " + stringToPropertyIndexMap.getValue();
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Map.Entry.class)) {
+		case LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__KEY:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		case LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__VALUE:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.STRING_TO_PROPERTY_INDEX_MAP__VALUE,
+						LayersFactory.eINSTANCE.createPropertyIndex()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return LayersEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringToPropertySetterItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringToPropertySetterItemProvider.java
new file mode 100755
index 0000000..c006c3f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringToPropertySetterItemProvider.java
@@ -0,0 +1,242 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link java.util.Map.Entry} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class StringToPropertySetterItemProvider
+		extends ItemProviderAdapter
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public StringToPropertySetterItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addKeyPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Key feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addKeyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_StringToPropertySetter_key_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_StringToPropertySetter_key_feature", "_UI_StringToPropertySetter_type"),
+						LayersPackage.Literals.STRING_TO_PROPERTY_SETTER__KEY,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(LayersPackage.Literals.STRING_TO_PROPERTY_SETTER__VALUE);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns StringToPropertySetter.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/StringToPropertySetter"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		Map.Entry<?, ?> stringToPropertySetter = (Map.Entry<?, ?>) object;
+		return "" + stringToPropertySetter.getKey() + " -> " + stringToPropertySetter.getValue();
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Map.Entry.class)) {
+		case LayersPackage.STRING_TO_PROPERTY_SETTER__KEY:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		case LayersPackage.STRING_TO_PROPERTY_SETTER__VALUE:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.STRING_TO_PROPERTY_SETTER__VALUE,
+						LayersFactory.eINSTANCE.createFillPropertySetter()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.STRING_TO_PROPERTY_SETTER__VALUE,
+						LayersFactory.eINSTANCE.createIsValidPropertySetter()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.STRING_TO_PROPERTY_SETTER__VALUE,
+						LayersFactory.eINSTANCE.createNullPropertySetter()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.STRING_TO_PROPERTY_SETTER__VALUE,
+						LayersFactory.eINSTANCE.createLinePropertySetter()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.STRING_TO_PROPERTY_SETTER__VALUE,
+						LayersFactory.eINSTANCE.createFontPropertySetter()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.STRING_TO_PROPERTY_SETTER__VALUE,
+						LayersFactory.eINSTANCE.createIsVisiblePropertySetter()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.STRING_TO_PROPERTY_SETTER__VALUE,
+						LayersFactory.eINSTANCE.createIsAbstractUmlSetter()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return LayersEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringToTypeInstanceMapItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringToTypeInstanceMapItemProvider.java
new file mode 100755
index 0000000..55b8462
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringToTypeInstanceMapItemProvider.java
@@ -0,0 +1,251 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link java.util.Map.Entry} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class StringToTypeInstanceMapItemProvider
+		extends ItemProviderAdapter
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public StringToTypeInstanceMapItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addKeyPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Key feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addKeyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_StringToTypeInstanceMap_key_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_StringToTypeInstanceMap_key_feature", "_UI_StringToTypeInstanceMap_type"),
+						LayersPackage.Literals.STRING_TO_TYPE_INSTANCE_MAP__KEY,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(LayersPackage.Literals.STRING_TO_TYPE_INSTANCE_MAP__VALUE);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns StringToTypeInstanceMap.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/StringToTypeInstanceMap"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public String getText(Object object) {
+		Map.Entry<?, ?> stringToTypeInstanceMap = (Map.Entry<?, ?>) object;
+		// return "" + stringToTypeInstanceMap.getKey() + " -> " + stringToTypeInstanceMap.getValue();
+
+		// TypeInstance instance = (TypeInstance)stringToTypeInstanceMap.getValue();
+
+		return "Property '" + stringToTypeInstanceMap.getKey() + "'";
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Map.Entry.class)) {
+		case LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__KEY:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		case LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__VALUE:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.STRING_TO_TYPE_INSTANCE_MAP__VALUE,
+						LayersFactory.eINSTANCE.createIntInstance()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.STRING_TO_TYPE_INSTANCE_MAP__VALUE,
+						LayersFactory.eINSTANCE.createBooleanInstance()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.STRING_TO_TYPE_INSTANCE_MAP__VALUE,
+						LayersFactory.eINSTANCE.createStringInstance()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.STRING_TO_TYPE_INSTANCE_MAP__VALUE,
+						LayersFactory.eINSTANCE.createNullInstance()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.STRING_TO_TYPE_INSTANCE_MAP__VALUE,
+						LayersFactory.eINSTANCE.createColorInstance()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.STRING_TO_TYPE_INSTANCE_MAP__VALUE,
+						LayersFactory.eINSTANCE.createFillInstance()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.STRING_TO_TYPE_INSTANCE_MAP__VALUE,
+						LayersFactory.eINSTANCE.createLineInstance()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.STRING_TO_TYPE_INSTANCE_MAP__VALUE,
+						LayersFactory.eINSTANCE.createFontInstance()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return LayersEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringToTypeMapItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringToTypeMapItemProvider.java
new file mode 100755
index 0000000..aa06eca
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringToTypeMapItemProvider.java
@@ -0,0 +1,247 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * This is the item provider adapter for a {@link java.util.Map.Entry} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class StringToTypeMapItemProvider
+		extends ItemProviderAdapter
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public StringToTypeMapItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addKeyPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Key feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addKeyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_StringToTypeMap_key_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_StringToTypeMap_key_feature", "_UI_StringToTypeMap_type"),
+						LayersPackage.Literals.STRING_TO_TYPE_MAP__KEY,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(LayersPackage.Literals.STRING_TO_TYPE_MAP__VALUE);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns StringToTypeMap.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/StringToTypeMap"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		Map.Entry<?, ?> stringToTypeMap = (Map.Entry<?, ?>) object;
+		return "" + stringToTypeMap.getKey() + " -> " + stringToTypeMap.getValue();
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Map.Entry.class)) {
+		case LayersPackage.STRING_TO_TYPE_MAP__KEY:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		case LayersPackage.STRING_TO_TYPE_MAP__VALUE:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.STRING_TO_TYPE_MAP__VALUE,
+						LayersFactory.eINSTANCE.createIntType()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.STRING_TO_TYPE_MAP__VALUE,
+						LayersFactory.eINSTANCE.createBooleanType()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.STRING_TO_TYPE_MAP__VALUE,
+						LayersFactory.eINSTANCE.createStringType()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.STRING_TO_TYPE_MAP__VALUE,
+						LayersFactory.eINSTANCE.createCustomType()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.STRING_TO_TYPE_MAP__VALUE,
+						LayersFactory.eINSTANCE.createColor()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.STRING_TO_TYPE_MAP__VALUE,
+						LayersFactory.eINSTANCE.createFill()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.STRING_TO_TYPE_MAP__VALUE,
+						LayersFactory.eINSTANCE.createLineType()));
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.STRING_TO_TYPE_MAP__VALUE,
+						LayersFactory.eINSTANCE.createFontType()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return LayersEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringTypeItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringTypeItemProvider.java
new file mode 100755
index 0000000..4197b34
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/StringTypeItemProvider.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.stackmodel.layers.StringType;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.StringType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class StringTypeItemProvider
+		extends TypeItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public StringTypeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns StringType.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/StringType"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((StringType) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_StringType_type") :
+				getString("_UI_StringType_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TopLayerOperatorDescriptorItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TopLayerOperatorDescriptorItemProvider.java
new file mode 100755
index 0000000..7e3c02b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TopLayerOperatorDescriptorItemProvider.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperatorDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperatorDescriptor} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class TopLayerOperatorDescriptorItemProvider
+		extends LayerOperatorDescriptorItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public TopLayerOperatorDescriptorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns TopLayerOperatorDescriptor.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/TopLayerOperatorDescriptor"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((TopLayerOperatorDescriptor) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_TopLayerOperatorDescriptor_type") :
+				getString("_UI_TopLayerOperatorDescriptor_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TopLayerOperatorItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TopLayerOperatorItemProvider.java
new file mode 100755
index 0000000..dd7b6f0
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TopLayerOperatorItemProvider.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class TopLayerOperatorItemProvider
+		extends AbstractLayerOperatorItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public TopLayerOperatorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns TopLayerOperator.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/TopLayerOperator"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((TopLayerOperator) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_TopLayerOperator_type") :
+				getString("_UI_TopLayerOperator_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TypeInstanceItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TypeInstanceItemProvider.java
new file mode 100755
index 0000000..37162a6
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TypeInstanceItemProvider.java
@@ -0,0 +1,139 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToTypeInstanceMapImpl;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class TypeInstanceItemProvider
+		extends ItemProviderAdapter
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public TypeInstanceItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_TypeInstance_type");
+	}
+
+	/**
+	 *
+	 * @param object
+	 * @return
+	 */
+	protected String getInstancePropertyName(Object object) {
+
+		Object parent = getParent(object);
+		if (parent instanceof StringToTypeInstanceMapImpl) {
+			return ((StringToTypeInstanceMapImpl) parent).getKey();
+		}
+
+		return "";
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return LayersEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TypeItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TypeItemProvider.java
new file mode 100755
index 0000000..3675824
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TypeItemProvider.java
@@ -0,0 +1,196 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Type;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.Type} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class TypeItemProvider
+		extends FolderElementItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public TypeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addMetamodelPropertyDescriptor(object);
+			addNamePropertyDescriptor(object);
+			addDescriptionPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Metamodel feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addMetamodelPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_Type_metamodel_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Type_metamodel_feature", "_UI_Type_type"),
+						LayersPackage.Literals.TYPE__METAMODEL,
+						true,
+						false,
+						true,
+						null,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_Type_name_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Type_name_feature", "_UI_Type_type"),
+						LayersPackage.Literals.TYPE__NAME,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Description feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void addDescriptionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+				(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory(),
+						getResourceLocator(),
+						getString("_UI_Type_description_feature"),
+						getString("_UI_PropertyDescriptor_description", "_UI_Type_description_feature", "_UI_Type_type"),
+						LayersPackage.Literals.TYPE__DESCRIPTION,
+						true,
+						false,
+						false,
+						ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+						null,
+						null));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((Type) object).getName();
+		return label == null || label.length() == 0 ?
+				getString("_UI_Type_type") :
+				getString("_UI_Type_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Type.class)) {
+		case LayersPackage.TYPE__NAME:
+		case LayersPackage.TYPE__DESCRIPTION:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TypeRegistryItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TypeRegistryItemProvider.java
new file mode 100755
index 0000000..66cc1b9
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/TypeRegistryItemProvider.java
@@ -0,0 +1,182 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class TypeRegistryItemProvider
+		extends ItemProviderAdapter
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public TypeRegistryItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(LayersPackage.Literals.TYPE_REGISTRY__TYPES);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns TypeRegistry.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/TypeRegistry"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_TypeRegistry_type");
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(TypeRegistry.class)) {
+		case LayersPackage.TYPE_REGISTRY__TYPES:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+				(createChildParameter
+				(LayersPackage.Literals.TYPE_REGISTRY__TYPES,
+						LayersFactory.eINSTANCE.create(LayersPackage.Literals.STRING_TO_TYPE_MAP)));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return LayersEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/custom/AbstractLayerItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/custom/AbstractLayerItemProvider.java
new file mode 100755
index 0000000..4811fb3
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/custom/AbstractLayerItemProvider.java
@@ -0,0 +1,228 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider.custom;
+
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.command.CommandParameter;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.NullInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToTypeInstanceMapImpl;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class AbstractLayerItemProvider
+		extends org.eclipse.papyrus.layers.stackmodel.layers.provider.AbstractLayerItemProvider
+{
+	/**
+	 * The extended object, used as a delegate. This delegate is usually the original implementation
+	 * of the ItemProvider.
+	 */
+	protected org.eclipse.papyrus.layers.stackmodel.layers.provider.AbstractLayerItemProvider extendedDelegate;
+
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public AbstractLayerItemProvider(AdapterFactory adapterFactory,
+			org.eclipse.papyrus.layers.stackmodel.layers.provider.AbstractLayerItemProvider extendedDelegate) {
+		super(adapterFactory);
+		this.extendedDelegate = extendedDelegate;
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.provider.AbstractLayerItemProvider#getChildrenFeatures(java.lang.Object)
+	 *
+	 * @param object
+	 * @return
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			// Add the Property values list. Like that, they will be available directly under the
+			// Layer node.
+			childrenFeatures.add(LayersPackage.Literals.ABSTRACT_LAYER__PROPERTY_VALUES);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * We want has children:
+	 * <ul>
+	 * <li></li>
+	 * <li></li>
+	 * </ul>
+	 *
+	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#getChildren(java.lang.Object)
+	 *
+	 * @param object
+	 * @return
+	 */
+	@Override
+	public Collection<?> getChildren(Object object) {
+		ChildrenStore store = getChildrenStore(object);
+		if (store != null)
+		{
+			return store.getChildren();
+		}
+
+		store = createChildrenStore(object);
+		List<Object> result = store != null ? null : new ArrayList<Object>();
+		EObject eObject = (EObject) object;
+
+		for (EStructuralFeature feature : getChildrenFeatures(object))
+		{
+			if (feature.isMany())
+			{
+				List<?> children = (List<?>) getValue(eObject, feature);
+				int index = 0;
+				for (Object unwrappedChild : children)
+				{
+					if (!isValidChild(unwrappedChild)) {
+						continue;
+					}
+					//
+					Object child = wrap(eObject, feature, unwrappedChild, index);
+					if (store != null)
+					{
+						store.getList(feature).add(child);
+					}
+					else if (result != null)
+					{
+						result.add(child);
+					}
+					index++;
+
+				}
+			}
+			else
+			{
+				// Single value
+				Object child = getValue(eObject, feature);
+				if (child != null && isValidChild(child))
+				{
+					child = wrap(eObject, feature, child, CommandParameter.NO_INDEX);
+					if (store != null)
+					{
+						store.setValue(feature, child);
+					}
+					else if (result != null)
+					{
+						result.add(child);
+					}
+				}
+			}
+		}
+		return store != null ? store.getChildren() : result;
+	}
+
+	/**
+	 * Return true if the value should be a children of the node
+	 *
+	 * @param child
+	 * @return
+	 */
+	private boolean isValidChild(Object child) {
+
+		if (child instanceof StringToTypeInstanceMapImpl
+				|| child instanceof NullInstance) {
+			return false;
+		}
+
+		return true;
+	}
+
+	/**
+	 * This returns RegExpLayer.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return extendedDelegate.getImage(object);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		return extendedDelegate.getPropertyDescriptors(object);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return extendedDelegate.getText(object);
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(RegExpLayer.class)) {
+		case LayersPackage.REG_EXP_LAYER__EXPR:
+		case LayersPackage.REG_EXP_LAYER__LANGUAGE:
+		case LayersPackage.REG_EXP_LAYER__IS_DOMAIN_CHANGED_EVENT_DEPENDANT:
+		case LayersPackage.REG_EXP_LAYER__DOMAIN_CHANGED_EVENT_LEVEL:
+		case LayersPackage.REG_EXP_LAYER__IS_DIAGRAM_CHANGED_EVENT_DEPENDANT:
+		case LayersPackage.REG_EXP_LAYER__DIAGRAM_CHANGED_EVENT_LEVEL:
+		case LayersPackage.REG_EXP_LAYER__EXPRESSION_CONTEXT_OBJECT_TYPE:
+			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+			return;
+		}
+		super.notifyChanged(notification);
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/custom/AllViewsDerivedLayerItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/custom/AllViewsDerivedLayerItemProvider.java
new file mode 100755
index 0000000..ccc27c5
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/custom/AllViewsDerivedLayerItemProvider.java
@@ -0,0 +1,40 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider.custom;
+
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.AllViewsDerivedLayer} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class AllViewsDerivedLayerItemProvider
+		extends AbstractLayerItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public AllViewsDerivedLayerItemProvider(AdapterFactory adapterFactory,
+			org.eclipse.papyrus.layers.stackmodel.layers.provider.AllViewsDerivedLayerItemProvider extendedDelegate) {
+		super(adapterFactory, extendedDelegate);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/custom/CustomLayersItemProviderAdapterFactory.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/custom/CustomLayersItemProviderAdapterFactory.java
new file mode 100755
index 0000000..4e7fe9e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/custom/CustomLayersItemProviderAdapterFactory.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.provider.custom;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.papyrus.layers.stackmodel.layers.provider.LayersItemProviderAdapterFactory;
+
+
+/**
+ * A custom {@link LayersItemProviderAdapterFactory} used to render layers element
+ * in a tree.
+ * This factory and its overloaded Providers removed extra nodes in the tree. <br>
+ * The factory extends the original one {@link LayersItemProviderAdapterFactory}. <br>
+ * To override an ItemProvider, different strategies can be used, depending if we override one single node,
+ * or a hierarchy of node (inheritance). <h2>Single Node</h2>
+ * <ul>
+ * <li>Create, in custom, a new XxxItemProvider extending the original one.</li>
+ * <li>Add corresponding createXxxItemProvider() in {@link LayersItemProviderAdapterFactory}</li>
+ * </ul>
+ *
+ * <h2>Hierarchy of node</h2> By hierarchy, we mean classes with inheritance, with one common ancestor.
+ * See {@link AbstractLayerItemProvider} as example.
+ * <ul>
+ * <li>Create, in custom package, a new XxxItemProvider for the common ancestor, extending the original ItemProvider.</li>
+ * <ul>
+ * <li>Create a property 'extendedDelegate :: OriginalAncestorItemProvider</li>
+ * <li>Override getImage(), getText(), getPropertyDescriptors() and notifyChanged(), let them return their counterpart from extendedDelegate (i.e.: extendedDelegate.getText()).</li>
+ * <li>This will allow subclasses to use the counterpart methods from their original implementation.</li>
+ * <li>Create a constructor with the factory and the extendedDelegate as parameter</li>
+ * <li></li>
+ * </ul>
+ * <li>in custom {@link LayersItemProviderAdapterFactory}:</li>
+ * <ul>
+ * <li>Add a property XxxItemAdapter xxxItemAdapter; for each each class of the hierarchy</li>
+ * <li>Override methods createXxxItemAdapter() for each class of the hierarchy.</li>
+ * <li>in the method, create the instance of the property, provide the factory, and an instance of the extendedClass</li>
+ * <li></li>
+ * </ul>
+ * <li></li> </ul>
+ *
+ * <br>
+ * To use a custom Providers, it is necessary to create it in this factory.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class CustomLayersItemProviderAdapterFactory extends LayersItemProviderAdapterFactory {
+
+	protected LayerItemProvider layerItemProvider;
+	protected RegExpLayerItemProvider regExpLayerItemProvider;
+	protected AllViewsDerivedLayerItemProvider allViewsDerivedLayerItemProvider;
+
+	/**
+	 * Constructor.
+	 *
+	 */
+	public CustomLayersItemProviderAdapterFactory() {
+		// TODO Auto-generated constructor stub
+	}
+
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.provider.LayersItemProviderAdapterFactory#createLayersStackApplicationAdapter()
+	 *
+	 * @return
+	 */
+	@Override
+	public Adapter createLayersStackApplicationAdapter() {
+		if (layersStackApplicationItemProvider == null) {
+			layersStackApplicationItemProvider = new LayersStackApplicationItemProvider(this);
+		}
+
+		return layersStackApplicationItemProvider;
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.provider.LayersItemProviderAdapterFactory#createLayerAdapter()
+	 *
+	 * @return
+	 */
+	@Override
+	public Adapter createLayerAdapter() {
+		if (layerItemProvider == null) {
+			layerItemProvider = new LayerItemProvider(this,
+					(org.eclipse.papyrus.layers.stackmodel.layers.provider.LayerItemProvider) super.createLayerAdapter());
+		}
+
+		return layerItemProvider;
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.provider.LayersItemProviderAdapterFactory#createRegExpLayerAdapter()
+	 *
+	 * @return
+	 */
+	@Override
+	public Adapter createRegExpLayerAdapter() {
+		if (regExpLayerItemProvider == null) {
+			regExpLayerItemProvider = new RegExpLayerItemProvider(this,
+					(org.eclipse.papyrus.layers.stackmodel.layers.provider.RegExpLayerItemProvider) super.createRegExpLayerAdapter());
+		}
+
+		return regExpLayerItemProvider;
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.provider.LayersItemProviderAdapterFactory#createAllViewsDerivedLayerAdapter()
+	 *
+	 * @return
+	 */
+	@Override
+	public Adapter createAllViewsDerivedLayerAdapter() {
+		if (allViewsDerivedLayerItemProvider == null) {
+			allViewsDerivedLayerItemProvider = new AllViewsDerivedLayerItemProvider(this,
+					(org.eclipse.papyrus.layers.stackmodel.layers.provider.AllViewsDerivedLayerItemProvider) super.createAllViewsDerivedLayerAdapter());
+		}
+
+		return allViewsDerivedLayerItemProvider;
+	}
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.provider.LayersItemProviderAdapterFactory#createStringToTypeInstanceMapAdapter()
+	 *
+	 * @return
+	 */
+	// @Override
+	// public Adapter createStringToTypeInstanceMapAdapter() {
+	// if (stringToTypeInstanceMapItemProvider == null) {
+	// stringToTypeInstanceMapItemProvider = new StringToTypeInstanceMapItemProvider(this);
+	// }
+	//
+	// return stringToTypeInstanceMapItemProvider;
+	// }
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/custom/LayerItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/custom/LayerItemProvider.java
new file mode 100755
index 0000000..063eb47
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/custom/LayerItemProvider.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider.custom;
+
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.Layer} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayerItemProvider
+		extends AbstractLayerItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayerItemProvider(AdapterFactory adapterFactory,
+			org.eclipse.papyrus.layers.stackmodel.layers.provider.LayerItemProvider extendedDelegate) {
+		super(adapterFactory, extendedDelegate);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/custom/LayersStackApplicationItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/custom/LayersStackApplicationItemProvider.java
new file mode 100755
index 0000000..06ac2ef
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/custom/LayersStackApplicationItemProvider.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.provider.custom;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class LayersStackApplicationItemProvider extends org.eclipse.papyrus.layers.stackmodel.layers.provider.LayersStackApplicationItemProvider {
+
+	/**
+	 * Constructor.
+	 *
+	 * @param adapterFactory
+	 */
+	public LayersStackApplicationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * Only return the owned stacks
+	 *
+	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#getChildren(java.lang.Object)
+	 *
+	 * @param object
+	 * @return
+	 */
+	@Override
+	public Collection<?> getChildren(Object object) {
+
+		return ((LayersStackApplication) object).getLayersStacks();
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/custom/RegExpLayerItemProvider.java b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/custom/RegExpLayerItemProvider.java
new file mode 100755
index 0000000..fcf3107
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.edit/src/org/eclipse/papyrus/layers/stackmodel/layers/provider/custom/RegExpLayerItemProvider.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.provider.custom;
+
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class RegExpLayerItemProvider
+		extends AbstractLayerItemProvider
+		implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+
+
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public RegExpLayerItemProvider(AdapterFactory adapterFactory, org.eclipse.papyrus.layers.stackmodel.layers.provider.RegExpLayerItemProvider extendedDelegate) {
+		super(adapterFactory, extendedDelegate);
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.editor/.classpath b/layers/org.eclipse.papyrus.layers.stackmodel.editor/.classpath
new file mode 100755
index 0000000..ad32c83
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.editor/.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/layers/org.eclipse.papyrus.layers.stackmodel.editor/.project b/layers/org.eclipse.papyrus.layers.stackmodel.editor/.project
new file mode 100755
index 0000000..d4fe880
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.editor/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.layers.stackmodel.editor</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.editor/.settings/org.eclipse.jdt.core.prefs b/layers/org.eclipse.papyrus.layers.stackmodel.editor/.settings/org.eclipse.jdt.core.prefs
new file mode 100755
index 0000000..94d61f0
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.editor/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,291 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+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/layers/org.eclipse.papyrus.layers.stackmodel.editor/.settings/org.eclipse.jdt.ui.prefs b/layers/org.eclipse.papyrus.layers.stackmodel.editor/.settings/org.eclipse.jdt.ui.prefs
new file mode 100755
index 0000000..954281d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.editor/.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.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
+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 v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\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>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.editor/META-INF/MANIFEST.MF b/layers/org.eclipse.papyrus.layers.stackmodel.editor/META-INF/MANIFEST.MF
new file mode 100755
index 0000000..c34ae69
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.editor/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Export-Package: org.eclipse.papyrus.layers.configmodel.layersconfig.presentation,
+ org.eclipse.papyrus.layers.stackmodel.layers.presentation
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.papyrus.layers.stackmodel.edit;bundle-version="1.2.0";visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport,
+ org.eclipse.emf.edit.ui;visibility:=reexport,
+ org.eclipse.ui.ide,
+ org.eclipse.emf.ecore.edit;visibility:=reexport,
+ org.eclipse.gmf.runtime.notation.edit;visibility:=reexport
+Bundle-Vendor: %providerName
+Bundle-ActivationPolicy: lazy
+Bundle-ClassPath: .
+Bundle-Version: 1.2.0.qualifier
+Bundle-Name: %pluginName
+Bundle-Localization: plugin
+Bundle-ManifestVersion: 2
+Bundle-Activator: org.eclipse.papyrus.layers.stackmodel.layers.presentation.LayersEditorPlugin$Implementation
+Bundle-SymbolicName: org.eclipse.papyrus.layers.stackmodel.editor;singleton:=true
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.editor/about.html b/layers/org.eclipse.papyrus.layers.stackmodel.editor/about.html
new file mode 100755
index 0000000..d35d5ae
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.editor/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>June 5, 2007</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.editor/build.properties b/layers/org.eclipse.papyrus.layers.stackmodel.editor/build.properties
new file mode 100755
index 0000000..f461025
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.editor/build.properties
@@ -0,0 +1,12 @@
+#
+
+bin.includes = .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties,\
+               about.html
+jars.compile.order = .
+source.. = src/
+output.. = bin
+src.includes = about.html
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.editor/icons/full/obj16/LayersModelFile.gif b/layers/org.eclipse.papyrus.layers.stackmodel.editor/icons/full/obj16/LayersModelFile.gif
new file mode 100755
index 0000000..8315589
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.editor/icons/full/obj16/LayersModelFile.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.editor/icons/full/obj16/LayersconfigModelFile.gif b/layers/org.eclipse.papyrus.layers.stackmodel.editor/icons/full/obj16/LayersconfigModelFile.gif
new file mode 100755
index 0000000..8a7eeb2
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.editor/icons/full/obj16/LayersconfigModelFile.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.editor/icons/full/wizban/NewLayers.gif b/layers/org.eclipse.papyrus.layers.stackmodel.editor/icons/full/wizban/NewLayers.gif
new file mode 100755
index 0000000..a6b42e7
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.editor/icons/full/wizban/NewLayers.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.editor/icons/full/wizban/NewLayersconfig.gif b/layers/org.eclipse.papyrus.layers.stackmodel.editor/icons/full/wizban/NewLayersconfig.gif
new file mode 100755
index 0000000..eab53a9
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.editor/icons/full/wizban/NewLayersconfig.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.editor/plugin.properties b/layers/org.eclipse.papyrus.layers.stackmodel.editor/plugin.properties
new file mode 100755
index 0000000..0d4c28b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.editor/plugin.properties
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.editor/plugin.xml b/layers/org.eclipse.papyrus.layers.stackmodel.editor/plugin.xml
new file mode 100755
index 0000000..6073b46
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.editor/plugin.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.ui.newWizards">
+      <!-- @generated layers -->
+      <category
+            id="org.eclipse.emf.ecore.Wizard.category.ID"
+            name="%_UI_Wizard_category"/>
+      <wizard
+            id="org.eclipse.papyrus.layers.stackmodel.layers.presentation.LayersModelWizardID"
+            name="%_UI_LayersModelWizard_label"
+            class="org.eclipse.papyrus.layers.stackmodel.layers.presentation.LayersModelWizard"
+            category="org.eclipse.emf.ecore.Wizard.category.ID"
+            icon="icons/full/obj16/LayersModelFile.gif">
+         <description>%_UI_LayersModelWizard_description</description>
+         <selection class="org.eclipse.core.resources.IResource"/>
+      </wizard>
+   </extension>
+
+   <extension point="org.eclipse.ui.editors">
+      <!-- @generated layersconfig -->
+      <editor
+            id="org.eclipse.papyrus.layers.configmodel.layersconfig.presentation.LayersconfigEditorID"
+            name="%_UI_LayersconfigEditor_label"
+            icon="icons/full/obj16/LayersconfigModelFile.gif"
+            extensions="layersconfig"
+            class="org.eclipse.papyrus.layers.configmodel.layersconfig.presentation.LayersconfigEditor"
+            contributorClass="org.eclipse.papyrus.layers.configmodel.layersconfig.presentation.LayersconfigActionBarContributor">
+      </editor>
+   </extension>
+
+   <extension point="org.eclipse.ui.editors">
+      <!-- @generated layers -->
+      <editor
+            id="org.eclipse.papyrus.layers.stackmodel.layers.presentation.LayersEditorID"
+            name="%_UI_LayersEditor_label"
+            icon="icons/full/obj16/LayersModelFile.gif"
+            extensions="layers"
+            class="org.eclipse.papyrus.layers.stackmodel.layers.presentation.LayersEditor"
+            contributorClass="org.eclipse.papyrus.layers.stackmodel.layers.presentation.LayersActionBarContributor">
+      </editor>
+   </extension>
+
+</plugin>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.editor/pom.xml b/layers/org.eclipse.papyrus.layers.stackmodel.editor/pom.xml
new file mode 100755
index 0000000..c709230
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.editor/pom.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.papyrus</groupId>
+		<artifactId>org.eclipse.papyrus.layers.parent</artifactId>
+		<version>1.2.0-SNAPSHOT</version>
+	</parent>
+	<artifactId>org.eclipse.papyrus.layers.stackmodel.editor</artifactId>
+	<packaging>eclipse-plugin</packaging>
+</project>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/configmodel/layersconfig/presentation/LayersconfigActionBarContributor.java b/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/configmodel/layersconfig/presentation/LayersconfigActionBarContributor.java
new file mode 100755
index 0000000..af565c1
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/configmodel/layersconfig/presentation/LayersconfigActionBarContributor.java
@@ -0,0 +1,451 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.presentation;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+import org.eclipse.emf.edit.ui.action.ControlAction;
+import org.eclipse.emf.edit.ui.action.CreateChildAction;
+import org.eclipse.emf.edit.ui.action.CreateSiblingAction;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.action.LoadResourceAction;
+import org.eclipse.emf.edit.ui.action.ValidateAction;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IContributionManager;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.action.SubContributionItem;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+
+/**
+ * This is the action bar contributor for the Layersconfig model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayersconfigActionBarContributor
+		extends EditingDomainActionBarContributor
+		implements ISelectionChangedListener {
+	/**
+	 * This keeps track of the active editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IEditorPart activeEditorPart;
+
+	/**
+	 * This keeps track of the current selection provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ISelectionProvider selectionProvider;
+
+	/**
+	 * This action opens the Properties view.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IAction showPropertiesViewAction =
+			new Action(LayersconfigEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) {
+				@Override
+				public void run() {
+					try {
+						getPage().showView("org.eclipse.ui.views.PropertySheet");
+					}
+					catch (PartInitException exception) {
+						LayersconfigEditorPlugin.INSTANCE.log(exception);
+					}
+				}
+			};
+
+	/**
+	 * This action refreshes the viewer of the current editor if the editor
+	 * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IAction refreshViewerAction =
+			new Action(LayersconfigEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) {
+				@Override
+				public boolean isEnabled() {
+					return activeEditorPart instanceof IViewerProvider;
+				}
+
+				@Override
+				public void run() {
+					if (activeEditorPart instanceof IViewerProvider) {
+						Viewer viewer = ((IViewerProvider) activeEditorPart).getViewer();
+						if (viewer != null) {
+							viewer.refresh();
+						}
+					}
+				}
+			};
+
+	/**
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor
+	 * generated for the current selection by the item provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<IAction> createChildActions;
+
+	/**
+	 * This is the menu manager into which menu contribution items should be added for CreateChild actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IMenuManager createChildMenuManager;
+
+	/**
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor
+	 * generated for the current selection by the item provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<IAction> createSiblingActions;
+
+	/**
+	 * This is the menu manager into which menu contribution items should be added for CreateSibling actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IMenuManager createSiblingMenuManager;
+
+	/**
+	 * This creates an instance of the contributor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayersconfigActionBarContributor() {
+		super(ADDITIONS_LAST_STYLE);
+		loadResourceAction = new LoadResourceAction();
+		validateAction = new ValidateAction();
+		controlAction = new ControlAction();
+	}
+
+	/**
+	 * This adds Separators for editor additions to the tool bar.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void contributeToToolBar(IToolBarManager toolBarManager) {
+		toolBarManager.add(new Separator("layersconfig-settings"));
+		toolBarManager.add(new Separator("layersconfig-additions"));
+	}
+
+	/**
+	 * This adds to the menu bar a menu and some separators for editor additions,
+	 * as well as the sub-menus for object creation items.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void contributeToMenu(IMenuManager menuManager) {
+		super.contributeToMenu(menuManager);
+
+		IMenuManager submenuManager = new MenuManager(LayersconfigEditorPlugin.INSTANCE.getString("_UI_LayersconfigEditor_menu"), "org.eclipse.papyrus.layers.configmodel.layersconfigMenuID");
+		menuManager.insertAfter("additions", submenuManager);
+		submenuManager.add(new Separator("settings"));
+		submenuManager.add(new Separator("actions"));
+		submenuManager.add(new Separator("additions"));
+		submenuManager.add(new Separator("additions-end"));
+
+		// Prepare for CreateChild item addition or removal.
+		//
+		createChildMenuManager = new MenuManager(LayersconfigEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+		submenuManager.insertBefore("additions", createChildMenuManager);
+
+		// Prepare for CreateSibling item addition or removal.
+		//
+		createSiblingMenuManager = new MenuManager(LayersconfigEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+		submenuManager.insertBefore("additions", createSiblingMenuManager);
+
+		// Force an update because Eclipse hides empty menus now.
+		//
+		submenuManager.addMenuListener
+				(new IMenuListener() {
+					@Override
+					public void menuAboutToShow(IMenuManager menuManager) {
+						menuManager.updateAll(true);
+					}
+				});
+
+		addGlobalActions(submenuManager);
+	}
+
+	/**
+	 * When the active editor changes, this remembers the change and registers with it as a selection provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setActiveEditor(IEditorPart part) {
+		super.setActiveEditor(part);
+		activeEditorPart = part;
+
+		// Switch to the new selection provider.
+		//
+		if (selectionProvider != null) {
+			selectionProvider.removeSelectionChangedListener(this);
+		}
+		if (part == null) {
+			selectionProvider = null;
+		}
+		else {
+			selectionProvider = part.getSite().getSelectionProvider();
+			selectionProvider.addSelectionChangedListener(this);
+
+			// Fake a selection changed event to update the menus.
+			//
+			if (selectionProvider.getSelection() != null) {
+				selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection()));
+			}
+		}
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener},
+	 * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings
+	 * that can be added to the selected object and updating the menus accordingly.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void selectionChanged(SelectionChangedEvent event) {
+		// Remove any menu items for old selection.
+		//
+		if (createChildMenuManager != null) {
+			depopulateManager(createChildMenuManager, createChildActions);
+		}
+		if (createSiblingMenuManager != null) {
+			depopulateManager(createSiblingMenuManager, createSiblingActions);
+		}
+
+		// Query the new selection for appropriate new child/sibling descriptors
+		//
+		Collection<?> newChildDescriptors = null;
+		Collection<?> newSiblingDescriptors = null;
+
+		ISelection selection = event.getSelection();
+		if (selection instanceof IStructuredSelection && ((IStructuredSelection) selection).size() == 1) {
+			Object object = ((IStructuredSelection) selection).getFirstElement();
+
+			EditingDomain domain = ((IEditingDomainProvider) activeEditorPart).getEditingDomain();
+
+			newChildDescriptors = domain.getNewChildDescriptors(object, null);
+			newSiblingDescriptors = domain.getNewChildDescriptors(null, object);
+		}
+
+		// Generate actions for selection; populate and redraw the menus.
+		//
+		createChildActions = generateCreateChildActions(newChildDescriptors, selection);
+		createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection);
+
+		if (createChildMenuManager != null) {
+			populateManager(createChildMenuManager, createChildActions, null);
+			createChildMenuManager.update(true);
+		}
+		if (createSiblingMenuManager != null) {
+			populateManager(createSiblingMenuManager, createSiblingActions, null);
+			createSiblingMenuManager.update(true);
+		}
+	}
+
+	/**
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>,
+	 * and returns the collection of these actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) {
+		Collection<IAction> actions = new ArrayList<IAction>();
+		if (descriptors != null) {
+			for (Object descriptor : descriptors) {
+				actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));
+			}
+		}
+		return actions;
+	}
+
+	/**
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>,
+	 * and returns the collection of these actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) {
+		Collection<IAction> actions = new ArrayList<IAction>();
+		if (descriptors != null) {
+			for (Object descriptor : descriptors) {
+				actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
+			}
+		}
+		return actions;
+	}
+
+	/**
+	 * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection,
+	 * by inserting them before the specified contribution item <code>contributionID</code>.
+	 * If <code>contributionID</code> is <code>null</code>, they are simply added.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) {
+		if (actions != null) {
+			for (IAction action : actions) {
+				if (contributionID != null) {
+					manager.insertBefore(contributionID, action);
+				}
+				else {
+					manager.add(action);
+				}
+			}
+		}
+	}
+
+	/**
+	 * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) {
+		if (actions != null) {
+			IContributionItem[] items = manager.getItems();
+			for (int i = 0; i < items.length; i++) {
+				// Look into SubContributionItems
+				//
+				IContributionItem contributionItem = items[i];
+				while (contributionItem instanceof SubContributionItem) {
+					contributionItem = ((SubContributionItem) contributionItem).getInnerItem();
+				}
+
+				// Delete the ActionContributionItems with matching action.
+				//
+				if (contributionItem instanceof ActionContributionItem) {
+					IAction action = ((ActionContributionItem) contributionItem).getAction();
+					if (actions.contains(action)) {
+						manager.remove(contributionItem);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * This populates the pop-up menu before it appears.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void menuAboutToShow(IMenuManager menuManager) {
+		super.menuAboutToShow(menuManager);
+		MenuManager submenuManager = null;
+
+		submenuManager = new MenuManager(LayersconfigEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+		populateManager(submenuManager, createChildActions, null);
+		menuManager.insertBefore("edit", submenuManager);
+
+		submenuManager = new MenuManager(LayersconfigEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+		populateManager(submenuManager, createSiblingActions, null);
+		menuManager.insertBefore("edit", submenuManager);
+	}
+
+	/**
+	 * This inserts global actions before the "additions-end" separator.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void addGlobalActions(IMenuManager menuManager) {
+		menuManager.insertAfter("additions-end", new Separator("ui-actions"));
+		menuManager.insertAfter("ui-actions", showPropertiesViewAction);
+
+		refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());
+		menuManager.insertAfter("ui-actions", refreshViewerAction);
+
+		super.addGlobalActions(menuManager);
+	}
+
+	/**
+	 * This ensures that a delete action will clean up all references to deleted objects.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected boolean removeAllReferencesOnDelete() {
+		return true;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/configmodel/layersconfig/presentation/LayersconfigEditor.java b/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/configmodel/layersconfig/presentation/LayersconfigEditor.java
new file mode 100755
index 0000000..b633c46
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/configmodel/layersconfig/presentation/LayersconfigEditor.java
@@ -0,0 +1,1894 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.presentation;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EventObject;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.command.CommandStackListener;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.ui.MarkerHelper;
+import org.eclipse.emf.common.ui.ViewerPane;
+import org.eclipse.emf.common.ui.editor.ProblemEditorPart;
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor;
+import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter;
+import org.eclipse.emf.edit.ui.dnd.LocalTransfer;
+import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;
+import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper;
+import org.eclipse.emf.edit.ui.util.EditUIUtil;
+import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.util.LocalSelectionTransfer;
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.provider.LayersconfigItemProviderAdapterFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.FileTransfer;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeColumn;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.ui.dialogs.SaveAsDialog;
+import org.eclipse.ui.ide.IGotoMarker;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.MultiPageEditorPart;
+import org.eclipse.ui.views.contentoutline.ContentOutline;
+import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.PropertySheet;
+import org.eclipse.ui.views.properties.PropertySheetPage;
+
+
+/**
+ * This is an example of a Layersconfig model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayersconfigEditor
+		extends MultiPageEditorPart
+		implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker {
+	/**
+	 * This keeps track of the editing domain that is used to track all changes to the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected AdapterFactoryEditingDomain editingDomain;
+
+	/**
+	 * This is the one adapter factory used for providing views of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ComposedAdapterFactory adapterFactory;
+
+	/**
+	 * This is the content outline page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IContentOutlinePage contentOutlinePage;
+
+	/**
+	 * This is a kludge...
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IStatusLineManager contentOutlineStatusLineManager;
+
+	/**
+	 * This is the content outline page's viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected TreeViewer contentOutlineViewer;
+
+	/**
+	 * This is the property sheet page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>();
+
+	/**
+	 * This is the viewer that shadows the selection in the content outline.
+	 * The parent relation must be correctly defined for this to work.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected TreeViewer selectionViewer;
+
+	/**
+	 * This inverts the roll of parent and child in the content provider and show parents as a tree.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected TreeViewer parentViewer;
+
+	/**
+	 * This shows how a tree view works.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected TreeViewer treeViewer;
+
+	/**
+	 * This shows how a list view works.
+	 * A list viewer doesn't support icons.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ListViewer listViewer;
+
+	/**
+	 * This shows how a table view works.
+	 * A table can be used as a list with icons.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected TableViewer tableViewer;
+
+	/**
+	 * This shows how a tree view with columns works.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected TreeViewer treeViewerWithColumns;
+
+	/**
+	 * This keeps track of the active viewer pane, in the book.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ViewerPane currentViewerPane;
+
+	/**
+	 * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Viewer currentViewer;
+
+	/**
+	 * This listens to which ever viewer is active.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ISelectionChangedListener selectionChangedListener;
+
+	/**
+	 * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>();
+
+	/**
+	 * This keeps track of the selection of the editor as a whole.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ISelection editorSelection = StructuredSelection.EMPTY;
+
+	/**
+	 * The MarkerHelper is responsible for creating workspace resource markers presented
+	 * in Eclipse's Problems View.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected MarkerHelper markerHelper = new EditUIMarkerHelper();
+
+	/**
+	 * This listens for when the outline becomes active
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IPartListener partListener =
+			new IPartListener() {
+				@Override
+				public void partActivated(IWorkbenchPart p) {
+					if (p instanceof ContentOutline) {
+						if (((ContentOutline) p).getCurrentPage() == contentOutlinePage) {
+							getActionBarContributor().setActiveEditor(LayersconfigEditor.this);
+
+							setCurrentViewer(contentOutlineViewer);
+						}
+					}
+					else if (p instanceof PropertySheet) {
+						if (propertySheetPages.contains(((PropertySheet) p).getCurrentPage())) {
+							getActionBarContributor().setActiveEditor(LayersconfigEditor.this);
+							handleActivate();
+						}
+					}
+					else if (p == LayersconfigEditor.this) {
+						handleActivate();
+					}
+				}
+
+				@Override
+				public void partBroughtToTop(IWorkbenchPart p) {
+					// Ignore.
+				}
+
+				@Override
+				public void partClosed(IWorkbenchPart p) {
+					// Ignore.
+				}
+
+				@Override
+				public void partDeactivated(IWorkbenchPart p) {
+					// Ignore.
+				}
+
+				@Override
+				public void partOpened(IWorkbenchPart p) {
+					// Ignore.
+				}
+			};
+
+	/**
+	 * Resources that have been removed since last activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+	/**
+	 * Resources that have been changed since last activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<Resource> changedResources = new ArrayList<Resource>();
+
+	/**
+	 * Resources that have been saved.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<Resource> savedResources = new ArrayList<Resource>();
+
+	/**
+	 * Map to store the diagnostic associated with a resource.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>();
+
+	/**
+	 * Controls whether the problem indication should be updated.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected boolean updateProblemIndication = true;
+
+	/**
+	 * Adapter used to update the problem indication when resources are demanded loaded.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected EContentAdapter problemIndicationAdapter =
+			new EContentAdapter() {
+				@Override
+				public void notifyChanged(Notification notification) {
+					if (notification.getNotifier() instanceof Resource) {
+						switch (notification.getFeatureID(Resource.class)) {
+						case Resource.RESOURCE__IS_LOADED:
+						case Resource.RESOURCE__ERRORS:
+						case Resource.RESOURCE__WARNINGS: {
+							Resource resource = (Resource) notification.getNotifier();
+							Diagnostic diagnostic = analyzeResourceProblems(resource, null);
+							if (diagnostic.getSeverity() != Diagnostic.OK) {
+								resourceToDiagnosticMap.put(resource, diagnostic);
+							}
+							else {
+								resourceToDiagnosticMap.remove(resource);
+							}
+
+							if (updateProblemIndication) {
+								getSite().getShell().getDisplay().asyncExec
+										(new Runnable() {
+											@Override
+											public void run() {
+												updateProblemIndication();
+											}
+										});
+							}
+							break;
+						}
+						}
+					}
+					else {
+						super.notifyChanged(notification);
+					}
+				}
+
+				@Override
+				protected void setTarget(Resource target) {
+					basicSetTarget(target);
+				}
+
+				@Override
+				protected void unsetTarget(Resource target) {
+					basicUnsetTarget(target);
+					resourceToDiagnosticMap.remove(target);
+					if (updateProblemIndication) {
+						getSite().getShell().getDisplay().asyncExec
+								(new Runnable() {
+									@Override
+									public void run() {
+										updateProblemIndication();
+									}
+								});
+					}
+				}
+			};
+
+	/**
+	 * This listens for workspace changes.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IResourceChangeListener resourceChangeListener =
+			new IResourceChangeListener() {
+				@Override
+				public void resourceChanged(IResourceChangeEvent event) {
+					IResourceDelta delta = event.getDelta();
+					try {
+						class ResourceDeltaVisitor implements IResourceDeltaVisitor {
+							protected ResourceSet resourceSet = editingDomain.getResourceSet();
+							protected Collection<Resource> changedResources = new ArrayList<Resource>();
+							protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+							@Override
+							public boolean visit(IResourceDelta delta) {
+								if (delta.getResource().getType() == IResource.FILE) {
+									if (delta.getKind() == IResourceDelta.REMOVED ||
+											delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) {
+										Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false);
+										if (resource != null) {
+											if (delta.getKind() == IResourceDelta.REMOVED) {
+												removedResources.add(resource);
+											}
+											else if (!savedResources.remove(resource)) {
+												changedResources.add(resource);
+											}
+										}
+									}
+									return false;
+								}
+
+								return true;
+							}
+
+							public Collection<Resource> getChangedResources() {
+								return changedResources;
+							}
+
+							public Collection<Resource> getRemovedResources() {
+								return removedResources;
+							}
+						}
+
+						final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor();
+						delta.accept(visitor);
+
+						if (!visitor.getRemovedResources().isEmpty()) {
+							getSite().getShell().getDisplay().asyncExec
+									(new Runnable() {
+										@Override
+										public void run() {
+											removedResources.addAll(visitor.getRemovedResources());
+											if (!isDirty()) {
+												getSite().getPage().closeEditor(LayersconfigEditor.this, false);
+											}
+										}
+									});
+						}
+
+						if (!visitor.getChangedResources().isEmpty()) {
+							getSite().getShell().getDisplay().asyncExec
+									(new Runnable() {
+										@Override
+										public void run() {
+											changedResources.addAll(visitor.getChangedResources());
+											if (getSite().getPage().getActiveEditor() == LayersconfigEditor.this) {
+												handleActivate();
+											}
+										}
+									});
+						}
+					}
+					catch (CoreException exception) {
+						LayersconfigEditorPlugin.INSTANCE.log(exception);
+					}
+				}
+			};
+
+	/**
+	 * Handles activation of the editor or it's associated views.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void handleActivate() {
+		// Recompute the read only state.
+		//
+		if (editingDomain.getResourceToReadOnlyMap() != null) {
+			editingDomain.getResourceToReadOnlyMap().clear();
+
+			// Refresh any actions that may become enabled or disabled.
+			//
+			setSelection(getSelection());
+		}
+
+		if (!removedResources.isEmpty()) {
+			if (handleDirtyConflict()) {
+				getSite().getPage().closeEditor(LayersconfigEditor.this, false);
+			}
+			else {
+				removedResources.clear();
+				changedResources.clear();
+				savedResources.clear();
+			}
+		}
+		else if (!changedResources.isEmpty()) {
+			changedResources.removeAll(savedResources);
+			handleChangedResources();
+			changedResources.clear();
+			savedResources.clear();
+		}
+	}
+
+	/**
+	 * Handles what to do with changed resources on activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void handleChangedResources() {
+		if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) {
+			if (isDirty()) {
+				changedResources.addAll(editingDomain.getResourceSet().getResources());
+			}
+			editingDomain.getCommandStack().flush();
+
+			updateProblemIndication = false;
+			for (Resource resource : changedResources) {
+				if (resource.isLoaded()) {
+					resource.unload();
+					try {
+						resource.load(Collections.EMPTY_MAP);
+					} catch (IOException exception) {
+						if (!resourceToDiagnosticMap.containsKey(resource)) {
+							resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+						}
+					}
+				}
+			}
+
+			if (AdapterFactoryEditingDomain.isStale(editorSelection)) {
+				setSelection(StructuredSelection.EMPTY);
+			}
+
+			updateProblemIndication = true;
+			updateProblemIndication();
+		}
+	}
+
+	/**
+	 * Updates the problems indication with the information described in the specified diagnostic.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void updateProblemIndication() {
+		if (updateProblemIndication) {
+			BasicDiagnostic diagnostic =
+					new BasicDiagnostic
+					(Diagnostic.OK,
+							"org.eclipse.papyrus.layers.stackmodel.editor",
+							0,
+							null,
+							new Object[] { editingDomain.getResourceSet() });
+			for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) {
+				if (childDiagnostic.getSeverity() != Diagnostic.OK) {
+					diagnostic.add(childDiagnostic);
+				}
+			}
+
+			int lastEditorPage = getPageCount() - 1;
+			if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) {
+				((ProblemEditorPart) getEditor(lastEditorPage)).setDiagnostic(diagnostic);
+				if (diagnostic.getSeverity() != Diagnostic.OK) {
+					setActivePage(lastEditorPage);
+				}
+			}
+			else if (diagnostic.getSeverity() != Diagnostic.OK) {
+				ProblemEditorPart problemEditorPart = new ProblemEditorPart();
+				problemEditorPart.setDiagnostic(diagnostic);
+				problemEditorPart.setMarkerHelper(markerHelper);
+				try {
+					addPage(++lastEditorPage, problemEditorPart, getEditorInput());
+					setPageText(lastEditorPage, problemEditorPart.getPartName());
+					setActivePage(lastEditorPage);
+					showTabs();
+				} catch (PartInitException exception) {
+					LayersconfigEditorPlugin.INSTANCE.log(exception);
+				}
+			}
+
+			if (markerHelper.hasMarkers(editingDomain.getResourceSet())) {
+				markerHelper.deleteMarkers(editingDomain.getResourceSet());
+				if (diagnostic.getSeverity() != Diagnostic.OK) {
+					try {
+						markerHelper.createMarkers(diagnostic);
+					} catch (CoreException exception) {
+						LayersconfigEditorPlugin.INSTANCE.log(exception);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * Shows a dialog that asks if conflicting changes should be discarded.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected boolean handleDirtyConflict() {
+		return MessageDialog.openQuestion
+				(getSite().getShell(),
+						getString("_UI_FileConflict_label"),
+						getString("_WARN_FileConflict"));
+	}
+
+	/**
+	 * This creates a model editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayersconfigEditor() {
+		super();
+		initializeEditingDomain();
+	}
+
+	/**
+	 * This sets up the editing domain for the model editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void initializeEditingDomain() {
+		// Create an adapter factory that yields item providers.
+		//
+		adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+		adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new LayersconfigItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
+
+		// Create the command stack that will notify this editor as commands are executed.
+		//
+		BasicCommandStack commandStack = new BasicCommandStack();
+
+		// Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus.
+		//
+		commandStack.addCommandStackListener
+				(new CommandStackListener() {
+					@Override
+					public void commandStackChanged(final EventObject event) {
+						getContainer().getDisplay().asyncExec
+								(new Runnable() {
+									@Override
+									public void run() {
+										firePropertyChange(IEditorPart.PROP_DIRTY);
+
+										// Try to select the affected objects.
+										//
+										Command mostRecentCommand = ((CommandStack) event.getSource()).getMostRecentCommand();
+										if (mostRecentCommand != null) {
+											setSelectionToViewer(mostRecentCommand.getAffectedObjects());
+										}
+										for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext();) {
+											PropertySheetPage propertySheetPage = i.next();
+											if (propertySheetPage.getControl().isDisposed()) {
+												i.remove();
+											}
+											else {
+												propertySheetPage.refresh();
+											}
+										}
+									}
+								});
+					}
+				});
+
+		// Create the editing domain with a special command stack.
+		//
+		editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());
+	}
+
+	/**
+	 * This is here for the listener to be able to call it.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void firePropertyChange(int action) {
+		super.firePropertyChange(action);
+	}
+
+	/**
+	 * This sets the selection into whichever viewer is active.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void setSelectionToViewer(Collection<?> collection) {
+		final Collection<?> theSelection = collection;
+		// Make sure it's okay.
+		//
+		if (theSelection != null && !theSelection.isEmpty()) {
+			Runnable runnable =
+					new Runnable() {
+						@Override
+						public void run() {
+							// Try to select the items in the current content viewer of the editor.
+							//
+							if (currentViewer != null) {
+								currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true);
+							}
+						}
+					};
+			getSite().getShell().getDisplay().asyncExec(runnable);
+		}
+	}
+
+	/**
+	 * This returns the editing domain as required by the {@link IEditingDomainProvider} interface.
+	 * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain} and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EditingDomain getEditingDomain() {
+		return editingDomain;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider {
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) {
+			super(adapterFactory);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		@Override
+		public Object[] getElements(Object object) {
+			Object parent = super.getParent(object);
+			return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		@Override
+		public Object[] getChildren(Object object) {
+			Object parent = super.getParent(object);
+			return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		@Override
+		public boolean hasChildren(Object object) {
+			Object parent = super.getParent(object);
+			return parent != null;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		@Override
+		public Object getParent(Object object) {
+			return null;
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void setCurrentViewerPane(ViewerPane viewerPane) {
+		if (currentViewerPane != viewerPane) {
+			if (currentViewerPane != null) {
+				currentViewerPane.showFocus(false);
+			}
+			currentViewerPane = viewerPane;
+		}
+		setCurrentViewer(currentViewerPane.getViewer());
+	}
+
+	/**
+	 * This makes sure that one content viewer, either for the current page or the outline view, if it has focus,
+	 * is the current one.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void setCurrentViewer(Viewer viewer) {
+		// If it is changing...
+		//
+		if (currentViewer != viewer) {
+			if (selectionChangedListener == null) {
+				// Create the listener on demand.
+				//
+				selectionChangedListener =
+						new ISelectionChangedListener() {
+							// This just notifies those things that are affected by the section.
+							//
+							@Override
+							public void selectionChanged(SelectionChangedEvent selectionChangedEvent) {
+								setSelection(selectionChangedEvent.getSelection());
+							}
+						};
+			}
+
+			// Stop listening to the old one.
+			//
+			if (currentViewer != null) {
+				currentViewer.removeSelectionChangedListener(selectionChangedListener);
+			}
+
+			// Start listening to the new one.
+			//
+			if (viewer != null) {
+				viewer.addSelectionChangedListener(selectionChangedListener);
+			}
+
+			// Remember it.
+			//
+			currentViewer = viewer;
+
+			// Set the editors selection based on the current viewer's selection.
+			//
+			setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection());
+		}
+	}
+
+	/**
+	 * This returns the viewer as required by the {@link IViewerProvider} interface.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Viewer getViewer() {
+		return currentViewer;
+	}
+
+	/**
+	 * This creates a context menu for the viewer and adds a listener as well registering the menu for extension.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void createContextMenuFor(StructuredViewer viewer) {
+		MenuManager contextMenu = new MenuManager("#PopUp");
+		contextMenu.add(new Separator("additions"));
+		contextMenu.setRemoveAllWhenShown(true);
+		contextMenu.addMenuListener(this);
+		Menu menu = contextMenu.createContextMenu(viewer.getControl());
+		viewer.getControl().setMenu(menu);
+		getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
+
+		int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
+		Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() };
+		viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
+		viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
+	}
+
+	/**
+	 * This is the method called to load a resource into the editing domain's resource set based on the editor's input.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void createModel() {
+		URI resourceURI = EditUIUtil.getURI(getEditorInput());
+		Exception exception = null;
+		Resource resource = null;
+		try {
+			// Load the resource through the editing domain.
+			//
+			resource = editingDomain.getResourceSet().getResource(resourceURI, true);
+		} catch (Exception e) {
+			exception = e;
+			resource = editingDomain.getResourceSet().getResource(resourceURI, false);
+		}
+
+		Diagnostic diagnostic = analyzeResourceProblems(resource, exception);
+		if (diagnostic.getSeverity() != Diagnostic.OK) {
+			resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+		}
+		editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter);
+	}
+
+	/**
+	 * Returns a diagnostic describing the errors and warnings listed in the resource
+	 * and the specified exception (if any).
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) {
+		if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) {
+			BasicDiagnostic basicDiagnostic =
+					new BasicDiagnostic
+					(Diagnostic.ERROR,
+							"org.eclipse.papyrus.layers.stackmodel.editor",
+							0,
+							getString("_UI_CreateModelError_message", resource.getURI()),
+							new Object[] { exception == null ? (Object) resource : exception });
+			basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true));
+			return basicDiagnostic;
+		}
+		else if (exception != null) {
+			return new BasicDiagnostic(Diagnostic.ERROR,
+					"org.eclipse.papyrus.layers.stackmodel.editor",
+					0,
+					getString("_UI_CreateModelError_message", resource.getURI()),
+					new Object[] { exception });
+		}
+		else {
+			return Diagnostic.OK_INSTANCE;
+		}
+	}
+
+	/**
+	 * This is the method used by the framework to install your own controls.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void createPages() {
+		// Creates the model from the editor input
+		//
+		createModel();
+
+		// Only creates the other pages if there is something that can be edited
+		//
+		if (!getEditingDomain().getResourceSet().getResources().isEmpty()) {
+			// Create a page for the selection tree view.
+			//
+			{
+				ViewerPane viewerPane =
+						new ViewerPane(getSite().getPage(), LayersconfigEditor.this) {
+							@Override
+							public Viewer createViewer(Composite composite) {
+								Tree tree = new Tree(composite, SWT.MULTI);
+								TreeViewer newTreeViewer = new TreeViewer(tree);
+								return newTreeViewer;
+							}
+
+							@Override
+							public void requestActivation() {
+								super.requestActivation();
+								setCurrentViewerPane(this);
+							}
+						};
+				viewerPane.createControl(getContainer());
+
+				selectionViewer = (TreeViewer) viewerPane.getViewer();
+				selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+
+				selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+				selectionViewer.setInput(editingDomain.getResourceSet());
+				selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+				viewerPane.setTitle(editingDomain.getResourceSet());
+
+				new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory);
+
+				createContextMenuFor(selectionViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_SelectionPage_label"));
+			}
+
+			// Create a page for the parent tree view.
+			//
+			{
+				ViewerPane viewerPane =
+						new ViewerPane(getSite().getPage(), LayersconfigEditor.this) {
+							@Override
+							public Viewer createViewer(Composite composite) {
+								Tree tree = new Tree(composite, SWT.MULTI);
+								TreeViewer newTreeViewer = new TreeViewer(tree);
+								return newTreeViewer;
+							}
+
+							@Override
+							public void requestActivation() {
+								super.requestActivation();
+								setCurrentViewerPane(this);
+							}
+						};
+				viewerPane.createControl(getContainer());
+
+				parentViewer = (TreeViewer) viewerPane.getViewer();
+				parentViewer.setAutoExpandLevel(30);
+				parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory));
+				parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(parentViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_ParentPage_label"));
+			}
+
+			// This is the page for the list viewer
+			//
+			{
+				ViewerPane viewerPane =
+						new ViewerPane(getSite().getPage(), LayersconfigEditor.this) {
+							@Override
+							public Viewer createViewer(Composite composite) {
+								return new ListViewer(composite);
+							}
+
+							@Override
+							public void requestActivation() {
+								super.requestActivation();
+								setCurrentViewerPane(this);
+							}
+						};
+				viewerPane.createControl(getContainer());
+				listViewer = (ListViewer) viewerPane.getViewer();
+				listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(listViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_ListPage_label"));
+			}
+
+			// This is the page for the tree viewer
+			//
+			{
+				ViewerPane viewerPane =
+						new ViewerPane(getSite().getPage(), LayersconfigEditor.this) {
+							@Override
+							public Viewer createViewer(Composite composite) {
+								return new TreeViewer(composite);
+							}
+
+							@Override
+							public void requestActivation() {
+								super.requestActivation();
+								setCurrentViewerPane(this);
+							}
+						};
+				viewerPane.createControl(getContainer());
+				treeViewer = (TreeViewer) viewerPane.getViewer();
+				treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory);
+
+				createContextMenuFor(treeViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TreePage_label"));
+			}
+
+			// This is the page for the table viewer.
+			//
+			{
+				ViewerPane viewerPane =
+						new ViewerPane(getSite().getPage(), LayersconfigEditor.this) {
+							@Override
+							public Viewer createViewer(Composite composite) {
+								return new TableViewer(composite);
+							}
+
+							@Override
+							public void requestActivation() {
+								super.requestActivation();
+								setCurrentViewerPane(this);
+							}
+						};
+				viewerPane.createControl(getContainer());
+				tableViewer = (TableViewer) viewerPane.getViewer();
+
+				Table table = tableViewer.getTable();
+				TableLayout layout = new TableLayout();
+				table.setLayout(layout);
+				table.setHeaderVisible(true);
+				table.setLinesVisible(true);
+
+				TableColumn objectColumn = new TableColumn(table, SWT.NONE);
+				layout.addColumnData(new ColumnWeightData(3, 100, true));
+				objectColumn.setText(getString("_UI_ObjectColumn_label"));
+				objectColumn.setResizable(true);
+
+				TableColumn selfColumn = new TableColumn(table, SWT.NONE);
+				layout.addColumnData(new ColumnWeightData(2, 100, true));
+				selfColumn.setText(getString("_UI_SelfColumn_label"));
+				selfColumn.setResizable(true);
+
+				tableViewer.setColumnProperties(new String[] { "a", "b" });
+				tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(tableViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TablePage_label"));
+			}
+
+			// This is the page for the table tree viewer.
+			//
+			{
+				ViewerPane viewerPane =
+						new ViewerPane(getSite().getPage(), LayersconfigEditor.this) {
+							@Override
+							public Viewer createViewer(Composite composite) {
+								return new TreeViewer(composite);
+							}
+
+							@Override
+							public void requestActivation() {
+								super.requestActivation();
+								setCurrentViewerPane(this);
+							}
+						};
+				viewerPane.createControl(getContainer());
+
+				treeViewerWithColumns = (TreeViewer) viewerPane.getViewer();
+
+				Tree tree = treeViewerWithColumns.getTree();
+				tree.setLayoutData(new FillLayout());
+				tree.setHeaderVisible(true);
+				tree.setLinesVisible(true);
+
+				TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE);
+				objectColumn.setText(getString("_UI_ObjectColumn_label"));
+				objectColumn.setResizable(true);
+				objectColumn.setWidth(250);
+
+				TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE);
+				selfColumn.setText(getString("_UI_SelfColumn_label"));
+				selfColumn.setResizable(true);
+				selfColumn.setWidth(200);
+
+				treeViewerWithColumns.setColumnProperties(new String[] { "a", "b" });
+				treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(treeViewerWithColumns);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label"));
+			}
+
+			getSite().getShell().getDisplay().asyncExec
+					(new Runnable() {
+						@Override
+						public void run() {
+							setActivePage(0);
+						}
+					});
+		}
+
+		// Ensures that this editor will only display the page's tab
+		// area if there are more than one page
+		//
+		getContainer().addControlListener
+				(new ControlAdapter() {
+					boolean guard = false;
+
+					@Override
+					public void controlResized(ControlEvent event) {
+						if (!guard) {
+							guard = true;
+							hideTabs();
+							guard = false;
+						}
+					}
+				});
+
+		getSite().getShell().getDisplay().asyncExec
+				(new Runnable() {
+					@Override
+					public void run() {
+						updateProblemIndication();
+					}
+				});
+	}
+
+	/**
+	 * If there is just one page in the multi-page editor part,
+	 * this hides the single tab at the bottom.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void hideTabs() {
+		if (getPageCount() <= 1) {
+			setPageText(0, "");
+			if (getContainer() instanceof CTabFolder) {
+				((CTabFolder) getContainer()).setTabHeight(1);
+				Point point = getContainer().getSize();
+				getContainer().setSize(point.x, point.y + 6);
+			}
+		}
+	}
+
+	/**
+	 * If there is more than one page in the multi-page editor part,
+	 * this shows the tabs at the bottom.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void showTabs() {
+		if (getPageCount() > 1) {
+			setPageText(0, getString("_UI_SelectionPage_label"));
+			if (getContainer() instanceof CTabFolder) {
+				((CTabFolder) getContainer()).setTabHeight(SWT.DEFAULT);
+				Point point = getContainer().getSize();
+				getContainer().setSize(point.x, point.y - 6);
+			}
+		}
+	}
+
+	/**
+	 * This is used to track the active viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void pageChange(int pageIndex) {
+		super.pageChange(pageIndex);
+
+		if (contentOutlinePage != null) {
+			handleContentOutlineSelection(contentOutlinePage.getSelection());
+		}
+	}
+
+	/**
+	 * This is how the framework determines which interfaces we implement.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@SuppressWarnings("rawtypes")
+	@Override
+	public Object getAdapter(Class key) {
+		if (key.equals(IContentOutlinePage.class)) {
+			return showOutlineView() ? getContentOutlinePage() : null;
+		}
+		else if (key.equals(IPropertySheetPage.class)) {
+			return getPropertySheetPage();
+		}
+		else if (key.equals(IGotoMarker.class)) {
+			return this;
+		}
+		else {
+			return super.getAdapter(key);
+		}
+	}
+
+	/**
+	 * This accesses a cached version of the content outliner.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public IContentOutlinePage getContentOutlinePage() {
+		if (contentOutlinePage == null) {
+			// The content outline is just a tree.
+			//
+			class MyContentOutlinePage extends ContentOutlinePage {
+				@Override
+				public void createControl(Composite parent) {
+					super.createControl(parent);
+					contentOutlineViewer = getTreeViewer();
+					contentOutlineViewer.addSelectionChangedListener(this);
+
+					// Set up the tree viewer.
+					//
+					contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+					contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+					contentOutlineViewer.setInput(editingDomain.getResourceSet());
+
+					// Make sure our popups work.
+					//
+					createContextMenuFor(contentOutlineViewer);
+
+					if (!editingDomain.getResourceSet().getResources().isEmpty()) {
+						// Select the root object in the view.
+						//
+						contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+					}
+				}
+
+				@Override
+				public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) {
+					super.makeContributions(menuManager, toolBarManager, statusLineManager);
+					contentOutlineStatusLineManager = statusLineManager;
+				}
+
+				@Override
+				public void setActionBars(IActionBars actionBars) {
+					super.setActionBars(actionBars);
+					getActionBarContributor().shareGlobalActions(this, actionBars);
+				}
+			}
+
+			contentOutlinePage = new MyContentOutlinePage();
+
+			// Listen to selection so that we can handle it is a special way.
+			//
+			contentOutlinePage.addSelectionChangedListener
+					(new ISelectionChangedListener() {
+						// This ensures that we handle selections correctly.
+						//
+						@Override
+						public void selectionChanged(SelectionChangedEvent event) {
+							handleContentOutlineSelection(event.getSelection());
+						}
+					});
+		}
+
+		return contentOutlinePage;
+	}
+
+	/**
+	 * This accesses a cached version of the property sheet.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public IPropertySheetPage getPropertySheetPage() {
+		PropertySheetPage propertySheetPage =
+				new ExtendedPropertySheetPage(editingDomain) {
+					@Override
+					public void setSelectionToViewer(List<?> selection) {
+						LayersconfigEditor.this.setSelectionToViewer(selection);
+						LayersconfigEditor.this.setFocus();
+					}
+
+					@Override
+					public void setActionBars(IActionBars actionBars) {
+						super.setActionBars(actionBars);
+						getActionBarContributor().shareGlobalActions(this, actionBars);
+					}
+				};
+		propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
+		propertySheetPages.add(propertySheetPage);
+
+		return propertySheetPage;
+	}
+
+	/**
+	 * This deals with how we want selection in the outliner to affect the other views.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void handleContentOutlineSelection(ISelection selection) {
+		if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) {
+			Iterator<?> selectedElements = ((IStructuredSelection) selection).iterator();
+			if (selectedElements.hasNext()) {
+				// Get the first selected element.
+				//
+				Object selectedElement = selectedElements.next();
+
+				// If it's the selection viewer, then we want it to select the same selection as this selection.
+				//
+				if (currentViewerPane.getViewer() == selectionViewer) {
+					ArrayList<Object> selectionList = new ArrayList<Object>();
+					selectionList.add(selectedElement);
+					while (selectedElements.hasNext()) {
+						selectionList.add(selectedElements.next());
+					}
+
+					// Set the selection to the widget.
+					//
+					selectionViewer.setSelection(new StructuredSelection(selectionList));
+				}
+				else {
+					// Set the input to the widget.
+					//
+					if (currentViewerPane.getViewer().getInput() != selectedElement) {
+						currentViewerPane.getViewer().setInput(selectedElement);
+						currentViewerPane.setTitle(selectedElement);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * This is for implementing {@link IEditorPart} and simply tests the command stack.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean isDirty() {
+		return ((BasicCommandStack) editingDomain.getCommandStack()).isSaveNeeded();
+	}
+
+	/**
+	 * This is for implementing {@link IEditorPart} and simply saves the model file.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void doSave(IProgressMonitor progressMonitor) {
+		// Save only resources that have actually changed.
+		//
+		final Map<Object, Object> saveOptions = new HashMap<Object, Object>();
+		saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
+		saveOptions.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED);
+
+		// Do the work within an operation because this is a long running activity that modifies the workbench.
+		//
+		WorkspaceModifyOperation operation =
+				new WorkspaceModifyOperation() {
+					// This is the method that gets invoked when the operation runs.
+					//
+					@Override
+					public void execute(IProgressMonitor monitor) {
+						// Save the resources to the file system.
+						//
+						boolean first = true;
+						for (Resource resource : editingDomain.getResourceSet().getResources()) {
+							if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) {
+								try {
+									long timeStamp = resource.getTimeStamp();
+									resource.save(saveOptions);
+									if (resource.getTimeStamp() != timeStamp) {
+										savedResources.add(resource);
+									}
+								}
+								catch (Exception exception) {
+									resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+								}
+								first = false;
+							}
+						}
+					}
+				};
+
+		updateProblemIndication = false;
+		try {
+			// This runs the options, and shows progress.
+			//
+			new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation);
+
+			// Refresh the necessary state.
+			//
+			((BasicCommandStack) editingDomain.getCommandStack()).saveIsDone();
+			firePropertyChange(IEditorPart.PROP_DIRTY);
+		} catch (Exception exception) {
+			// Something went wrong that shouldn't.
+			//
+			LayersconfigEditorPlugin.INSTANCE.log(exception);
+		}
+		updateProblemIndication = true;
+		updateProblemIndication();
+	}
+
+	/**
+	 * This returns whether something has been persisted to the URI of the specified resource.
+	 * The implementation uses the URI converter from the editor's resource set to try to open an input stream.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected boolean isPersisted(Resource resource) {
+		boolean result = false;
+		try {
+			InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI());
+			if (stream != null) {
+				result = true;
+				stream.close();
+			}
+		} catch (IOException e) {
+			// Ignore
+		}
+		return result;
+	}
+
+	/**
+	 * This always returns true because it is not currently supported.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean isSaveAsAllowed() {
+		return true;
+	}
+
+	/**
+	 * This also changes the editor's input.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void doSaveAs() {
+		SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell());
+		saveAsDialog.open();
+		IPath path = saveAsDialog.getResult();
+		if (path != null) {
+			IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+			if (file != null) {
+				doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file));
+			}
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void doSaveAs(URI uri, IEditorInput editorInput) {
+		(editingDomain.getResourceSet().getResources().get(0)).setURI(uri);
+		setInputWithNotify(editorInput);
+		setPartName(editorInput.getName());
+		IProgressMonitor progressMonitor =
+				getActionBars().getStatusLineManager() != null ?
+						getActionBars().getStatusLineManager().getProgressMonitor() :
+						new NullProgressMonitor();
+		doSave(progressMonitor);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void gotoMarker(IMarker marker) {
+		List<?> targetObjects = markerHelper.getTargetObjects(editingDomain, marker);
+		if (!targetObjects.isEmpty()) {
+			setSelectionToViewer(targetObjects);
+		}
+	}
+
+	/**
+	 * This is called during startup.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void init(IEditorSite site, IEditorInput editorInput) {
+		setSite(site);
+		setInputWithNotify(editorInput);
+		setPartName(editorInput.getName());
+		site.setSelectionProvider(this);
+		site.getPage().addPartListener(partListener);
+		ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setFocus() {
+		if (currentViewerPane != null) {
+			currentViewerPane.setFocus();
+		}
+		else {
+			getControl(getActivePage()).setFocus();
+		}
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void addSelectionChangedListener(ISelectionChangedListener listener) {
+		selectionChangedListeners.add(listener);
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void removeSelectionChangedListener(ISelectionChangedListener listener) {
+		selectionChangedListeners.remove(listener);
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ISelection getSelection() {
+		return editorSelection;
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection.
+	 * Calling this result will notify the listeners.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setSelection(ISelection selection) {
+		editorSelection = selection;
+
+		for (ISelectionChangedListener listener : selectionChangedListeners) {
+			listener.selectionChanged(new SelectionChangedEvent(this, selection));
+		}
+		setStatusLineManager(selection);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void setStatusLineManager(ISelection selection) {
+		IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ?
+				contentOutlineStatusLineManager : getActionBars().getStatusLineManager();
+
+		if (statusLineManager != null) {
+			if (selection instanceof IStructuredSelection) {
+				Collection<?> collection = ((IStructuredSelection) selection).toList();
+				switch (collection.size()) {
+				case 0: {
+					statusLineManager.setMessage(getString("_UI_NoObjectSelected"));
+					break;
+				}
+				case 1: {
+					String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next());
+					statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text));
+					break;
+				}
+				default: {
+					statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size())));
+					break;
+				}
+				}
+			}
+			else {
+				statusLineManager.setMessage("");
+			}
+		}
+	}
+
+	/**
+	 * This looks up a string in the plugin's plugin.properties file.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private static String getString(String key) {
+		return LayersconfigEditorPlugin.INSTANCE.getString(key);
+	}
+
+	/**
+	 * This looks up a string in plugin.properties, making a substitution.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private static String getString(String key, Object s1) {
+		return LayersconfigEditorPlugin.INSTANCE.getString(key, new Object[] { s1 });
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void menuAboutToShow(IMenuManager menuManager) {
+		((IMenuListener) getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public EditingDomainActionBarContributor getActionBarContributor() {
+		return (EditingDomainActionBarContributor) getEditorSite().getActionBarContributor();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public IActionBars getActionBars() {
+		return getActionBarContributor().getActionBars();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public AdapterFactory getAdapterFactory() {
+		return adapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void dispose() {
+		updateProblemIndication = false;
+
+		ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener);
+
+		getSite().getPage().removePartListener(partListener);
+
+		adapterFactory.dispose();
+
+		if (getActionBarContributor().getActiveEditor() == this) {
+			getActionBarContributor().setActiveEditor(null);
+		}
+
+		for (PropertySheetPage propertySheetPage : propertySheetPages) {
+			propertySheetPage.dispose();
+		}
+
+		if (contentOutlinePage != null) {
+			contentOutlinePage.dispose();
+		}
+
+		super.dispose();
+	}
+
+	/**
+	 * Returns whether the outline view should be presented to the user.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected boolean showOutlineView() {
+		return true;
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/configmodel/layersconfig/presentation/LayersconfigEditorPlugin.java b/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/configmodel/layersconfig/presentation/LayersconfigEditorPlugin.java
new file mode 100755
index 0000000..55a50b1
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/configmodel/layersconfig/presentation/LayersconfigEditorPlugin.java
@@ -0,0 +1,106 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.presentation;
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.ui.EclipseUIPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the Layersconfig editor plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public final class LayersconfigEditorPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static final LayersconfigEditorPlugin INSTANCE = new LayersconfigEditorPlugin();
+
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayersconfigEditorPlugin() {
+		super(new ResourceLocator[] {
+				});
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static class Implementation extends EclipseUIPlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/configmodel/layersconfig/presentation/LayersconfigModelWizard.java b/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/configmodel/layersconfig/presentation/LayersconfigModelWizard.java
new file mode 100755
index 0000000..6721b38
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/configmodel/layersconfig/presentation/LayersconfigModelWizard.java
@@ -0,0 +1,646 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.presentation;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.StringTokenizer;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.common.CommonPlugin;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.XMLResource;
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigFactory;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.provider.LayersconfigEditPlugin;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.ISetSelectionTarget;
+
+
+/**
+ * This is a simple wizard for creating a new model file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayersconfigModelWizard extends Wizard implements INewWizard {
+	/**
+	 * The supported extensions for created files.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static final List<String> FILE_EXTENSIONS =
+			Collections.unmodifiableList(Arrays.asList(LayersconfigEditorPlugin.INSTANCE.getString("_UI_LayersconfigEditorFilenameExtensions").split("\\s*,\\s*")));
+
+	/**
+	 * A formatted list of supported file extensions, suitable for display.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static final String FORMATTED_FILE_EXTENSIONS =
+			LayersconfigEditorPlugin.INSTANCE.getString("_UI_LayersconfigEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", ");
+
+	/**
+	 * This caches an instance of the model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayersconfigPackage layersconfigPackage = LayersconfigPackage.eINSTANCE;
+
+	/**
+	 * This caches an instance of the model factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayersconfigFactory layersconfigFactory = layersconfigPackage.getLayersconfigFactory();
+
+	/**
+	 * This is the file creation page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayersconfigModelWizardNewFileCreationPage newFileCreationPage;
+
+	/**
+	 * This is the initial object creation page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayersconfigModelWizardInitialObjectCreationPage initialObjectCreationPage;
+
+	/**
+	 * Remember the selection during initialization for populating the default container.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IStructuredSelection selection;
+
+	/**
+	 * Remember the workbench during initialization.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IWorkbench workbench;
+
+	/**
+	 * Caches the names of the types that can be created as the root object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected List<String> initialObjectNames;
+
+	/**
+	 * This just records the information.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+		this.workbench = workbench;
+		this.selection = selection;
+		setWindowTitle(LayersconfigEditorPlugin.INSTANCE.getString("_UI_Wizard_label"));
+		setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(LayersconfigEditorPlugin.INSTANCE.getImage("full/wizban/NewLayersconfig")));
+	}
+
+	/**
+	 * Returns the names of the types that can be created as the root object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<String> getInitialObjectNames() {
+		if (initialObjectNames == null) {
+			initialObjectNames = new ArrayList<String>();
+			for (EClassifier eClassifier : layersconfigPackage.getEClassifiers()) {
+				if (eClassifier instanceof EClass) {
+					EClass eClass = (EClass) eClassifier;
+					if (!eClass.isAbstract()) {
+						initialObjectNames.add(eClass.getName());
+					}
+				}
+			}
+			Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator());
+		}
+		return initialObjectNames;
+	}
+
+	/**
+	 * Create a new model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected EObject createInitialModel() {
+		EClass eClass = (EClass) layersconfigPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName());
+		EObject rootObject = layersconfigFactory.create(eClass);
+		return rootObject;
+	}
+
+	/**
+	 * Do the work after everything is specified.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean performFinish() {
+		try {
+			// Remember the file.
+			//
+			final IFile modelFile = getModelFile();
+
+			// Do the work within an operation.
+			//
+			WorkspaceModifyOperation operation =
+					new WorkspaceModifyOperation() {
+						@Override
+						protected void execute(IProgressMonitor progressMonitor) {
+							try {
+								// Create a resource set
+								//
+								ResourceSet resourceSet = new ResourceSetImpl();
+
+								// Get the URI of the model file.
+								//
+								URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true);
+
+								// Create a resource for this file.
+								//
+								Resource resource = resourceSet.createResource(fileURI);
+
+								// Add the initial model object to the contents.
+								//
+								EObject rootObject = createInitialModel();
+								if (rootObject != null) {
+									resource.getContents().add(rootObject);
+								}
+
+								// Save the contents of the resource to the file system.
+								//
+								Map<Object, Object> options = new HashMap<Object, Object>();
+								options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding());
+								resource.save(options);
+							}
+							catch (Exception exception) {
+								LayersconfigEditorPlugin.INSTANCE.log(exception);
+							}
+							finally {
+								progressMonitor.done();
+							}
+						}
+					};
+
+			getContainer().run(false, false, operation);
+
+			// Select the new file resource in the current view.
+			//
+			IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+			IWorkbenchPage page = workbenchWindow.getActivePage();
+			final IWorkbenchPart activePart = page.getActivePart();
+			if (activePart instanceof ISetSelectionTarget) {
+				final ISelection targetSelection = new StructuredSelection(modelFile);
+				getShell().getDisplay().asyncExec
+						(new Runnable() {
+							@Override
+							public void run() {
+								((ISetSelectionTarget) activePart).selectReveal(targetSelection);
+							}
+						});
+			}
+
+			// Open an editor on the new file.
+			//
+			try {
+				page.openEditor
+						(new FileEditorInput(modelFile),
+								workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId());
+			} catch (PartInitException exception) {
+				MessageDialog.openError(workbenchWindow.getShell(), LayersconfigEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage());
+				return false;
+			}
+
+			return true;
+		} catch (Exception exception) {
+			LayersconfigEditorPlugin.INSTANCE.log(exception);
+			return false;
+		}
+	}
+
+	/**
+	 * This is the one page of the wizard.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public class LayersconfigModelWizardNewFileCreationPage extends WizardNewFileCreationPage {
+		/**
+		 * Pass in the selection.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		public LayersconfigModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) {
+			super(pageId, selection);
+		}
+
+		/**
+		 * The framework calls this to see if the file is correct.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		@Override
+		protected boolean validatePage() {
+			if (super.validatePage()) {
+				String extension = new Path(getFileName()).getFileExtension();
+				if (extension == null || !FILE_EXTENSIONS.contains(extension)) {
+					String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension";
+					setErrorMessage(LayersconfigEditorPlugin.INSTANCE.getString(key, new Object[] { FORMATTED_FILE_EXTENSIONS }));
+					return false;
+				}
+				return true;
+			}
+			return false;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		public IFile getModelFile() {
+			return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName()));
+		}
+	}
+
+	/**
+	 * This is the page where the type of object to create is selected.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public class LayersconfigModelWizardInitialObjectCreationPage extends WizardPage {
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		protected Combo initialObjectField;
+
+		/**
+		 * @generated
+		 *            <!-- begin-user-doc -->
+		 *            <!-- end-user-doc -->
+		 */
+		protected List<String> encodings;
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		protected Combo encodingField;
+
+		/**
+		 * Pass in the selection.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		public LayersconfigModelWizardInitialObjectCreationPage(String pageId) {
+			super(pageId);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		@Override
+		public void createControl(Composite parent) {
+			Composite composite = new Composite(parent, SWT.NONE);
+			{
+				GridLayout layout = new GridLayout();
+				layout.numColumns = 1;
+				layout.verticalSpacing = 12;
+				composite.setLayout(layout);
+
+				GridData data = new GridData();
+				data.verticalAlignment = GridData.FILL;
+				data.grabExcessVerticalSpace = true;
+				data.horizontalAlignment = GridData.FILL;
+				composite.setLayoutData(data);
+			}
+
+			Label containerLabel = new Label(composite, SWT.LEFT);
+			{
+				containerLabel.setText(LayersconfigEditorPlugin.INSTANCE.getString("_UI_ModelObject"));
+
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				containerLabel.setLayoutData(data);
+			}
+
+			initialObjectField = new Combo(composite, SWT.BORDER);
+			{
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				data.grabExcessHorizontalSpace = true;
+				initialObjectField.setLayoutData(data);
+			}
+
+			for (String objectName : getInitialObjectNames()) {
+				initialObjectField.add(getLabel(objectName));
+			}
+
+			if (initialObjectField.getItemCount() == 1) {
+				initialObjectField.select(0);
+			}
+			initialObjectField.addModifyListener(validator);
+
+			Label encodingLabel = new Label(composite, SWT.LEFT);
+			{
+				encodingLabel.setText(LayersconfigEditorPlugin.INSTANCE.getString("_UI_XMLEncoding"));
+
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				encodingLabel.setLayoutData(data);
+			}
+			encodingField = new Combo(composite, SWT.BORDER);
+			{
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				data.grabExcessHorizontalSpace = true;
+				encodingField.setLayoutData(data);
+			}
+
+			for (String encoding : getEncodings()) {
+				encodingField.add(encoding);
+			}
+
+			encodingField.select(0);
+			encodingField.addModifyListener(validator);
+
+			setPageComplete(validatePage());
+			setControl(composite);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		protected ModifyListener validator =
+				new ModifyListener() {
+					@Override
+					public void modifyText(ModifyEvent e) {
+						setPageComplete(validatePage());
+					}
+				};
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		protected boolean validatePage() {
+			return getInitialObjectName() != null && getEncodings().contains(encodingField.getText());
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		@Override
+		public void setVisible(boolean visible) {
+			super.setVisible(visible);
+			if (visible) {
+				if (initialObjectField.getItemCount() == 1) {
+					initialObjectField.clearSelection();
+					encodingField.setFocus();
+				}
+				else {
+					encodingField.clearSelection();
+					initialObjectField.setFocus();
+				}
+			}
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		public String getInitialObjectName() {
+			String label = initialObjectField.getText();
+
+			for (String name : getInitialObjectNames()) {
+				if (getLabel(name).equals(label)) {
+					return name;
+				}
+			}
+			return null;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		public String getEncoding() {
+			return encodingField.getText();
+		}
+
+		/**
+		 * Returns the label for the specified type name.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		protected String getLabel(String typeName) {
+			try {
+				return LayersconfigEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type");
+			} catch (MissingResourceException mre) {
+				LayersconfigEditorPlugin.INSTANCE.log(mre);
+			}
+			return typeName;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		protected Collection<String> getEncodings() {
+			if (encodings == null) {
+				encodings = new ArrayList<String>();
+				for (StringTokenizer stringTokenizer = new StringTokenizer(LayersconfigEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens();) {
+					encodings.add(stringTokenizer.nextToken());
+				}
+			}
+			return encodings;
+		}
+	}
+
+	/**
+	 * The framework calls this to create the contents of the wizard.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void addPages() {
+		// Create a page, set the title, and the initial model file name.
+		//
+		newFileCreationPage = new LayersconfigModelWizardNewFileCreationPage("Whatever", selection);
+		newFileCreationPage.setTitle(LayersconfigEditorPlugin.INSTANCE.getString("_UI_LayersconfigModelWizard_label"));
+		newFileCreationPage.setDescription(LayersconfigEditorPlugin.INSTANCE.getString("_UI_LayersconfigModelWizard_description"));
+		newFileCreationPage.setFileName(LayersconfigEditorPlugin.INSTANCE.getString("_UI_LayersconfigEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0));
+		addPage(newFileCreationPage);
+
+		// Try and get the resource selection to determine a current directory for the file dialog.
+		//
+		if (selection != null && !selection.isEmpty()) {
+			// Get the resource...
+			//
+			Object selectedElement = selection.iterator().next();
+			if (selectedElement instanceof IResource) {
+				// Get the resource parent, if its a file.
+				//
+				IResource selectedResource = (IResource) selectedElement;
+				if (selectedResource.getType() == IResource.FILE) {
+					selectedResource = selectedResource.getParent();
+				}
+
+				// This gives us a directory...
+				//
+				if (selectedResource instanceof IFolder || selectedResource instanceof IProject) {
+					// Set this for the container.
+					//
+					newFileCreationPage.setContainerFullPath(selectedResource.getFullPath());
+
+					// Make up a unique new name here.
+					//
+					String defaultModelBaseFilename = LayersconfigEditorPlugin.INSTANCE.getString("_UI_LayersconfigEditorFilenameDefaultBase");
+					String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0);
+					String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension;
+					for (int i = 1; ((IContainer) selectedResource).findMember(modelFilename) != null; ++i) {
+						modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension;
+					}
+					newFileCreationPage.setFileName(modelFilename);
+				}
+			}
+		}
+		initialObjectCreationPage = new LayersconfigModelWizardInitialObjectCreationPage("Whatever2");
+		initialObjectCreationPage.setTitle(LayersconfigEditorPlugin.INSTANCE.getString("_UI_LayersconfigModelWizard_label"));
+		initialObjectCreationPage.setDescription(LayersconfigEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description"));
+		addPage(initialObjectCreationPage);
+	}
+
+	/**
+	 * Get the file from the page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public IFile getModelFile() {
+		return newFileCreationPage.getModelFile();
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/stackmodel/layers/presentation/LayersActionBarContributor.java b/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/stackmodel/layers/presentation/LayersActionBarContributor.java
new file mode 100755
index 0000000..ddef1ff
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/stackmodel/layers/presentation/LayersActionBarContributor.java
@@ -0,0 +1,451 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.presentation;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+import org.eclipse.emf.edit.ui.action.ControlAction;
+import org.eclipse.emf.edit.ui.action.CreateChildAction;
+import org.eclipse.emf.edit.ui.action.CreateSiblingAction;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.action.LoadResourceAction;
+import org.eclipse.emf.edit.ui.action.ValidateAction;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IContributionManager;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.action.SubContributionItem;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PartInitException;
+
+/**
+ * This is the action bar contributor for the Layers model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayersActionBarContributor
+		extends EditingDomainActionBarContributor
+		implements ISelectionChangedListener {
+	/**
+	 * This keeps track of the active editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IEditorPart activeEditorPart;
+
+	/**
+	 * This keeps track of the current selection provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ISelectionProvider selectionProvider;
+
+	/**
+	 * This action opens the Properties view.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IAction showPropertiesViewAction =
+			new Action(LayersEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) {
+				@Override
+				public void run() {
+					try {
+						getPage().showView("org.eclipse.ui.views.PropertySheet");
+					}
+					catch (PartInitException exception) {
+						LayersEditorPlugin.INSTANCE.log(exception);
+					}
+				}
+			};
+
+	/**
+	 * This action refreshes the viewer of the current editor if the editor
+	 * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IAction refreshViewerAction =
+			new Action(LayersEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) {
+				@Override
+				public boolean isEnabled() {
+					return activeEditorPart instanceof IViewerProvider;
+				}
+
+				@Override
+				public void run() {
+					if (activeEditorPart instanceof IViewerProvider) {
+						Viewer viewer = ((IViewerProvider) activeEditorPart).getViewer();
+						if (viewer != null) {
+							viewer.refresh();
+						}
+					}
+				}
+			};
+
+	/**
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor
+	 * generated for the current selection by the item provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<IAction> createChildActions;
+
+	/**
+	 * This is the menu manager into which menu contribution items should be added for CreateChild actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IMenuManager createChildMenuManager;
+
+	/**
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor
+	 * generated for the current selection by the item provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<IAction> createSiblingActions;
+
+	/**
+	 * This is the menu manager into which menu contribution items should be added for CreateSibling actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IMenuManager createSiblingMenuManager;
+
+	/**
+	 * This creates an instance of the contributor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayersActionBarContributor() {
+		super(ADDITIONS_LAST_STYLE);
+		loadResourceAction = new LoadResourceAction();
+		validateAction = new ValidateAction();
+		controlAction = new ControlAction();
+	}
+
+	/**
+	 * This adds Separators for editor additions to the tool bar.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void contributeToToolBar(IToolBarManager toolBarManager) {
+		toolBarManager.add(new Separator("layers-settings"));
+		toolBarManager.add(new Separator("layers-additions"));
+	}
+
+	/**
+	 * This adds to the menu bar a menu and some separators for editor additions,
+	 * as well as the sub-menus for object creation items.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void contributeToMenu(IMenuManager menuManager) {
+		super.contributeToMenu(menuManager);
+
+		IMenuManager submenuManager = new MenuManager(LayersEditorPlugin.INSTANCE.getString("_UI_LayersEditor_menu"), "org.eclipse.papyrus.layers.stackmodel.layersMenuID");
+		menuManager.insertAfter("additions", submenuManager);
+		submenuManager.add(new Separator("settings"));
+		submenuManager.add(new Separator("actions"));
+		submenuManager.add(new Separator("additions"));
+		submenuManager.add(new Separator("additions-end"));
+
+		// Prepare for CreateChild item addition or removal.
+		//
+		createChildMenuManager = new MenuManager(LayersEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+		submenuManager.insertBefore("additions", createChildMenuManager);
+
+		// Prepare for CreateSibling item addition or removal.
+		//
+		createSiblingMenuManager = new MenuManager(LayersEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+		submenuManager.insertBefore("additions", createSiblingMenuManager);
+
+		// Force an update because Eclipse hides empty menus now.
+		//
+		submenuManager.addMenuListener
+				(new IMenuListener() {
+					@Override
+					public void menuAboutToShow(IMenuManager menuManager) {
+						menuManager.updateAll(true);
+					}
+				});
+
+		addGlobalActions(submenuManager);
+	}
+
+	/**
+	 * When the active editor changes, this remembers the change and registers with it as a selection provider.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setActiveEditor(IEditorPart part) {
+		super.setActiveEditor(part);
+		activeEditorPart = part;
+
+		// Switch to the new selection provider.
+		//
+		if (selectionProvider != null) {
+			selectionProvider.removeSelectionChangedListener(this);
+		}
+		if (part == null) {
+			selectionProvider = null;
+		}
+		else {
+			selectionProvider = part.getSite().getSelectionProvider();
+			selectionProvider.addSelectionChangedListener(this);
+
+			// Fake a selection changed event to update the menus.
+			//
+			if (selectionProvider.getSelection() != null) {
+				selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection()));
+			}
+		}
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener},
+	 * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings
+	 * that can be added to the selected object and updating the menus accordingly.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void selectionChanged(SelectionChangedEvent event) {
+		// Remove any menu items for old selection.
+		//
+		if (createChildMenuManager != null) {
+			depopulateManager(createChildMenuManager, createChildActions);
+		}
+		if (createSiblingMenuManager != null) {
+			depopulateManager(createSiblingMenuManager, createSiblingActions);
+		}
+
+		// Query the new selection for appropriate new child/sibling descriptors
+		//
+		Collection<?> newChildDescriptors = null;
+		Collection<?> newSiblingDescriptors = null;
+
+		ISelection selection = event.getSelection();
+		if (selection instanceof IStructuredSelection && ((IStructuredSelection) selection).size() == 1) {
+			Object object = ((IStructuredSelection) selection).getFirstElement();
+
+			EditingDomain domain = ((IEditingDomainProvider) activeEditorPart).getEditingDomain();
+
+			newChildDescriptors = domain.getNewChildDescriptors(object, null);
+			newSiblingDescriptors = domain.getNewChildDescriptors(null, object);
+		}
+
+		// Generate actions for selection; populate and redraw the menus.
+		//
+		createChildActions = generateCreateChildActions(newChildDescriptors, selection);
+		createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection);
+
+		if (createChildMenuManager != null) {
+			populateManager(createChildMenuManager, createChildActions, null);
+			createChildMenuManager.update(true);
+		}
+		if (createSiblingMenuManager != null) {
+			populateManager(createSiblingMenuManager, createSiblingActions, null);
+			createSiblingMenuManager.update(true);
+		}
+	}
+
+	/**
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>,
+	 * and returns the collection of these actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) {
+		Collection<IAction> actions = new ArrayList<IAction>();
+		if (descriptors != null) {
+			for (Object descriptor : descriptors) {
+				actions.add(new CreateChildAction(activeEditorPart, selection, descriptor));
+			}
+		}
+		return actions;
+	}
+
+	/**
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>,
+	 * and returns the collection of these actions.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) {
+		Collection<IAction> actions = new ArrayList<IAction>();
+		if (descriptors != null) {
+			for (Object descriptor : descriptors) {
+				actions.add(new CreateSiblingAction(activeEditorPart, selection, descriptor));
+			}
+		}
+		return actions;
+	}
+
+	/**
+	 * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection,
+	 * by inserting them before the specified contribution item <code>contributionID</code>.
+	 * If <code>contributionID</code> is <code>null</code>, they are simply added.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) {
+		if (actions != null) {
+			for (IAction action : actions) {
+				if (contributionID != null) {
+					manager.insertBefore(contributionID, action);
+				}
+				else {
+					manager.add(action);
+				}
+			}
+		}
+	}
+
+	/**
+	 * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) {
+		if (actions != null) {
+			IContributionItem[] items = manager.getItems();
+			for (int i = 0; i < items.length; i++) {
+				// Look into SubContributionItems
+				//
+				IContributionItem contributionItem = items[i];
+				while (contributionItem instanceof SubContributionItem) {
+					contributionItem = ((SubContributionItem) contributionItem).getInnerItem();
+				}
+
+				// Delete the ActionContributionItems with matching action.
+				//
+				if (contributionItem instanceof ActionContributionItem) {
+					IAction action = ((ActionContributionItem) contributionItem).getAction();
+					if (actions.contains(action)) {
+						manager.remove(contributionItem);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * This populates the pop-up menu before it appears.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void menuAboutToShow(IMenuManager menuManager) {
+		super.menuAboutToShow(menuManager);
+		MenuManager submenuManager = null;
+
+		submenuManager = new MenuManager(LayersEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item"));
+		populateManager(submenuManager, createChildActions, null);
+		menuManager.insertBefore("edit", submenuManager);
+
+		submenuManager = new MenuManager(LayersEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item"));
+		populateManager(submenuManager, createSiblingActions, null);
+		menuManager.insertBefore("edit", submenuManager);
+	}
+
+	/**
+	 * This inserts global actions before the "additions-end" separator.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void addGlobalActions(IMenuManager menuManager) {
+		menuManager.insertAfter("additions-end", new Separator("ui-actions"));
+		menuManager.insertAfter("ui-actions", showPropertiesViewAction);
+
+		refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());
+		menuManager.insertAfter("ui-actions", refreshViewerAction);
+
+		super.addGlobalActions(menuManager);
+	}
+
+	/**
+	 * This ensures that a delete action will clean up all references to deleted objects.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected boolean removeAllReferencesOnDelete() {
+		return true;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/stackmodel/layers/presentation/LayersEditor.java b/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/stackmodel/layers/presentation/LayersEditor.java
new file mode 100755
index 0000000..465cf7f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/stackmodel/layers/presentation/LayersEditor.java
@@ -0,0 +1,1901 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.presentation;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EventObject;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.command.CommandStackListener;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.ui.MarkerHelper;
+import org.eclipse.emf.common.ui.ViewerPane;
+import org.eclipse.emf.common.ui.editor.ProblemEditorPart;
+import org.eclipse.emf.common.ui.viewer.IViewerProvider;
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.provider.EcoreItemProviderAdapterFactory;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.domain.IEditingDomainProvider;
+import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
+import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor;
+import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter;
+import org.eclipse.emf.edit.ui.dnd.LocalTransfer;
+import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider;
+import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper;
+import org.eclipse.emf.edit.ui.util.EditUIUtil;
+import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;
+import org.eclipse.gmf.runtime.notation.provider.NotationItemProviderAdapterFactory;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IStatusLineManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.util.LocalSelectionTransfer;
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.papyrus.layers.stackmodel.layers.provider.LayersItemProviderAdapterFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.FileTransfer;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeColumn;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IPartListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.ui.dialogs.SaveAsDialog;
+import org.eclipse.ui.ide.IGotoMarker;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.MultiPageEditorPart;
+import org.eclipse.ui.views.contentoutline.ContentOutline;
+import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
+import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.PropertySheet;
+import org.eclipse.ui.views.properties.PropertySheetPage;
+
+
+/**
+ * This is an example of a Layers model editor.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayersEditor
+		extends MultiPageEditorPart
+		implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker {
+	/**
+	 * This keeps track of the editing domain that is used to track all changes to the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected AdapterFactoryEditingDomain editingDomain;
+
+	/**
+	 * This is the one adapter factory used for providing views of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ComposedAdapterFactory adapterFactory;
+
+	/**
+	 * This is the content outline page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IContentOutlinePage contentOutlinePage;
+
+	/**
+	 * This is a kludge...
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IStatusLineManager contentOutlineStatusLineManager;
+
+	/**
+	 * This is the content outline page's viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected TreeViewer contentOutlineViewer;
+
+	/**
+	 * This is the property sheet page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>();
+
+	/**
+	 * This is the viewer that shadows the selection in the content outline.
+	 * The parent relation must be correctly defined for this to work.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected TreeViewer selectionViewer;
+
+	/**
+	 * This inverts the roll of parent and child in the content provider and show parents as a tree.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected TreeViewer parentViewer;
+
+	/**
+	 * This shows how a tree view works.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected TreeViewer treeViewer;
+
+	/**
+	 * This shows how a list view works.
+	 * A list viewer doesn't support icons.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ListViewer listViewer;
+
+	/**
+	 * This shows how a table view works.
+	 * A table can be used as a list with icons.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected TableViewer tableViewer;
+
+	/**
+	 * This shows how a tree view with columns works.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected TreeViewer treeViewerWithColumns;
+
+	/**
+	 * This keeps track of the active viewer pane, in the book.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ViewerPane currentViewerPane;
+
+	/**
+	 * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Viewer currentViewer;
+
+	/**
+	 * This listens to which ever viewer is active.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ISelectionChangedListener selectionChangedListener;
+
+	/**
+	 * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>();
+
+	/**
+	 * This keeps track of the selection of the editor as a whole.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ISelection editorSelection = StructuredSelection.EMPTY;
+
+	/**
+	 * The MarkerHelper is responsible for creating workspace resource markers presented
+	 * in Eclipse's Problems View.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected MarkerHelper markerHelper = new EditUIMarkerHelper();
+
+	/**
+	 * This listens for when the outline becomes active
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IPartListener partListener =
+			new IPartListener() {
+				@Override
+				public void partActivated(IWorkbenchPart p) {
+					if (p instanceof ContentOutline) {
+						if (((ContentOutline) p).getCurrentPage() == contentOutlinePage) {
+							getActionBarContributor().setActiveEditor(LayersEditor.this);
+
+							setCurrentViewer(contentOutlineViewer);
+						}
+					}
+					else if (p instanceof PropertySheet) {
+						if (propertySheetPages.contains(((PropertySheet) p).getCurrentPage())) {
+							getActionBarContributor().setActiveEditor(LayersEditor.this);
+							handleActivate();
+						}
+					}
+					else if (p == LayersEditor.this) {
+						handleActivate();
+					}
+				}
+
+				@Override
+				public void partBroughtToTop(IWorkbenchPart p) {
+					// Ignore.
+				}
+
+				@Override
+				public void partClosed(IWorkbenchPart p) {
+					// Ignore.
+				}
+
+				@Override
+				public void partDeactivated(IWorkbenchPart p) {
+					// Ignore.
+				}
+
+				@Override
+				public void partOpened(IWorkbenchPart p) {
+					// Ignore.
+				}
+			};
+
+	/**
+	 * Resources that have been removed since last activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+	/**
+	 * Resources that have been changed since last activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<Resource> changedResources = new ArrayList<Resource>();
+
+	/**
+	 * Resources that have been saved.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<Resource> savedResources = new ArrayList<Resource>();
+
+	/**
+	 * Map to store the diagnostic associated with a resource.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>();
+
+	/**
+	 * Controls whether the problem indication should be updated.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected boolean updateProblemIndication = true;
+
+	/**
+	 * Adapter used to update the problem indication when resources are demanded loaded.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected EContentAdapter problemIndicationAdapter =
+			new EContentAdapter() {
+				@Override
+				public void notifyChanged(Notification notification) {
+					if (notification.getNotifier() instanceof Resource) {
+						switch (notification.getFeatureID(Resource.class)) {
+						case Resource.RESOURCE__IS_LOADED:
+						case Resource.RESOURCE__ERRORS:
+						case Resource.RESOURCE__WARNINGS: {
+							Resource resource = (Resource) notification.getNotifier();
+							Diagnostic diagnostic = analyzeResourceProblems(resource, null);
+							if (diagnostic.getSeverity() != Diagnostic.OK) {
+								resourceToDiagnosticMap.put(resource, diagnostic);
+							}
+							else {
+								resourceToDiagnosticMap.remove(resource);
+							}
+
+							if (updateProblemIndication) {
+								getSite().getShell().getDisplay().asyncExec
+										(new Runnable() {
+											@Override
+											public void run() {
+												updateProblemIndication();
+											}
+										});
+							}
+							break;
+						}
+						}
+					}
+					else {
+						super.notifyChanged(notification);
+					}
+				}
+
+				@Override
+				protected void setTarget(Resource target) {
+					basicSetTarget(target);
+				}
+
+				@Override
+				protected void unsetTarget(Resource target) {
+					basicUnsetTarget(target);
+					resourceToDiagnosticMap.remove(target);
+					if (updateProblemIndication) {
+						getSite().getShell().getDisplay().asyncExec
+								(new Runnable() {
+									@Override
+									public void run() {
+										updateProblemIndication();
+									}
+								});
+					}
+				}
+			};
+
+	/**
+	 * This listens for workspace changes.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IResourceChangeListener resourceChangeListener =
+			new IResourceChangeListener() {
+				@Override
+				public void resourceChanged(IResourceChangeEvent event) {
+					IResourceDelta delta = event.getDelta();
+					try {
+						class ResourceDeltaVisitor implements IResourceDeltaVisitor {
+							protected ResourceSet resourceSet = editingDomain.getResourceSet();
+							protected Collection<Resource> changedResources = new ArrayList<Resource>();
+							protected Collection<Resource> removedResources = new ArrayList<Resource>();
+
+							@Override
+							public boolean visit(IResourceDelta delta) {
+								if (delta.getResource().getType() == IResource.FILE) {
+									if (delta.getKind() == IResourceDelta.REMOVED ||
+											delta.getKind() == IResourceDelta.CHANGED && delta.getFlags() != IResourceDelta.MARKERS) {
+										Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false);
+										if (resource != null) {
+											if (delta.getKind() == IResourceDelta.REMOVED) {
+												removedResources.add(resource);
+											}
+											else if (!savedResources.remove(resource)) {
+												changedResources.add(resource);
+											}
+										}
+									}
+									return false;
+								}
+
+								return true;
+							}
+
+							public Collection<Resource> getChangedResources() {
+								return changedResources;
+							}
+
+							public Collection<Resource> getRemovedResources() {
+								return removedResources;
+							}
+						}
+
+						final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor();
+						delta.accept(visitor);
+
+						if (!visitor.getRemovedResources().isEmpty()) {
+							getSite().getShell().getDisplay().asyncExec
+									(new Runnable() {
+										@Override
+										public void run() {
+											removedResources.addAll(visitor.getRemovedResources());
+											if (!isDirty()) {
+												getSite().getPage().closeEditor(LayersEditor.this, false);
+											}
+										}
+									});
+						}
+
+						if (!visitor.getChangedResources().isEmpty()) {
+							getSite().getShell().getDisplay().asyncExec
+									(new Runnable() {
+										@Override
+										public void run() {
+											changedResources.addAll(visitor.getChangedResources());
+											if (getSite().getPage().getActiveEditor() == LayersEditor.this) {
+												handleActivate();
+											}
+										}
+									});
+						}
+					}
+					catch (CoreException exception) {
+						LayersEditorPlugin.INSTANCE.log(exception);
+					}
+				}
+			};
+
+	/**
+	 * Handles activation of the editor or it's associated views.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void handleActivate() {
+		// Recompute the read only state.
+		//
+		if (editingDomain.getResourceToReadOnlyMap() != null) {
+			editingDomain.getResourceToReadOnlyMap().clear();
+
+			// Refresh any actions that may become enabled or disabled.
+			//
+			setSelection(getSelection());
+		}
+
+		if (!removedResources.isEmpty()) {
+			if (handleDirtyConflict()) {
+				getSite().getPage().closeEditor(LayersEditor.this, false);
+			}
+			else {
+				removedResources.clear();
+				changedResources.clear();
+				savedResources.clear();
+			}
+		}
+		else if (!changedResources.isEmpty()) {
+			changedResources.removeAll(savedResources);
+			handleChangedResources();
+			changedResources.clear();
+			savedResources.clear();
+		}
+	}
+
+	/**
+	 * Handles what to do with changed resources on activation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void handleChangedResources() {
+		if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) {
+			if (isDirty()) {
+				changedResources.addAll(editingDomain.getResourceSet().getResources());
+			}
+			editingDomain.getCommandStack().flush();
+
+			updateProblemIndication = false;
+			for (Resource resource : changedResources) {
+				if (resource.isLoaded()) {
+					resource.unload();
+					try {
+						resource.load(Collections.EMPTY_MAP);
+					} catch (IOException exception) {
+						if (!resourceToDiagnosticMap.containsKey(resource)) {
+							resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+						}
+					}
+				}
+			}
+
+			if (AdapterFactoryEditingDomain.isStale(editorSelection)) {
+				setSelection(StructuredSelection.EMPTY);
+			}
+
+			updateProblemIndication = true;
+			updateProblemIndication();
+		}
+	}
+
+	/**
+	 * Updates the problems indication with the information described in the specified diagnostic.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void updateProblemIndication() {
+		if (updateProblemIndication) {
+			BasicDiagnostic diagnostic =
+					new BasicDiagnostic
+					(Diagnostic.OK,
+							"org.eclipse.papyrus.layers.stackmodel.editor",
+							0,
+							null,
+							new Object[] { editingDomain.getResourceSet() });
+			for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) {
+				if (childDiagnostic.getSeverity() != Diagnostic.OK) {
+					diagnostic.add(childDiagnostic);
+				}
+			}
+
+			int lastEditorPage = getPageCount() - 1;
+			if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) {
+				((ProblemEditorPart) getEditor(lastEditorPage)).setDiagnostic(diagnostic);
+				if (diagnostic.getSeverity() != Diagnostic.OK) {
+					setActivePage(lastEditorPage);
+				}
+			}
+			else if (diagnostic.getSeverity() != Diagnostic.OK) {
+				ProblemEditorPart problemEditorPart = new ProblemEditorPart();
+				problemEditorPart.setDiagnostic(diagnostic);
+				problemEditorPart.setMarkerHelper(markerHelper);
+				try {
+					addPage(++lastEditorPage, problemEditorPart, getEditorInput());
+					setPageText(lastEditorPage, problemEditorPart.getPartName());
+					setActivePage(lastEditorPage);
+					showTabs();
+				} catch (PartInitException exception) {
+					LayersEditorPlugin.INSTANCE.log(exception);
+				}
+			}
+
+			if (markerHelper.hasMarkers(editingDomain.getResourceSet())) {
+				markerHelper.deleteMarkers(editingDomain.getResourceSet());
+				if (diagnostic.getSeverity() != Diagnostic.OK) {
+					try {
+						markerHelper.createMarkers(diagnostic);
+					} catch (CoreException exception) {
+						LayersEditorPlugin.INSTANCE.log(exception);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * Shows a dialog that asks if conflicting changes should be discarded.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected boolean handleDirtyConflict() {
+		return MessageDialog.openQuestion
+				(getSite().getShell(),
+						getString("_UI_FileConflict_label"),
+						getString("_WARN_FileConflict"));
+	}
+
+	/**
+	 * This creates a model editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayersEditor() {
+		super();
+		initializeEditingDomain();
+	}
+
+	/**
+	 * This sets up the editing domain for the model editor.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void initializeEditingDomain() {
+		// Create an adapter factory that yields item providers.
+		//
+		adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+		adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new LayersItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new EcoreItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new NotationItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
+
+		// Create the command stack that will notify this editor as commands are executed.
+		//
+		BasicCommandStack commandStack = new BasicCommandStack();
+
+		// Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus.
+		//
+		commandStack.addCommandStackListener
+				(new CommandStackListener() {
+					@Override
+					public void commandStackChanged(final EventObject event) {
+						getContainer().getDisplay().asyncExec
+								(new Runnable() {
+									@Override
+									public void run() {
+										firePropertyChange(IEditorPart.PROP_DIRTY);
+
+										// Try to select the affected objects.
+										//
+										Command mostRecentCommand = ((CommandStack) event.getSource()).getMostRecentCommand();
+										if (mostRecentCommand != null) {
+											setSelectionToViewer(mostRecentCommand.getAffectedObjects());
+										}
+										for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext();) {
+											PropertySheetPage propertySheetPage = i.next();
+											if (propertySheetPage.getControl().isDisposed()) {
+												i.remove();
+											}
+											else {
+												propertySheetPage.refresh();
+											}
+										}
+									}
+								});
+					}
+				});
+
+		// Create the editing domain with a special command stack.
+		//
+		editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());
+	}
+
+	/**
+	 * This is here for the listener to be able to call it.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void firePropertyChange(int action) {
+		super.firePropertyChange(action);
+	}
+
+	/**
+	 * This sets the selection into whichever viewer is active.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void setSelectionToViewer(Collection<?> collection) {
+		final Collection<?> theSelection = collection;
+		// Make sure it's okay.
+		//
+		if (theSelection != null && !theSelection.isEmpty()) {
+			Runnable runnable =
+					new Runnable() {
+						@Override
+						public void run() {
+							// Try to select the items in the current content viewer of the editor.
+							//
+							if (currentViewer != null) {
+								currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true);
+							}
+						}
+					};
+			getSite().getShell().getDisplay().asyncExec(runnable);
+		}
+	}
+
+	/**
+	 * This returns the editing domain as required by the {@link IEditingDomainProvider} interface.
+	 * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain} and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EditingDomain getEditingDomain() {
+		return editingDomain;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider {
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) {
+			super(adapterFactory);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		@Override
+		public Object[] getElements(Object object) {
+			Object parent = super.getParent(object);
+			return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		@Override
+		public Object[] getChildren(Object object) {
+			Object parent = super.getParent(object);
+			return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray();
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		@Override
+		public boolean hasChildren(Object object) {
+			Object parent = super.getParent(object);
+			return parent != null;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		@Override
+		public Object getParent(Object object) {
+			return null;
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void setCurrentViewerPane(ViewerPane viewerPane) {
+		if (currentViewerPane != viewerPane) {
+			if (currentViewerPane != null) {
+				currentViewerPane.showFocus(false);
+			}
+			currentViewerPane = viewerPane;
+		}
+		setCurrentViewer(currentViewerPane.getViewer());
+	}
+
+	/**
+	 * This makes sure that one content viewer, either for the current page or the outline view, if it has focus,
+	 * is the current one.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void setCurrentViewer(Viewer viewer) {
+		// If it is changing...
+		//
+		if (currentViewer != viewer) {
+			if (selectionChangedListener == null) {
+				// Create the listener on demand.
+				//
+				selectionChangedListener =
+						new ISelectionChangedListener() {
+							// This just notifies those things that are affected by the section.
+							//
+							@Override
+							public void selectionChanged(SelectionChangedEvent selectionChangedEvent) {
+								setSelection(selectionChangedEvent.getSelection());
+							}
+						};
+			}
+
+			// Stop listening to the old one.
+			//
+			if (currentViewer != null) {
+				currentViewer.removeSelectionChangedListener(selectionChangedListener);
+			}
+
+			// Start listening to the new one.
+			//
+			if (viewer != null) {
+				viewer.addSelectionChangedListener(selectionChangedListener);
+			}
+
+			// Remember it.
+			//
+			currentViewer = viewer;
+
+			// Set the editors selection based on the current viewer's selection.
+			//
+			setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection());
+		}
+	}
+
+	/**
+	 * This returns the viewer as required by the {@link IViewerProvider} interface.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Viewer getViewer() {
+		return currentViewer;
+	}
+
+	/**
+	 * This creates a context menu for the viewer and adds a listener as well registering the menu for extension.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected void createContextMenuFor(StructuredViewer viewer) {
+		MenuManager contextMenu = new MenuManager("#PopUp");
+		contextMenu.add(new Separator("additions"));
+		contextMenu.setRemoveAllWhenShown(true);
+		contextMenu.addMenuListener(this);
+		Menu menu = contextMenu.createContextMenu(viewer.getControl());
+		viewer.getControl().setMenu(menu);
+		// getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
+
+		String menuId = "org.eclipse.papyrus.layers.stackmodel.diagram.ui.contextmenu";
+		getSite().registerContextMenu(menuId, contextMenu, new UnwrappingSelectionProvider(viewer));
+
+		int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
+		Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() };
+		viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
+		viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
+	}
+
+	/**
+	 * This is the method called to load a resource into the editing domain's resource set based on the editor's input.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void createModel() {
+		URI resourceURI = EditUIUtil.getURI(getEditorInput());
+		Exception exception = null;
+		Resource resource = null;
+		try {
+			// Load the resource through the editing domain.
+			//
+			resource = editingDomain.getResourceSet().getResource(resourceURI, true);
+		} catch (Exception e) {
+			exception = e;
+			resource = editingDomain.getResourceSet().getResource(resourceURI, false);
+		}
+
+		Diagnostic diagnostic = analyzeResourceProblems(resource, exception);
+		if (diagnostic.getSeverity() != Diagnostic.OK) {
+			resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+		}
+		editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter);
+	}
+
+	/**
+	 * Returns a diagnostic describing the errors and warnings listed in the resource
+	 * and the specified exception (if any).
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) {
+		if (!resource.getErrors().isEmpty() || !resource.getWarnings().isEmpty()) {
+			BasicDiagnostic basicDiagnostic =
+					new BasicDiagnostic
+					(Diagnostic.ERROR,
+							"org.eclipse.papyrus.layers.stackmodel.editor",
+							0,
+							getString("_UI_CreateModelError_message", resource.getURI()),
+							new Object[] { exception == null ? (Object) resource : exception });
+			basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true));
+			return basicDiagnostic;
+		}
+		else if (exception != null) {
+			return new BasicDiagnostic(Diagnostic.ERROR,
+					"org.eclipse.papyrus.layers.stackmodel.editor",
+					0,
+					getString("_UI_CreateModelError_message", resource.getURI()),
+					new Object[] { exception });
+		}
+		else {
+			return Diagnostic.OK_INSTANCE;
+		}
+	}
+
+	/**
+	 * This is the method used by the framework to install your own controls.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void createPages() {
+		// Creates the model from the editor input
+		//
+		createModel();
+
+		// Only creates the other pages if there is something that can be edited
+		//
+		if (!getEditingDomain().getResourceSet().getResources().isEmpty()) {
+			// Create a page for the selection tree view.
+			//
+			{
+				ViewerPane viewerPane =
+						new ViewerPane(getSite().getPage(), LayersEditor.this) {
+							@Override
+							public Viewer createViewer(Composite composite) {
+								Tree tree = new Tree(composite, SWT.MULTI);
+								TreeViewer newTreeViewer = new TreeViewer(tree);
+								return newTreeViewer;
+							}
+
+							@Override
+							public void requestActivation() {
+								super.requestActivation();
+								setCurrentViewerPane(this);
+							}
+						};
+				viewerPane.createControl(getContainer());
+
+				selectionViewer = (TreeViewer) viewerPane.getViewer();
+				selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+
+				selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+				selectionViewer.setInput(editingDomain.getResourceSet());
+				selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+				viewerPane.setTitle(editingDomain.getResourceSet());
+
+				new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory);
+
+				createContextMenuFor(selectionViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_SelectionPage_label"));
+			}
+
+			// Create a page for the parent tree view.
+			//
+			{
+				ViewerPane viewerPane =
+						new ViewerPane(getSite().getPage(), LayersEditor.this) {
+							@Override
+							public Viewer createViewer(Composite composite) {
+								Tree tree = new Tree(composite, SWT.MULTI);
+								TreeViewer newTreeViewer = new TreeViewer(tree);
+								return newTreeViewer;
+							}
+
+							@Override
+							public void requestActivation() {
+								super.requestActivation();
+								setCurrentViewerPane(this);
+							}
+						};
+				viewerPane.createControl(getContainer());
+
+				parentViewer = (TreeViewer) viewerPane.getViewer();
+				parentViewer.setAutoExpandLevel(30);
+				parentViewer.setContentProvider(new ReverseAdapterFactoryContentProvider(adapterFactory));
+				parentViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(parentViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_ParentPage_label"));
+			}
+
+			// This is the page for the list viewer
+			//
+			{
+				ViewerPane viewerPane =
+						new ViewerPane(getSite().getPage(), LayersEditor.this) {
+							@Override
+							public Viewer createViewer(Composite composite) {
+								return new ListViewer(composite);
+							}
+
+							@Override
+							public void requestActivation() {
+								super.requestActivation();
+								setCurrentViewerPane(this);
+							}
+						};
+				viewerPane.createControl(getContainer());
+				listViewer = (ListViewer) viewerPane.getViewer();
+				listViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				listViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(listViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_ListPage_label"));
+			}
+
+			// This is the page for the tree viewer
+			//
+			{
+				ViewerPane viewerPane =
+						new ViewerPane(getSite().getPage(), LayersEditor.this) {
+							@Override
+							public Viewer createViewer(Composite composite) {
+								return new TreeViewer(composite);
+							}
+
+							@Override
+							public void requestActivation() {
+								super.requestActivation();
+								setCurrentViewerPane(this);
+							}
+						};
+				viewerPane.createControl(getContainer());
+				treeViewer = (TreeViewer) viewerPane.getViewer();
+				treeViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				treeViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				new AdapterFactoryTreeEditor(treeViewer.getTree(), adapterFactory);
+
+				createContextMenuFor(treeViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TreePage_label"));
+			}
+
+			// This is the page for the table viewer.
+			//
+			{
+				ViewerPane viewerPane =
+						new ViewerPane(getSite().getPage(), LayersEditor.this) {
+							@Override
+							public Viewer createViewer(Composite composite) {
+								return new TableViewer(composite);
+							}
+
+							@Override
+							public void requestActivation() {
+								super.requestActivation();
+								setCurrentViewerPane(this);
+							}
+						};
+				viewerPane.createControl(getContainer());
+				tableViewer = (TableViewer) viewerPane.getViewer();
+
+				Table table = tableViewer.getTable();
+				TableLayout layout = new TableLayout();
+				table.setLayout(layout);
+				table.setHeaderVisible(true);
+				table.setLinesVisible(true);
+
+				TableColumn objectColumn = new TableColumn(table, SWT.NONE);
+				layout.addColumnData(new ColumnWeightData(3, 100, true));
+				objectColumn.setText(getString("_UI_ObjectColumn_label"));
+				objectColumn.setResizable(true);
+
+				TableColumn selfColumn = new TableColumn(table, SWT.NONE);
+				layout.addColumnData(new ColumnWeightData(2, 100, true));
+				selfColumn.setText(getString("_UI_SelfColumn_label"));
+				selfColumn.setResizable(true);
+
+				tableViewer.setColumnProperties(new String[] { "a", "b" });
+				tableViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				tableViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(tableViewer);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TablePage_label"));
+			}
+
+			// This is the page for the table tree viewer.
+			//
+			{
+				ViewerPane viewerPane =
+						new ViewerPane(getSite().getPage(), LayersEditor.this) {
+							@Override
+							public Viewer createViewer(Composite composite) {
+								return new TreeViewer(composite);
+							}
+
+							@Override
+							public void requestActivation() {
+								super.requestActivation();
+								setCurrentViewerPane(this);
+							}
+						};
+				viewerPane.createControl(getContainer());
+
+				treeViewerWithColumns = (TreeViewer) viewerPane.getViewer();
+
+				Tree tree = treeViewerWithColumns.getTree();
+				tree.setLayoutData(new FillLayout());
+				tree.setHeaderVisible(true);
+				tree.setLinesVisible(true);
+
+				TreeColumn objectColumn = new TreeColumn(tree, SWT.NONE);
+				objectColumn.setText(getString("_UI_ObjectColumn_label"));
+				objectColumn.setResizable(true);
+				objectColumn.setWidth(250);
+
+				TreeColumn selfColumn = new TreeColumn(tree, SWT.NONE);
+				selfColumn.setText(getString("_UI_SelfColumn_label"));
+				selfColumn.setResizable(true);
+				selfColumn.setWidth(200);
+
+				treeViewerWithColumns.setColumnProperties(new String[] { "a", "b" });
+				treeViewerWithColumns.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				treeViewerWithColumns.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+
+				createContextMenuFor(treeViewerWithColumns);
+				int pageIndex = addPage(viewerPane.getControl());
+				setPageText(pageIndex, getString("_UI_TreeWithColumnsPage_label"));
+			}
+
+			getSite().getShell().getDisplay().asyncExec
+					(new Runnable() {
+						@Override
+						public void run() {
+							setActivePage(0);
+						}
+					});
+		}
+
+		// Ensures that this editor will only display the page's tab
+		// area if there are more than one page
+		//
+		getContainer().addControlListener
+				(new ControlAdapter() {
+					boolean guard = false;
+
+					@Override
+					public void controlResized(ControlEvent event) {
+						if (!guard) {
+							guard = true;
+							hideTabs();
+							guard = false;
+						}
+					}
+				});
+
+		getSite().getShell().getDisplay().asyncExec
+				(new Runnable() {
+					@Override
+					public void run() {
+						updateProblemIndication();
+					}
+				});
+	}
+
+	/**
+	 * If there is just one page in the multi-page editor part,
+	 * this hides the single tab at the bottom.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void hideTabs() {
+		if (getPageCount() <= 1) {
+			setPageText(0, "");
+			if (getContainer() instanceof CTabFolder) {
+				((CTabFolder) getContainer()).setTabHeight(1);
+				Point point = getContainer().getSize();
+				getContainer().setSize(point.x, point.y + 6);
+			}
+		}
+	}
+
+	/**
+	 * If there is more than one page in the multi-page editor part,
+	 * this shows the tabs at the bottom.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void showTabs() {
+		if (getPageCount() > 1) {
+			setPageText(0, getString("_UI_SelectionPage_label"));
+			if (getContainer() instanceof CTabFolder) {
+				((CTabFolder) getContainer()).setTabHeight(SWT.DEFAULT);
+				Point point = getContainer().getSize();
+				getContainer().setSize(point.x, point.y - 6);
+			}
+		}
+	}
+
+	/**
+	 * This is used to track the active viewer.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected void pageChange(int pageIndex) {
+		super.pageChange(pageIndex);
+
+		if (contentOutlinePage != null) {
+			handleContentOutlineSelection(contentOutlinePage.getSelection());
+		}
+	}
+
+	/**
+	 * This is how the framework determines which interfaces we implement.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@SuppressWarnings("rawtypes")
+	@Override
+	public Object getAdapter(Class key) {
+		if (key.equals(IContentOutlinePage.class)) {
+			return showOutlineView() ? getContentOutlinePage() : null;
+		}
+		else if (key.equals(IPropertySheetPage.class)) {
+			return getPropertySheetPage();
+		}
+		else if (key.equals(IGotoMarker.class)) {
+			return this;
+		}
+		else {
+			return super.getAdapter(key);
+		}
+	}
+
+	/**
+	 * This accesses a cached version of the content outliner.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public IContentOutlinePage getContentOutlinePage() {
+		if (contentOutlinePage == null) {
+			// The content outline is just a tree.
+			//
+			class MyContentOutlinePage extends ContentOutlinePage {
+				@Override
+				public void createControl(Composite parent) {
+					super.createControl(parent);
+					contentOutlineViewer = getTreeViewer();
+					contentOutlineViewer.addSelectionChangedListener(this);
+
+					// Set up the tree viewer.
+					//
+					contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+					contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+					contentOutlineViewer.setInput(editingDomain.getResourceSet());
+
+					// Make sure our popups work.
+					//
+					createContextMenuFor(contentOutlineViewer);
+
+					if (!editingDomain.getResourceSet().getResources().isEmpty()) {
+						// Select the root object in the view.
+						//
+						contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
+					}
+				}
+
+				@Override
+				public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) {
+					super.makeContributions(menuManager, toolBarManager, statusLineManager);
+					contentOutlineStatusLineManager = statusLineManager;
+				}
+
+				@Override
+				public void setActionBars(IActionBars actionBars) {
+					super.setActionBars(actionBars);
+					getActionBarContributor().shareGlobalActions(this, actionBars);
+				}
+			}
+
+			contentOutlinePage = new MyContentOutlinePage();
+
+			// Listen to selection so that we can handle it is a special way.
+			//
+			contentOutlinePage.addSelectionChangedListener
+					(new ISelectionChangedListener() {
+						// This ensures that we handle selections correctly.
+						//
+						@Override
+						public void selectionChanged(SelectionChangedEvent event) {
+							handleContentOutlineSelection(event.getSelection());
+						}
+					});
+		}
+
+		return contentOutlinePage;
+	}
+
+	/**
+	 * This accesses a cached version of the property sheet.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public IPropertySheetPage getPropertySheetPage() {
+		PropertySheetPage propertySheetPage =
+				new ExtendedPropertySheetPage(editingDomain) {
+					@Override
+					public void setSelectionToViewer(List<?> selection) {
+						LayersEditor.this.setSelectionToViewer(selection);
+						LayersEditor.this.setFocus();
+					}
+
+					@Override
+					public void setActionBars(IActionBars actionBars) {
+						super.setActionBars(actionBars);
+						getActionBarContributor().shareGlobalActions(this, actionBars);
+					}
+				};
+		propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
+		propertySheetPages.add(propertySheetPage);
+
+		return propertySheetPage;
+	}
+
+	/**
+	 * This deals with how we want selection in the outliner to affect the other views.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void handleContentOutlineSelection(ISelection selection) {
+		if (currentViewerPane != null && !selection.isEmpty() && selection instanceof IStructuredSelection) {
+			Iterator<?> selectedElements = ((IStructuredSelection) selection).iterator();
+			if (selectedElements.hasNext()) {
+				// Get the first selected element.
+				//
+				Object selectedElement = selectedElements.next();
+
+				// If it's the selection viewer, then we want it to select the same selection as this selection.
+				//
+				if (currentViewerPane.getViewer() == selectionViewer) {
+					ArrayList<Object> selectionList = new ArrayList<Object>();
+					selectionList.add(selectedElement);
+					while (selectedElements.hasNext()) {
+						selectionList.add(selectedElements.next());
+					}
+
+					// Set the selection to the widget.
+					//
+					selectionViewer.setSelection(new StructuredSelection(selectionList));
+				}
+				else {
+					// Set the input to the widget.
+					//
+					if (currentViewerPane.getViewer().getInput() != selectedElement) {
+						currentViewerPane.getViewer().setInput(selectedElement);
+						currentViewerPane.setTitle(selectedElement);
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * This is for implementing {@link IEditorPart} and simply tests the command stack.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean isDirty() {
+		return ((BasicCommandStack) editingDomain.getCommandStack()).isSaveNeeded();
+	}
+
+	/**
+	 * This is for implementing {@link IEditorPart} and simply saves the model file.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void doSave(IProgressMonitor progressMonitor) {
+		// Save only resources that have actually changed.
+		//
+		final Map<Object, Object> saveOptions = new HashMap<Object, Object>();
+		saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
+		saveOptions.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED);
+
+		// Do the work within an operation because this is a long running activity that modifies the workbench.
+		//
+		WorkspaceModifyOperation operation =
+				new WorkspaceModifyOperation() {
+					// This is the method that gets invoked when the operation runs.
+					//
+					@Override
+					public void execute(IProgressMonitor monitor) {
+						// Save the resources to the file system.
+						//
+						boolean first = true;
+						for (Resource resource : editingDomain.getResourceSet().getResources()) {
+							if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) {
+								try {
+									long timeStamp = resource.getTimeStamp();
+									resource.save(saveOptions);
+									if (resource.getTimeStamp() != timeStamp) {
+										savedResources.add(resource);
+									}
+								}
+								catch (Exception exception) {
+									resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
+								}
+								first = false;
+							}
+						}
+					}
+				};
+
+		updateProblemIndication = false;
+		try {
+			// This runs the options, and shows progress.
+			//
+			new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation);
+
+			// Refresh the necessary state.
+			//
+			((BasicCommandStack) editingDomain.getCommandStack()).saveIsDone();
+			firePropertyChange(IEditorPart.PROP_DIRTY);
+		} catch (Exception exception) {
+			// Something went wrong that shouldn't.
+			//
+			LayersEditorPlugin.INSTANCE.log(exception);
+		}
+		updateProblemIndication = true;
+		updateProblemIndication();
+	}
+
+	/**
+	 * This returns whether something has been persisted to the URI of the specified resource.
+	 * The implementation uses the URI converter from the editor's resource set to try to open an input stream.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected boolean isPersisted(Resource resource) {
+		boolean result = false;
+		try {
+			InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI());
+			if (stream != null) {
+				result = true;
+				stream.close();
+			}
+		} catch (IOException e) {
+			// Ignore
+		}
+		return result;
+	}
+
+	/**
+	 * This always returns true because it is not currently supported.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean isSaveAsAllowed() {
+		return true;
+	}
+
+	/**
+	 * This also changes the editor's input.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void doSaveAs() {
+		SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell());
+		saveAsDialog.open();
+		IPath path = saveAsDialog.getResult();
+		if (path != null) {
+			IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+			if (file != null) {
+				doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file));
+			}
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void doSaveAs(URI uri, IEditorInput editorInput) {
+		(editingDomain.getResourceSet().getResources().get(0)).setURI(uri);
+		setInputWithNotify(editorInput);
+		setPartName(editorInput.getName());
+		IProgressMonitor progressMonitor =
+				getActionBars().getStatusLineManager() != null ?
+						getActionBars().getStatusLineManager().getProgressMonitor() :
+						new NullProgressMonitor();
+		doSave(progressMonitor);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void gotoMarker(IMarker marker) {
+		List<?> targetObjects = markerHelper.getTargetObjects(editingDomain, marker);
+		if (!targetObjects.isEmpty()) {
+			setSelectionToViewer(targetObjects);
+		}
+	}
+
+	/**
+	 * This is called during startup.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void init(IEditorSite site, IEditorInput editorInput) {
+		setSite(site);
+		setInputWithNotify(editorInput);
+		setPartName(editorInput.getName());
+		site.setSelectionProvider(this);
+		site.getPage().addPartListener(partListener);
+		ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setFocus() {
+		if (currentViewerPane != null) {
+			currentViewerPane.setFocus();
+		}
+		else {
+			getControl(getActivePage()).setFocus();
+		}
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void addSelectionChangedListener(ISelectionChangedListener listener) {
+		selectionChangedListeners.add(listener);
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void removeSelectionChangedListener(ISelectionChangedListener listener) {
+		selectionChangedListeners.remove(listener);
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ISelection getSelection() {
+		return editorSelection;
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection.
+	 * Calling this result will notify the listeners.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setSelection(ISelection selection) {
+		editorSelection = selection;
+
+		for (ISelectionChangedListener listener : selectionChangedListeners) {
+			listener.selectionChanged(new SelectionChangedEvent(this, selection));
+		}
+		setStatusLineManager(selection);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void setStatusLineManager(ISelection selection) {
+		IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ?
+				contentOutlineStatusLineManager : getActionBars().getStatusLineManager();
+
+		if (statusLineManager != null) {
+			if (selection instanceof IStructuredSelection) {
+				Collection<?> collection = ((IStructuredSelection) selection).toList();
+				switch (collection.size()) {
+				case 0: {
+					statusLineManager.setMessage(getString("_UI_NoObjectSelected"));
+					break;
+				}
+				case 1: {
+					String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next());
+					statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text));
+					break;
+				}
+				default: {
+					statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size())));
+					break;
+				}
+				}
+			}
+			else {
+				statusLineManager.setMessage("");
+			}
+		}
+	}
+
+	/**
+	 * This looks up a string in the plugin's plugin.properties file.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private static String getString(String key) {
+		return LayersEditorPlugin.INSTANCE.getString(key);
+	}
+
+	/**
+	 * This looks up a string in plugin.properties, making a substitution.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private static String getString(String key, Object s1) {
+		return LayersEditorPlugin.INSTANCE.getString(key, new Object[] { s1 });
+	}
+
+	/**
+	 * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void menuAboutToShow(IMenuManager menuManager) {
+		((IMenuListener) getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public EditingDomainActionBarContributor getActionBarContributor() {
+		return (EditingDomainActionBarContributor) getEditorSite().getActionBarContributor();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public IActionBars getActionBars() {
+		return getActionBarContributor().getActionBars();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public AdapterFactory getAdapterFactory() {
+		return adapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void dispose() {
+		updateProblemIndication = false;
+
+		ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener);
+
+		getSite().getPage().removePartListener(partListener);
+
+		adapterFactory.dispose();
+
+		if (getActionBarContributor().getActiveEditor() == this) {
+			getActionBarContributor().setActiveEditor(null);
+		}
+
+		for (PropertySheetPage propertySheetPage : propertySheetPages) {
+			propertySheetPage.dispose();
+		}
+
+		if (contentOutlinePage != null) {
+			contentOutlinePage.dispose();
+		}
+
+		super.dispose();
+	}
+
+	/**
+	 * Returns whether the outline view should be presented to the user.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected boolean showOutlineView() {
+		return true;
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/stackmodel/layers/presentation/LayersEditorPlugin.java b/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/stackmodel/layers/presentation/LayersEditorPlugin.java
new file mode 100755
index 0000000..e2a4061
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/stackmodel/layers/presentation/LayersEditorPlugin.java
@@ -0,0 +1,110 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.presentation;
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.ui.EclipseUIPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.provider.EcoreEditPlugin;
+import org.eclipse.gmf.runtime.notation.NotationEditPlugin;
+
+/**
+ * This is the central singleton for the Layers editor plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public final class LayersEditorPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static final LayersEditorPlugin INSTANCE = new LayersEditorPlugin();
+
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayersEditorPlugin() {
+		super(new ResourceLocator[] {
+				EcoreEditPlugin.INSTANCE,
+				NotationEditPlugin.INSTANCE,
+		});
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static class Implementation extends EclipseUIPlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/stackmodel/layers/presentation/LayersModelWizard.java b/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/stackmodel/layers/presentation/LayersModelWizard.java
new file mode 100755
index 0000000..e1c23ba
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.editor/src/org/eclipse/papyrus/layers/stackmodel/layers/presentation/LayersModelWizard.java
@@ -0,0 +1,646 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.presentation;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.StringTokenizer;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.common.CommonPlugin;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.XMLResource;
+import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.provider.LayersEditPlugin;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.ISetSelectionTarget;
+
+
+/**
+ * This is a simple wizard for creating a new model file.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayersModelWizard extends Wizard implements INewWizard {
+	/**
+	 * The supported extensions for created files.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static final List<String> FILE_EXTENSIONS =
+			Collections.unmodifiableList(Arrays.asList(LayersEditorPlugin.INSTANCE.getString("_UI_LayersEditorFilenameExtensions").split("\\s*,\\s*")));
+
+	/**
+	 * A formatted list of supported file extensions, suitable for display.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static final String FORMATTED_FILE_EXTENSIONS =
+			LayersEditorPlugin.INSTANCE.getString("_UI_LayersEditorFilenameExtensions").replaceAll("\\s*,\\s*", ", ");
+
+	/**
+	 * This caches an instance of the model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayersPackage layersPackage = LayersPackage.eINSTANCE;
+
+	/**
+	 * This caches an instance of the model factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayersFactory layersFactory = layersPackage.getLayersFactory();
+
+	/**
+	 * This is the file creation page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayersModelWizardNewFileCreationPage newFileCreationPage;
+
+	/**
+	 * This is the initial object creation page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayersModelWizardInitialObjectCreationPage initialObjectCreationPage;
+
+	/**
+	 * Remember the selection during initialization for populating the default container.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IStructuredSelection selection;
+
+	/**
+	 * Remember the workbench during initialization.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IWorkbench workbench;
+
+	/**
+	 * Caches the names of the types that can be created as the root object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected List<String> initialObjectNames;
+
+	/**
+	 * This just records the information.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+		this.workbench = workbench;
+		this.selection = selection;
+		setWindowTitle(LayersEditorPlugin.INSTANCE.getString("_UI_Wizard_label"));
+		setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(LayersEditorPlugin.INSTANCE.getImage("full/wizban/NewLayers")));
+	}
+
+	/**
+	 * Returns the names of the types that can be created as the root object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Collection<String> getInitialObjectNames() {
+		if (initialObjectNames == null) {
+			initialObjectNames = new ArrayList<String>();
+			for (EClassifier eClassifier : layersPackage.getEClassifiers()) {
+				if (eClassifier instanceof EClass) {
+					EClass eClass = (EClass) eClassifier;
+					if (!eClass.isAbstract()) {
+						initialObjectNames.add(eClass.getName());
+					}
+				}
+			}
+			Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator());
+		}
+		return initialObjectNames;
+	}
+
+	/**
+	 * Create a new model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected EObject createInitialModel() {
+		EClass eClass = (EClass) layersPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName());
+		EObject rootObject = layersFactory.create(eClass);
+		return rootObject;
+	}
+
+	/**
+	 * Do the work after everything is specified.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean performFinish() {
+		try {
+			// Remember the file.
+			//
+			final IFile modelFile = getModelFile();
+
+			// Do the work within an operation.
+			//
+			WorkspaceModifyOperation operation =
+					new WorkspaceModifyOperation() {
+						@Override
+						protected void execute(IProgressMonitor progressMonitor) {
+							try {
+								// Create a resource set
+								//
+								ResourceSet resourceSet = new ResourceSetImpl();
+
+								// Get the URI of the model file.
+								//
+								URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true);
+
+								// Create a resource for this file.
+								//
+								Resource resource = resourceSet.createResource(fileURI);
+
+								// Add the initial model object to the contents.
+								//
+								EObject rootObject = createInitialModel();
+								if (rootObject != null) {
+									resource.getContents().add(rootObject);
+								}
+
+								// Save the contents of the resource to the file system.
+								//
+								Map<Object, Object> options = new HashMap<Object, Object>();
+								options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding());
+								resource.save(options);
+							}
+							catch (Exception exception) {
+								LayersEditorPlugin.INSTANCE.log(exception);
+							}
+							finally {
+								progressMonitor.done();
+							}
+						}
+					};
+
+			getContainer().run(false, false, operation);
+
+			// Select the new file resource in the current view.
+			//
+			IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+			IWorkbenchPage page = workbenchWindow.getActivePage();
+			final IWorkbenchPart activePart = page.getActivePart();
+			if (activePart instanceof ISetSelectionTarget) {
+				final ISelection targetSelection = new StructuredSelection(modelFile);
+				getShell().getDisplay().asyncExec
+						(new Runnable() {
+							@Override
+							public void run() {
+								((ISetSelectionTarget) activePart).selectReveal(targetSelection);
+							}
+						});
+			}
+
+			// Open an editor on the new file.
+			//
+			try {
+				page.openEditor
+						(new FileEditorInput(modelFile),
+								workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId());
+			} catch (PartInitException exception) {
+				MessageDialog.openError(workbenchWindow.getShell(), LayersEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage());
+				return false;
+			}
+
+			return true;
+		} catch (Exception exception) {
+			LayersEditorPlugin.INSTANCE.log(exception);
+			return false;
+		}
+	}
+
+	/**
+	 * This is the one page of the wizard.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public class LayersModelWizardNewFileCreationPage extends WizardNewFileCreationPage {
+		/**
+		 * Pass in the selection.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		public LayersModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) {
+			super(pageId, selection);
+		}
+
+		/**
+		 * The framework calls this to see if the file is correct.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		@Override
+		protected boolean validatePage() {
+			if (super.validatePage()) {
+				String extension = new Path(getFileName()).getFileExtension();
+				if (extension == null || !FILE_EXTENSIONS.contains(extension)) {
+					String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension";
+					setErrorMessage(LayersEditorPlugin.INSTANCE.getString(key, new Object[] { FORMATTED_FILE_EXTENSIONS }));
+					return false;
+				}
+				return true;
+			}
+			return false;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		public IFile getModelFile() {
+			return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName()));
+		}
+	}
+
+	/**
+	 * This is the page where the type of object to create is selected.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public class LayersModelWizardInitialObjectCreationPage extends WizardPage {
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		protected Combo initialObjectField;
+
+		/**
+		 * @generated
+		 *            <!-- begin-user-doc -->
+		 *            <!-- end-user-doc -->
+		 */
+		protected List<String> encodings;
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		protected Combo encodingField;
+
+		/**
+		 * Pass in the selection.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		public LayersModelWizardInitialObjectCreationPage(String pageId) {
+			super(pageId);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		@Override
+		public void createControl(Composite parent) {
+			Composite composite = new Composite(parent, SWT.NONE);
+			{
+				GridLayout layout = new GridLayout();
+				layout.numColumns = 1;
+				layout.verticalSpacing = 12;
+				composite.setLayout(layout);
+
+				GridData data = new GridData();
+				data.verticalAlignment = GridData.FILL;
+				data.grabExcessVerticalSpace = true;
+				data.horizontalAlignment = GridData.FILL;
+				composite.setLayoutData(data);
+			}
+
+			Label containerLabel = new Label(composite, SWT.LEFT);
+			{
+				containerLabel.setText(LayersEditorPlugin.INSTANCE.getString("_UI_ModelObject"));
+
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				containerLabel.setLayoutData(data);
+			}
+
+			initialObjectField = new Combo(composite, SWT.BORDER);
+			{
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				data.grabExcessHorizontalSpace = true;
+				initialObjectField.setLayoutData(data);
+			}
+
+			for (String objectName : getInitialObjectNames()) {
+				initialObjectField.add(getLabel(objectName));
+			}
+
+			if (initialObjectField.getItemCount() == 1) {
+				initialObjectField.select(0);
+			}
+			initialObjectField.addModifyListener(validator);
+
+			Label encodingLabel = new Label(composite, SWT.LEFT);
+			{
+				encodingLabel.setText(LayersEditorPlugin.INSTANCE.getString("_UI_XMLEncoding"));
+
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				encodingLabel.setLayoutData(data);
+			}
+			encodingField = new Combo(composite, SWT.BORDER);
+			{
+				GridData data = new GridData();
+				data.horizontalAlignment = GridData.FILL;
+				data.grabExcessHorizontalSpace = true;
+				encodingField.setLayoutData(data);
+			}
+
+			for (String encoding : getEncodings()) {
+				encodingField.add(encoding);
+			}
+
+			encodingField.select(0);
+			encodingField.addModifyListener(validator);
+
+			setPageComplete(validatePage());
+			setControl(composite);
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		protected ModifyListener validator =
+				new ModifyListener() {
+					@Override
+					public void modifyText(ModifyEvent e) {
+						setPageComplete(validatePage());
+					}
+				};
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		protected boolean validatePage() {
+			return getInitialObjectName() != null && getEncodings().contains(encodingField.getText());
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		@Override
+		public void setVisible(boolean visible) {
+			super.setVisible(visible);
+			if (visible) {
+				if (initialObjectField.getItemCount() == 1) {
+					initialObjectField.clearSelection();
+					encodingField.setFocus();
+				}
+				else {
+					encodingField.clearSelection();
+					initialObjectField.setFocus();
+				}
+			}
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		public String getInitialObjectName() {
+			String label = initialObjectField.getText();
+
+			for (String name : getInitialObjectNames()) {
+				if (getLabel(name).equals(label)) {
+					return name;
+				}
+			}
+			return null;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		public String getEncoding() {
+			return encodingField.getText();
+		}
+
+		/**
+		 * Returns the label for the specified type name.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		protected String getLabel(String typeName) {
+			try {
+				return LayersEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type");
+			} catch (MissingResourceException mre) {
+				LayersEditorPlugin.INSTANCE.log(mre);
+			}
+			return typeName;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		protected Collection<String> getEncodings() {
+			if (encodings == null) {
+				encodings = new ArrayList<String>();
+				for (StringTokenizer stringTokenizer = new StringTokenizer(LayersEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer.hasMoreTokens();) {
+					encodings.add(stringTokenizer.nextToken());
+				}
+			}
+			return encodings;
+		}
+	}
+
+	/**
+	 * The framework calls this to create the contents of the wizard.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void addPages() {
+		// Create a page, set the title, and the initial model file name.
+		//
+		newFileCreationPage = new LayersModelWizardNewFileCreationPage("Whatever", selection);
+		newFileCreationPage.setTitle(LayersEditorPlugin.INSTANCE.getString("_UI_LayersModelWizard_label"));
+		newFileCreationPage.setDescription(LayersEditorPlugin.INSTANCE.getString("_UI_LayersModelWizard_description"));
+		newFileCreationPage.setFileName(LayersEditorPlugin.INSTANCE.getString("_UI_LayersEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0));
+		addPage(newFileCreationPage);
+
+		// Try and get the resource selection to determine a current directory for the file dialog.
+		//
+		if (selection != null && !selection.isEmpty()) {
+			// Get the resource...
+			//
+			Object selectedElement = selection.iterator().next();
+			if (selectedElement instanceof IResource) {
+				// Get the resource parent, if its a file.
+				//
+				IResource selectedResource = (IResource) selectedElement;
+				if (selectedResource.getType() == IResource.FILE) {
+					selectedResource = selectedResource.getParent();
+				}
+
+				// This gives us a directory...
+				//
+				if (selectedResource instanceof IFolder || selectedResource instanceof IProject) {
+					// Set this for the container.
+					//
+					newFileCreationPage.setContainerFullPath(selectedResource.getFullPath());
+
+					// Make up a unique new name here.
+					//
+					String defaultModelBaseFilename = LayersEditorPlugin.INSTANCE.getString("_UI_LayersEditorFilenameDefaultBase");
+					String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0);
+					String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension;
+					for (int i = 1; ((IContainer) selectedResource).findMember(modelFilename) != null; ++i) {
+						modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension;
+					}
+					newFileCreationPage.setFileName(modelFilename);
+				}
+			}
+		}
+		initialObjectCreationPage = new LayersModelWizardInitialObjectCreationPage("Whatever2");
+		initialObjectCreationPage.setTitle(LayersEditorPlugin.INSTANCE.getString("_UI_LayersModelWizard_label"));
+		initialObjectCreationPage.setDescription(LayersEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description"));
+		addPage(initialObjectCreationPage);
+	}
+
+	/**
+	 * Get the file from the page.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public IFile getModelFile() {
+		return newFileCreationPage.getModelFile();
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/.classpath b/layers/org.eclipse.papyrus.layers.stackmodel.tests/.classpath
new file mode 100755
index 0000000..121e527
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/.project b/layers/org.eclipse.papyrus.layers.stackmodel.tests/.project
new file mode 100755
index 0000000..1dd2222
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.layers.stackmodel.tests</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/.settings/org.eclipse.jdt.core.prefs b/layers/org.eclipse.papyrus.layers.stackmodel.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100755
index 0000000..4d72ad1
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,288 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+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/layers/org.eclipse.papyrus.layers.stackmodel.tests/.settings/org.eclipse.jdt.ui.prefs b/layers/org.eclipse.papyrus.layers.stackmodel.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100755
index 0000000..954281d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/.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.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
+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 v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\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>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/META-INF/MANIFEST.MF b/layers/org.eclipse.papyrus.layers.stackmodel.tests/META-INF/MANIFEST.MF
new file mode 100755
index 0000000..5e6c8df
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Export-Package: org.eclipse.papyrus.layers.stackmodel.layers.tests
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.papyrus.layers.stackmodel;bundle-version="1.2.0";visibility:=reexport,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.gmf.runtime.notation;visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport,
+ org.junit;visibility:=reexport
+Bundle-Vendor: %providerName
+Bundle-ActivationPolicy: lazy
+Bundle-ClassPath: .
+Bundle-Version: 1.2.0.qualifier
+Bundle-Name: %pluginName
+Bundle-Localization: plugin
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: org.eclipse.papyrus.layers.stackmodel.tests;singleton:=true
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/about.html b/layers/org.eclipse.papyrus.layers.stackmodel.tests/about.html
new file mode 100755
index 0000000..d35d5ae
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/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>June 5, 2007</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/build.properties b/layers/org.eclipse.papyrus.layers.stackmodel.tests/build.properties
new file mode 100755
index 0000000..e0be3cc
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/build.properties
@@ -0,0 +1,11 @@
+#
+
+bin.includes = .,\
+               META-INF/,\
+               plugin.properties,\
+               bin/,\
+               about.html
+jars.compile.order = .
+source.. = src/
+output.. = bin/
+src.includes = about.html
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/plugin.properties b/layers/org.eclipse.papyrus.layers.stackmodel.tests/plugin.properties
new file mode 100755
index 0000000..48137fa
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName =Papyrus Layers Tests
+providerName=Eclipse Modeling Project
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/AbstractLayerOperatorTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/AbstractLayerOperatorTest.java
new file mode 100755
index 0000000..1c5c033
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/AbstractLayerOperatorTest.java
@@ -0,0 +1,74 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Abstract Layer Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#isDescriptorSet() <em>Is Descriptor Set</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#resetDescriptor() <em>Reset Descriptor</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class AbstractLayerOperatorTest extends LayerOperatorTest {
+
+	/**
+	 * Constructs a new Abstract Layer Operator test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public AbstractLayerOperatorTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Abstract Layer Operator test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected AbstractLayerOperator getFixture() {
+		return (AbstractLayerOperator) fixture;
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#isDescriptorSet() <em>Is Descriptor Set</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#isDescriptorSet()
+	 * @generated
+	 */
+	public void testIsDescriptorSet() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#resetDescriptor() <em>Reset Descriptor</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#resetDescriptor()
+	 * @generated
+	 */
+	public void testResetDescriptor() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+} // AbstractLayerOperatorTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/AbstractLayerTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/AbstractLayerTest.java
new file mode 100755
index 0000000..7d1e00c
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/AbstractLayerTest.java
@@ -0,0 +1,124 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Abstract Layer</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getAttachedProperties() <em>Attached Properties</em>}</li>
+ * </ul>
+ * </p>
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#addPropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Add Property Instance</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#removePropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Remove Property Instance</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Property Instance</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyInstance(java.lang.String) <em>Get Property Instance</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class AbstractLayerTest extends LayerExpressionTest {
+
+	/**
+	 * Constructs a new Abstract Layer test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public AbstractLayerTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Abstract Layer test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected AbstractLayer getFixture() {
+		return (AbstractLayer) fixture;
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getAttachedProperties() <em>Attached Properties</em>}' feature getter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getAttachedProperties()
+	 * @generated
+	 */
+	public void testGetAttachedProperties() {
+		// TODO: implement this feature getter test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#addPropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Add Property Instance</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#addPropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 * @generated
+	 */
+	public void testAddPropertyInstance__Property() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#removePropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Remove Property Instance</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#removePropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 * @generated
+	 */
+	public void testRemovePropertyInstance__Property() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Property Instance</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 * @generated
+	 */
+	public void testGetPropertyInstance__Property() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyInstance(java.lang.String) <em>Get Property Instance</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyInstance(java.lang.String)
+	 * @generated
+	 */
+	public void testGetPropertyInstance__String() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+} // AbstractLayerTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/AllViewsDerivedLayerTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/AllViewsDerivedLayerTest.java
new file mode 100755
index 0000000..7e4a2b2
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/AllViewsDerivedLayerTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.AllViewsDerivedLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>All Views Derived Layer</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class AllViewsDerivedLayerTest extends AbstractLayerTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(AllViewsDerivedLayerTest.class);
+	}
+
+	/**
+	 * Constructs a new All Views Derived Layer test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public AllViewsDerivedLayerTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this All Views Derived Layer test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected AllViewsDerivedLayer getFixture() {
+		return (AllViewsDerivedLayer) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createAllViewsDerivedLayer());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // AllViewsDerivedLayerTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/AndStackedLayerOperatorDescriptorTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/AndStackedLayerOperatorDescriptorTest.java
new file mode 100755
index 0000000..da7e539
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/AndStackedLayerOperatorDescriptorTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.AndStackedLayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>And Stacked Layer Operator Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class AndStackedLayerOperatorDescriptorTest extends StackedLayerOperatorDescriptorTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(AndStackedLayerOperatorDescriptorTest.class);
+	}
+
+	/**
+	 * Constructs a new And Stacked Layer Operator Descriptor test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public AndStackedLayerOperatorDescriptorTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this And Stacked Layer Operator Descriptor test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected AndStackedLayerOperatorDescriptor getFixture() {
+		return (AndStackedLayerOperatorDescriptor) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createAndStackedLayerOperatorDescriptor());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // AndStackedLayerOperatorDescriptorTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/ApplicationDependantElementTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/ApplicationDependantElementTest.java
new file mode 100755
index 0000000..1c26508
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/ApplicationDependantElementTest.java
@@ -0,0 +1,60 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.ApplicationDependantElement;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Application Dependant Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public abstract class ApplicationDependantElementTest extends TestCase {
+
+	/**
+	 * The fixture for this Application Dependant Element test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ApplicationDependantElement fixture = null;
+
+	/**
+	 * Constructs a new Application Dependant Element test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public ApplicationDependantElementTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Sets the fixture for this Application Dependant Element test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void setFixture(ApplicationDependantElement fixture) {
+		this.fixture = fixture;
+	}
+
+	/**
+	 * Returns the fixture for this Application Dependant Element test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ApplicationDependantElement getFixture() {
+		return fixture;
+	}
+
+} // ApplicationDependantElementTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/BooleanInstanceTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/BooleanInstanceTest.java
new file mode 100755
index 0000000..be97ec0
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/BooleanInstanceTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Boolean Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class BooleanInstanceTest extends TypeInstanceTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(BooleanInstanceTest.class);
+	}
+
+	/**
+	 * Constructs a new Boolean Instance test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public BooleanInstanceTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Boolean Instance test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected BooleanInstance getFixture() {
+		return (BooleanInstance) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createBooleanInstance());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // BooleanInstanceTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/BooleanTypeTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/BooleanTypeTest.java
new file mode 100755
index 0000000..4146f48
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/BooleanTypeTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanType;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Boolean Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class BooleanTypeTest extends TypeTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(BooleanTypeTest.class);
+	}
+
+	/**
+	 * Constructs a new Boolean Type test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public BooleanTypeTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Boolean Type test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected BooleanType getFixture() {
+		return (BooleanType) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createBooleanType());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // BooleanTypeTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/ColorInstanceTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/ColorInstanceTest.java
new file mode 100755
index 0000000..5200f77
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/ColorInstanceTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Color Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ColorInstanceTest extends TypeInstanceTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(ColorInstanceTest.class);
+	}
+
+	/**
+	 * Constructs a new Color Instance test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public ColorInstanceTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Color Instance test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected ColorInstance getFixture() {
+		return (ColorInstance) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createColorInstance());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // ColorInstanceTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/ColorTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/ColorTest.java
new file mode 100755
index 0000000..55dd4b2
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/ColorTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.Color;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Color</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ColorTest extends TypeTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(ColorTest.class);
+	}
+
+	/**
+	 * Constructs a new Color test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public ColorTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Color test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected Color getFixture() {
+		return (Color) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createColor());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // ColorTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/ComputePropertyValueCommandItfTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/ComputePropertyValueCommandItfTest.java
new file mode 100755
index 0000000..f0639b1
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/ComputePropertyValueCommandItfTest.java
@@ -0,0 +1,80 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Compute Property Value Command Itf</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand#getCmdValue() <em>Get Cmd Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class ComputePropertyValueCommandItfTest extends TestCase {
+
+	/**
+	 * The fixture for this Compute Property Value Command Itf test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ComputePropertyValueCommand fixture = null;
+
+	/**
+	 * Constructs a new Compute Property Value Command Itf test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public ComputePropertyValueCommandItfTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Sets the fixture for this Compute Property Value Command Itf test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void setFixture(ComputePropertyValueCommand fixture) {
+		this.fixture = fixture;
+	}
+
+	/**
+	 * Returns the fixture for this Compute Property Value Command Itf test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ComputePropertyValueCommand getFixture() {
+		return fixture;
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand#getCmdValue() <em>Get Cmd Value</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand#getCmdValue()
+	 * @generated
+	 */
+	public void testGetCmdValue() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+} // ComputePropertyValueCommandItfTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/CustomLayerOperatorTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/CustomLayerOperatorTest.java
new file mode 100755
index 0000000..f20ccfc
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/CustomLayerOperatorTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Custom Layer Operator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class CustomLayerOperatorTest extends LayerOperatorTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(CustomLayerOperatorTest.class);
+	}
+
+	/**
+	 * Constructs a new Custom Layer Operator test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public CustomLayerOperatorTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Custom Layer Operator test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected CustomLayerOperator getFixture() {
+		return (CustomLayerOperator) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createCustomLayerOperator());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // CustomLayerOperatorTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/CustomPropertyOperatorTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/CustomPropertyOperatorTest.java
new file mode 100755
index 0000000..610fa8e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/CustomPropertyOperatorTest.java
@@ -0,0 +1,96 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Custom Property Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#resetOperatorInstance() <em>Reset Operator Instance</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CustomPropertyOperatorTest extends PropertyOperatorTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(CustomPropertyOperatorTest.class);
+	}
+
+	/**
+	 * Constructs a new Custom Property Operator test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public CustomPropertyOperatorTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Custom Property Operator test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected CustomPropertyOperator getFixture() {
+		return (CustomPropertyOperator) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createCustomPropertyOperator());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#resetOperatorInstance() <em>Reset Operator Instance</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#resetOperatorInstance()
+	 * @generated
+	 */
+	public void testResetOperatorInstance() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+} // CustomPropertyOperatorTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/CustomTypeTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/CustomTypeTest.java
new file mode 100755
index 0000000..3f16c86
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/CustomTypeTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomType;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Custom Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class CustomTypeTest extends TypeTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(CustomTypeTest.class);
+	}
+
+	/**
+	 * Constructs a new Custom Type test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public CustomTypeTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Custom Type test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected CustomType getFixture() {
+		return (CustomType) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createCustomType());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // CustomTypeTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/DefaultPropertyOperatorTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/DefaultPropertyOperatorTest.java
new file mode 100755
index 0000000..34a891c
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/DefaultPropertyOperatorTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Default Property Operator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class DefaultPropertyOperatorTest extends PropertyOperatorTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(DefaultPropertyOperatorTest.class);
+	}
+
+	/**
+	 * Constructs a new Default Property Operator test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public DefaultPropertyOperatorTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Default Property Operator test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected DefaultPropertyOperator getFixture() {
+		return (DefaultPropertyOperator) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createDefaultPropertyOperator());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // DefaultPropertyOperatorTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FillInstanceTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FillInstanceTest.java
new file mode 100755
index 0000000..f16cc44
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FillInstanceTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.FillInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Fill Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class FillInstanceTest extends TypeInstanceTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(FillInstanceTest.class);
+	}
+
+	/**
+	 * Constructs a new Fill Instance test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public FillInstanceTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Fill Instance test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected FillInstance getFixture() {
+		return (FillInstance) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createFillInstance());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // FillInstanceTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FillPropertySetterTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FillPropertySetterTest.java
new file mode 100755
index 0000000..0f876f8
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FillPropertySetterTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.FillPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Fill Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class FillPropertySetterTest extends PropertySetterTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(FillPropertySetterTest.class);
+	}
+
+	/**
+	 * Constructs a new Fill Property Setter test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public FillPropertySetterTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Fill Property Setter test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected FillPropertySetter getFixture() {
+		return (FillPropertySetter) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createFillPropertySetter());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // FillPropertySetterTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FillTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FillTest.java
new file mode 100755
index 0000000..f1a21cf
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FillTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.Fill;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Fill</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class FillTest extends TypeTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(FillTest.class);
+	}
+
+	/**
+	 * Constructs a new Fill test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public FillTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Fill test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected Fill getFixture() {
+		return (Fill) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createFill());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // FillTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FolderElementTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FolderElementTest.java
new file mode 100755
index 0000000..aa22bbe
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FolderElementTest.java
@@ -0,0 +1,60 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.FolderElement;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Folder Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public abstract class FolderElementTest extends TestCase {
+
+	/**
+	 * The fixture for this Folder Element test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected FolderElement fixture = null;
+
+	/**
+	 * Constructs a new Folder Element test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public FolderElementTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Sets the fixture for this Folder Element test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void setFixture(FolderElement fixture) {
+		this.fixture = fixture;
+	}
+
+	/**
+	 * Returns the fixture for this Folder Element test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected FolderElement getFixture() {
+		return fixture;
+	}
+
+} // FolderElementTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FolderTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FolderTest.java
new file mode 100755
index 0000000..dce6c60
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FolderTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.Folder;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Folder</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class FolderTest extends FolderElementTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(FolderTest.class);
+	}
+
+	/**
+	 * Constructs a new Folder test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public FolderTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Folder test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected Folder getFixture() {
+		return (Folder) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createFolder());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // FolderTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FontInstanceTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FontInstanceTest.java
new file mode 100755
index 0000000..8a4ac57
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FontInstanceTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.FontInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Font Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class FontInstanceTest extends TypeInstanceTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(FontInstanceTest.class);
+	}
+
+	/**
+	 * Constructs a new Font Instance test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public FontInstanceTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Font Instance test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected FontInstance getFixture() {
+		return (FontInstance) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createFontInstance());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // FontInstanceTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FontPropertySetterTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FontPropertySetterTest.java
new file mode 100755
index 0000000..2134778
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FontPropertySetterTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.FontPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Font Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class FontPropertySetterTest extends PropertySetterTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(FontPropertySetterTest.class);
+	}
+
+	/**
+	 * Constructs a new Font Property Setter test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public FontPropertySetterTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Font Property Setter test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected FontPropertySetter getFixture() {
+		return (FontPropertySetter) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createFontPropertySetter());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // FontPropertySetterTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FontTypeTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FontTypeTest.java
new file mode 100755
index 0000000..2e41687
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/FontTypeTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.FontType;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Font Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class FontTypeTest extends TypeTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(FontTypeTest.class);
+	}
+
+	/**
+	 * Constructs a new Font Type test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public FontTypeTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Font Type test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected FontType getFixture() {
+		return (FontType) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createFontType());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // FontTypeTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IntInstanceTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IntInstanceTest.java
new file mode 100755
index 0000000..2ae5d73
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IntInstanceTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.IntInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Int Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class IntInstanceTest extends TypeInstanceTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(IntInstanceTest.class);
+	}
+
+	/**
+	 * Constructs a new Int Instance test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public IntInstanceTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Int Instance test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected IntInstance getFixture() {
+		return (IntInstance) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createIntInstance());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // IntInstanceTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IntTypeTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IntTypeTest.java
new file mode 100755
index 0000000..8b954b2
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IntTypeTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.IntType;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Int Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class IntTypeTest extends TypeTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(IntTypeTest.class);
+	}
+
+	/**
+	 * Constructs a new Int Type test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public IntTypeTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Int Type test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected IntType getFixture() {
+		return (IntType) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createIntType());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // IntTypeTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IsAbstractUmlSetterTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IsAbstractUmlSetterTest.java
new file mode 100755
index 0000000..f7d59d5
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IsAbstractUmlSetterTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.IsAbstractUmlSetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Is Abstract Uml Setter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class IsAbstractUmlSetterTest extends PropertySetterTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(IsAbstractUmlSetterTest.class);
+	}
+
+	/**
+	 * Constructs a new Is Abstract Uml Setter test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public IsAbstractUmlSetterTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Is Abstract Uml Setter test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected IsAbstractUmlSetter getFixture() {
+		return (IsAbstractUmlSetter) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createIsAbstractUmlSetter());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // IsAbstractUmlSetterTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IsValidPropertySetterTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IsValidPropertySetterTest.java
new file mode 100755
index 0000000..7ee3197
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IsValidPropertySetterTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.IsValidPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Is Valid Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class IsValidPropertySetterTest extends PropertySetterTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(IsValidPropertySetterTest.class);
+	}
+
+	/**
+	 * Constructs a new Is Valid Property Setter test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public IsValidPropertySetterTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Is Valid Property Setter test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected IsValidPropertySetter getFixture() {
+		return (IsValidPropertySetter) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createIsValidPropertySetter());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // IsValidPropertySetterTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IsVisiblePropertySetterTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IsVisiblePropertySetterTest.java
new file mode 100755
index 0000000..b633149
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/IsVisiblePropertySetterTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.IsVisiblePropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Is Visible Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class IsVisiblePropertySetterTest extends PropertySetterTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(IsVisiblePropertySetterTest.class);
+	}
+
+	/**
+	 * Constructs a new Is Visible Property Setter test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public IsVisiblePropertySetterTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Is Visible Property Setter test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected IsVisiblePropertySetter getFixture() {
+		return (IsVisiblePropertySetter) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createIsVisiblePropertySetter());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // IsVisiblePropertySetterTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerApplicationFactoryTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerApplicationFactoryTest.java
new file mode 100755
index 0000000..5cd0cdf
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerApplicationFactoryTest.java
@@ -0,0 +1,96 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Layer Application Factory</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayerApplicationFactoryTest extends TestCase {
+
+	/**
+	 * The fixture for this Layer Application Factory test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerApplicationFactory fixture = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(LayerApplicationFactoryTest.class);
+	}
+
+	/**
+	 * Constructs a new Layer Application Factory test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayerApplicationFactoryTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Sets the fixture for this Layer Application Factory test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void setFixture(LayerApplicationFactory fixture) {
+		this.fixture = fixture;
+	}
+
+	/**
+	 * Returns the fixture for this Layer Application Factory test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerApplicationFactory getFixture() {
+		return fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createLayerApplicationFactory());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // LayerApplicationFactoryTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerDescriptorRegistryTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerDescriptorRegistryTest.java
new file mode 100755
index 0000000..638a8d6
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerDescriptorRegistryTest.java
@@ -0,0 +1,96 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Layer Descriptor Registry</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayerDescriptorRegistryTest extends TestCase {
+
+	/**
+	 * The fixture for this Layer Descriptor Registry test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerDescriptorRegistry fixture = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(LayerDescriptorRegistryTest.class);
+	}
+
+	/**
+	 * Constructs a new Layer Descriptor Registry test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayerDescriptorRegistryTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Sets the fixture for this Layer Descriptor Registry test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void setFixture(LayerDescriptorRegistry fixture) {
+		this.fixture = fixture;
+	}
+
+	/**
+	 * Returns the fixture for this Layer Descriptor Registry test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerDescriptorRegistry getFixture() {
+		return fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createLayerDescriptorRegistry());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // LayerDescriptorRegistryTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerDescriptorTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerDescriptorTest.java
new file mode 100755
index 0000000..9cb1f3c
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerDescriptorTest.java
@@ -0,0 +1,96 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Layer Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayerDescriptorTest extends TestCase {
+
+	/**
+	 * The fixture for this Layer Descriptor test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerDescriptor fixture = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(LayerDescriptorTest.class);
+	}
+
+	/**
+	 * Constructs a new Layer Descriptor test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayerDescriptorTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Sets the fixture for this Layer Descriptor test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void setFixture(LayerDescriptor fixture) {
+		this.fixture = fixture;
+	}
+
+	/**
+	 * Returns the fixture for this Layer Descriptor test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerDescriptor getFixture() {
+		return fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createLayerDescriptor());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // LayerDescriptorTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerExpressionTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerExpressionTest.java
new file mode 100755
index 0000000..d6933c9
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerExpressionTest.java
@@ -0,0 +1,202 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Layer Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#isLayerEnabledInternal() <em>Is Layer Enabled Internal</em>}</li>
+ * </ul>
+ * </p>
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Compute Property Value Command</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getViewsComputePropertyValueCommand(org.eclipse.emf.common.util.EList, org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Views Compute Property Value Command</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.emf.common.util.EList) <em>Get Properties Compute Property Value Command</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#attachToLayersStack(org.eclipse.papyrus.layers.stackmodel.layers.LayersStack) <em>Attach To Layers Stack</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getLayersStack() <em>Get Layers Stack</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#enterAttachedState() <em>Enter Attached State</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#attach() <em>Attach</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#detach() <em>Detach</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#exitAttachedState() <em>Exit Attached State</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class LayerExpressionTest extends ApplicationDependantElementTest {
+
+	/**
+	 * Constructs a new Layer Expression test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayerExpressionTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Layer Expression test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected LayerExpression getFixture() {
+		return (LayerExpression) fixture;
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#isLayerEnabledInternal() <em>Is Layer Enabled Internal</em>}' feature getter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#isLayerEnabledInternal()
+	 * @generated
+	 */
+	public void testIsLayerEnabledInternal() {
+		// TODO: implement this feature getter test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Compute Property Value Command</em>}'
+	 * operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 * @generated
+	 */
+	public void testGetComputePropertyValueCommand__View_Property() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getViewsComputePropertyValueCommand(org.eclipse.emf.common.util.EList, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 * <em>Get Views Compute Property Value Command</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getViewsComputePropertyValueCommand(org.eclipse.emf.common.util.EList, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 * @generated
+	 */
+	public void testGetViewsComputePropertyValueCommand__EList_Property() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.emf.common.util.EList) <em>Get Properties Compute Property Value Command</em>}'
+	 * operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.emf.common.util.EList)
+	 * @generated
+	 */
+	public void testGetPropertiesComputePropertyValueCommand__View_EList() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#attachToLayersStack(org.eclipse.papyrus.layers.stackmodel.layers.LayersStack) <em>Attach To Layers Stack</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#attachToLayersStack(org.eclipse.papyrus.layers.stackmodel.layers.LayersStack)
+	 * @generated
+	 */
+	public void testAttachToLayersStack__LayersStack() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getLayersStack() <em>Get Layers Stack</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getLayersStack()
+	 * @generated
+	 */
+	public void testGetLayersStack() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#enterAttachedState() <em>Enter Attached State</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#enterAttachedState()
+	 * @generated
+	 */
+	public void testEnterAttachedState() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#attach() <em>Attach</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#attach()
+	 * @generated
+	 */
+	public void testAttach() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#detach() <em>Detach</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#detach()
+	 * @generated
+	 */
+	public void testDetach() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#exitAttachedState() <em>Exit Attached State</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#exitAttachedState()
+	 * @generated
+	 */
+	public void testExitAttachedState() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+} // LayerExpressionTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerNamedStyleTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerNamedStyleTest.java
new file mode 100755
index 0000000..a8a50fb
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerNamedStyleTest.java
@@ -0,0 +1,96 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Layer Named Style</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayerNamedStyleTest extends TestCase {
+
+	/**
+	 * The fixture for this Layer Named Style test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerNamedStyle fixture = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(LayerNamedStyleTest.class);
+	}
+
+	/**
+	 * Constructs a new Layer Named Style test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayerNamedStyleTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Sets the fixture for this Layer Named Style test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void setFixture(LayerNamedStyle fixture) {
+		this.fixture = fixture;
+	}
+
+	/**
+	 * Returns the fixture for this Layer Named Style test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerNamedStyle getFixture() {
+		return fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createLayerNamedStyle());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // LayerNamedStyleTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerOperatorDescriptorRegistryTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerOperatorDescriptorRegistryTest.java
new file mode 100755
index 0000000..5e82ebc
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerOperatorDescriptorRegistryTest.java
@@ -0,0 +1,192 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Layer Operator Descriptor Registry</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#addLayerOperatorDescriptor(org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor) <em>Add Layer Operator Descriptor</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getLayerOperatorDescriptor(java.lang.String) <em>Get Layer Operator Descriptor</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#addPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator) <em>Add Property Operator</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getPropertyOperator(java.lang.String) <em>Get Property Operator</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#attachOperatorToDescriptor(org.eclipse.papyrus.layers.stackmodel.layers.Property, java.lang.String, java.lang.String) <em>Attach Operator To Descriptor</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#createLayerOperator(java.lang.String) <em>Create Layer Operator</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LayerOperatorDescriptorRegistryTest extends TestCase {
+
+	/**
+	 * The fixture for this Layer Operator Descriptor Registry test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerOperatorDescriptorRegistry fixture = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(LayerOperatorDescriptorRegistryTest.class);
+	}
+
+	/**
+	 * Constructs a new Layer Operator Descriptor Registry test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayerOperatorDescriptorRegistryTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Sets the fixture for this Layer Operator Descriptor Registry test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void setFixture(LayerOperatorDescriptorRegistry fixture) {
+		this.fixture = fixture;
+	}
+
+	/**
+	 * Returns the fixture for this Layer Operator Descriptor Registry test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerOperatorDescriptorRegistry getFixture() {
+		return fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#addLayerOperatorDescriptor(org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor) <em>Add Layer Operator Descriptor</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#addLayerOperatorDescriptor(org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor)
+	 * @generated
+	 */
+	public void testAddLayerOperatorDescriptor__LayerOperatorDescriptor() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getLayerOperatorDescriptor(java.lang.String) <em>Get Layer Operator Descriptor</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getLayerOperatorDescriptor(java.lang.String)
+	 * @generated
+	 */
+	public void testGetLayerOperatorDescriptor__String() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#addPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator) <em>Add Property Operator</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#addPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator)
+	 * @generated
+	 */
+	public void testAddPropertyOperator__PropertyOperator() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getPropertyOperator(java.lang.String) <em>Get Property Operator</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getPropertyOperator(java.lang.String)
+	 * @generated
+	 */
+	public void testGetPropertyOperator__String() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#attachOperatorToDescriptor(org.eclipse.papyrus.layers.stackmodel.layers.Property, java.lang.String, java.lang.String) <em>Attach Operator To Descriptor</em>}'
+	 * operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#attachOperatorToDescriptor(org.eclipse.papyrus.layers.stackmodel.layers.Property, java.lang.String, java.lang.String)
+	 * @generated
+	 */
+	public void testAttachOperatorToDescriptor__Property_String_String() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#createLayerOperator(java.lang.String) <em>Create Layer Operator</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#createLayerOperator(java.lang.String)
+	 * @generated
+	 */
+	public void testCreateLayerOperator__String() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+} // LayerOperatorDescriptorRegistryTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerOperatorDescriptorTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerOperatorDescriptorTest.java
new file mode 100755
index 0000000..39065e4
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerOperatorDescriptorTest.java
@@ -0,0 +1,162 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Layer Operator Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#getPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Property Operator</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#setPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.Property, org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator) <em>Set Property Operator</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#createLayerOperator() <em>Create Layer Operator</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#setPropertyCollectionSize(int, org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator) <em>Set Property Collection Size</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LayerOperatorDescriptorTest extends TestCase {
+
+	/**
+	 * The fixture for this Layer Operator Descriptor test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerOperatorDescriptor fixture = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(LayerOperatorDescriptorTest.class);
+	}
+
+	/**
+	 * Constructs a new Layer Operator Descriptor test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayerOperatorDescriptorTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Sets the fixture for this Layer Operator Descriptor test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void setFixture(LayerOperatorDescriptor fixture) {
+		this.fixture = fixture;
+	}
+
+	/**
+	 * Returns the fixture for this Layer Operator Descriptor test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerOperatorDescriptor getFixture() {
+		return fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createLayerOperatorDescriptor());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#getPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Property Operator</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#getPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 * @generated
+	 */
+	public void testGetPropertyOperator__Property() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#setPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.Property, org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator)
+	 * <em>Set Property Operator</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#setPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.Property, org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator)
+	 * @generated
+	 */
+	public void testSetPropertyOperator__Property_PropertyOperator() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#createLayerOperator() <em>Create Layer Operator</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#createLayerOperator()
+	 * @generated
+	 */
+	public void testCreateLayerOperator() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#setPropertyCollectionSize(int, org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator) <em>Set Property Collection Size</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#setPropertyCollectionSize(int, org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator)
+	 * @generated
+	 */
+	public void testSetPropertyCollectionSize__int_DefaultPropertyOperator() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+} // LayerOperatorDescriptorTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerOperatorTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerOperatorTest.java
new file mode 100755
index 0000000..f77e33e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerOperatorTest.java
@@ -0,0 +1,59 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Layer Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer#addLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression) <em>Add Layer</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class LayerOperatorTest extends LayerExpressionTest {
+
+	/**
+	 * Constructs a new Layer Operator test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayerOperatorTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Layer Operator test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected LayerOperator getFixture() {
+		return (LayerOperator) fixture;
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer#addLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression) <em>Add Layer</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer#addLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression)
+	 * @generated
+	 */
+	public void testAddLayer__LayerExpression() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+} // LayerOperatorTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerStackDescriptorRegistryTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerStackDescriptorRegistryTest.java
new file mode 100755
index 0000000..bdd2c98
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerStackDescriptorRegistryTest.java
@@ -0,0 +1,96 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerStackDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Layer Stack Descriptor Registry</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayerStackDescriptorRegistryTest extends TestCase {
+
+	/**
+	 * The fixture for this Layer Stack Descriptor Registry test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerStackDescriptorRegistry fixture = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(LayerStackDescriptorRegistryTest.class);
+	}
+
+	/**
+	 * Constructs a new Layer Stack Descriptor Registry test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayerStackDescriptorRegistryTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Sets the fixture for this Layer Stack Descriptor Registry test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void setFixture(LayerStackDescriptorRegistry fixture) {
+		this.fixture = fixture;
+	}
+
+	/**
+	 * Returns the fixture for this Layer Stack Descriptor Registry test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerStackDescriptorRegistry getFixture() {
+		return fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createLayerStackDescriptorRegistry());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // LayerStackDescriptorRegistryTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerTest.java
new file mode 100755
index 0000000..b1cf31a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayerTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Layer</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayerTest extends AbstractLayerTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(LayerTest.class);
+	}
+
+	/**
+	 * Constructs a new Layer test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayerTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Layer test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected Layer getFixture() {
+		return (Layer) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createLayer());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // LayerTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersAllTests.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersAllTests.java
new file mode 100755
index 0000000..41ebd1f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersAllTests.java
@@ -0,0 +1,50 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test suite for the '<em><b>Layers</b></em>' model.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayersAllTests extends TestSuite {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(suite());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static Test suite() {
+		TestSuite suite = new LayersAllTests("Layers Tests");
+		suite.addTest(LayersTests.suite());
+		return suite;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayersAllTests(String name) {
+		super(name);
+	}
+
+} // LayersAllTests
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersContainerTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersContainerTest.java
new file mode 100755
index 0000000..abcac49
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersContainerTest.java
@@ -0,0 +1,80 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Container</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer#addLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression) <em>Add Layer</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class LayersContainerTest extends TestCase {
+
+	/**
+	 * The fixture for this Container test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayersContainer fixture = null;
+
+	/**
+	 * Constructs a new Container test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayersContainerTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Sets the fixture for this Container test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void setFixture(LayersContainer fixture) {
+		this.fixture = fixture;
+	}
+
+	/**
+	 * Returns the fixture for this Container test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayersContainer getFixture() {
+		return fixture;
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer#addLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression) <em>Add Layer</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer#addLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression)
+	 * @generated
+	 */
+	public void testAddLayer__LayerExpression() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+} // LayersContainerTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersExample.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersExample.java
new file mode 100755
index 0000000..f51583d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersExample.java
@@ -0,0 +1,119 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.util.Diagnostician;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A sample utility for the '<em><b>layers</b></em>' package.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayersExample {
+	/**
+	 * <!-- begin-user-doc -->
+	 * Load all the argument file paths or URIs as instances of the model.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param args
+	 *            the file paths or URIs.
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		// Create a resource set to hold the resources.
+		//
+		ResourceSet resourceSet = new ResourceSetImpl();
+
+		// Register the appropriate resource factory to handle all file extensions.
+		//
+		resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put
+				(Resource.Factory.Registry.DEFAULT_EXTENSION,
+						new XMIResourceFactoryImpl());
+
+		// Register the package to ensure it is available during loading.
+		//
+		resourceSet.getPackageRegistry().put
+				(LayersPackage.eNS_URI,
+						LayersPackage.eINSTANCE);
+
+		// If there are no arguments, emit an appropriate usage message.
+		//
+		if (args.length == 0) {
+			System.out.println("Enter a list of file paths or URIs that have content like this:");
+			try {
+				Resource resource = resourceSet.createResource(URI.createURI("http:///My.layers"));
+				LayerNamedStyle root = LayersFactory.eINSTANCE.createLayerNamedStyle();
+				resource.getContents().add(root);
+				resource.save(System.out, null);
+			} catch (IOException exception) {
+				exception.printStackTrace();
+			}
+		}
+		else {
+			// Iterate over all the arguments.
+			//
+			for (int i = 0; i < args.length; ++i) {
+				// Construct the URI for the instance file.
+				// The argument is treated as a file path only if it denotes an existing file.
+				// Otherwise, it's directly treated as a URL.
+				//
+				File file = new File(args[i]);
+				URI uri = file.isFile() ? URI.createFileURI(file.getAbsolutePath()) : URI.createURI(args[i]);
+
+				try {
+					// Demand load resource for this file.
+					//
+					Resource resource = resourceSet.getResource(uri, true);
+					System.out.println("Loaded " + uri);
+
+					// Validate the contents of the loaded resource.
+					//
+					for (EObject eObject : resource.getContents()) {
+						Diagnostic diagnostic = Diagnostician.INSTANCE.validate(eObject);
+						if (diagnostic.getSeverity() != Diagnostic.OK) {
+							printDiagnostic(diagnostic, "");
+						}
+					}
+				} catch (RuntimeException exception) {
+					System.out.println("Problem loading " + uri);
+					exception.printStackTrace();
+				}
+			}
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Prints diagnostics with indentation.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param diagnostic
+	 *            the diagnostic to print.
+	 * @param indent
+	 *            the indentation for printing.
+	 * @generated
+	 */
+	protected static void printDiagnostic(Diagnostic diagnostic, String indent) {
+		System.out.print(indent);
+		System.out.println(diagnostic.getMessage());
+		for (Diagnostic child : diagnostic.getChildren()) {
+			printDiagnostic(child, indent + "  ");
+		}
+	}
+
+} // LayersExample
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersStackApplicationTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersStackApplicationTest.java
new file mode 100755
index 0000000..fa0f763
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersStackApplicationTest.java
@@ -0,0 +1,156 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Stack Application</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram) <em>Get Layers Stack For</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#removeLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram) <em>Remove Layers Stack For</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#isLayersStackAttachedFor(org.eclipse.gmf.runtime.notation.Diagram) <em>Is Layers Stack Attached For</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#createLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram) <em>Create Layers Stack For</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#lookupLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram) <em>Lookup Layers Stack For</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LayersStackApplicationTest extends FolderElementTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(LayersStackApplicationTest.class);
+	}
+
+	/**
+	 * Constructs a new Stack Application test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayersStackApplicationTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Stack Application test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected LayersStackApplication getFixture() {
+		return (LayersStackApplication) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createLayersStackApplication());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram) <em>Get Layers Stack For</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram)
+	 * @generated
+	 */
+	public void testGetLayersStackFor__Diagram() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#removeLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram) <em>Remove Layers Stack For</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#removeLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram)
+	 * @generated
+	 */
+	public void testRemoveLayersStackFor__Diagram() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#isLayersStackAttachedFor(org.eclipse.gmf.runtime.notation.Diagram) <em>Is Layers Stack Attached For</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#isLayersStackAttachedFor(org.eclipse.gmf.runtime.notation.Diagram)
+	 * @generated
+	 */
+	public void testIsLayersStackAttachedFor__Diagram() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#createLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram) <em>Create Layers Stack For</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#createLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram)
+	 * @generated
+	 */
+	public void testCreateLayersStackFor__Diagram() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#lookupLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram) <em>Lookup Layers Stack For</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#lookupLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram)
+	 * @generated
+	 */
+	public void testLookupLayersStackFor__Diagram() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+} // LayersStackApplicationTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersStackTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersStackTest.java
new file mode 100755
index 0000000..6d7622d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersStackTest.java
@@ -0,0 +1,254 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Stack</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer#addLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression) <em>Add Layer</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Compute Property Value Command</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.emf.common.util.EList) <em>Get Properties Compute Property Value Command</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getViewsComputePropertyValueCommand(org.eclipse.emf.common.util.EList, org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Views Compute Property Value Command</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#startAfterCreation() <em>Start After Creation</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#attachLayers() <em>Attach Layers</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#attach() <em>Attach</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#detach() <em>Detach</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#enterAttachedState() <em>Enter Attached State</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#exitAttachedState() <em>Exit Attached State</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LayersStackTest extends TestCase {
+
+	/**
+	 * The fixture for this Stack test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayersStack fixture = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(LayersStackTest.class);
+	}
+
+	/**
+	 * Constructs a new Stack test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayersStackTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Sets the fixture for this Stack test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void setFixture(LayersStack fixture) {
+		this.fixture = fixture;
+	}
+
+	/**
+	 * Returns the fixture for this Stack test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayersStack getFixture() {
+		return fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createLayersStack());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer#addLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression) <em>Add Layer</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer#addLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression)
+	 * @generated
+	 */
+	public void testAddLayer__LayerExpression() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Compute Property Value Command</em>}'
+	 * operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 * @generated
+	 */
+	public void testGetComputePropertyValueCommand__View_Property() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.emf.common.util.EList) <em>Get Properties Compute Property Value Command</em>}'
+	 * operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.emf.common.util.EList)
+	 * @generated
+	 */
+	public void testGetPropertiesComputePropertyValueCommand__View_EList() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getViewsComputePropertyValueCommand(org.eclipse.emf.common.util.EList, org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Views Compute Property Value Command</em>}'
+	 * operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getViewsComputePropertyValueCommand(org.eclipse.emf.common.util.EList, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 * @generated
+	 */
+	public void testGetViewsComputePropertyValueCommand__EList_Property() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#startAfterCreation() <em>Start After Creation</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#startAfterCreation()
+	 * @generated
+	 */
+	public void testStartAfterCreation() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#attachLayers() <em>Attach Layers</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#attachLayers()
+	 * @generated
+	 */
+	public void testAttachLayers() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#attach() <em>Attach</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#attach()
+	 * @generated
+	 */
+	public void testAttach() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#detach() <em>Detach</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#detach()
+	 * @generated
+	 */
+	public void testDetach() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#enterAttachedState() <em>Enter Attached State</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#enterAttachedState()
+	 * @generated
+	 */
+	public void testEnterAttachedState() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#exitAttachedState() <em>Exit Attached State</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#exitAttachedState()
+	 * @generated
+	 */
+	public void testExitAttachedState() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+} // LayersStackTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersTests.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersTests.java
new file mode 100755
index 0000000..0a15647
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LayersTests.java
@@ -0,0 +1,93 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test suite for the '<em><b>layers</b></em>' package.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayersTests extends TestSuite {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(suite());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static Test suite() {
+		TestSuite suite = new LayersTests("layers Tests");
+		suite.addTestSuite(LayersStackTest.class);
+		suite.addTestSuite(LayersStackApplicationTest.class);
+		suite.addTestSuite(PropertyRegistryTest.class);
+		suite.addTestSuite(PropertyTest.class);
+		suite.addTestSuite(MetamodelTest.class);
+		suite.addTestSuite(PropertySetterRegistryTest.class);
+		suite.addTestSuite(LayerOperatorDescriptorRegistryTest.class);
+		suite.addTestSuite(LayerOperatorDescriptorTest.class);
+		suite.addTestSuite(PropertyOperatorTest.class);
+		suite.addTestSuite(DefaultPropertyOperatorTest.class);
+		suite.addTestSuite(IntInstanceTest.class);
+		suite.addTestSuite(BooleanInstanceTest.class);
+		suite.addTestSuite(StringInstanceTest.class);
+		suite.addTestSuite(IntTypeTest.class);
+		suite.addTestSuite(BooleanTypeTest.class);
+		suite.addTestSuite(StringTypeTest.class);
+		suite.addTestSuite(CustomTypeTest.class);
+		suite.addTestSuite(TopLayerOperatorTest.class);
+		suite.addTestSuite(StackedLayerOperatorTest.class);
+		suite.addTestSuite(CustomLayerOperatorTest.class);
+		suite.addTestSuite(NullInstanceTest.class);
+		suite.addTestSuite(RegExpLayerTest.class);
+		suite.addTestSuite(LayerTest.class);
+		suite.addTestSuite(ColorTest.class);
+		suite.addTestSuite(ColorInstanceTest.class);
+		suite.addTestSuite(FillInstanceTest.class);
+		suite.addTestSuite(FillTest.class);
+		suite.addTestSuite(FillPropertySetterTest.class);
+		suite.addTestSuite(IsValidPropertySetterTest.class);
+		suite.addTestSuite(NullPropertySetterTest.class);
+		suite.addTestSuite(LineTypeTest.class);
+		suite.addTestSuite(LineInstanceTest.class);
+		suite.addTestSuite(LinePropertySetterTest.class);
+		suite.addTestSuite(FontPropertySetterTest.class);
+		suite.addTestSuite(FontInstanceTest.class);
+		suite.addTestSuite(FontTypeTest.class);
+		suite.addTestSuite(IsVisiblePropertySetterTest.class);
+		suite.addTestSuite(TopLayerOperatorDescriptorTest.class);
+		suite.addTestSuite(StackedLayerOperatorDescriptorTest.class);
+		suite.addTestSuite(CustomPropertyOperatorTest.class);
+		suite.addTestSuite(AndStackedLayerOperatorDescriptorTest.class);
+		suite.addTestSuite(OrStackedLayerOperatorDescriptorTest.class);
+		suite.addTestSuite(IsAbstractUmlSetterTest.class);
+		suite.addTestSuite(AllViewsDerivedLayerTest.class);
+		return suite;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayersTests(String name) {
+		super(name);
+	}
+
+} // LayersTests
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LineInstanceTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LineInstanceTest.java
new file mode 100755
index 0000000..760bc52
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LineInstanceTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LineInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Line Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LineInstanceTest extends TypeInstanceTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(LineInstanceTest.class);
+	}
+
+	/**
+	 * Constructs a new Line Instance test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LineInstanceTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Line Instance test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected LineInstance getFixture() {
+		return (LineInstance) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createLineInstance());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // LineInstanceTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LinePropertySetterTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LinePropertySetterTest.java
new file mode 100755
index 0000000..77f9a51
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LinePropertySetterTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LinePropertySetter;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Line Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LinePropertySetterTest extends PropertySetterTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(LinePropertySetterTest.class);
+	}
+
+	/**
+	 * Constructs a new Line Property Setter test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LinePropertySetterTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Line Property Setter test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected LinePropertySetter getFixture() {
+		return (LinePropertySetter) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createLinePropertySetter());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // LinePropertySetterTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LineTypeTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LineTypeTest.java
new file mode 100755
index 0000000..b6c001d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/LineTypeTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LineType;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Line Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LineTypeTest extends TypeTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(LineTypeTest.class);
+	}
+
+	/**
+	 * Constructs a new Line Type test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LineTypeTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Line Type test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected LineType getFixture() {
+		return (LineType) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createLineType());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // LineTypeTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/MetamodelTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/MetamodelTest.java
new file mode 100755
index 0000000..2dc61e9
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/MetamodelTest.java
@@ -0,0 +1,96 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.Metamodel;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Metamodel</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getEPackage() <em>Get EPackage</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class MetamodelTest extends FolderElementTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(MetamodelTest.class);
+	}
+
+	/**
+	 * Constructs a new Metamodel test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public MetamodelTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Metamodel test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected Metamodel getFixture() {
+		return (Metamodel) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createMetamodel());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getEPackage() <em>Get EPackage</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getEPackage()
+	 * @generated
+	 */
+	public void testGetEPackage() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+} // MetamodelTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/NullInstanceTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/NullInstanceTest.java
new file mode 100755
index 0000000..1bd97ea
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/NullInstanceTest.java
@@ -0,0 +1,96 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.NullInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Null Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.NullInstance#getInstance() <em>Get Instance</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class NullInstanceTest extends TypeInstanceTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(NullInstanceTest.class);
+	}
+
+	/**
+	 * Constructs a new Null Instance test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public NullInstanceTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Null Instance test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected NullInstance getFixture() {
+		return (NullInstance) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createNullInstance());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.NullInstance#getInstance() <em>Get Instance</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.NullInstance#getInstance()
+	 * @generated
+	 */
+	public void testGetInstance() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+} // NullInstanceTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/NullPropertySetterTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/NullPropertySetterTest.java
new file mode 100755
index 0000000..9e7ddf2
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/NullPropertySetterTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.NullPropertySetter;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Null Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class NullPropertySetterTest extends PropertySetterTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(NullPropertySetterTest.class);
+	}
+
+	/**
+	 * Constructs a new Null Property Setter test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public NullPropertySetterTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Null Property Setter test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected NullPropertySetter getFixture() {
+		return (NullPropertySetter) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createNullPropertySetter());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // NullPropertySetterTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/OrStackedLayerOperatorDescriptorTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/OrStackedLayerOperatorDescriptorTest.java
new file mode 100755
index 0000000..a673c1e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/OrStackedLayerOperatorDescriptorTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.OrStackedLayerOperatorDescriptor;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Or Stacked Layer Operator Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class OrStackedLayerOperatorDescriptorTest extends StackedLayerOperatorDescriptorTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(OrStackedLayerOperatorDescriptorTest.class);
+	}
+
+	/**
+	 * Constructs a new Or Stacked Layer Operator Descriptor test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public OrStackedLayerOperatorDescriptorTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Or Stacked Layer Operator Descriptor test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected OrStackedLayerOperatorDescriptor getFixture() {
+		return (OrStackedLayerOperatorDescriptor) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createOrStackedLayerOperatorDescriptor());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // OrStackedLayerOperatorDescriptorTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertyIndexTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertyIndexTest.java
new file mode 100755
index 0000000..078d88f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertyIndexTest.java
@@ -0,0 +1,96 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Property Index</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class PropertyIndexTest extends TestCase {
+
+	/**
+	 * The fixture for this Property Index test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected PropertyIndex fixture = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(PropertyIndexTest.class);
+	}
+
+	/**
+	 * Constructs a new Property Index test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public PropertyIndexTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Sets the fixture for this Property Index test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void setFixture(PropertyIndex fixture) {
+		this.fixture = fixture;
+	}
+
+	/**
+	 * Returns the fixture for this Property Index test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected PropertyIndex getFixture() {
+		return fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createPropertyIndex());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // PropertyIndexTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertyOperatorTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertyOperatorTest.java
new file mode 100755
index 0000000..cbfd6dd
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertyOperatorTest.java
@@ -0,0 +1,116 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Property Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList) <em>Get Compute Property Value Command</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyOperatorTest extends TestCase {
+
+	/**
+	 * The fixture for this Property Operator test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected PropertyOperator fixture = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(PropertyOperatorTest.class);
+	}
+
+	/**
+	 * Constructs a new Property Operator test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public PropertyOperatorTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Sets the fixture for this Property Operator test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void setFixture(PropertyOperator fixture) {
+		this.fixture = fixture;
+	}
+
+	/**
+	 * Returns the fixture for this Property Operator test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected PropertyOperator getFixture() {
+		return fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createPropertyOperator());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList) <em>Get Compute Property Value Command</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList)
+	 * @generated
+	 */
+	public void testGetComputePropertyValueCommand__EList() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+} // PropertyOperatorTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertyRegistryTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertyRegistryTest.java
new file mode 100755
index 0000000..b4debb8
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertyRegistryTest.java
@@ -0,0 +1,166 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Property Registry</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getPropertiesCount() <em>Properties Count</em>}</li>
+ * </ul>
+ * </p>
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getPropertyIndex(java.lang.String) <em>Get Property Index</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getProperty(java.lang.String) <em>Get Property</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#addProperty(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Add Property</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyRegistryTest extends TestCase {
+
+	/**
+	 * The fixture for this Property Registry test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected PropertyRegistry fixture = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(PropertyRegistryTest.class);
+	}
+
+	/**
+	 * Constructs a new Property Registry test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public PropertyRegistryTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Sets the fixture for this Property Registry test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void setFixture(PropertyRegistry fixture) {
+		this.fixture = fixture;
+	}
+
+	/**
+	 * Returns the fixture for this Property Registry test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected PropertyRegistry getFixture() {
+		return fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createPropertyRegistry());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getPropertiesCount() <em>Properties Count</em>}' feature getter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getPropertiesCount()
+	 * @generated
+	 */
+	public void testGetPropertiesCount() {
+		// TODO: implement this feature getter test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getPropertyIndex(java.lang.String) <em>Get Property Index</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getPropertyIndex(java.lang.String)
+	 * @generated
+	 */
+	public void testGetPropertyIndex__String() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getProperty(java.lang.String) <em>Get Property</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getProperty(java.lang.String)
+	 * @generated
+	 */
+	public void testGetProperty__String() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#addProperty(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Add Property</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#addProperty(org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 * @generated
+	 */
+	public void testAddProperty__Property() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+} // PropertyRegistryTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertySetterRegistryTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertySetterRegistryTest.java
new file mode 100755
index 0000000..b0f3470
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertySetterRegistryTest.java
@@ -0,0 +1,146 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Property Setter Registry</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getPropertySetter(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Property Setter</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getPropertySetter(java.lang.String) <em>Get Property Setter</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#addPropertySetter(org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter) <em>Add Property Setter</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertySetterRegistryTest extends TestCase {
+
+	/**
+	 * The fixture for this Property Setter Registry test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected PropertySetterRegistry fixture = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(PropertySetterRegistryTest.class);
+	}
+
+	/**
+	 * Constructs a new Property Setter Registry test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public PropertySetterRegistryTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Sets the fixture for this Property Setter Registry test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void setFixture(PropertySetterRegistry fixture) {
+		this.fixture = fixture;
+	}
+
+	/**
+	 * Returns the fixture for this Property Setter Registry test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected PropertySetterRegistry getFixture() {
+		return fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createPropertySetterRegistry());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getPropertySetter(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Property Setter</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getPropertySetter(org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 * @generated
+	 */
+	public void testGetPropertySetter__Property() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getPropertySetter(java.lang.String) <em>Get Property Setter</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getPropertySetter(java.lang.String)
+	 * @generated
+	 */
+	public void testGetPropertySetter__String() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#addPropertySetter(org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter) <em>Add Property Setter</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#addPropertySetter(org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter)
+	 * @generated
+	 */
+	public void testAddPropertySetter__PropertySetter() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+} // PropertySetterRegistryTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertySetterTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertySetterTest.java
new file mode 100755
index 0000000..d7eb295
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertySetterTest.java
@@ -0,0 +1,80 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter#setValue(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance) <em>Set Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class PropertySetterTest extends TestCase {
+
+	/**
+	 * The fixture for this Property Setter test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected PropertySetter fixture = null;
+
+	/**
+	 * Constructs a new Property Setter test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public PropertySetterTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Sets the fixture for this Property Setter test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void setFixture(PropertySetter fixture) {
+		this.fixture = fixture;
+	}
+
+	/**
+	 * Returns the fixture for this Property Setter test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected PropertySetter getFixture() {
+		return fixture;
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter#setValue(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance) <em>Set Value</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter#setValue(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance)
+	 * @generated
+	 */
+	public void testSetValue__View_TypeInstance() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+} // PropertySetterTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertyTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertyTest.java
new file mode 100755
index 0000000..4c874e7
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/PropertyTest.java
@@ -0,0 +1,96 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Property</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#createInstance() <em>Create Instance</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyTest extends FolderElementTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(PropertyTest.class);
+	}
+
+	/**
+	 * Constructs a new Property test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public PropertyTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Property test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected Property getFixture() {
+		return (Property) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createProperty());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#createInstance() <em>Create Instance</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Property#createInstance()
+	 * @generated
+	 */
+	public void testCreateInstance() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+} // PropertyTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/RegExpLayerDescriptorTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/RegExpLayerDescriptorTest.java
new file mode 100755
index 0000000..e2bb48d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/RegExpLayerDescriptorTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayerDescriptor;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Reg Exp Layer Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class RegExpLayerDescriptorTest extends LayerDescriptorTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(RegExpLayerDescriptorTest.class);
+	}
+
+	/**
+	 * Constructs a new Reg Exp Layer Descriptor test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public RegExpLayerDescriptorTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Reg Exp Layer Descriptor test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected RegExpLayerDescriptor getFixture() {
+		return (RegExpLayerDescriptor) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createRegExpLayerDescriptor());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // RegExpLayerDescriptorTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/RegExpLayerTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/RegExpLayerTest.java
new file mode 100755
index 0000000..158f737
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/RegExpLayerTest.java
@@ -0,0 +1,186 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Reg Exp Layer</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#activate(org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator) <em>Activate</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#deactivate(org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator) <em>Deactivate</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#isDerivedView(org.eclipse.gmf.runtime.notation.View) <em>Is Derived View</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#attachDerivedView(org.eclipse.gmf.runtime.notation.View) <em>Attach Derived View</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#attachDerivedViews(org.eclipse.emf.common.util.EList) <em>Attach Derived Views</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#attachDerivedViews() <em>Attach Derived Views</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#lookupDerivedViews(org.eclipse.emf.common.util.EList) <em>Lookup Derived Views</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class RegExpLayerTest extends AbstractLayerTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(RegExpLayerTest.class);
+	}
+
+	/**
+	 * Constructs a new Reg Exp Layer test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public RegExpLayerTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Reg Exp Layer test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected RegExpLayer getFixture() {
+		return (RegExpLayer) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createRegExpLayer());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#activate(org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator) <em>Activate</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#activate(org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator)
+	 * @generated
+	 */
+	public void testActivate__AbstractLayerOperator() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#deactivate(org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator) <em>Deactivate</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#deactivate(org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator)
+	 * @generated
+	 */
+	public void testDeactivate__AbstractLayerOperator() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#isDerivedView(org.eclipse.gmf.runtime.notation.View) <em>Is Derived View</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#isDerivedView(org.eclipse.gmf.runtime.notation.View)
+	 * @generated
+	 */
+	public void testIsDerivedView__View() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#attachDerivedView(org.eclipse.gmf.runtime.notation.View) <em>Attach Derived View</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#attachDerivedView(org.eclipse.gmf.runtime.notation.View)
+	 * @generated
+	 */
+	public void testAttachDerivedView__View() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#attachDerivedViews(org.eclipse.emf.common.util.EList) <em>Attach Derived Views</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#attachDerivedViews(org.eclipse.emf.common.util.EList)
+	 * @generated
+	 */
+	public void testAttachDerivedViews__EList() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#attachDerivedViews() <em>Attach Derived Views</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#attachDerivedViews()
+	 * @generated
+	 */
+	public void testAttachDerivedViews() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#lookupDerivedViews(org.eclipse.emf.common.util.EList) <em>Lookup Derived Views</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#lookupDerivedViews(org.eclipse.emf.common.util.EList)
+	 * @generated
+	 */
+	public void testLookupDerivedViews__EList() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+} // RegExpLayerTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/SimpleLayerDescriptorTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/SimpleLayerDescriptorTest.java
new file mode 100755
index 0000000..5dec776
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/SimpleLayerDescriptorTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.SimpleLayerDescriptor;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Simple Layer Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class SimpleLayerDescriptorTest extends LayerDescriptorTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(SimpleLayerDescriptorTest.class);
+	}
+
+	/**
+	 * Constructs a new Simple Layer Descriptor test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public SimpleLayerDescriptorTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Simple Layer Descriptor test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected SimpleLayerDescriptor getFixture() {
+		return (SimpleLayerDescriptor) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createSimpleLayerDescriptor());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // SimpleLayerDescriptorTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StackedLayerOperatorDescriptorTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StackedLayerOperatorDescriptorTest.java
new file mode 100755
index 0000000..b0b0f9f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StackedLayerOperatorDescriptorTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperatorDescriptor;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Stacked Layer Operator Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class StackedLayerOperatorDescriptorTest extends LayerOperatorDescriptorTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(StackedLayerOperatorDescriptorTest.class);
+	}
+
+	/**
+	 * Constructs a new Stacked Layer Operator Descriptor test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public StackedLayerOperatorDescriptorTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Stacked Layer Operator Descriptor test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected StackedLayerOperatorDescriptor getFixture() {
+		return (StackedLayerOperatorDescriptor) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createStackedLayerOperatorDescriptor());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // StackedLayerOperatorDescriptorTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StackedLayerOperatorTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StackedLayerOperatorTest.java
new file mode 100755
index 0000000..72784e5
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StackedLayerOperatorTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Stacked Layer Operator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class StackedLayerOperatorTest extends AbstractLayerOperatorTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(StackedLayerOperatorTest.class);
+	}
+
+	/**
+	 * Constructs a new Stacked Layer Operator test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public StackedLayerOperatorTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Stacked Layer Operator test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected StackedLayerOperator getFixture() {
+		return (StackedLayerOperator) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createStackedLayerOperator());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // StackedLayerOperatorTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringInstanceTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringInstanceTest.java
new file mode 100755
index 0000000..efc6570
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringInstanceTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.StringInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>String Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class StringInstanceTest extends TypeInstanceTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(StringInstanceTest.class);
+	}
+
+	/**
+	 * Constructs a new String Instance test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public StringInstanceTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this String Instance test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected StringInstance getFixture() {
+		return (StringInstance) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createStringInstance());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // StringInstanceTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringToPropertyIndexMapTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringToPropertyIndexMapTest.java
new file mode 100755
index 0000000..25d824c
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringToPropertyIndexMapTest.java
@@ -0,0 +1,100 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import java.util.Map;
+
+import junit.framework.TestCase;
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>String To Property Index Map</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class StringToPropertyIndexMapTest extends TestCase {
+
+	/**
+	 * The fixture for this String To Property Index Map test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Map.Entry<String, PropertyIndex> fixture = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(StringToPropertyIndexMapTest.class);
+	}
+
+	/**
+	 * Constructs a new String To Property Index Map test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public StringToPropertyIndexMapTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Sets the fixture for this String To Property Index Map test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void setFixture(Map.Entry<String, PropertyIndex> fixture) {
+		this.fixture = fixture;
+	}
+
+	/**
+	 * Returns the fixture for this String To Property Index Map test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Map.Entry<String, PropertyIndex> getFixture() {
+		return fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	@SuppressWarnings("unchecked")
+	protected void setUp() throws Exception {
+		setFixture((Map.Entry<String, PropertyIndex>) LayersFactory.eINSTANCE.create(LayersPackage.Literals.STRING_TO_PROPERTY_INDEX_MAP));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // StringToPropertyIndexMapTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringToPropertySetterTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringToPropertySetterTest.java
new file mode 100755
index 0000000..7faed7d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringToPropertySetterTest.java
@@ -0,0 +1,100 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import java.util.Map;
+
+import junit.framework.TestCase;
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>String To Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class StringToPropertySetterTest extends TestCase {
+
+	/**
+	 * The fixture for this String To Property Setter test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Map.Entry<String, PropertySetter> fixture = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(StringToPropertySetterTest.class);
+	}
+
+	/**
+	 * Constructs a new String To Property Setter test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public StringToPropertySetterTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Sets the fixture for this String To Property Setter test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void setFixture(Map.Entry<String, PropertySetter> fixture) {
+		this.fixture = fixture;
+	}
+
+	/**
+	 * Returns the fixture for this String To Property Setter test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Map.Entry<String, PropertySetter> getFixture() {
+		return fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	@SuppressWarnings("unchecked")
+	protected void setUp() throws Exception {
+		setFixture((Map.Entry<String, PropertySetter>) LayersFactory.eINSTANCE.create(LayersPackage.Literals.STRING_TO_PROPERTY_SETTER));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // StringToPropertySetterTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringToTypeInstanceMapTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringToTypeInstanceMapTest.java
new file mode 100755
index 0000000..e5e2d23
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringToTypeInstanceMapTest.java
@@ -0,0 +1,100 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import java.util.Map;
+
+import junit.framework.TestCase;
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>String To Type Instance Map</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class StringToTypeInstanceMapTest extends TestCase {
+
+	/**
+	 * The fixture for this String To Type Instance Map test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Map.Entry<String, TypeInstance> fixture = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(StringToTypeInstanceMapTest.class);
+	}
+
+	/**
+	 * Constructs a new String To Type Instance Map test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public StringToTypeInstanceMapTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Sets the fixture for this String To Type Instance Map test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void setFixture(Map.Entry<String, TypeInstance> fixture) {
+		this.fixture = fixture;
+	}
+
+	/**
+	 * Returns the fixture for this String To Type Instance Map test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Map.Entry<String, TypeInstance> getFixture() {
+		return fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	@SuppressWarnings("unchecked")
+	protected void setUp() throws Exception {
+		setFixture((Map.Entry<String, TypeInstance>) LayersFactory.eINSTANCE.create(LayersPackage.Literals.STRING_TO_TYPE_INSTANCE_MAP));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // StringToTypeInstanceMapTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringToTypeMapTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringToTypeMapTest.java
new file mode 100755
index 0000000..76068b5
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringToTypeMapTest.java
@@ -0,0 +1,100 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import java.util.Map;
+
+import junit.framework.TestCase;
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>String To Type Map</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class StringToTypeMapTest extends TestCase {
+
+	/**
+	 * The fixture for this String To Type Map test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Map.Entry<String, Type> fixture = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(StringToTypeMapTest.class);
+	}
+
+	/**
+	 * Constructs a new String To Type Map test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public StringToTypeMapTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Sets the fixture for this String To Type Map test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void setFixture(Map.Entry<String, Type> fixture) {
+		this.fixture = fixture;
+	}
+
+	/**
+	 * Returns the fixture for this String To Type Map test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected Map.Entry<String, Type> getFixture() {
+		return fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	@SuppressWarnings("unchecked")
+	protected void setUp() throws Exception {
+		setFixture((Map.Entry<String, Type>) LayersFactory.eINSTANCE.create(LayersPackage.Literals.STRING_TO_TYPE_MAP));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // StringToTypeMapTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringTypeTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringTypeTest.java
new file mode 100755
index 0000000..b94e52b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/StringTypeTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.StringType;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>String Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class StringTypeTest extends TypeTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(StringTypeTest.class);
+	}
+
+	/**
+	 * Constructs a new String Type test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public StringTypeTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this String Type test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected StringType getFixture() {
+		return (StringType) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createStringType());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // StringTypeTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TopLayerOperatorDescriptorTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TopLayerOperatorDescriptorTest.java
new file mode 100755
index 0000000..f94852f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TopLayerOperatorDescriptorTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperatorDescriptor;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Top Layer Operator Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class TopLayerOperatorDescriptorTest extends LayerOperatorDescriptorTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(TopLayerOperatorDescriptorTest.class);
+	}
+
+	/**
+	 * Constructs a new Top Layer Operator Descriptor test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public TopLayerOperatorDescriptorTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Top Layer Operator Descriptor test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected TopLayerOperatorDescriptor getFixture() {
+		return (TopLayerOperatorDescriptor) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createTopLayerOperatorDescriptor());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // TopLayerOperatorDescriptorTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TopLayerOperatorTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TopLayerOperatorTest.java
new file mode 100755
index 0000000..2279b0e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TopLayerOperatorTest.java
@@ -0,0 +1,76 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Top Layer Operator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class TopLayerOperatorTest extends AbstractLayerOperatorTest {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(TopLayerOperatorTest.class);
+	}
+
+	/**
+	 * Constructs a new Top Layer Operator test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public TopLayerOperatorTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Top Layer Operator test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected TopLayerOperator getFixture() {
+		return (TopLayerOperator) fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createTopLayerOperator());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // TopLayerOperatorTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TypeInstanceTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TypeInstanceTest.java
new file mode 100755
index 0000000..ac5506b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TypeInstanceTest.java
@@ -0,0 +1,110 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Type Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand#getCmdValue() <em>Get Cmd Value</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance#setValueFromString(java.lang.String) <em>Set Value From String</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance#setValueFromInstance(org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance) <em>Set Value From Instance</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class TypeInstanceTest extends TestCase {
+
+	/**
+	 * The fixture for this Type Instance test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected TypeInstance fixture = null;
+
+	/**
+	 * Constructs a new Type Instance test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public TypeInstanceTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Sets the fixture for this Type Instance test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void setFixture(TypeInstance fixture) {
+		this.fixture = fixture;
+	}
+
+	/**
+	 * Returns the fixture for this Type Instance test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected TypeInstance getFixture() {
+		return fixture;
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand#getCmdValue() <em>Get Cmd Value</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand#getCmdValue()
+	 * @generated
+	 */
+	public void testGetCmdValue() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance#setValueFromString(java.lang.String) <em>Set Value From String</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance#setValueFromString(java.lang.String)
+	 * @generated
+	 */
+	public void testSetValueFromString__String() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance#setValueFromInstance(org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance) <em>Set Value From Instance</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance#setValueFromInstance(org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance)
+	 * @generated
+	 */
+	public void testSetValueFromInstance__TypeInstance() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+} // TypeInstanceTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TypeRegistryTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TypeRegistryTest.java
new file mode 100755
index 0000000..540c1a4
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TypeRegistryTest.java
@@ -0,0 +1,96 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import junit.framework.TestCase;
+import junit.textui.TestRunner;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Type Registry</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class TypeRegistryTest extends TestCase {
+
+	/**
+	 * The fixture for this Type Registry test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected TypeRegistry fixture = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static void main(String[] args) {
+		TestRunner.run(TypeRegistryTest.class);
+	}
+
+	/**
+	 * Constructs a new Type Registry test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public TypeRegistryTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Sets the fixture for this Type Registry test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void setFixture(TypeRegistry fixture) {
+		this.fixture = fixture;
+	}
+
+	/**
+	 * Returns the fixture for this Type Registry test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected TypeRegistry getFixture() {
+		return fixture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#setUp()
+	 * @generated
+	 */
+	@Override
+	protected void setUp() throws Exception {
+		setFixture(LayersFactory.eINSTANCE.createTypeRegistry());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see junit.framework.TestCase#tearDown()
+	 * @generated
+	 */
+	@Override
+	protected void tearDown() throws Exception {
+		setFixture(null);
+	}
+
+} // TypeRegistryTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TypeTest.java b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TypeTest.java
new file mode 100755
index 0000000..239a75d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel.tests/src/org/eclipse/papyrus/layers/stackmodel/layers/tests/TypeTest.java
@@ -0,0 +1,59 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.tests;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * A test case for the model object '<em><b>Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following operations are tested:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Type#createInstance() <em>Create Instance</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class TypeTest extends FolderElementTest {
+
+	/**
+	 * Constructs a new Type test case with the given name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public TypeTest(String name) {
+		super(name);
+	}
+
+	/**
+	 * Returns the fixture for this Type test case.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected Type getFixture() {
+		return (Type) fixture;
+	}
+
+	/**
+	 * Tests the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Type#createInstance() <em>Create Instance</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Type#createInstance()
+	 * @generated
+	 */
+	public void testCreateInstance() {
+		// TODO: implement this operation test method
+		// Ensure that you remove @generated or mark it @generated NOT
+		fail();
+	}
+
+} // TypeTest
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/.classpath b/layers/org.eclipse.papyrus.layers.stackmodel/.classpath
new file mode 100755
index 0000000..f721dab
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/.classpath
@@ -0,0 +1,8 @@
+<?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="src" path="test"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/.project b/layers/org.eclipse.papyrus.layers.stackmodel/.project
new file mode 100755
index 0000000..eb81c18
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.layers.stackmodel</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/layers/org.eclipse.papyrus.layers.stackmodel/.settings/org.eclipse.jdt.core.prefs b/layers/org.eclipse.papyrus.layers.stackmodel/.settings/org.eclipse.jdt.core.prefs
new file mode 100755
index 0000000..94d61f0
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,291 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+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/layers/org.eclipse.papyrus.layers.stackmodel/.settings/org.eclipse.jdt.ui.prefs b/layers/org.eclipse.papyrus.layers.stackmodel/.settings/org.eclipse.jdt.ui.prefs
new file mode 100755
index 0000000..954281d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/.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.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
+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 v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\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>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/META-INF/MANIFEST.MF b/layers/org.eclipse.papyrus.layers.stackmodel/META-INF/MANIFEST.MF
new file mode 100755
index 0000000..0431155
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/META-INF/MANIFEST.MF
@@ -0,0 +1,30 @@
+Manifest-Version: 1.0
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore,
+ org.eclipse.gmf.runtime.notation;visibility:=reexport,
+ org.junit,
+ org.eclipse.emf.ecore.xmi;bundle-version="2.9.0",
+ org.eclipse.uml2.uml;bundle-version="4.1.0",
+ org.eclipse.ocl.ecore;bundle-version="3.3.0",
+ org.eclipse.emf.query.ocl;bundle-version="2.0.0",
+ com.google.guava;bundle-version="11.0.0",
+ org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0"
+Export-Package: org.eclipse.papyrus.layers.configmodel.layersconfig,
+ org.eclipse.papyrus.layers.configmodel.layersconfig.impl,
+ org.eclipse.papyrus.layers.configmodel.layersconfig.util,
+ org.eclipse.papyrus.layers.stackmodel,
+ org.eclipse.papyrus.layers.stackmodel.command,
+ org.eclipse.papyrus.layers.stackmodel.layers,
+ org.eclipse.papyrus.layers.stackmodel.layers.impl,
+ org.eclipse.papyrus.layers.stackmodel.layers.util,
+ org.eclipse.papyrus.layers.stackmodel.notifier
+Bundle-Vendor: %providerName
+Bundle-ActivationPolicy: lazy
+Bundle-ClassPath: .
+Bundle-Version: 1.2.0.qualifier
+Bundle-Localization: plugin
+Bundle-Name: %pluginName
+Bundle-ManifestVersion: 2
+Bundle-Activator: org.eclipse.papyrus.layers.stackmodel.Activator
+Bundle-SymbolicName: org.eclipse.papyrus.layers.stackmodel;singleton:=true
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/about.html b/layers/org.eclipse.papyrus.layers.stackmodel/about.html
new file mode 100755
index 0000000..d35d5ae
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/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>June 5, 2007</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/build.properties b/layers/org.eclipse.papyrus.layers.stackmodel/build.properties
new file mode 100755
index 0000000..10702de
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/build.properties
@@ -0,0 +1,14 @@
+#
+
+bin.includes = .,\
+               model/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties,\
+               about.html,\
+               test/models/model1.notation
+jars.compile.order = .
+source.. = src/,\
+           test/
+output.. = bin/
+src.includes = about.html
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.di b/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.di
new file mode 100755
index 0000000..7ef1de6
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.di
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<di:SashWindowsMngr xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi">
+  <pageList>
+    <availablePage>
+      <emfPageIdentifier href="layers.notation#_mmXS0LcqEeK8_t7Rpq6ZJA"/>
+    </availablePage>
+    <availablePage>
+      <emfPageIdentifier href="layers.notation#_y-BQANa7EeKPiuTfpuvqHA"/>
+    </availablePage>
+    <availablePage>
+      <emfPageIdentifier href="layers.notation#_C_qusNa8EeKPiuTfpuvqHA"/>
+    </availablePage>
+    <availablePage>
+      <emfPageIdentifier href="layers.notation#_QLWs4Na8EeKPiuTfpuvqHA"/>
+    </availablePage>
+    <availablePage>
+      <emfPageIdentifier href="layers.notation#_XXUswNhbEeKgkM6XJF9t4A"/>
+    </availablePage>
+    <availablePage>
+      <emfPageIdentifier href="layers.notation#_ePKuUNhbEeKgkM6XJF9t4A"/>
+    </availablePage>
+    <availablePage>
+      <emfPageIdentifier href="layers.notation#_Dtu4wNjkEeKQqZMBCFd2Uw"/>
+    </availablePage>
+    <availablePage>
+      <emfPageIdentifier href="layers.notation#_-aAtoNjpEeKQqZMBCFd2Uw"/>
+    </availablePage>
+    <availablePage>
+      <emfPageIdentifier href="layers.notation#_gSkRsNxGEeKwptaAAanMDg"/>
+    </availablePage>
+    <availablePage>
+      <emfPageIdentifier href="layers.notation#_j4XzEOT_EeKSDdPH_NXL-g"/>
+    </availablePage>
+    <availablePage>
+      <emfPageIdentifier href="layers.notation#_UCFqMO3vEeKwLp35IbAIig"/>
+    </availablePage>
+    <availablePage>
+      <emfPageIdentifier href="layers.notation#_Up8U8P91EeKlldop5b2mtw"/>
+    </availablePage>
+    <availablePage>
+      <emfPageIdentifier href="layers.notation#_Vjf6UHbuEeOlpfB_tZS-QA"/>
+    </availablePage>
+  </pageList>
+  <sashModel currentSelection="//@sashModel/@windows.0/@children.0">
+    <windows>
+      <children xsi:type="di:TabFolder">
+        <children>
+          <emfPageIdentifier href="layers.notation#_mmXS0LcqEeK8_t7Rpq6ZJA"/>
+        </children>
+        <children>
+          <emfPageIdentifier href="layers.notation#_y-BQANa7EeKPiuTfpuvqHA"/>
+        </children>
+        <children>
+          <emfPageIdentifier href="layers.notation#_Vjf6UHbuEeOlpfB_tZS-QA"/>
+        </children>
+        <children>
+          <emfPageIdentifier href="layers.notation#_C_qusNa8EeKPiuTfpuvqHA"/>
+        </children>
+        <children>
+          <emfPageIdentifier href="layers.notation#_QLWs4Na8EeKPiuTfpuvqHA"/>
+        </children>
+        <children>
+          <emfPageIdentifier href="layers.notation#_XXUswNhbEeKgkM6XJF9t4A"/>
+        </children>
+        <children>
+          <emfPageIdentifier href="layers.notation#_ePKuUNhbEeKgkM6XJF9t4A"/>
+        </children>
+        <children>
+          <emfPageIdentifier href="layers.notation#_Dtu4wNjkEeKQqZMBCFd2Uw"/>
+        </children>
+        <children>
+          <emfPageIdentifier href="layers.notation#_-aAtoNjpEeKQqZMBCFd2Uw"/>
+        </children>
+        <children>
+          <emfPageIdentifier href="layers.notation#_gSkRsNxGEeKwptaAAanMDg"/>
+        </children>
+        <children>
+          <emfPageIdentifier href="layers.notation#_j4XzEOT_EeKSDdPH_NXL-g"/>
+        </children>
+        <children>
+          <emfPageIdentifier href="layers.notation#_UCFqMO3vEeKwLp35IbAIig"/>
+        </children>
+        <children>
+          <emfPageIdentifier href="layers.notation#_Up8U8P91EeKlldop5b2mtw"/>
+        </children>
+      </children>
+    </windows>
+  </sashModel>
+</di:SashWindowsMngr>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.ecore b/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.ecore
new file mode 100755
index 0000000..c68bcef
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.ecore
@@ -0,0 +1,578 @@
+<?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="layers" nsURI="org.eclipse.papyrus.layers.0.10" nsPrefix="org.eclipse.papyrus.layers.stackmodel.layers">
+  <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+    <details key="documentation" value="Start the LayesStack.&#xD;&#xA;This method should be called after the LayersStack creation. It is not called from the constructor, because &#xD;&#xA;the initialisation can differ if the LayersStack is created by the user or by EMF after a reloading.&#xD;&#xA;"/>
+  </eAnnotations>
+  <eClassifiers xsi:type="ecore:EClass" name="LayerNamedStyle" eSuperTypes="../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//NamedStyle">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="layersStack" ordered="false"
+        upperBound="-1" eType="#//LayersStack" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="LayersStack" eSuperTypes="#//LayersContainer">
+    <eOperations name="getComputePropertyValueCommand" ordered="false" lowerBound="1"
+        eType="#//ComputePropertyValueCommand" eExceptions="#//LayersException">
+      <eParameters name="view" ordered="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//View"/>
+      <eParameters name="property" ordered="false" lowerBound="1" eType="#//Property"/>
+    </eOperations>
+    <eOperations name="getPropertiesComputePropertyValueCommand" upperBound="-1" eType="#//ComputePropertyValueCommand"
+        eExceptions="#//LayersException">
+      <eParameters name="view" ordered="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//View"/>
+      <eParameters name="property" lowerBound="1" upperBound="-1" eType="#//Property"/>
+    </eOperations>
+    <eOperations name="getViewsComputePropertyValueCommand" upperBound="-1" eType="#//ComputePropertyValueCommand"
+        eExceptions="#//LayersException">
+      <eParameters name="view" upperBound="-1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//View"/>
+      <eParameters name="property" ordered="false" lowerBound="1" eType="#//Property"/>
+    </eOperations>
+    <eOperations name="startAfterCreation" ordered="false" lowerBound="1"/>
+    <eOperations name="attachLayers" ordered="false" lowerBound="1" eExceptions="#//LayersException">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Start the LayersStack after a reloading by EMF. This method should be explicitly called after a reloading.&#xD;&#xA;The method usually start the layer behaviors."/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="attach" ordered="false" lowerBound="1" eExceptions="#//LayersException">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Try to attach this Layer. If successful, the state go to &quot;attached&quot;. Otherwise, an exception is thrown.&#xD;&#xA;A Layer can be attached if its required attributes are set.&#xD;&#xA;Required attributes:&#xD;&#xA;&lt;ul>&#xD;&#xA;  &lt;li>application&lt;/li>&#xD;&#xA;  &lt;li>owningLayerStack&lt;/li>&#xD;&#xA;  &lt;li>parent container&lt;/li>&#xD;&#xA;  &lt;li>&lt;/li>&#xD;&#xA;&lt;/ul>&#xD;&#xA;Just after enterring in &quot;attached&quot; state, the enterAttachedState() method is called.&#xD;&#xA;If this Layer is successfully attached, then attach subLayers."/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="detach" ordered="false" lowerBound="1" eExceptions="#//LayersException">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Detach the Layer. The state go to &quot;detached&quot;.&#xD;&#xA;Associated behavior are stopped."/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="enterAttachedState" ordered="false" lowerBound="1" eExceptions="#//LayersException">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="This method is called by the class immediately after entering in attached state.&#xD;&#xA;The methodcan be used to start the layer behaviors."/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="exitAttachedState" ordered="false" lowerBound="1">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="This method is called just before this Layer leave the attached state.&#xD;&#xA;"/>
+      </eAnnotations>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="layers" ordered="false"
+        eType="#//LayerExpression" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" lowerBound="1"
+        eType="#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" ordered="false"
+        lowerBound="1" eType="#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="diagram" ordered="false"
+        eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//Diagram"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="state" ordered="false"
+        unique="false" lowerBound="1" eType="#//LayerState" defaultValueLiteral="detached"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="LayerExpression" abstract="true" eSuperTypes="#//ApplicationDependantElement">
+    <eOperations name="getComputePropertyValueCommand" ordered="false" lowerBound="1"
+        eType="#//ComputePropertyValueCommand" eExceptions="#//LayersException">
+      <eParameters name="view" ordered="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//View"/>
+      <eParameters name="property" ordered="false" lowerBound="1" eType="#//Property"/>
+    </eOperations>
+    <eOperations name="getViewsComputePropertyValueCommand" upperBound="-1" eType="#//ComputePropertyValueCommand"
+        eExceptions="#//LayersException">
+      <eParameters name="view" upperBound="-1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//View"/>
+      <eParameters name="property" ordered="false" lowerBound="1" eType="#//Property"/>
+    </eOperations>
+    <eOperations name="getPropertiesComputePropertyValueCommand" upperBound="-1" eType="#//ComputePropertyValueCommand"
+        eExceptions="#//LayersException">
+      <eParameters name="view" ordered="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//View"/>
+      <eParameters name="property" lowerBound="1" upperBound="-1" eType="#//Property"/>
+    </eOperations>
+    <eOperations name="attachToLayersStack" ordered="false" lowerBound="1">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Method called to specify that this Layer should be initialized for the specified LayerStack.&#xD;&#xA;Init this Layer for the specified LayersStack.&#xD;&#xA;This method is called by the LayersStack when it detect that tha layer is attached to it.&#xD;&#xA;"/>
+      </eAnnotations>
+      <eParameters name="owningLayersStack" ordered="false" lowerBound="1" eType="#//LayersStack"/>
+    </eOperations>
+    <eOperations name="getLayersStack" ordered="false" lowerBound="1" eType="#//LayersStack"
+        eExceptions="#//NotFoundException">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="A checked version of getOwningLayersStack.&#xD;&#xA;"/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="enterAttachedState" ordered="false" lowerBound="1" eExceptions="#//LayersException">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="This method is called by the class immediately after entering in attached state.&#xD;&#xA;The methodcan be used to start the layer behaviors."/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="attach" ordered="false" lowerBound="1" eExceptions="#//LayersException">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Try to attach this Layer. If successful, the state go to &quot;attached&quot;. Otherwise, an exception is thrown.&#xD;&#xA;A Layer can be attached if its required attributes are set.&#xD;&#xA;Required attributes:&#xD;&#xA;&lt;ul>&#xD;&#xA;  &lt;li>application&lt;/li>&#xD;&#xA;  &lt;li>owningLayerStack&lt;/li>&#xD;&#xA;  &lt;li>parent container&lt;/li>&#xD;&#xA;  &lt;li>&lt;/li>&#xD;&#xA;&lt;/ul>&#xD;&#xA;Just after enterring in &quot;attached&quot; state, the enterAttachedState() method is called.&#xD;&#xA;If this Layer is successfully attached, then attach subLayers."/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="detach" ordered="false" lowerBound="1" eExceptions="#//LayersException">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Detach the Layer. The state go to &quot;detached&quot;.&#xD;&#xA;Associated behavior are stopped."/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="exitAttachedState" ordered="false" lowerBound="1">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="This method is called just before this Layer leave the attached state.&#xD;&#xA;"/>
+      </eAnnotations>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" lowerBound="1"
+        eType="#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" ordered="false"
+        lowerBound="1" eType="#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isLayerEnabledInternal"
+        ordered="false" lowerBound="1" eType="#//boolean" changeable="false" volatile="true"
+        transient="true" derived="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isLayerEnabled" ordered="false"
+        lowerBound="1" eType="#//boolean" defaultValueLiteral="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isBranchEnabled" ordered="false"
+        lowerBound="1" eType="#//boolean" transient="true" defaultValueLiteral="true">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="documentation" value="Is the branch from this node to the root enabled ?&#xD;&#xA;A branch is enabled if all node of the branch are enabled.&#xD;&#xA;In other world, if an ancestor node is disable, the branch is disabled.&#xD;&#xA;Setting the value of this node set the value of the subnodes."/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="owningLayersStack" ordered="false"
+        eType="#//LayersStack"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="state" ordered="false"
+        unique="false" lowerBound="1" eType="#//LayerState" defaultValueLiteral="detached"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ApplicationDependantElement" abstract="true">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="application" ordered="false"
+        eType="#//LayersStackApplication"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="LayersStackApplication" eSuperTypes="#//FolderElement">
+    <eOperations name="getLayersStackFor" ordered="false" lowerBound="1" eType="#//LayersStack">
+      <eParameters name="diagram" ordered="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//Diagram"/>
+    </eOperations>
+    <eOperations name="removeLayersStackFor" ordered="false" lowerBound="1">
+      <eParameters name="diagram" ordered="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//Diagram"/>
+    </eOperations>
+    <eOperations name="isLayersStackAttachedFor" ordered="false" lowerBound="1" eType="#//boolean">
+      <eParameters name="diagram" ordered="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//Diagram"/>
+    </eOperations>
+    <eOperations name="createLayersStackFor" ordered="false" lowerBound="1" eType="#//LayersStack">
+      <eParameters name="diagram" ordered="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//Diagram"/>
+    </eOperations>
+    <eOperations name="lookupLayersStackFor" ordered="false" lowerBound="1" eType="#//LayersStack"
+        eExceptions="#//NotFoundException">
+      <eParameters name="diagram" ordered="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//Diagram"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="layersStacks" ordered="false"
+        upperBound="-1" eType="#//LayersStack" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="layerStackRegistry" ordered="false"
+        lowerBound="1" eType="#//LayerStackDescriptorRegistry" transient="true" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="propertyRegistry" ordered="false"
+        lowerBound="1" eType="#//PropertyRegistry" transient="true" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="layerDescriptorRegistry"
+        ordered="false" lowerBound="1" eType="#//LayerDescriptorRegistry" transient="true"
+        containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="factory" ordered="false"
+        lowerBound="1" eType="#//LayerApplicationFactory" transient="true" containment="true"
+        eOpposite="#//LayerApplicationFactory/application"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="propertySetterRegistry"
+        ordered="false" eType="#//PropertySetterRegistry" transient="true" containment="true"
+        eOpposite="#//PropertySetterRegistry/application"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="layerOperatorDescriptorRegistry"
+        ordered="false" eType="#//LayerOperatorDescriptorRegistry" transient="true"
+        containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="FolderElement" abstract="true"/>
+  <eClassifiers xsi:type="ecore:EClass" name="LayerStackDescriptorRegistry"/>
+  <eClassifiers xsi:type="ecore:EClass" name="PropertyRegistry">
+    <eOperations name="getPropertyIndex" ordered="false" lowerBound="1" eType="#//int"
+        eExceptions="#//NotFoundException">
+      <eParameters name="propertyName" ordered="false" lowerBound="1" eType="#//String"/>
+    </eOperations>
+    <eOperations name="getProperty" ordered="false" lowerBound="1" eType="#//Property"
+        eExceptions="#//NotFoundException">
+      <eParameters name="propertyName" ordered="false" lowerBound="1" eType="#//String"/>
+    </eOperations>
+    <eOperations name="addProperty" ordered="false" lowerBound="1">
+      <eParameters name="property" ordered="false" lowerBound="1" eType="#//Property"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="properties" upperBound="-1"
+        eType="#//Property" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="typeRegistry" ordered="false"
+        eType="#//TypeRegistry" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="propertiesCount" ordered="false"
+        lowerBound="1" eType="#//int" changeable="false" volatile="true" transient="true"
+        derived="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Property" eSuperTypes="#//FolderElement">
+    <eOperations name="createInstance" ordered="false" lowerBound="1" eType="#//TypeInstance"
+        eExceptions="#//BadStateException"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" lowerBound="1"
+        eType="#//Type"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="defaultValue" ordered="false"
+        eType="#//TypeInstance" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" lowerBound="1"
+        eType="#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" ordered="false"
+        lowerBound="1" eType="#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="index" ordered="false"
+        lowerBound="1" eType="#//int" defaultValueLiteral="-1"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Type" abstract="true" eSuperTypes="#//FolderElement">
+    <eOperations name="createInstance" ordered="false" lowerBound="1" eType="#//TypeInstance"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="metamodel" ordered="false"
+        lowerBound="1" eType="#//Metamodel"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" lowerBound="1"
+        eType="#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" ordered="false"
+        lowerBound="1" eType="#//String"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Metamodel" eSuperTypes="#//FolderElement">
+    <eOperations name="getEPackage" ordered="false" lowerBound="1" eType="#//EPackage"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" lowerBound="1"
+        eType="#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" ordered="false"
+        lowerBound="1" eType="#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="nsuri" ordered="false"
+        lowerBound="1" eType="#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="pluginID" ordered="false"
+        lowerBound="1" eType="#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="ePackageInstanceName" ordered="false"
+        lowerBound="1" eType="#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isTypeValid" ordered="false"
+        lowerBound="1" eType="#//boolean"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="String" instanceClassName="java.lang.String"/>
+  <eClassifiers xsi:type="ecore:EDataType" name="boolean" instanceClassName="boolean"/>
+  <eClassifiers xsi:type="ecore:EDataType" name="EPackage" instanceClassName="org.eclipse.emf.ecore.EPackage"/>
+  <eClassifiers xsi:type="ecore:EClass" name="TypeInstance" abstract="true" eSuperTypes="#//ComputePropertyValueCommandItf">
+    <eOperations name="setValueFromString" ordered="false" lowerBound="1">
+      <eParameters name="value" ordered="false" lowerBound="1" eType="#//String"/>
+    </eOperations>
+    <eOperations name="setValueFromInstance" ordered="false" lowerBound="1">
+      <eParameters name="value" ordered="false" lowerBound="1" eType="#//TypeInstance"/>
+    </eOperations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ComputePropertyValueCommandItf" instanceClassName="org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand"
+      abstract="true" interface="true">
+    <eOperations name="getCmdValue" ordered="false" lowerBound="1" eType="#//TypeInstance"
+        eExceptions="#//LayersException"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="LayersException" instanceClassName="org.eclipse.papyrus.layers.stackmodel.LayersException"/>
+  <eClassifiers xsi:type="ecore:EDataType" name="int" instanceClassName="int"/>
+  <eClassifiers xsi:type="ecore:EDataType" name="BadStateException" instanceClassName="org.eclipse.papyrus.layers.stackmodel.BadStateException">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="baseType" value="LayersException"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TypeRegistry">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="types" ordered="false"
+        upperBound="-1" eType="#//StringToTypeMap" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="StringToTypeMap" instanceClassName="java.util.Map$Entry">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
+        lowerBound="1" eType="#//Type" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" ordered="false" lowerBound="1"
+        eType="#//String"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="NotFoundException" instanceClassName="org.eclipse.papyrus.layers.stackmodel.NotFoundException">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="baseType" value="LayersException"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="LayerDescriptorRegistry">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="layerDescriptors" ordered="false"
+        upperBound="-1" eType="#//LayerDescriptor" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="LayerDescriptor">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="propertyRegistry" ordered="false"
+        lowerBound="1" eType="#//PropertyRegistry"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="LayerApplicationFactory">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="application" ordered="false"
+        eType="#//LayersStackApplication" transient="true" eOpposite="#//LayersStackApplication/factory"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="PropertySetterRegistry">
+    <eOperations name="getPropertySetter" ordered="false" lowerBound="1" eType="#//PropertySetter"
+        eExceptions="#//NotFoundException">
+      <eParameters name="property" ordered="false" lowerBound="1" eType="#//Property"/>
+    </eOperations>
+    <eOperations name="getPropertySetter" ordered="false" lowerBound="1" eType="#//PropertySetter"
+        eExceptions="#//NotFoundException">
+      <eParameters name="property" ordered="false" lowerBound="1" eType="#//String"/>
+    </eOperations>
+    <eOperations name="addPropertySetter" ordered="false" lowerBound="1">
+      <eParameters name="setter" ordered="false" lowerBound="1" eType="#//PropertySetter"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="propertySetters" upperBound="-1"
+        eType="#//PropertySetter"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="setterMap" ordered="false"
+        upperBound="-1" eType="#//StringToPropertySetter" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="application" ordered="false"
+        eType="#//LayersStackApplication" transient="true" eOpposite="#//LayersStackApplication/propertySetterRegistry"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="PropertySetter" abstract="true">
+    <eOperations name="setValue" ordered="false" lowerBound="1">
+      <eParameters name="view" ordered="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//View"/>
+      <eParameters name="value" ordered="false" lowerBound="1" eType="#//TypeInstance"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="property" ordered="false"
+        eType="#//Property"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="propertyName" ordered="false"
+        lowerBound="1" eType="#//String"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="StringToPropertySetter" instanceClassName="java.util.Map$Entry">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" ordered="false" lowerBound="1"
+        eType="#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
+        lowerBound="1" eType="#//PropertySetter" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="LayerOperatorDescriptorRegistry">
+    <eOperations name="addLayerOperatorDescriptor" ordered="false" lowerBound="1">
+      <eParameters name="descriptor" ordered="false" lowerBound="1" eType="#//LayerOperatorDescriptor"/>
+    </eOperations>
+    <eOperations name="getLayerOperatorDescriptor" ordered="false" lowerBound="1"
+        eType="#//LayerOperatorDescriptor" eExceptions="#//NotFoundException">
+      <eParameters name="name" ordered="false" lowerBound="1" eType="#//String"/>
+    </eOperations>
+    <eOperations name="addPropertyOperator" ordered="false" lowerBound="1">
+      <eParameters name="operator" ordered="false" lowerBound="1" eType="#//PropertyOperator"/>
+    </eOperations>
+    <eOperations name="getPropertyOperator" ordered="false" lowerBound="1" eType="#//PropertyOperator"
+        eExceptions="#//NotFoundException">
+      <eParameters name="name" ordered="false" lowerBound="1" eType="#//String"/>
+    </eOperations>
+    <eOperations name="attachOperatorToDescriptor" ordered="false" lowerBound="1"
+        eExceptions="#//NotFoundException">
+      <eParameters name="property" ordered="false" lowerBound="1" eType="#//Property"/>
+      <eParameters name="operatorName" ordered="false" lowerBound="1" eType="#//String"/>
+      <eParameters name="layerDescriptorName" ordered="false" lowerBound="1" eType="#//String"/>
+    </eOperations>
+    <eOperations name="createLayerOperator" ordered="false" lowerBound="1" eType="#//AbstractLayerOperator"
+        eExceptions="#//LayersException">
+      <eParameters name="layerOperatorID" ordered="false" lowerBound="1" eType="#//String"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="descriptors" ordered="false"
+        upperBound="-1" eType="#//LayerOperatorDescriptor" transient="true" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="propertyOperators" upperBound="-1"
+        eType="#//PropertyOperator" transient="true" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="propertyCollectionSize"
+        ordered="false" lowerBound="1" eType="#//int"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="defaultOperator" ordered="false"
+        lowerBound="1" eType="#//DefaultPropertyOperator" changeable="false" transient="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="LayerOperatorDescriptor">
+    <eOperations name="getPropertyOperator" ordered="false" lowerBound="1" eType="#//PropertyOperator"
+        eExceptions="#//NotFoundException">
+      <eParameters name="property" ordered="false" lowerBound="1" eType="#//Property"/>
+    </eOperations>
+    <eOperations name="setPropertyOperator" ordered="false" lowerBound="1">
+      <eParameters name="property" ordered="false" lowerBound="1" eType="#//Property"/>
+      <eParameters name="operator" ordered="false" lowerBound="1" eType="#//PropertyOperator"/>
+    </eOperations>
+    <eOperations name="createLayerOperator" ordered="false" lowerBound="1" eType="#//AbstractLayerOperator"/>
+    <eOperations name="setPropertyCollectionSize" ordered="false" lowerBound="1">
+      <eParameters name="size" ordered="false" lowerBound="1" eType="#//int"/>
+      <eParameters name="defaultPropertyOperator" ordered="false" lowerBound="1" eType="#//DefaultPropertyOperator"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="propertyOperators" upperBound="-1"
+        eType="#//PropertyOperator" transient="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" lowerBound="1"
+        eType="#//String"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="PropertyOperator">
+    <eOperations name="getComputePropertyValueCommand" ordered="false" lowerBound="1"
+        eType="#//ComputePropertyValueCommand" eExceptions="#//LayersException">
+      <eParameters name="property" upperBound="-1" eType="#//ComputePropertyValueCommand"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" lowerBound="1"
+        eType="#//String"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="ComputePropertyValueCommand" instanceClassName="org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand"/>
+  <eClassifiers xsi:type="ecore:EClass" name="AbstractLayerOperator" abstract="true"
+      eSuperTypes="#//LayerOperator">
+    <eOperations name="isDescriptorSet" ordered="false" lowerBound="1" eType="#//boolean"/>
+    <eOperations name="resetDescriptor" ordered="false" lowerBound="1"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="layerOperatorDescriptor"
+        ordered="false" lowerBound="1" eType="#//LayerOperatorDescriptor" transient="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="layerOperatorDescriptorName"
+        ordered="false" lowerBound="1" eType="#//String"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="LayerOperator" abstract="true" eSuperTypes="#//LayerExpression #//LayersContainer">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="layers" upperBound="-1"
+        eType="#//LayerExpression" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="LayersContainer" abstract="true" interface="true">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Layers implementing this interface can contains others layers.&#xD;&#xA;The interface provide one method allowing to add a LayerExpression to the container."/>
+    </eAnnotations>
+    <eOperations name="addLayer" ordered="false" lowerBound="1">
+      <eParameters name="layer" ordered="false" lowerBound="1" eType="#//LayerExpression"/>
+    </eOperations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="DefaultPropertyOperator" eSuperTypes="#//PropertyOperator"/>
+  <eClassifiers xsi:type="ecore:EEnum" name="LayerState">
+    <eLiterals name="detached"/>
+    <eLiterals name="attached" value="1"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="AbstractLayer" abstract="true" eSuperTypes="#//LayerExpression">
+    <eOperations name="addPropertyInstance" ordered="false" lowerBound="1" eType="#//TypeInstance"
+        eExceptions="#//LayersException">
+      <eParameters name="property" ordered="false" lowerBound="1" eType="#//Property"/>
+    </eOperations>
+    <eOperations name="removePropertyInstance" ordered="false" lowerBound="1">
+      <eParameters name="property" ordered="false" lowerBound="1" eType="#//Property"/>
+    </eOperations>
+    <eOperations name="getPropertyInstance" ordered="false" lowerBound="1" eType="#//TypeInstance"
+        eExceptions="#//LayersException">
+      <eParameters name="property" ordered="false" lowerBound="1" eType="#//Property"/>
+    </eOperations>
+    <eOperations name="getPropertyInstance" ordered="false" lowerBound="1" eType="#//TypeInstance"
+        eExceptions="#//LayersException">
+      <eParameters name="property" ordered="false" lowerBound="1" eType="#//String"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="propertyValues" unique="false"
+        upperBound="-1" eType="#//TypeInstance"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="propertyValueMap" ordered="false"
+        upperBound="-1" eType="#//StringToTypeInstanceMap" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="layerDescriptor" ordered="false"
+        lowerBound="1" eType="#//LayerDescriptor"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="views" ordered="false"
+        upperBound="-1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//View"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="attachedProperties" ordered="false"
+        upperBound="-1" eType="#//Property" volatile="true" transient="true" derived="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="StringToTypeInstanceMap" instanceClassName="java.util.Map$Entry">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" ordered="false" lowerBound="1"
+        eType="#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
+        lowerBound="1" eType="#//TypeInstance" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Folder" eSuperTypes="#//FolderElement">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="elements" ordered="false"
+        upperBound="-1" eType="#//FolderElement" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" lowerBound="1"
+        eType="#//String"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="Object" instanceClassName="java.lang.Object"/>
+  <eClassifiers xsi:type="ecore:EClass" name="IntInstance" eSuperTypes="#//TypeInstance">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
+        lowerBound="1" eType="#//int"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="BooleanInstance" eSuperTypes="#//TypeInstance">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
+        lowerBound="1" eType="#//boolean"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="StringInstance" eSuperTypes="#//TypeInstance">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
+        lowerBound="1" eType="#//String"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="IntType" eSuperTypes="#//Type"/>
+  <eClassifiers xsi:type="ecore:EClass" name="BooleanType" eSuperTypes="#//Type"/>
+  <eClassifiers xsi:type="ecore:EClass" name="StringType" eSuperTypes="#//Type"/>
+  <eClassifiers xsi:type="ecore:EClass" name="CustomType" eSuperTypes="#//Type">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="classifier" ordered="false"
+        lowerBound="1" eType="#//String"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TopLayerOperator" eSuperTypes="#//AbstractLayerOperator"/>
+  <eClassifiers xsi:type="ecore:EClass" name="StackedLayerOperator" eSuperTypes="#//AbstractLayerOperator"/>
+  <eClassifiers xsi:type="ecore:EClass" name="CustomLayerOperator" eSuperTypes="#//LayerOperator"/>
+  <eClassifiers xsi:type="ecore:EClass" name="PropertyIndex">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="property" ordered="false"
+        lowerBound="1" eType="#//Property"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="index" ordered="false"
+        lowerBound="1" eType="#//int"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="StringToPropertyIndexMap" instanceClassName="java.util.Map$Entry">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
+        eType="#//PropertyIndex" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" ordered="false" lowerBound="1"
+        eType="#//String"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="SimpleLayerDescriptor" eSuperTypes="#//LayerDescriptor"/>
+  <eClassifiers xsi:type="ecore:EClass" name="RegExpLayerDescriptor" eSuperTypes="#//LayerDescriptor"/>
+  <eClassifiers xsi:type="ecore:EClass" name="NullInstance" eSuperTypes="#//TypeInstance">
+    <eOperations name="getInstance" ordered="false" lowerBound="1" eType="#//NullInstance"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="RegExpLayer" eSuperTypes="#//AbstractLayer">
+    <eOperations name="activate" ordered="false" lowerBound="1">
+      <eParameters name="newParentLayer" ordered="false" lowerBound="1" eType="#//AbstractLayerOperator"/>
+    </eOperations>
+    <eOperations name="deactivate" ordered="false" lowerBound="1">
+      <eParameters name="oldParentLayer" ordered="false" lowerBound="1" eType="#//AbstractLayerOperator"/>
+    </eOperations>
+    <eOperations name="isDerivedView" ordered="false" lowerBound="1" eType="#//boolean"
+        eExceptions="#//LayersException">
+      <eParameters name="view" ordered="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//View"/>
+    </eOperations>
+    <eOperations name="attachDerivedView" ordered="false" lowerBound="1" eExceptions="#//LayersException">
+      <eParameters name="view" ordered="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//View"/>
+    </eOperations>
+    <eOperations name="attachDerivedViews" ordered="false" lowerBound="1" eExceptions="#//LayersException">
+      <eParameters name="views" ordered="false" upperBound="-1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//View"/>
+    </eOperations>
+    <eOperations name="attachDerivedViews" ordered="false" lowerBound="1" eExceptions="#//LayersException"/>
+    <eOperations name="lookupDerivedViews" ordered="false" upperBound="-1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//View"
+        eExceptions="#//LayersException">
+      <eParameters name="views" ordered="false" upperBound="-1" eType="ecore:EClass ../../org.eclipse.gmf.runtime.notation/model/notation.ecore#//View"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="expr" ordered="false" lowerBound="1"
+        eType="#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="language" ordered="false"
+        lowerBound="1" eType="#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDomainChangedEventDependant"
+        ordered="false" lowerBound="1" eType="#//boolean"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="domainChangedEventLevel"
+        ordered="false" lowerBound="1" eType="#//EventLevel"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDiagramChangedEventDependant"
+        ordered="false" lowerBound="1" eType="#//boolean"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="diagramChangedEventLevel"
+        ordered="false" lowerBound="1" eType="#//EventLevel"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="expressionContextObjectType"
+        ordered="false" lowerBound="1" eType="#//String"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="EventLevel">
+    <eLiterals name="level1"/>
+    <eLiterals name="allLevels" value="-1"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Layer" eSuperTypes="#//AbstractLayer"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Color" eSuperTypes="#//Type"/>
+  <eClassifiers xsi:type="ecore:EClass" name="ColorInstance" eSuperTypes="#//TypeInstance">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
+        lowerBound="1" eType="#//int"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="FillInstance" eSuperTypes="#//TypeInstance">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="transparency" ordered="false"
+        lowerBound="1" eType="#//int"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="fillColor" ordered="false"
+        lowerBound="1" eType="#//ColorInstance" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Fill" eSuperTypes="#//Type"/>
+  <eClassifiers xsi:type="ecore:EClass" name="FillPropertySetter" eSuperTypes="#//PropertySetter"/>
+  <eClassifiers xsi:type="ecore:EClass" name="IsValidPropertySetter" eSuperTypes="#//PropertySetter"/>
+  <eClassifiers xsi:type="ecore:EClass" name="NullPropertySetter" eSuperTypes="#//PropertySetter"/>
+  <eClassifiers xsi:type="ecore:EClass" name="LineType" eSuperTypes="#//Type"/>
+  <eClassifiers xsi:type="ecore:EClass" name="LineInstance" eSuperTypes="#//TypeInstance">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="lineColor" ordered="false"
+        lowerBound="1" eType="#//int"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="lineWith" ordered="false"
+        lowerBound="1" eType="#//int"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="LinePropertySetter" eSuperTypes="#//PropertySetter"/>
+  <eClassifiers xsi:type="ecore:EClass" name="FontPropertySetter" eSuperTypes="#//PropertySetter"/>
+  <eClassifiers xsi:type="ecore:EClass" name="FontInstance" eSuperTypes="#//TypeInstance">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="fontColor" ordered="false"
+        lowerBound="1" eType="#//int" defaultValueLiteral="15053796"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="fontName" ordered="false"
+        lowerBound="1" eType="#//String" defaultValueLiteral="Segoe UI"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="fontHeigh" ordered="false"
+        lowerBound="1" eType="#//int" defaultValueLiteral="9"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="bold" ordered="false" lowerBound="1"
+        eType="#//boolean" defaultValueLiteral="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="FontType" eSuperTypes="#//Type"/>
+  <eClassifiers xsi:type="ecore:EClass" name="IsVisiblePropertySetter" eSuperTypes="#//PropertySetter"/>
+  <eClassifiers xsi:type="ecore:EClass" name="TopLayerOperatorDescriptor" eSuperTypes="#//LayerOperatorDescriptor"/>
+  <eClassifiers xsi:type="ecore:EClass" name="StackedLayerOperatorDescriptor" eSuperTypes="#//LayerOperatorDescriptor"/>
+  <eClassifiers xsi:type="ecore:EClass" name="CustomPropertyOperator" eSuperTypes="#//PropertyOperator">
+    <eOperations name="resetOperatorInstance" ordered="false" lowerBound="1" eExceptions="#//LayersException"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="classname" ordered="false"
+        lowerBound="1" eType="#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="operatorInstance" ordered="false"
+        lowerBound="1" eType="#//CustomPropertyOpertorInstance"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="classBundleID" ordered="false"
+        lowerBound="1" eType="#//String"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="CustomPropertyOpertorInstance" instanceClassName="org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance"/>
+  <eClassifiers xsi:type="ecore:EClass" name="AndStackedLayerOperatorDescriptor" eSuperTypes="#//StackedLayerOperatorDescriptor"/>
+  <eClassifiers xsi:type="ecore:EClass" name="OrStackedLayerOperatorDescriptor" eSuperTypes="#//StackedLayerOperatorDescriptor"/>
+  <eClassifiers xsi:type="ecore:EClass" name="IsAbstractUmlSetter" eSuperTypes="#//PropertySetter"/>
+  <eClassifiers xsi:type="ecore:EClass" name="AllViewsDerivedLayer" eSuperTypes="#//AbstractLayer"/>
+</ecore:EPackage>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.genmodel b/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.genmodel
new file mode 100755
index 0000000..7e4485a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.genmodel
@@ -0,0 +1,462 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel 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:genmodel="http://www.eclipse.org/uml2/2.2.0/GenModel"
+    modelDirectory="/org.eclipse.papyrus.layers.stackmodel/src" modelPluginID="org.eclipse.papyrus.layers.stackmodel"
+    modelName="Layers" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+    importerID="org.eclipse.uml2.uml.ecore.importer" complianceLevel="6.0" copyrightFields="false"
+    usedGenPackages="../../org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore ../../org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation"
+    operationReflection="true" importOrganizing="true">
+  <genAnnotations source="http://www.eclipse.org/emf/2002/GenModel/importer/org.eclipse.uml2.uml.ecore.importer">
+    <details key="ECORE_TAGGED_VALUES" value="PROCESS"/>
+    <details key="UNION_PROPERTIES" value="REPORT"/>
+    <details key="DUPLICATE_FEATURES" value="DISCARD"/>
+    <details key="SUBSETTING_PROPERTIES" value="REPORT"/>
+    <details key="VALIDATION_DELEGATES" value="IGNORE"/>
+    <details key="COMMENTS" value="PROCESS"/>
+    <details key="DUPLICATE_FEATURE_INHERITANCE" value="DISCARD"/>
+    <details key="DUPLICATE_OPERATIONS" value="DISCARD"/>
+    <details key="INVARIANT_CONSTRAINTS" value="PROCESS"/>
+    <details key="REDEFINING_PROPERTIES" value="REPORT"/>
+    <details key="ANNOTATION_DETAILS" value="PROCESS"/>
+    <details key="DUPLICATE_OPERATION_INHERITANCE" value="DISCARD"/>
+    <details key="REDEFINING_OPERATIONS" value="REPORT"/>
+    <details key="INVOCATION_DELEGATES" value="IGNORE"/>
+    <details key="DERIVED_FEATURES" value="PROCESS"/>
+    <details key="OPERATION_BODIES" value="IGNORE"/>
+    <details key="CAMEL_CASE_NAMES" value="IGNORE"/>
+    <details key="SUPER_CLASS_ORDER" value="PROCESS"/>
+  </genAnnotations>
+  <foreignModel>layers.uml</foreignModel>
+  <genPackages xsi:type="genmodel:GenPackage" prefix="Layers" basePackage="org.eclipse.papyrus.layers.stackmodel"
+      disposableProviderFactory="true" ecorePackage="layers.ecore#/">
+    <genEnums xsi:type="genmodel:GenEnum" typeSafeEnumCompatible="false" ecoreEnum="layers.ecore#//LayerState">
+      <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="layers.ecore#//LayerState/detached"/>
+      <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="layers.ecore#//LayerState/attached"/>
+    </genEnums>
+    <genEnums xsi:type="genmodel:GenEnum" typeSafeEnumCompatible="false" ecoreEnum="layers.ecore#//EventLevel">
+      <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="layers.ecore#//EventLevel/level1"/>
+      <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="layers.ecore#//EventLevel/allLevels"/>
+    </genEnums>
+    <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="layers.ecore#//String"/>
+    <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="layers.ecore#//boolean"/>
+    <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="layers.ecore#//EPackage"/>
+    <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="layers.ecore#//LayersException"/>
+    <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="layers.ecore#//int"/>
+    <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="layers.ecore#//BadStateException"/>
+    <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="layers.ecore#//NotFoundException"/>
+    <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="layers.ecore#//ComputePropertyValueCommand"/>
+    <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="layers.ecore#//Object"/>
+    <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="layers.ecore#//CustomPropertyOpertorInstance"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//LayerNamedStyle">
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference layers.ecore#//LayerNamedStyle/layersStack"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//LayersStack">
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference layers.ecore#//LayersStack/layers"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//LayersStack/name"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//LayersStack/description"/>
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference layers.ecore#//LayersStack/diagram"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//LayersStack/state"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayersStack/getComputePropertyValueCommand">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayersStack/getComputePropertyValueCommand/view"/>
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayersStack/getComputePropertyValueCommand/property"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayersStack/getPropertiesComputePropertyValueCommand">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayersStack/getPropertiesComputePropertyValueCommand/view"/>
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayersStack/getPropertiesComputePropertyValueCommand/property"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayersStack/getViewsComputePropertyValueCommand">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayersStack/getViewsComputePropertyValueCommand/view"/>
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayersStack/getViewsComputePropertyValueCommand/property"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayersStack/startAfterCreation"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayersStack/attachLayers"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayersStack/attach"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayersStack/detach"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayersStack/enterAttachedState"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayersStack/exitAttachedState"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="layers.ecore#//LayerExpression">
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//LayerExpression/name"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//LayerExpression/description"/>
+      <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" createChild="false"
+          ecoreFeature="ecore:EAttribute layers.ecore#//LayerExpression/isLayerEnabledInternal"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//LayerExpression/isLayerEnabled"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//LayerExpression/isBranchEnabled"/>
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference layers.ecore#//LayerExpression/owningLayersStack"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//LayerExpression/state"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerExpression/getComputePropertyValueCommand">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerExpression/getComputePropertyValueCommand/view"/>
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerExpression/getComputePropertyValueCommand/property"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerExpression/getViewsComputePropertyValueCommand">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerExpression/getViewsComputePropertyValueCommand/view"/>
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerExpression/getViewsComputePropertyValueCommand/property"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerExpression/getPropertiesComputePropertyValueCommand">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerExpression/getPropertiesComputePropertyValueCommand/view"/>
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerExpression/getPropertiesComputePropertyValueCommand/property"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerExpression/attachToLayersStack">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerExpression/attachToLayersStack/owningLayersStack"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerExpression/getLayersStack"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerExpression/enterAttachedState"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerExpression/attach"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerExpression/detach"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerExpression/exitAttachedState"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="layers.ecore#//ApplicationDependantElement">
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference layers.ecore#//ApplicationDependantElement/application"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//LayersStackApplication">
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference layers.ecore#//LayersStackApplication/layersStacks"/>
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference layers.ecore#//LayersStackApplication/layerStackRegistry"/>
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference layers.ecore#//LayersStackApplication/propertyRegistry"/>
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference layers.ecore#//LayersStackApplication/layerDescriptorRegistry"/>
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference layers.ecore#//LayersStackApplication/factory"/>
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference layers.ecore#//LayersStackApplication/propertySetterRegistry"/>
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference layers.ecore#//LayersStackApplication/layerOperatorDescriptorRegistry"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayersStackApplication/getLayersStackFor">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayersStackApplication/getLayersStackFor/diagram"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayersStackApplication/removeLayersStackFor">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayersStackApplication/removeLayersStackFor/diagram"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayersStackApplication/isLayersStackAttachedFor">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayersStackApplication/isLayersStackAttachedFor/diagram"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayersStackApplication/createLayersStackFor">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayersStackApplication/createLayersStackFor/diagram"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayersStackApplication/lookupLayersStackFor">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayersStackApplication/lookupLayersStackFor/diagram"/>
+      </genOperations>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="layers.ecore#//FolderElement"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//LayerStackDescriptorRegistry"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//PropertyRegistry">
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference layers.ecore#//PropertyRegistry/properties"/>
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference layers.ecore#//PropertyRegistry/typeRegistry"/>
+      <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" createChild="false"
+          ecoreFeature="ecore:EAttribute layers.ecore#//PropertyRegistry/propertiesCount"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//PropertyRegistry/getPropertyIndex">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//PropertyRegistry/getPropertyIndex/propertyName"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//PropertyRegistry/getProperty">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//PropertyRegistry/getProperty/propertyName"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//PropertyRegistry/addProperty">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//PropertyRegistry/addProperty/property"/>
+      </genOperations>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//Property">
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference layers.ecore#//Property/type"/>
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference layers.ecore#//Property/defaultValue"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//Property/name"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//Property/description"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//Property/index"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//Property/createInstance"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="layers.ecore#//Type">
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference layers.ecore#//Type/metamodel"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//Type/name"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//Type/description"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//Type/createInstance"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//Metamodel">
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//Metamodel/name"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//Metamodel/description"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//Metamodel/nsuri"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//Metamodel/pluginID"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//Metamodel/ePackageInstanceName"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//Metamodel/isTypeValid"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//Metamodel/getEPackage"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="layers.ecore#//TypeInstance">
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//TypeInstance/setValueFromString">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//TypeInstance/setValueFromString/value"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//TypeInstance/setValueFromInstance">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//TypeInstance/setValueFromInstance/value"/>
+      </genOperations>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="layers.ecore#//ComputePropertyValueCommandItf">
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//ComputePropertyValueCommandItf/getCmdValue"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//TypeRegistry">
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference layers.ecore#//TypeRegistry/types"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//StringToTypeMap">
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference layers.ecore#//StringToTypeMap/value"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//StringToTypeMap/key"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//LayerDescriptorRegistry">
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference layers.ecore#//LayerDescriptorRegistry/layerDescriptors"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//LayerDescriptor">
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference layers.ecore#//LayerDescriptor/propertyRegistry"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//LayerApplicationFactory">
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" notify="false" createChild="false"
+          ecoreFeature="ecore:EReference layers.ecore#//LayerApplicationFactory/application"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//PropertySetterRegistry">
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference layers.ecore#//PropertySetterRegistry/propertySetters"/>
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference layers.ecore#//PropertySetterRegistry/setterMap"/>
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" notify="false" createChild="false"
+          ecoreFeature="ecore:EReference layers.ecore#//PropertySetterRegistry/application"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//PropertySetterRegistry/getPropertySetter">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//PropertySetterRegistry/getPropertySetter/property"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//PropertySetterRegistry/getPropertySetter.1">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//PropertySetterRegistry/getPropertySetter.1/property"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//PropertySetterRegistry/addPropertySetter">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//PropertySetterRegistry/addPropertySetter/setter"/>
+      </genOperations>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//PropertySetter">
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference layers.ecore#//PropertySetter/property"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//PropertySetter/propertyName"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//PropertySetter/setValue">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//PropertySetter/setValue/view"/>
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//PropertySetter/setValue/value"/>
+      </genOperations>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//StringToPropertySetter">
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//StringToPropertySetter/key"/>
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference layers.ecore#//StringToPropertySetter/value"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//LayerOperatorDescriptorRegistry">
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference layers.ecore#//LayerOperatorDescriptorRegistry/descriptors"/>
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference layers.ecore#//LayerOperatorDescriptorRegistry/propertyOperators"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//LayerOperatorDescriptorRegistry/propertyCollectionSize"/>
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference layers.ecore#//LayerOperatorDescriptorRegistry/defaultOperator"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerOperatorDescriptorRegistry/addLayerOperatorDescriptor">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerOperatorDescriptorRegistry/addLayerOperatorDescriptor/descriptor"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerOperatorDescriptorRegistry/getLayerOperatorDescriptor">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerOperatorDescriptorRegistry/getLayerOperatorDescriptor/name"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerOperatorDescriptorRegistry/addPropertyOperator">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerOperatorDescriptorRegistry/addPropertyOperator/operator"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerOperatorDescriptorRegistry/getPropertyOperator">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerOperatorDescriptorRegistry/getPropertyOperator/name"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerOperatorDescriptorRegistry/attachOperatorToDescriptor">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerOperatorDescriptorRegistry/attachOperatorToDescriptor/property"/>
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerOperatorDescriptorRegistry/attachOperatorToDescriptor/operatorName"/>
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerOperatorDescriptorRegistry/attachOperatorToDescriptor/layerDescriptorName"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerOperatorDescriptorRegistry/createLayerOperator">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerOperatorDescriptorRegistry/createLayerOperator/layerOperatorID"/>
+      </genOperations>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//LayerOperatorDescriptor">
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference layers.ecore#//LayerOperatorDescriptor/propertyOperators"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//LayerOperatorDescriptor/name"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerOperatorDescriptor/getPropertyOperator">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerOperatorDescriptor/getPropertyOperator/property"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerOperatorDescriptor/setPropertyOperator">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerOperatorDescriptor/setPropertyOperator/property"/>
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerOperatorDescriptor/setPropertyOperator/operator"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerOperatorDescriptor/createLayerOperator"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayerOperatorDescriptor/setPropertyCollectionSize">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerOperatorDescriptor/setPropertyCollectionSize/size"/>
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayerOperatorDescriptor/setPropertyCollectionSize/defaultPropertyOperator"/>
+      </genOperations>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//PropertyOperator">
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//PropertyOperator/name"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//PropertyOperator/getComputePropertyValueCommand">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//PropertyOperator/getComputePropertyValueCommand/property"/>
+      </genOperations>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//AbstractLayerOperator">
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference layers.ecore#//AbstractLayerOperator/layerOperatorDescriptor"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//AbstractLayerOperator/layerOperatorDescriptorName"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//AbstractLayerOperator/isDescriptorSet"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//AbstractLayerOperator/resetDescriptor"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="layers.ecore#//LayerOperator">
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference layers.ecore#//LayerOperator/layers"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="layers.ecore#//LayersContainer">
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//LayersContainer/addLayer">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//LayersContainer/addLayer/layer"/>
+      </genOperations>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//DefaultPropertyOperator"/>
+    <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="layers.ecore#//AbstractLayer">
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference layers.ecore#//AbstractLayer/propertyValues"/>
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference layers.ecore#//AbstractLayer/propertyValueMap"/>
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference layers.ecore#//AbstractLayer/layerDescriptor"/>
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference layers.ecore#//AbstractLayer/views"/>
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference layers.ecore#//AbstractLayer/attachedProperties"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//AbstractLayer/addPropertyInstance">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//AbstractLayer/addPropertyInstance/property"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//AbstractLayer/removePropertyInstance">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//AbstractLayer/removePropertyInstance/property"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//AbstractLayer/getPropertyInstance">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//AbstractLayer/getPropertyInstance/property"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//AbstractLayer/getPropertyInstance.1">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//AbstractLayer/getPropertyInstance.1/property"/>
+      </genOperations>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//StringToTypeInstanceMap">
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//StringToTypeInstanceMap/key"/>
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference layers.ecore#//StringToTypeInstanceMap/value"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//Folder">
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference layers.ecore#//Folder/elements"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//Folder/name"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//IntInstance">
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//IntInstance/value"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//BooleanInstance">
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//BooleanInstance/value"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//StringInstance">
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//StringInstance/value"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//IntType"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//BooleanType"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//StringType"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//CustomType">
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//CustomType/classifier"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//TopLayerOperator"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//StackedLayerOperator"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//CustomLayerOperator"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//PropertyIndex">
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference layers.ecore#//PropertyIndex/property"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//PropertyIndex/index"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//StringToPropertyIndexMap">
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference layers.ecore#//StringToPropertyIndexMap/value"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//StringToPropertyIndexMap/key"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//SimpleLayerDescriptor"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//RegExpLayerDescriptor"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//NullInstance">
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//NullInstance/getInstance"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//RegExpLayer">
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//RegExpLayer/expr"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//RegExpLayer/language"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//RegExpLayer/isDomainChangedEventDependant"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//RegExpLayer/domainChangedEventLevel"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//RegExpLayer/isDiagramChangedEventDependant"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//RegExpLayer/diagramChangedEventLevel"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//RegExpLayer/expressionContextObjectType"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//RegExpLayer/activate">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//RegExpLayer/activate/newParentLayer"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//RegExpLayer/deactivate">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//RegExpLayer/deactivate/oldParentLayer"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//RegExpLayer/isDerivedView">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//RegExpLayer/isDerivedView/view"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//RegExpLayer/attachDerivedView">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//RegExpLayer/attachDerivedView/view"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//RegExpLayer/attachDerivedViews">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//RegExpLayer/attachDerivedViews/views"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//RegExpLayer/attachDerivedViews.1"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//RegExpLayer/lookupDerivedViews">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="layers.ecore#//RegExpLayer/lookupDerivedViews/views"/>
+      </genOperations>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//Layer"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//Color"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//ColorInstance">
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//ColorInstance/value"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//FillInstance">
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//FillInstance/transparency"/>
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference layers.ecore#//FillInstance/fillColor"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//Fill"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//FillPropertySetter"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//IsValidPropertySetter"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//NullPropertySetter"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//LineType"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//LineInstance">
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//LineInstance/lineColor"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//LineInstance/lineWith"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//LinePropertySetter"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//FontPropertySetter"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//FontInstance">
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//FontInstance/fontColor"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//FontInstance/fontName"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//FontInstance/fontHeigh"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//FontInstance/bold"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//FontType"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//IsVisiblePropertySetter"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//TopLayerOperatorDescriptor"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//StackedLayerOperatorDescriptor"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//CustomPropertyOperator">
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//CustomPropertyOperator/classname"/>
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EAttribute layers.ecore#//CustomPropertyOperator/operatorInstance"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layers.ecore#//CustomPropertyOperator/classBundleID"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layers.ecore#//CustomPropertyOperator/resetOperatorInstance"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//AndStackedLayerOperatorDescriptor"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//OrStackedLayerOperatorDescriptor"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//IsAbstractUmlSetter"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layers.ecore#//AllViewsDerivedLayer"/>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.notation b/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.notation
new file mode 100755
index 0000000..e832af8
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.notation
@@ -0,0 +1,6105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+  <notation:Diagram xmi:id="_mmXS0LcqEeK8_t7Rpq6ZJA" type="PapyrusUMLClassDiagram" name="overview" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_xbaJwLcqEeK8_t7Rpq6ZJA" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xbaJwrcqEeK8_t7Rpq6ZJA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xbaJw7cqEeK8_t7Rpq6ZJA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xbaJxLcqEeK8_t7Rpq6ZJA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xbaJxbcqEeK8_t7Rpq6ZJA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YsPE0LcrEeK8_t7Rpq6ZJA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YsPE0bcrEeK8_t7Rpq6ZJA" key="QualifiedNameDepth" value="0"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_xbaJyLcqEeK8_t7Rpq6ZJA" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_xbaJybcqEeK8_t7Rpq6ZJA" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_xbaJyrcqEeK8_t7Rpq6ZJA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_xbaJy7cqEeK8_t7Rpq6ZJA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_xbaJzLcqEeK8_t7Rpq6ZJA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xbaJzbcqEeK8_t7Rpq6ZJA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_xbaJzrcqEeK8_t7Rpq6ZJA" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_xbaJz7cqEeK8_t7Rpq6ZJA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_xbaJ0LcqEeK8_t7Rpq6ZJA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_xbaJ0bcqEeK8_t7Rpq6ZJA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xbaJ0rcqEeK8_t7Rpq6ZJA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_xbaJ07cqEeK8_t7Rpq6ZJA" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_xbaJ1LcqEeK8_t7Rpq6ZJA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_xbaJ1bcqEeK8_t7Rpq6ZJA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_xbaJ1rcqEeK8_t7Rpq6ZJA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xbaJ17cqEeK8_t7Rpq6ZJA"/>
+      </children>
+      <element xmi:type="uml:Class" href="notation/notation.uml#_AziHercnEeKeLJDBCBPhPw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xbaJwbcqEeK8_t7Rpq6ZJA" x="30" y="-24"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_yPB_ELcqEeK8_t7Rpq6ZJA" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yPB_ErcqEeK8_t7Rpq6ZJA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yPB_E7cqEeK8_t7Rpq6ZJA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yPB_FLcqEeK8_t7Rpq6ZJA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yPB_FbcqEeK8_t7Rpq6ZJA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yPB_FrcqEeK8_t7Rpq6ZJA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yPB_F7cqEeK8_t7Rpq6ZJA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_yPB_GLcqEeK8_t7Rpq6ZJA" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_yPB_GbcqEeK8_t7Rpq6ZJA" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_yPB_GrcqEeK8_t7Rpq6ZJA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_yPB_G7cqEeK8_t7Rpq6ZJA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_yPB_HLcqEeK8_t7Rpq6ZJA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yPB_HbcqEeK8_t7Rpq6ZJA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_yPB_HrcqEeK8_t7Rpq6ZJA" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_yPB_H7cqEeK8_t7Rpq6ZJA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_yPB_ILcqEeK8_t7Rpq6ZJA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_yPB_IbcqEeK8_t7Rpq6ZJA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yPB_IrcqEeK8_t7Rpq6ZJA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_yPB_I7cqEeK8_t7Rpq6ZJA" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_yPB_JLcqEeK8_t7Rpq6ZJA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_yPB_JbcqEeK8_t7Rpq6ZJA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_yPB_JrcqEeK8_t7Rpq6ZJA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yPB_J7cqEeK8_t7Rpq6ZJA"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_yN_dQLcqEeK8_t7Rpq6ZJA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yPB_EbcqEeK8_t7Rpq6ZJA" x="24" y="108" width="134" height="61"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_eO9nANa7EeKPiuTfpuvqHA" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eO9nAta7EeKPiuTfpuvqHA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eO9nA9a7EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eO9nBNa7EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eO9nBda7EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eO9nBta7EeKPiuTfpuvqHA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eO9nB9a7EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_eO9nCNa7EeKPiuTfpuvqHA" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_eO9nCda7EeKPiuTfpuvqHA" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_eO9nCta7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_eO9nC9a7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_eO9nDNa7EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eO9nDda7EeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_eO9nDta7EeKPiuTfpuvqHA" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_eO9nD9a7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_eO9nENa7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_eO9nEda7EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eO9nEta7EeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ePGw8Na7EeKPiuTfpuvqHA" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ePGw8da7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ePGw8ta7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ePGw89a7EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ePGw9Na7EeKPiuTfpuvqHA"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_eNnjMNa7EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eO9nAda7EeKPiuTfpuvqHA" x="120" y="768"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_gUHVoNa7EeKPiuTfpuvqHA" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gUHVota7EeKPiuTfpuvqHA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gUHVo9a7EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gUHVpNa7EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gUHVpda7EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gUHVpta7EeKPiuTfpuvqHA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gUHVp9a7EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_gUHVqNa7EeKPiuTfpuvqHA" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gUHVqda7EeKPiuTfpuvqHA" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gUHVqta7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gUHVq9a7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gUHVrNa7EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gUHVrda7EeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gUHVrta7EeKPiuTfpuvqHA" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gUHVr9a7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gUHVsNa7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gUHVsda7EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gUHVsta7EeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gUHVs9a7EeKPiuTfpuvqHA" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gUHVtNa7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gUHVtda7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gUHVtta7EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gUHVt9a7EeKPiuTfpuvqHA"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_gT0asNa7EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gUHVoda7EeKPiuTfpuvqHA" x="437" y="84" width="122" height="391"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_DOnbMNjhEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DOnbMtjhEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DOnbM9jhEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DOnbNNjhEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DOnbNdjhEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DOnbNtjhEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DOnbN9jhEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_DOnbONjhEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_DOnbOdjhEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_DOnbOtjhEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_DOnbO9jhEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_DOnbPNjhEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DOnbPdjhEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_DOnbPtjhEeKQqZMBCFd2Uw" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_jpOsYNjhEeKQqZMBCFd2Uw" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_jo2R4NjhEeKQqZMBCFd2Uw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_jpOsYdjhEeKQqZMBCFd2Uw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_QDJocN0lEeKwptaAAanMDg" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_8QO3kN0kEeKwptaAAanMDg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_QDJocd0lEeKwptaAAanMDg" x="43" y="27"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_QDV1sN0lEeKwptaAAanMDg" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_H4FrgN0lEeKwptaAAanMDg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_QDV1sd0lEeKwptaAAanMDg" x="43" y="27"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_jM4SYN0lEeKwptaAAanMDg" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_ZJ8N0N0lEeKwptaAAanMDg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_jM4SYd0lEeKwptaAAanMDg" x="56" y="77"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_jM78wN0lEeKwptaAAanMDg" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_ZdgqEN0lEeKwptaAAanMDg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_jM78wd0lEeKwptaAAanMDg" x="56" y="77"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_DOnbP9jhEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_DOnbQNjhEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_DOnbQdjhEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DOnbQtjhEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_DOnbQ9jhEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_DOnbRNjhEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_DOnbRdjhEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_DOnbRtjhEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DOnbR9jhEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_DN8s0NjhEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DOnbMdjhEeKQqZMBCFd2Uw" x="168" y="210" width="166" height="199"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_WHUKENjiEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WHUKEtjiEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WHUKE9jiEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WHUKFNjiEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WHUKFdjiEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WHUKFtjiEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WHUKF9jiEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_WHUKGNjiEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_WHUKGdjiEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_WHUKGtjiEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_WHUKG9jiEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_WHUKHNjiEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WHUKHdjiEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_WHUKHtjiEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_WHUKH9jiEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_WHUKINjiEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_WHUKIdjiEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WHUKItjiEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_WHUKI9jiEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_WHUKJNjiEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_WHUKJdjiEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_WHUKJtjiEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WHUKJ9jiEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_51zAINa7EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WHUKEdjiEeKQqZMBCFd2Uw" x="660" y="84"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Y0q5cNjoEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Y0q5ctjoEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Y0q5c9joEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Y0q5dNjoEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Y0q5ddjoEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Y0q5dtjoEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Y0q5d9joEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Y0q5eNjoEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Y0q5edjoEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Y0q5etjoEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Y0q5e9joEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Y0q5fNjoEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y0q5fdjoEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Y0q5ftjoEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Y0q5f9joEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Y0q5gNjoEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Y0q5gdjoEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y0q5gtjoEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Y0xAENjoEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Y0xAEdjoEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Y0xAEtjoEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Y0xAE9joEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y0xAFNjoEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_ggM80NhbEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y0q5cdjoEeKQqZMBCFd2Uw" x="12" y="216" height="67"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_8O26INjoEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8O26ItjoEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8O26I9joEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8O26JNjoEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8O26JdjoEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8O26JtjoEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8O26J9joEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_8O26KNjoEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8O26KdjoEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8O26KtjoEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8O26K9joEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8O26LNjoEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8O26LdjoEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8O26LtjoEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8O26L9joEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8O26MNjoEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8O26MdjoEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8O26MtjoEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8O26M9joEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8O26NNjoEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8O26NdjoEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8O26NtjoEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8O26N9joEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_8OefoNjoEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8O26IdjoEeKQqZMBCFd2Uw" x="312" y="462" width="120" height="67"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_AToXINjpEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AToXItjpEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AToXI9jpEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AToXJNjpEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AToXJdjpEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AToXJtjpEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AToXJ9jpEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_AToXKNjpEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AToXKdjpEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AToXKtjpEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AToXK9jpEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AToXLNjpEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AToXLdjpEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AToXLtjpEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AToXL9jpEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AToXMNjpEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AToXMdjpEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AToXMtjpEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AToXM9jpEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AToXNNjpEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AToXNdjpEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AToXNtjpEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AToXN9jpEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_uMYd4NjoEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AToXIdjpEeKQqZMBCFd2Uw" x="12" y="462" height="67"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_di3-ENkhEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_di3-EtkhEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_di3-E9khEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_di3-FNkhEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_di3-FdkhEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_di3-FtkhEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_di3-F9khEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_di3-GNkhEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_di3-GdkhEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_di3-GtkhEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_di3-G9khEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_di3-HNkhEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_di3-HdkhEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_di3-HtkhEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_di3-H9khEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_di3-INkhEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_di3-IdkhEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_di3-ItkhEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_di-EsNkhEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_di-EsdkhEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_di-EstkhEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_di-Es9khEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_di-EtNkhEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="notation/notation.uml#_AziHhrcnEeKeLJDBCBPhPw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_di3-EdkhEeKQqZMBCFd2Uw" x="660" y="384"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_zYYY0NqBEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zYefcNqBEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zYefcdqBEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zYefctqBEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zYefc9qBEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zYefdNqBEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zYefddqBEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_zYfGgNqBEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_zYfGgdqBEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_zYfGgtqBEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_zYfGg9qBEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_zYfGhNqBEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zYfGhdqBEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_zYfGhtqBEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_zYfGh9qBEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_zYfGiNqBEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_zYfGidqBEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zYfGitqBEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_zYfGi9qBEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_zYfGjNqBEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_zYfGjdqBEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_zYfGjtqBEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zYfGj9qBEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_zYGE8NqBEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zYYY0dqBEeKQqZMBCFd2Uw" x="48" y="588"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_33RakNt0EeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_33Raktt0EeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_33Rak9t0EeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_33RalNt0EeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_33Raldt0EeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_33Raltt0EeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_33Ral9t0EeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_33RamNt0EeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_33Ramdt0EeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_33Ramtt0EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_33Ram9t0EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_33RanNt0EeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_33Randt0EeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_33Rantt0EeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_33Ran9t0EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_33RaoNt0EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_33Raodt0EeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_33Raott0EeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_33Rao9t0EeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_33RapNt0EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_33Rapdt0EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_33Raptt0EeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_33Rap9t0EeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_325AENt0EeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_33Rakdt0EeKQqZMBCFd2Uw" x="174" y="-12" width="217" height="97"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_IPOrANt2EeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IPOrAtt2EeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IPOrA9t2EeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IPOrBNt2EeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IPOrBdt2EeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IPOrBtt2EeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IPOrB9t2EeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_IPOrCNt2EeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_IPOrCdt2EeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_IPOrCtt2EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_IPOrC9t2EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_IPOrDNt2EeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IPOrDdt2EeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_IPOrDtt2EeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_IPOrD9t2EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_IPOrENt2EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_IPOrEdt2EeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IPOrEtt2EeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_IPOrE9t2EeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_IPOrFNt2EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_IPOrFdt2EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_IPOrFtt2EeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IPOrF9t2EeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_IOwJ4Nt2EeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IPOrAdt2EeKQqZMBCFd2Uw" x="312" y="588" width="193"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_q9LiYO3uEeKwLp35IbAIig" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_q9RpAO3uEeKwLp35IbAIig" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q9RpAe3uEeKwLp35IbAIig" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_q9RpAu3uEeKwLp35IbAIig" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q9RpA-3uEeKwLp35IbAIig" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_q9RpBO3uEeKwLp35IbAIig" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q9RpBe3uEeKwLp35IbAIig" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_q9RpBu3uEeKwLp35IbAIig" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_q9RpB-3uEeKwLp35IbAIig" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_q9RpCO3uEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_q9RpCe3uEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_q9RpCu3uEeKwLp35IbAIig"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q9RpC-3uEeKwLp35IbAIig"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_q9RpDO3uEeKwLp35IbAIig" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_q9RpDe3uEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_q9RpDu3uEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_q9RpD-3uEeKwLp35IbAIig"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q9RpEO3uEeKwLp35IbAIig"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_q9RpEe3uEeKwLp35IbAIig" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_q9RpEu3uEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_q9RpE-3uEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_q9RpFO3uEeKwLp35IbAIig"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q9RpFe3uEeKwLp35IbAIig"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_q85OgO3uEeKwLp35IbAIig"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q9LiYe3uEeKwLp35IbAIig" x="316" y="760"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_-jCeEAw_EeOjX-JbGFEH7w" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-jCeEgw_EeOjX-JbGFEH7w" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-jCeEww_EeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-jCeFAw_EeOjX-JbGFEH7w" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-jCeFQw_EeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-jCeFgw_EeOjX-JbGFEH7w" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-jCeFww_EeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_-jCeGAw_EeOjX-JbGFEH7w" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_-jCeGQw_EeOjX-JbGFEH7w" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_-jCeGgw_EeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_-jCeGww_EeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_-jCeHAw_EeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-jCeHQw_EeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_-jCeHgw_EeOjX-JbGFEH7w" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_-jCeHww_EeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_-jCeIAw_EeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_-jCeIQw_EeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-jCeIgw_EeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_-jCeIww_EeOjX-JbGFEH7w" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_-jCeJAw_EeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_-jCeJQw_EeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_-jCeJgw_EeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-jCeJww_EeOjX-JbGFEH7w"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_T5we4AkdEeOnVqX9VcfeWQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-jCeEQw_EeOjX-JbGFEH7w" x="312" y="894" width="229"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_mmXS0bcqEeK8_t7Rpq6ZJA"/>
+    <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+    <edges xmi:type="notation:Connector" xmi:id="_0PIOkLcqEeK8_t7Rpq6ZJA" type="4002" source="_yPB_ELcqEeK8_t7Rpq6ZJA" target="_xbaJwLcqEeK8_t7Rpq6ZJA" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_0PIOk7cqEeK8_t7Rpq6ZJA" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_0PIOlLcqEeK8_t7Rpq6ZJA" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_0PIOkbcqEeK8_t7Rpq6ZJA" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_0NyKwLcqEeK8_t7Rpq6ZJA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0PIOkrcqEeK8_t7Rpq6ZJA" points="[-1, -6, 16, 197]$[-15, -195, 2, 8]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0REIQLcqEeK8_t7Rpq6ZJA" id="(0.38,0.06)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0REIQbcqEeK8_t7Rpq6ZJA" id="(0.47,0.95)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_jWjy8Na7EeKPiuTfpuvqHA" type="4001" source="_yPB_ELcqEeK8_t7Rpq6ZJA" target="_gUHVoNa7EeKPiuTfpuvqHA" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_jWjy89a7EeKPiuTfpuvqHA" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jWjy9Na7EeKPiuTfpuvqHA" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jWjy9da7EeKPiuTfpuvqHA" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jWjy9ta7EeKPiuTfpuvqHA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jWjy99a7EeKPiuTfpuvqHA" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jWjy-Na7EeKPiuTfpuvqHA" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jWjy-da7EeKPiuTfpuvqHA" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jWjy-ta7EeKPiuTfpuvqHA" x="-25" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jWjy-9a7EeKPiuTfpuvqHA" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jWjy_Na7EeKPiuTfpuvqHA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jWjy_da7EeKPiuTfpuvqHA" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jWjy_ta7EeKPiuTfpuvqHA" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_jWjy8da7EeKPiuTfpuvqHA" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_jWQ4ANa7EeKPiuTfpuvqHA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jWjy8ta7EeKPiuTfpuvqHA" points="[16, 0, -128, 0]$[133, -1, -11, -1]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jW2t4Na7EeKPiuTfpuvqHA" id="(0.8620689655172413,0.38)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jW2t4da7EeKPiuTfpuvqHA" id="(0.08,0.11253196930946291)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_akk1ANjhEeKQqZMBCFd2Uw" type="4001" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_gUHVoNa7EeKPiuTfpuvqHA" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_akk1A9jhEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_akk1BNjhEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_akk1BdjhEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_akk1BtjhEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_akk1B9jhEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_akk1CNjhEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_akk1CdjhEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_akk1CtjhEeKQqZMBCFd2Uw" x="-25" y="22"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_akk1C9jhEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_akk1DNjhEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_akk1DdjhEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_akk1DtjhEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_akk1AdjhEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_akGT4NjhEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_akk1AtjhEeKQqZMBCFd2Uw" points="[7, 15, -46, -102]$[50, 115, -3, -2]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_akxCQNjhEeKQqZMBCFd2Uw" id="(0.9759036144578314,0.15577889447236182)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_akxCQdjhEeKQqZMBCFd2Uw" id="(0.11,0.4194373401534527)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_bwi0sNjoEeKQqZMBCFd2Uw" type="4002" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_Y0q5cNjoEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_bwi0s9joEeKQqZMBCFd2Uw" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bwi0tNjoEeKQqZMBCFd2Uw" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_bwi0sdjoEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_bwKaMNjoEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bwi0stjoEeKQqZMBCFd2Uw" points="[2, -5, 0, 49]$[-1, -46, -3, 8]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bwo7UNjoEeKQqZMBCFd2Uw" id="(0.42771084337349397,0.04807692307692308)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bwo7UdjoEeKQqZMBCFd2Uw" id="(0.43,0.8805970149253731)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_DY7UINjpEeKQqZMBCFd2Uw" type="4001" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_AToXINjpEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_DY7UI9jpEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_DY7UJNjpEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_DY7UJdjpEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_DY7UJtjpEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_DY7UJ9jpEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_DY7UKNjpEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_DZBawNjpEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_DZBawdjpEeKQqZMBCFd2Uw" x="25" y="59"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_DZBawtjpEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_DZBaw9jpEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_DZBaxNjpEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_DZBaxdjpEeKQqZMBCFd2Uw" x="-20" y="-19"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_DY7UIdjpEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_DYi5oNjpEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DY7UItjpEeKQqZMBCFd2Uw" points="[-6, 7, 55, -70]$[-61, 77, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DZHhYNjpEeKQqZMBCFd2Uw" id="(0.19879518072289157,0.9326923076923077)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DZHhYdjpEeKQqZMBCFd2Uw" id="(0.5483870967741935,0.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_EE7egNjpEeKQqZMBCFd2Uw" type="4001" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_8O26INjoEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_EE7eg9jpEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_EE7ehNjpEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_EE7ehdjpEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_EE7ehtjpEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_EE7eh9jpEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_EFBlINjpEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_EFBlIdjpEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_EFBlItjpEeKQqZMBCFd2Uw" x="-35" y="33"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_EFBlI9jpEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_EFBlJNjpEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_EFBlJdjpEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_EFBlJtjpEeKQqZMBCFd2Uw" x="16" y="-48"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_EE7egdjpEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_EEjEANjpEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_EE7egtjpEeKQqZMBCFd2Uw" points="[3, 8, -32, -76]$[36, 78, 1, -6]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EFHrwNjpEeKQqZMBCFd2Uw" id="(0.6867469879518072,0.9230769230769231)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EFHrwdjpEeKQqZMBCFd2Uw" id="(0.5416666666666666,0.08955223880597014)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_hRFVMNkhEeKQqZMBCFd2Uw" type="4001" source="_gUHVoNa7EeKPiuTfpuvqHA" target="_di3-ENkhEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_hRFVM9khEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hRFVNNkhEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_hRFVNdkhEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hRFVNtkhEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_hRFVN9khEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hRFVONkhEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_hRFVOdkhEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hRFVOtkhEeKQqZMBCFd2Uw" x="-41" y="23"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_hRFVO9khEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hRFVPNkhEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_hRFVPdkhEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hRFVPtkhEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_hRFVMdkhEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_hQam0NkhEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hRFVMtkhEeKQqZMBCFd2Uw" points="[9, -1, -134, 0]$[132, -6, -11, -5]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hRLb0NkhEeKQqZMBCFd2Uw" id="(0.91,0.8593350383631714)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hRLb0dkhEeKQqZMBCFd2Uw" id="(0.11,0.35)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_5sUcENqBEeKQqZMBCFd2Uw" type="4001" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_zYYY0NqBEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_5sUcE9qBEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5sUcFNqBEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5sUcFdqBEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5sUcFtqBEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5sUcF9qBEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5sUcGNqBEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5sUcGdqBEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5sUcGtqBEeKQqZMBCFd2Uw" x="9" y="104"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5sUcG9qBEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5saisNqBEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5saisdqBEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5saistqBEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_5sUcEdqBEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_5r8BkNqBEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5sUcEtqBEeKQqZMBCFd2Uw" points="[0, 13, 28, -195]$[0, 168, 28, -40]$[-17, 192, 11, -16]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5sgpUNqBEeKQqZMBCFd2Uw" id="(0.27710843373493976,0.9346733668341709)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5sgpUdqBEeKQqZMBCFd2Uw" id="(0.8734177215189873,0.16)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_T0VGwNqCEeKQqZMBCFd2Uw" type="4001" source="_zYYY0NqBEeKQqZMBCFd2Uw" target="_eO9nANa7EeKPiuTfpuvqHA" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_T0VGw9qCEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_T0VGxNqCEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_T0VGxdqCEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_T0VGxtqCEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_T0VGx9qCEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_T0VGyNqCEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_T0VGydqCEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_T0VGytqCEeKQqZMBCFd2Uw" x="3" y="78"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_T0VGy9qCEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_T0VGzNqCEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_T0VGzdqCEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_T0VGztqCEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_T0VGwdqCEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_Tz2loNqCEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_T0VGwtqCEeKQqZMBCFd2Uw" points="[1, 9, 0, -64]$[-1, 65, -2, -8]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_T0bNYNqCEeKQqZMBCFd2Uw" id="(0.5063291139240507,0.91)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_T0bNYdqCEeKQqZMBCFd2Uw" id="(0.42857142857142855,0.08)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="__sH28Nt0EeKQqZMBCFd2Uw" type="4001" source="_33RakNt0EeKQqZMBCFd2Uw" target="_DOnbMNjhEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="__sH289t0EeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__sH29Nt0EeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="__sH29dt0EeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__sH29tt0EeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="__sH299t0EeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__sH2-Nt0EeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="__sH2-dt0EeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__sH2-tt0EeKQqZMBCFd2Uw" x="-1" y="58"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="__sH2-9t0EeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__sH2_Nt0EeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="__sH2_dt0EeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__sH2_tt0EeKQqZMBCFd2Uw" x="-1" y="-35"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="__sH28dt0EeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#__rpV0Nt0EeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__sH28tt0EeKQqZMBCFd2Uw" points="[-9, 4, 0, -131]$[-9, 129, 0, -6]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__sN9kNt0EeKQqZMBCFd2Uw" id="(0.4147465437788018,0.9587628865979382)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__sN9kdt0EeKQqZMBCFd2Uw" id="(0.5240963855421686,0.057692307692307696)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_wRtFcNt2EeKQqZMBCFd2Uw" type="4001" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_IPOrANt2EeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_wRtFc9t2EeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_wRtFdNt2EeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_wRtFddt2EeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_wRtFdtt2EeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_wRtFd9t2EeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_wRtFeNt2EeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_wRtFedt2EeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_wRtFett2EeKQqZMBCFd2Uw" x="22" y="-39"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_wRtFe9t2EeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_wRtFfNt2EeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_wRtFfdt2EeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_wRtFftt2EeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_wRtFcdt2EeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_wROkUNt2EeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_wRtFctt2EeKQqZMBCFd2Uw" points="[17, 96, -39, -213]$[46, 304, -10, -5]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wRzMENt2EeKQqZMBCFd2Uw" id="(0.40963855421686746,0.07692307692307693)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wRzMEdt2EeKQqZMBCFd2Uw" id="(0.05181347150259067,0.11)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_3GnZYO3uEeKwLp35IbAIig" type="4001" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_q9LiYO3uEeKwLp35IbAIig" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_3GnZY-3uEeKwLp35IbAIig" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3GnZZO3uEeKwLp35IbAIig" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_3GnZZe3uEeKwLp35IbAIig" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3GnZZu3uEeKwLp35IbAIig" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_3GnZZ-3uEeKwLp35IbAIig" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3GnZaO3uEeKwLp35IbAIig" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_3GnZae3uEeKwLp35IbAIig" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3GnZau3uEeKwLp35IbAIig" x="72" y="-98"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_3GnZa-3uEeKwLp35IbAIig" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3GnZbO3uEeKwLp35IbAIig" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_3GnZbe3uEeKwLp35IbAIig" visible="false" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3GnZbu3uEeKwLp35IbAIig" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_3GnZYe3uEeKwLp35IbAIig" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_3GHqIO3uEeKwLp35IbAIig"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3GnZYu3uEeKwLp35IbAIig" points="[3, 22, -77, -351]$[47, 321, -33, -52]$[80, 373, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3GzmoO3uEeKwLp35IbAIig" id="(0.4759036144578313,0.8894472361809045)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Gzmoe3uEeKwLp35IbAIig" id="(0.0738255033557047,0.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_FETysAxAEeOjX-JbGFEH7w" type="4001" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_-jCeEAw_EeOjX-JbGFEH7w" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_FEVA0AxAEeOjX-JbGFEH7w" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_FEVA0QxAEeOjX-JbGFEH7w" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_FEVn4AxAEeOjX-JbGFEH7w" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_FEVn4QxAEeOjX-JbGFEH7w" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_FEVn4gxAEeOjX-JbGFEH7w" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_FEVn4wxAEeOjX-JbGFEH7w" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_FEVn5AxAEeOjX-JbGFEH7w" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_FEVn5QxAEeOjX-JbGFEH7w" x="70" y="-137"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_FEVn5gxAEeOjX-JbGFEH7w" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_FEVn5wxAEeOjX-JbGFEH7w" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_FEWO8AxAEeOjX-JbGFEH7w" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_FEWO8QxAEeOjX-JbGFEH7w" x="52" y="29"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_FETysQxAEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_FDpEUAxAEeOjX-JbGFEH7w"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_FETysgxAEeOjX-JbGFEH7w" points="[0, 5, -99, -495]$[19, 112, -80, -388]$[67, 472, -32, -28]$[87, 490, -12, -10]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FEh1IAxAEeOjX-JbGFEH7w" id="(0.35542168674698793,0.9748743718592965)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FEh1IQxAEeOjX-JbGFEH7w" id="(0.06422018348623854,0.1)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_y-BQANa7EeKPiuTfpuvqHA" type="PapyrusUMLClassDiagram" name="LayersExpression" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_zpKewNa7EeKPiuTfpuvqHA" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zpKewta7EeKPiuTfpuvqHA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zpKew9a7EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zpKexNa7EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zpKexda7EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zpKexta7EeKPiuTfpuvqHA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zpKex9a7EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_zpKeyNa7EeKPiuTfpuvqHA" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_zpKeyda7EeKPiuTfpuvqHA" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_hEYzQNjwEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_ctvjINjwEeKQqZMBCFd2Uw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_hEYzQdjwEeKQqZMBCFd2Uw" x="58" y="16"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_hEe54NjwEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_ct7wYNjwEeKQqZMBCFd2Uw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_hEe54djwEeKQqZMBCFd2Uw" x="58" y="16"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_zpKeyta7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_zpKey9a7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_zpKezNa7EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zpKezda7EeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_zpKezta7EeKPiuTfpuvqHA" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_U4pyQHl6EeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_9n-f4HbuEeOlpfB_tZS-QA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_U4pyQXl6EeOlpfB_tZS-QA" x="50" y="17"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_VuiRYHl6EeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_rQGJoHbuEeOlpfB_tZS-QA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_VuiRYXl6EeOlpfB_tZS-QA" x="71" y="17"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_zpKez9a7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_zpKe0Na7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_zpKe0da7EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zpKe0ta7EeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_zpKe09a7EeKPiuTfpuvqHA" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_zpKe1Na7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_zpKe1da7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_zpKe1ta7EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zpKe19a7EeKPiuTfpuvqHA"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_gT0asNa7EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zpKewda7EeKPiuTfpuvqHA" x="120" y="108" width="242" height="133"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_52F7ENa7EeKPiuTfpuvqHA" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_52F7Eta7EeKPiuTfpuvqHA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_52F7E9a7EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_52F7FNa7EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_52F7Fda7EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_52F7Fta7EeKPiuTfpuvqHA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_52F7F9a7EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_52F7GNa7EeKPiuTfpuvqHA" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_52F7Gda7EeKPiuTfpuvqHA" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_52F7Gta7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_52F7G9a7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_52F7HNa7EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_52F7Hda7EeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_52F7Hta7EeKPiuTfpuvqHA" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_52F7H9a7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_52F7INa7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_52F7Ida7EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_52F7Ita7EeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_52F7I9a7EeKPiuTfpuvqHA" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_52F7JNa7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_52F7Jda7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_52F7Jta7EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_52F7J9a7EeKPiuTfpuvqHA"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_51zAINa7EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_52F7Eda7EeKPiuTfpuvqHA" x="696" y="378" width="115" height="193"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_AjwF4Na8EeKPiuTfpuvqHA" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AjwF4ta8EeKPiuTfpuvqHA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AjwF49a8EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AjwF5Na8EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AjwF5da8EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AjwF5ta8EeKPiuTfpuvqHA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AjwF59a8EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_AjwF6Na8EeKPiuTfpuvqHA" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AjwF6da8EeKPiuTfpuvqHA" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AjwF6ta8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AjwF69a8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AjwF7Na8EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AjwF7da8EeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AjwF7ta8EeKPiuTfpuvqHA" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AjwF79a8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AjwF8Na8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AjwF8da8EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AjwF8ta8EeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AjwF89a8EeKPiuTfpuvqHA" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AjwF9Na8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AjwF9da8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AjwF9ta8EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AjwF99a8EeKPiuTfpuvqHA"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_AjTZ8Na8EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AjwF4da8EeKPiuTfpuvqHA" x="963" y="379"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_T7HNENbFEeKPiuTfpuvqHA" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T7HNEtbFEeKPiuTfpuvqHA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T7HNE9bFEeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T7HNFNbFEeKPiuTfpuvqHA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T7HNFdbFEeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T7HNFtbFEeKPiuTfpuvqHA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T7HNF9bFEeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_T7HNGNbFEeKPiuTfpuvqHA" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_T7HNGdbFEeKPiuTfpuvqHA" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_T7HNGtbFEeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_T7HNG9bFEeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_T7HNHNbFEeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T7HNHdbFEeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_T7HNHtbFEeKPiuTfpuvqHA" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_T7HNH9bFEeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_T7QXANbFEeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_T7QXAdbFEeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T7QXAtbFEeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_T7QXA9bFEeKPiuTfpuvqHA" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_T7QXBNbFEeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_T7QXBdbFEeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_T7QXBtbFEeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T7QXB9bFEeKPiuTfpuvqHA"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_eNnjMNa7EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T7HNEdbFEeKPiuTfpuvqHA" x="960" y="258"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_vMekkNjKEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vMkrMNjKEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vMkrMdjKEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vMkrMtjKEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vMkrM9jKEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vMkrNNjKEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vMkrNdjKEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_vMkrNtjKEeKgkM6XJF9t4A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_vMkrN9jKEeKgkM6XJF9t4A" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_1CU9oNjKEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_1B8jINjKEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_1CU9odjKEeKgkM6XJF9t4A"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_4gTgYNjKEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_4f0_QNjKEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_4gTgYdjKEeKgkM6XJF9t4A"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_vMkrONjKEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_vMkrOdjKEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_vMkrOtjKEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vMkrO9jKEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_vMkrPNjKEeKgkM6XJF9t4A" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_vMkrPdjKEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_vMkrPtjKEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_vMkrP9jKEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vMkrQNjKEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_vMkrQdjKEeKgkM6XJF9t4A" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_vMkrQtjKEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_vMkrQ9jKEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_vMkrRNjKEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vMkrRdjKEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_vMMQsNjKEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vMekkdjKEeKgkM6XJF9t4A" x="960" y="510" width="203"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_9IsT4NjiEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9IsT4tjiEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9IsT49jiEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9IsT5NjiEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9IsT5djiEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9IsT5tjiEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9IyagNjiEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_9IyagdjiEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_9IyagtjiEeKQqZMBCFd2Uw" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_R8Lv8NjuEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_AWx_gNjuEeKQqZMBCFd2Uw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_R8Lv8djuEeKQqZMBCFd2Uw" x="47" y="9"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_R8Lv8tjuEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_AW-MwNjuEeKQqZMBCFd2Uw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_R8Lv89juEeKQqZMBCFd2Uw" x="47" y="9"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_mCypIAxEEeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_B5cxgAxGEeOjX-JbGFEH7w" source="Stereotype_Annotation">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B5dYkAxGEeOjX-JbGFEH7w" key="StereotypeWithQualifiedNameList" value=""/>
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B5dYkQxGEeOjX-JbGFEH7w" key="StereotypeList" value="Ecore::EAttribute"/>
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B5dYkgxGEeOjX-JbGFEH7w" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B5dYkwxGEeOjX-JbGFEH7w" key="PropStereoDisplay" value=""/>
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B5dYlAxGEeOjX-JbGFEH7w" key="StereotypePropertyLocation" value="Compartment"/>
+          </eAnnotations>
+          <element xmi:type="uml:Property" href="layers.uml#_mCUIAAxEEeOjX-JbGFEH7w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_mCypIQxEEeOjX-JbGFEH7w"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_qa7HAAxEEeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_qaozIAxEEeOjX-JbGFEH7w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_qa7HAQxEEeOjX-JbGFEH7w"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_48FIsGQ7EeOlpfB_tZS-QA" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_xcbgQGQ7EeOlpfB_tZS-QA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_48FIsWQ7EeOlpfB_tZS-QA" x="153" y="77"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_9Iyag9jiEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_9IyahNjiEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_9IyahdjiEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9IyahtjiEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_9Iyah9jiEeKQqZMBCFd2Uw" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_VdqgMO7HEeK0p4PkXjd-_Q" type="3013" fontName="Segoe UI" lineColor="0">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dUmVUO7JEeK0p4PkXjd-_Q" source="CustomAppearance_Annotation">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fNQgEO7JEeK0p4PkXjd-_Q" key="CustomAppearance_MaskValue" value="17160"/>
+          </eAnnotations>
+          <element xmi:type="uml:Operation" href="layers.uml#_VdSFsO7HEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_VdqgMe7HEeK0p4PkXjd-_Q"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_fOx_gO7IEeK0p4PkXjd-_Q" type="3013" fontName="Segoe UI" lineColor="0">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dUmVUu7JEeK0p4PkXjd-_Q" source="CustomAppearance_Annotation">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fNQgEe7JEeK0p4PkXjd-_Q" key="CustomAppearance_MaskValue" value="17160"/>
+          </eAnnotations>
+          <element xmi:type="uml:Operation" href="layers.uml#_xfz8UO7HEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_fOx_ge7IEeK0p4PkXjd-_Q" x="93" y="23"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_fO4GIO7IEeK0p4PkXjd-_Q" type="3013" fontName="Segoe UI" lineColor="0">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dUmVVO7JEeK0p4PkXjd-_Q" source="CustomAppearance_Annotation">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fNQgEu7JEeK0p4PkXjd-_Q" key="CustomAppearance_MaskValue" value="17160"/>
+          </eAnnotations>
+          <element xmi:type="uml:Operation" href="layers.uml#_x2PfUO7HEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_fO4GIe7IEeK0p4PkXjd-_Q" x="93" y="23"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_Ps2L4WUaEeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_Ps2L4GUaEeOlpfB_tZS-QA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_Ps2L4mUaEeOlpfB_tZS-QA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_kzSSwWUdEeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_kzSSwGUdEeOlpfB_tZS-QA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kzSSwmUdEeOlpfB_tZS-QA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_9IyaiNjiEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_9IyaidjiEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_9IyaitjiEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9Iyai9jiEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_9IyajNjiEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_9IyajdjiEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_9IyajtjiEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_9Iyaj9jiEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9IyakNjiEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_9IaAANjiEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9IsT4djiEeKQqZMBCFd2Uw" x="468" y="72" width="475" height="250"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Hoi98NjjEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Hoi98tjjEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Hoi989jjEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Hoi99NjjEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Hoi99djjEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Hoi99tjjEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Hoi999jjEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Hoi9-NjjEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Hoi9-djjEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Hoi9-tjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Hoi9-9jjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Hoi9_NjjEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hoi9_djjEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Hoi9_tjjEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Hoi9_9jjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Hoi-ANjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Hoi-AdjjEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hoi-AtjjEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Hoi-A9jjEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Hoi-BNjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Hoi-BdjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Hoi-BtjjEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hoi-B9jjEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_HoKjcNjjEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hoi98djjEeKQqZMBCFd2Uw" x="360" y="360" width="115"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_WunlMNjjEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wutr0NjjEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wutr0djjEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wutr0tjjEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wutr09jjEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wutr1NjjEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wutr1djjEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Wutr1tjjEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Wutr19jjEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Wutr2NjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Wutr2djjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Wutr2tjjEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wutr29jjEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Wutr3NjjEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Wutr3djjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Wutr3tjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Wutr39jjEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wutr4NjjEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Wutr4djjEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Wutr4tjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Wutr49jjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Wutr5NjjEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wutr5djjEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_WuVRUNjjEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WunlMdjjEeKQqZMBCFd2Uw" x="456" y="534" width="157"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_gqpJcNjjEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gqvQENjjEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gqvQEdjjEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gqvQEtjjEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gqvQE9jjEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gqvQFNjjEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gqvQFdjjEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_gqvQFtjjEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gqvQF9jjEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gqvQGNjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gqvQGdjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gqvQGtjjEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gqvQG9jjEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gqvQHNjjEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gqvQHdjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gqvQHtjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gqvQH9jjEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gqvQINjjEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gqvQIdjjEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gqvQItjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gqvQI9jjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gqvQJNjjEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gqvQJdjjEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_gqW1kNjjEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gqpJcdjjEeKQqZMBCFd2Uw" x="582" y="672"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_wpUMoNjjEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wpUMotjjEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wpUMo9jjEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wpUMpNjjEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wpUMpdjjEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wpUMptjjEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wpUMp9jjEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_wpUMqNjjEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_wpUMqdjjEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_wpUMqtjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_wpUMq9jjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_wpUMrNjjEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wpUMrdjjEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_wpUMrtjjEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_wpUMr9jjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_wpUMsNjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_wpUMsdjjEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wpUMstjjEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_wpUMs9jjEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_wpUMtNjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_wpUMtdjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_wpUMttjjEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wpUMt9jjEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_wpB4wNjjEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wpUModjjEeKQqZMBCFd2Uw" x="372" y="672" width="169"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_1xfAUNjjEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1xfnYNjjEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1xfnYdjjEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1xgOcNjjEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1xgOcdjjEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1xgOctjjEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1xgOc9jjEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_1xgOdNjjEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1xgOddjjEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1xgOdtjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1xgOd9jjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1xgOeNjjEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1xgOedjjEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1xgOetjjEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1xgOe9jjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1xgOfNjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1xgOfdjjEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1xgOftjjEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1xgOf9jjEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1xgOgNjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1xgOgdjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1xgOgtjjEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1xgOg9jjEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_1xJCENjjEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1xfAUdjjEeKQqZMBCFd2Uw" x="222" y="534" width="163"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_zT_qYNt5EeKwptaAAanMDg" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zT_qYtt5EeKwptaAAanMDg" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zT_qY9t5EeKwptaAAanMDg" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zT_qZNt5EeKwptaAAanMDg" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zT_qZdt5EeKwptaAAanMDg" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zT_qZtt5EeKwptaAAanMDg" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zT_qZ9t5EeKwptaAAanMDg" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_zT_qaNt5EeKwptaAAanMDg" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_zT_qadt5EeKwptaAAanMDg" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_zT_qatt5EeKwptaAAanMDg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_zT_qa9t5EeKwptaAAanMDg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_zT_qbNt5EeKwptaAAanMDg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zT_qbdt5EeKwptaAAanMDg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_zT_qbtt5EeKwptaAAanMDg" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_zT_qb9t5EeKwptaAAanMDg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_zT_qcNt5EeKwptaAAanMDg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_zT_qcdt5EeKwptaAAanMDg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zT_qctt5EeKwptaAAanMDg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_zT_qc9t5EeKwptaAAanMDg" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_zT_qdNt5EeKwptaAAanMDg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_zT_qddt5EeKwptaAAanMDg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_zT_qdtt5EeKwptaAAanMDg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zT_qd9t5EeKwptaAAanMDg"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_325AENt0EeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zT_qYdt5EeKwptaAAanMDg" x="612" y="-18" height="45"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_z-jdcOHTEeKCZbxNW-U3VQ" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z-jdcuHTEeKCZbxNW-U3VQ" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z-jdc-HTEeKCZbxNW-U3VQ" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z-jddOHTEeKCZbxNW-U3VQ" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z-jddeHTEeKCZbxNW-U3VQ" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z-jdduHTEeKCZbxNW-U3VQ" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z-jdd-HTEeKCZbxNW-U3VQ" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_z-jdeOHTEeKCZbxNW-U3VQ" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_z-jdeeHTEeKCZbxNW-U3VQ" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_BnajsBZ1EeOZwp016gnCFQ" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_Bm93wBZ1EeOZwp016gnCFQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_BnajsRZ1EeOZwp016gnCFQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_FqR8MBZ1EeOZwp016gnCFQ" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_Fp_BQBZ1EeOZwp016gnCFQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_FqR8MRZ1EeOZwp016gnCFQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_NA_bwFCkEeO_9LQ4jZWm3w" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_NAa0AFCkEeO_9LQ4jZWm3w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_NA_bwVCkEeO_9LQ4jZWm3w"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_X_qIwVCkEeO_9LQ4jZWm3w" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_X_qIwFCkEeO_9LQ4jZWm3w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_X_qIwlCkEeO_9LQ4jZWm3w"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_uJr68VCkEeO_9LQ4jZWm3w" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_uJr68FCkEeO_9LQ4jZWm3w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_uJr68lCkEeO_9LQ4jZWm3w"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_y220sVCkEeO_9LQ4jZWm3w" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_y220sFCkEeO_9LQ4jZWm3w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_y220slCkEeO_9LQ4jZWm3w"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_sPbYQVClEeO_9LQ4jZWm3w" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_sPbYQFClEeO_9LQ4jZWm3w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_sPbYQlClEeO_9LQ4jZWm3w"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_z-jdeuHTEeKCZbxNW-U3VQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_z-jde-HTEeKCZbxNW-U3VQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_z-jdfOHTEeKCZbxNW-U3VQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z-jdfeHTEeKCZbxNW-U3VQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_z-jdfuHTEeKCZbxNW-U3VQ" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_kKAqgBZ0EeOZwp016gnCFQ" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_kI0XsBZ0EeOZwp016gnCFQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kKAqgRZ0EeOZwp016gnCFQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_lphVcBZ0EeOZwp016gnCFQ" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_lpOagBZ0EeOZwp016gnCFQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_lphVcRZ0EeOZwp016gnCFQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_pKeTsBZ0EeOZwp016gnCFQ" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_pKKxsBZ0EeOZwp016gnCFQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_pKeTsRZ0EeOZwp016gnCFQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_KMaIAFVJEeOah7Z-UYdQAA" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_EnH6gFVJEeOah7Z-UYdQAA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_KMaIAVVJEeOah7Z-UYdQAA" x="75" y="65"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_lLHxMFVJEeOah7Z-UYdQAA" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_Y5m8QFVJEeOah7Z-UYdQAA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_lLHxMVVJEeOah7Z-UYdQAA" x="99" y="81"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_KnlysFVKEeOah7Z-UYdQAA" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_m3jd0FVJEeOah7Z-UYdQAA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_KnlysVVKEeOah7Z-UYdQAA" x="112" y="101"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_ZojQcFVKEeOah7Z-UYdQAA" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_Lwc4MFVKEeOah7Z-UYdQAA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_ZojQcVVKEeOah7Z-UYdQAA" x="23" y="122"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_z-jdf-HTEeKCZbxNW-U3VQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_z-jdgOHTEeKCZbxNW-U3VQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_z-jdgeHTEeKCZbxNW-U3VQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z-jdguHTEeKCZbxNW-U3VQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_z-jdg-HTEeKCZbxNW-U3VQ" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_z-jdhOHTEeKCZbxNW-U3VQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_z-jdheHTEeKCZbxNW-U3VQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_z-jdhuHTEeKCZbxNW-U3VQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z-jdh-HTEeKCZbxNW-U3VQ"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_z9aN8OHTEeKCZbxNW-U3VQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z-jdceHTEeKCZbxNW-U3VQ" x="900" y="696"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="__1eoIOHTEeKCZbxNW-U3VQ" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__1eoIuHTEeKCZbxNW-U3VQ" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__1eoI-HTEeKCZbxNW-U3VQ" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__1eoJOHTEeKCZbxNW-U3VQ" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__1eoJeHTEeKCZbxNW-U3VQ" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__1eoJuHTEeKCZbxNW-U3VQ" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__1eoJ-HTEeKCZbxNW-U3VQ" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="__1eoKOHTEeKCZbxNW-U3VQ" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__1eoKeHTEeKCZbxNW-U3VQ" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__1eoKuHTEeKCZbxNW-U3VQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__1eoK-HTEeKCZbxNW-U3VQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__1eoLOHTEeKCZbxNW-U3VQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__1eoLeHTEeKCZbxNW-U3VQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__1eoLuHTEeKCZbxNW-U3VQ" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__1eoL-HTEeKCZbxNW-U3VQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__1eoMOHTEeKCZbxNW-U3VQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__1eoMeHTEeKCZbxNW-U3VQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__1eoMuHTEeKCZbxNW-U3VQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__1eoM-HTEeKCZbxNW-U3VQ" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__1eoNOHTEeKCZbxNW-U3VQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__1eoNeHTEeKCZbxNW-U3VQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__1eoNuHTEeKCZbxNW-U3VQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__1eoN-HTEeKCZbxNW-U3VQ"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#__1GNoOHTEeKCZbxNW-U3VQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__1eoIeHTEeKCZbxNW-U3VQ" x="732" y="696"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_7c7RQFVHEeOah7Z-UYdQAA" type="2006" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7c7RQlVHEeOah7Z-UYdQAA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7c7RQ1VHEeOah7Z-UYdQAA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7c7RRFVHEeOah7Z-UYdQAA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7c7RRVVHEeOah7Z-UYdQAA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7c7RRlVHEeOah7Z-UYdQAA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7c7RR1VHEeOah7Z-UYdQAA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_7c7RSFVHEeOah7Z-UYdQAA" type="5023"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_7c7RSVVHEeOah7Z-UYdQAA" type="7015">
+        <children xmi:type="notation:Shape" xmi:id="_3vpKYFVLEeOah7Z-UYdQAA" type="3017" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:EnumerationLiteral" href="layers.uml#_ItnrQFVIEeOah7Z-UYdQAA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_3vpKYVVLEeOah7Z-UYdQAA" x="49" y="20"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_4RZzoFVLEeOah7Z-UYdQAA" type="3017" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:EnumerationLiteral" href="layers.uml#__fkAQFVHEeOah7Z-UYdQAA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_4RZzoVVLEeOah7Z-UYdQAA" x="26" y="28"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_7c7RSlVHEeOah7Z-UYdQAA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_7c7RS1VHEeOah7Z-UYdQAA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_7c7RTFVHEeOah7Z-UYdQAA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7c7RTVVHEeOah7Z-UYdQAA"/>
+      </children>
+      <element xmi:type="uml:Enumeration" href="layers.uml#_7cWpgFVHEeOah7Z-UYdQAA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7c7RQVVHEeOah7Z-UYdQAA" x="496" y="820"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_ft-hUWtpEeOlpfB_tZS-QA" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ft-hU2tpEeOlpfB_tZS-QA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ft-hVGtpEeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fuEn8GtpEeOlpfB_tZS-QA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fuEn8WtpEeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fuEn8mtpEeOlpfB_tZS-QA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fuEn82tpEeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_fuEn9GtpEeOlpfB_tZS-QA" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_fuEn9WtpEeOlpfB_tZS-QA" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_fuEn9mtpEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_fuEn92tpEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_fuEn-GtpEeOlpfB_tZS-QA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fuEn-WtpEeOlpfB_tZS-QA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_fuEn-mtpEeOlpfB_tZS-QA" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_fuEn-2tpEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_fuEn_GtpEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_fuEn_WtpEeOlpfB_tZS-QA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fuEn_mtpEeOlpfB_tZS-QA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_fuEn_2tpEeOlpfB_tZS-QA" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_fuEoAGtpEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_fuEoAWtpEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_fuEoAmtpEeOlpfB_tZS-QA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fuEoA2tpEeOlpfB_tZS-QA"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_ft-hUGtpEeOlpfB_tZS-QA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ft-hUmtpEeOlpfB_tZS-QA" x="732" y="822"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_RopgYXpGEeOlpfB_tZS-QA" type="2004" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RopgY3pGEeOlpfB_tZS-QA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RopgZHpGEeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RopgZXpGEeOlpfB_tZS-QA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RopgZnpGEeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RopgZ3pGEeOlpfB_tZS-QA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RopgaHpGEeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_RopgaXpGEeOlpfB_tZS-QA" type="5011"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_RopganpGEeOlpfB_tZS-QA" type="7006">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Ropga3pGEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_RopgbHpGEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_RopgbXpGEeOlpfB_tZS-QA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RopgbnpGEeOlpfB_tZS-QA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Ropgb3pGEeOlpfB_tZS-QA" type="7007">
+        <children xmi:type="notation:Shape" xmi:id="_jHtYQXpGEeOlpfB_tZS-QA" type="3007" fontName="Segoe UI" lineColor="0">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_u3kRoHpGEeOlpfB_tZS-QA" source="CustomAppearance_Annotation">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vhh0oHpGEeOlpfB_tZS-QA" key="CustomAppearance_MaskValue" value="4872"/>
+          </eAnnotations>
+          <element xmi:type="uml:Operation" href="layers.uml#_jHtYQHpGEeOlpfB_tZS-QA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_jHtYQnpGEeOlpfB_tZS-QA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_RopgcHpGEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_RopgcXpGEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_RopgcnpGEeOlpfB_tZS-QA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ropgc3pGEeOlpfB_tZS-QA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_RopgdHpGEeOlpfB_tZS-QA" type="7008">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_RopgdXpGEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_RopgdnpGEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Ropgd3pGEeOlpfB_tZS-QA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RopgeHpGEeOlpfB_tZS-QA"/>
+      </children>
+      <element xmi:type="uml:Interface" href="layers.uml#_RopgYHpGEeOlpfB_tZS-QA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RopgYnpGEeOlpfB_tZS-QA" x="78" y="342" width="175" height="109"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_y-BQAda7EeKPiuTfpuvqHA"/>
+    <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+    <edges xmi:type="notation:Connector" xmi:id="_5ZBIENa8EeKPiuTfpuvqHA" type="4001" source="_52F7ENa7EeKPiuTfpuvqHA" target="_AjwF4Na8EeKPiuTfpuvqHA" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_5ZKSANa8EeKPiuTfpuvqHA" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5ZKSAda8EeKPiuTfpuvqHA" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5ZKSAta8EeKPiuTfpuvqHA" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5ZKSA9a8EeKPiuTfpuvqHA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5ZKSBNa8EeKPiuTfpuvqHA" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5ZKSBda8EeKPiuTfpuvqHA" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5ZKSBta8EeKPiuTfpuvqHA" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5ZKSB9a8EeKPiuTfpuvqHA" x="-35" y="18"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5ZKSCNa8EeKPiuTfpuvqHA" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5ZKSCda8EeKPiuTfpuvqHA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5ZKSCta8EeKPiuTfpuvqHA" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5ZKSC9a8EeKPiuTfpuvqHA" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_5ZBIEda8EeKPiuTfpuvqHA" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_5YuNINa8EeKPiuTfpuvqHA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5ZBIEta8EeKPiuTfpuvqHA" points="[7, 4, -241, 0]$[240, 4, -8, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5ZUDANa8EeKPiuTfpuvqHA" id="(0.95,0.3941908713692946)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5ZUDAda8EeKPiuTfpuvqHA" id="(0.03,0.73)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_cH3WoNbGEeKPiuTfpuvqHA" type="4001" source="_zpKewNa7EeKPiuTfpuvqHA" target="_9IsT4NjiEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_cH3Wo9bGEeKPiuTfpuvqHA" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_cH3WpNbGEeKPiuTfpuvqHA" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_cH3WpdbGEeKPiuTfpuvqHA" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_cH3WptbGEeKPiuTfpuvqHA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_cH3Wp9bGEeKPiuTfpuvqHA" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_cH3WqNbGEeKPiuTfpuvqHA" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_cH3WqdbGEeKPiuTfpuvqHA" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_cH3WqtbGEeKPiuTfpuvqHA" x="-16" y="9"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_cH3Wq9bGEeKPiuTfpuvqHA" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_cH3WrNbGEeKPiuTfpuvqHA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_cH3WrdbGEeKPiuTfpuvqHA" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_cH3WrtbGEeKPiuTfpuvqHA" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_cH3WodbGEeKPiuTfpuvqHA" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_cHkbsNbGEeKPiuTfpuvqHA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_cH3WotbGEeKPiuTfpuvqHA" points="[5, -6, -94, 0]$[97, -7, -2, -1]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cIBHoNbGEeKPiuTfpuvqHA" id="(0.9941176470588236,0.3533834586466165)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cIBHodbGEeKPiuTfpuvqHA" id="(0.022900763358778626,0.31756756756756754)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_A2AAANjLEeKgkM6XJF9t4A" type="4001" source="_52F7ENa7EeKPiuTfpuvqHA" target="_vMekkNjKEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_A2AAA9jLEeKgkM6XJF9t4A" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_A2AABNjLEeKgkM6XJF9t4A" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_A2AABdjLEeKgkM6XJF9t4A" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_A2AABtjLEeKgkM6XJF9t4A" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_A2GGoNjLEeKgkM6XJF9t4A" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_A2GGodjLEeKgkM6XJF9t4A" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_A2GGotjLEeKgkM6XJF9t4A" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_A2GGo9jLEeKgkM6XJF9t4A" x="-52" y="17"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_A2GGpNjLEeKgkM6XJF9t4A" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_A2GGpdjLEeKgkM6XJF9t4A" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_A2GGptjLEeKgkM6XJF9t4A" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_A2GGp9jLEeKgkM6XJF9t4A" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_A2AAAdjLEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_A1nlgNjLEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_A2AAAtjLEeKgkM6XJF9t4A" points="[4, 2, -221, 0]$[222, 1, -3, -1]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_A2MNQNjLEeKgkM6XJF9t4A" id="(0.9304347826086956,0.8963730569948186)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_A2MNQdjLEeKgkM6XJF9t4A" id="(0.014778325123152709,0.3870967741935484)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="__u7_YNjMEeKgkM6XJF9t4A" type="4002" source="_52F7ENa7EeKPiuTfpuvqHA" target="_9IsT4NjiEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="__vCGANjMEeKgkM6XJF9t4A" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__vCGAdjMEeKgkM6XJF9t4A" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="__u7_YdjMEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#__ujk4NjMEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__u7_YtjMEeKgkM6XJF9t4A" points="[25, -12, -69, 32]$[88, -42, -6, 2]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__vCGAtjMEeKgkM6XJF9t4A" id="(0.62,0.053811659192825115)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__vCGA9jMEeKgkM6XJF9t4A" id="(0.08396946564885496,0.59)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_LBg6UNjiEeKQqZMBCFd2Uw" type="4001" source="_52F7ENa7EeKPiuTfpuvqHA" target="_T7HNENbFEeKPiuTfpuvqHA" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_LBg6U9jiEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_LBg6VNjiEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_LBg6VdjiEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_LBg6VtjiEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_LBg6V9jiEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_LBg6WNjiEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_LBg6WdjiEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_LBg6WtjiEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_LBg6W9jiEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_LBg6XNjiEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_LBg6XdjiEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_LBg6XtjiEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_LBg6UdjiEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_LBIf0NjiEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LBg6UtjiEeKQqZMBCFd2Uw" points="[4, -1, -236, 26]$[234, -23, -6, 4]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LBtHkNjiEeKQqZMBCFd2Uw" id="(0.96,0.05394190871369295)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LBtHkdjiEeKQqZMBCFd2Uw" id="(0.05714285714285714,0.88)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_OJgwkNjjEeKQqZMBCFd2Uw" type="4002" source="_Hoi98NjjEeKQqZMBCFd2Uw" target="_9IsT4NjiEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_OJgwk9jjEeKQqZMBCFd2Uw" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_OJgwlNjjEeKQqZMBCFd2Uw" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_OJgwkdjjEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_OJCPcNjjEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OJgwktjjEeKQqZMBCFd2Uw" points="[2, -2, -91, 72]$[90, -64, -3, 10]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OJm3MNjjEeKQqZMBCFd2Uw" id="(0.6,0.02)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OJm3MdjjEeKQqZMBCFd2Uw" id="(0.4122137404580153,0.9)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_zMPcYNjjEeKQqZMBCFd2Uw" type="4002" source="_wpUMoNjjEeKQqZMBCFd2Uw" target="_WunlMNjjEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_zMPcY9jjEeKQqZMBCFd2Uw" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_zMPcZNjjEeKQqZMBCFd2Uw" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_zMPcYdjjEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_zL9IgNjjEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_zMPcYtjjEeKQqZMBCFd2Uw" points="[12, -9, -58, 43]$[67, -47, -3, 5]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zMVjANjjEeKQqZMBCFd2Uw" id="(0.4319526627218935,0.09)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zMVjAdjjEeKQqZMBCFd2Uw" id="(0.37579617834394907,0.95)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_zpCtINjjEeKQqZMBCFd2Uw" type="4002" source="_gqpJcNjjEeKQqZMBCFd2Uw" target="_WunlMNjjEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_zpIzwNjjEeKQqZMBCFd2Uw" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_zpIzwdjjEeKQqZMBCFd2Uw" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_zpCtIdjjEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_zoqSoNjjEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_zpCtItjjEeKQqZMBCFd2Uw" points="[-16, -13, 53, 45]$[-65, -51, 4, 7]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zpIzwtjjEeKQqZMBCFd2Uw" id="(0.4262295081967213,0.13)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zpIzw9jjEeKQqZMBCFd2Uw" id="(0.6942675159235668,0.93)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_0mKcsNjjEeKQqZMBCFd2Uw" type="4002" source="_WunlMNjjEeKQqZMBCFd2Uw" target="_Hoi98NjjEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_0mLq0NjjEeKQqZMBCFd2Uw" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_0mLq0djjEeKQqZMBCFd2Uw" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_0mKcsdjjEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_0lwNANjjEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0mKcstjjEeKQqZMBCFd2Uw" points="[-19, -17, 88, 82]$[-105, -91, 2, 8]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0mOuINjjEeKQqZMBCFd2Uw" id="(0.5031847133757962,0.17)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0mPVMNjjEeKQqZMBCFd2Uw" id="(0.591304347826087,0.92)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_4cX5QNjjEeKQqZMBCFd2Uw" type="4002" source="_1xfAUNjjEeKQqZMBCFd2Uw" target="_Hoi98NjjEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_4cX5Q9jjEeKQqZMBCFd2Uw" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_4cX5RNjjEeKQqZMBCFd2Uw" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_4cX5QdjjEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_4b_ewNjjEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4cX5QtjjEeKQqZMBCFd2Uw" points="[0, 0, -98, 79]$[96, -74, -2, 5]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4cd_4NjjEeKQqZMBCFd2Uw" id="(0.49693251533742333,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4cd_4djjEeKQqZMBCFd2Uw" id="(0.3565217391304348,0.95)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_endM4NjnEeKQqZMBCFd2Uw" type="4001" source="_Hoi98NjjEeKQqZMBCFd2Uw" target="_9IsT4NjiEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_endM49jnEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_endM5NjnEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_endM5djnEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_endM5tjnEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_endM59jnEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_endM6NjnEeKQqZMBCFd2Uw" x="-34" y="-41"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_endM6djnEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_endM6tjnEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_endM69jnEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_endM7NjnEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_endM7djnEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_endM7tjnEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_endM4djnEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_em-rwNjnEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_endM4tjnEeKQqZMBCFd2Uw" points="[0, -4, -89, 78]$[0, -76, -89, 6]$[87, -76, -2, 6]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_enjTgNjnEeKQqZMBCFd2Uw" id="(0.1826086956521739,0.04)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_enjTgdjnEeKQqZMBCFd2Uw" id="(0.015267175572519083,0.84)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_18hy4Nt5EeKwptaAAanMDg" type="4002" source="_9IsT4NjiEeKQqZMBCFd2Uw" target="_zT_qYNt5EeKwptaAAanMDg" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_18hy49t5EeKwptaAAanMDg" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_18hy5Nt5EeKwptaAAanMDg" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_18hy4dt5EeKwptaAAanMDg" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_18JYYNt5EeKwptaAAanMDg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_18hy4tt5EeKwptaAAanMDg" points="[-3, -5, 0, 82]$[-11, -80, -8, 7]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_18n5gNt5EeKwptaAAanMDg" id="(0.48210526315789476,0.004672897196261682)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_18n5gdt5EeKwptaAAanMDg" id="(0.41624365482233505,0.8444444444444444)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_R9IxEOHUEeKCZbxNW-U3VQ" type="4002" source="_z-jdcOHTEeKCZbxNW-U3VQ" target="_52F7ENa7EeKPiuTfpuvqHA" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_R9IxE-HUEeKCZbxNW-U3VQ" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_R9IxFOHUEeKCZbxNW-U3VQ" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_R9IxEeHUEeKCZbxNW-U3VQ" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_R8qP8OHUEeKCZbxNW-U3VQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_R9IxEuHUEeKCZbxNW-U3VQ" points="[-5, -9, 106, 209]$[-109, -206, 2, 12]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_R9O3sOHUEeKCZbxNW-U3VQ" id="(0.25,0.09)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_R9O3seHUEeKCZbxNW-U3VQ" id="(0.58,0.8956521739130435)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_anKh8OHUEeKCZbxNW-U3VQ" type="4002" source="__1eoIOHTEeKCZbxNW-U3VQ" target="_52F7ENa7EeKPiuTfpuvqHA" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_anQokOHUEeKCZbxNW-U3VQ" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_anQokeHUEeKCZbxNW-U3VQ" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_anKh8eHUEeKCZbxNW-U3VQ" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_am4OEOHUEeKCZbxNW-U3VQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_anKh8uHUEeKCZbxNW-U3VQ" points="[-14, -11, 258, 211]$[-263, -208, 9, 14]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_anQokuHUEeKCZbxNW-U3VQ" id="(0.32,0.11)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_anQok-HUEeKCZbxNW-U3VQ" id="(0.4608695652173913,0.9740932642487047)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_P0NeYGQ5EeOlpfB_tZS-QA" type="4001" source="_9IsT4NjiEeKQqZMBCFd2Uw" target="_zpKewNa7EeKPiuTfpuvqHA" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_P0NeY2Q5EeOlpfB_tZS-QA" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_P0NeZGQ5EeOlpfB_tZS-QA" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_P0NeZWQ5EeOlpfB_tZS-QA" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_P0NeZmQ5EeOlpfB_tZS-QA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_P0NeZ2Q5EeOlpfB_tZS-QA" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_P0NeaGQ5EeOlpfB_tZS-QA" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_P0NeaWQ5EeOlpfB_tZS-QA" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_P0NeamQ5EeOlpfB_tZS-QA" x="-22" y="15"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_P0Nea2Q5EeOlpfB_tZS-QA" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_P0NebGQ5EeOlpfB_tZS-QA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_P0NebWQ5EeOlpfB_tZS-QA" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_P0NebmQ5EeOlpfB_tZS-QA" x="-14" y="-15"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_P0NeYWQ5EeOlpfB_tZS-QA" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_PznBc2Q5EeOlpfB_tZS-QA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_P0NeYmQ5EeOlpfB_tZS-QA" points="[-2, -4, 81, 0]$[-78, -1, 5, 3]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_P0WoUGQ5EeOlpfB_tZS-QA" id="(0.004210526315789474,0.5560747663551402)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_P0WoUWQ5EeOlpfB_tZS-QA" id="(0.9705882352941176,0.8646616541353384)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_p-pf4GtpEeOlpfB_tZS-QA" type="4002" source="_ft-hUWtpEeOlpfB_tZS-QA" target="_52F7ENa7EeKPiuTfpuvqHA" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_p-pf42tpEeOlpfB_tZS-QA" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_p-pf5GtpEeOlpfB_tZS-QA" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_p-pf4WtpEeOlpfB_tZS-QA" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_p-dSoGtpEeOlpfB_tZS-QA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_p-pf4mtpEeOlpfB_tZS-QA" points="[-2, -16, 32, 261]$[-33, -267, 1, 10]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_p-vmgGtpEeOlpfB_tZS-QA" id="(0.4930555555555556,0.16)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_p-vmgWtpEeOlpfB_tZS-QA" id="(0.6347826086956522,0.9481865284974094)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_0R3XIHpGEeOlpfB_tZS-QA" type="4003" source="_Hoi98NjjEeKQqZMBCFd2Uw" target="_RopgYXpGEeOlpfB_tZS-QA" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_0R3XI3pGEeOlpfB_tZS-QA" type="6008">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_0R3XJHpGEeOlpfB_tZS-QA" y="40"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_0R3XJXpGEeOlpfB_tZS-QA" type="6009">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_0R3XJnpGEeOlpfB_tZS-QA" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_0R3XIXpGEeOlpfB_tZS-QA" fontName="Segoe UI"/>
+      <element xmi:type="uml:InterfaceRealization" href="layers.uml#_0RxQgHpGEeOlpfB_tZS-QA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0R3XInpGEeOlpfB_tZS-QA" points="[-14, -9, 116, 0]$[-121, -10, 9, -1]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0SDkYHpGEeOlpfB_tZS-QA" id="(0.12173913043478261,0.4)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0SDkYXpGEeOlpfB_tZS-QA" id="(0.9485714285714286,0.44954128440366975)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_2bq8QHpGEeOlpfB_tZS-QA" type="4003" source="_zpKewNa7EeKPiuTfpuvqHA" target="_RopgYXpGEeOlpfB_tZS-QA" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_2bq8Q3pGEeOlpfB_tZS-QA" type="6008">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_2bq8RHpGEeOlpfB_tZS-QA" y="40"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_2bq8RXpGEeOlpfB_tZS-QA" type="6009">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_2bq8RnpGEeOlpfB_tZS-QA" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_2bq8QXpGEeOlpfB_tZS-QA" fontName="Segoe UI"/>
+      <element xmi:type="uml:InterfaceRealization" href="layers.uml#_2bk1oHpGEeOlpfB_tZS-QA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2bq8QnpGEeOlpfB_tZS-QA" points="[-1, 3, 0, -103]$[-1, 104, 0, -2]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2bxC4HpGEeOlpfB_tZS-QA" id="(0.2603305785123967,0.9774436090225563)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2bxC4XpGEeOlpfB_tZS-QA" id="(0.5942857142857143,0.01834862385321101)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_C_qusNa8EeKPiuTfpuvqHA" type="PapyrusUMLClassDiagram" name="property values" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_EH9zgNa8EeKPiuTfpuvqHA" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EH9zgta8EeKPiuTfpuvqHA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EH9zg9a8EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EH9zhNa8EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EH9zhda8EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EH9zhta8EeKPiuTfpuvqHA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EH9zh9a8EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_EH9ziNa8EeKPiuTfpuvqHA" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_EH9zida8EeKPiuTfpuvqHA" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_EH9zita8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_EH9zi9a8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_EH9zjNa8EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EH9zjda8EeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_EH9zjta8EeKPiuTfpuvqHA" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_EH9zj9a8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_EH9zkNa8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_EH9zkda8EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EH9zkta8EeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_EH9zk9a8EeKPiuTfpuvqHA" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_EH9zlNa8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_EH9zlda8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_EH9zlta8EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EH9zl9a8EeKPiuTfpuvqHA"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_AjTZ8Na8EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EH9zgda8EeKPiuTfpuvqHA" x="168" y="252" width="130"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_VpXS4O8UEeK0p4PkXjd-_Q" type="2009" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VpYhAO8UEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VpZIEO8UEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VpZIEe8UEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VpZIEu8UEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VpZIE-8UEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VpZvIO8UEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_VpZvIe8UEeK0p4PkXjd-_Q" type="5032"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_VpZvIu8UEeK0p4PkXjd-_Q" type="7039">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_VpZvI-8UEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_VpZvJO8UEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_VpZvJe8UEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VpZvJu8UEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_VpaWMO8UEeK0p4PkXjd-_Q" type="7040">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_VpaWMe8UEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_VpaWMu8UEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_VpaWM-8UEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VpaWNO8UEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:PrimitiveType" href="layers.uml#_Qeyn4O7GEeK0p4PkXjd-_Q"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VpXS4e8UEeK0p4PkXjd-_Q" x="384" y="66" width="241"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_XZo9sO8UEeK0p4PkXjd-_Q" type="2004" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZpkwO8UEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZpkwe8UEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZpkwu8UEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZpkw-8UEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZpkxO8UEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZpkxe8UEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZENCEO8UEeK0p4PkXjd-_Q" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZENCEe8UEeK0p4PkXjd-_Q" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZENpIO8UEeK0p4PkXjd-_Q" key="StereotypeList" value="Ecore::EClass"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZENpIe8UEeK0p4PkXjd-_Q" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZENpIu8UEeK0p4PkXjd-_Q" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZENpI-8UEeK0p4PkXjd-_Q" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_XZpkxu8UEeK0p4PkXjd-_Q" type="5011"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_XZpkx-8UEeK0p4PkXjd-_Q" type="7006">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_XZpkyO8UEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_XZpkye8UEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_XZqL0O8UEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XZqL0e8UEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_XZqL0u8UEeK0p4PkXjd-_Q" type="7007">
+        <children xmi:type="notation:Shape" xmi:id="_uYj-QO8ZEeK0p4PkXjd-_Q" type="3007" fontName="Segoe UI" lineColor="0">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1Bdk4O8ZEeK0p4PkXjd-_Q" source="CustomAppearance_Annotation">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1Bdk4e8ZEeK0p4PkXjd-_Q" key="CustomAppearance_MaskValue" value="776"/>
+          </eAnnotations>
+          <element xmi:type="uml:Operation" href="layers.uml#_uYMx4O8ZEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_uYj-Qe8ZEeK0p4PkXjd-_Q"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_XZqL0-8UEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_XZqL1O8UEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_XZqL1e8UEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XZqL1u8UEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_XZqL1-8UEeK0p4PkXjd-_Q" type="7008">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_XZqL2O8UEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_XZqL2e8UEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_XZqL2u8UEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XZqL2-8UEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:Interface" href="layers.uml#_XZJOcO8UEeK0p4PkXjd-_Q"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XZo9se8UEeK0p4PkXjd-_Q" x="384" y="234" width="259"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_C_qusda8EeKPiuTfpuvqHA"/>
+    <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+    <edges xmi:type="notation:Connector" xmi:id="_g3VDUO8YEeK0p4PkXjd-_Q" type="4003" source="_EH9zgNa8EeKPiuTfpuvqHA" target="_XZo9sO8UEeK0p4PkXjd-_Q" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_g3WRcO8YEeK0p4PkXjd-_Q" visible="false" type="6008">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_g3WRce8YEeK0p4PkXjd-_Q" y="40"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_g3WRcu8YEeK0p4PkXjd-_Q" visible="false" type="6009">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_g3WRc-8YEeK0p4PkXjd-_Q" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_g3VDUe8YEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+      <element xmi:type="uml:InterfaceRealization" href="layers.uml#_g2QFQO8YEeK0p4PkXjd-_Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_g3VDUu8YEeK0p4PkXjd-_Q" points="[8, -7, -96, 0]$[94, -10, -10, -3]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_g3bJ8O8YEeK0p4PkXjd-_Q" id="(0.9384615384615385,0.31)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_g3bJ8e8YEeK0p4PkXjd-_Q" id="(0.04219409282700422,0.3157894736842105)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_QLWs4Na8EeKPiuTfpuvqHA" type="PapyrusUMLClassDiagram" name="datatypes" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_RJ_fYNa8EeKPiuTfpuvqHA" type="2009" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RJ_fYta8EeKPiuTfpuvqHA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RJ_fY9a8EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RJ_fZNa8EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RJ_fZda8EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RJ_fZta8EeKPiuTfpuvqHA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RJ_fZ9a8EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_RJ_faNa8EeKPiuTfpuvqHA" type="5032"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_RKJQYNa8EeKPiuTfpuvqHA" type="7039">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_RKJQYda8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_RKJQYta8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_RKJQY9a8EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RKJQZNa8EeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_RKJQZda8EeKPiuTfpuvqHA" type="7040">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_RKJQZta8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_RKJQZ9a8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_RKJQaNa8EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RKJQada8EeKPiuTfpuvqHA"/>
+      </children>
+      <element xmi:type="uml:PrimitiveType" href="layers.uml#_OyQ5QL1xEeKKJJ5BmR3W3Q"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RJ_fYda8EeKPiuTfpuvqHA" x="36" y="30"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_SukQgNa8EeKPiuTfpuvqHA" type="2009" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SukQgta8EeKPiuTfpuvqHA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SukQg9a8EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SukQhNa8EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SukQhda8EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SukQhta8EeKPiuTfpuvqHA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SukQh9a8EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wy62w9a8EeKPiuTfpuvqHA" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wy62xNa8EeKPiuTfpuvqHA" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wy62xda8EeKPiuTfpuvqHA" key="StereotypeList" value="Ecore::EDataType"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wy62xta8EeKPiuTfpuvqHA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wy62x9a8EeKPiuTfpuvqHA" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wy62yNa8EeKPiuTfpuvqHA" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_SukQiNa8EeKPiuTfpuvqHA" type="5032"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_SukQida8EeKPiuTfpuvqHA" type="7039">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_SukQita8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_SukQi9a8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_SukQjNa8EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SukQjda8EeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_SukQjta8EeKPiuTfpuvqHA" type="7040">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_SukQj9a8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_SukQkNa8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_SukQkda8EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SukQkta8EeKPiuTfpuvqHA"/>
+      </children>
+      <element xmi:type="uml:PrimitiveType" href="layers.uml#_SuHkkNa8EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SukQgda8EeKPiuTfpuvqHA" x="192" y="30"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Tq9nUNa8EeKPiuTfpuvqHA" type="2009" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Tq9nUta8EeKPiuTfpuvqHA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Tq9nU9a8EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Tq9nVNa8EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Tq9nVda8EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Tq9nVta8EeKPiuTfpuvqHA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Tq9nV9a8EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZD0iYNa8EeKPiuTfpuvqHA" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZD0iYda8EeKPiuTfpuvqHA" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZD0iYta8EeKPiuTfpuvqHA" key="StereotypeList" value="Ecore::EDataType"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZD0iY9a8EeKPiuTfpuvqHA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZD0iZNa8EeKPiuTfpuvqHA" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZD0iZda8EeKPiuTfpuvqHA" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Tq9nWNa8EeKPiuTfpuvqHA" type="5032"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Tq9nWda8EeKPiuTfpuvqHA" type="7039">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Tq9nWta8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Tq9nW9a8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Tq9nXNa8EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Tq9nXda8EeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Tq9nXta8EeKPiuTfpuvqHA" type="7040">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Tq9nX9a8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Tq9nYNa8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Tq9nYda8EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Tq9nYta8EeKPiuTfpuvqHA"/>
+      </children>
+      <element xmi:type="uml:PrimitiveType" href="layers.uml#_TqqsYNa8EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Tq9nUda8EeKPiuTfpuvqHA" x="348" y="30"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_c1uu0NheEeKgkM6XJF9t4A" type="2009" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_c1uu0theEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_c1uu09heEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_c1uu1NheEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_c1uu1dheEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_c1uu1theEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_c1uu19heEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_g91zsNheEeKgkM6XJF9t4A" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g91zsdheEeKgkM6XJF9t4A" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g91zstheEeKgkM6XJF9t4A" key="StereotypeList" value="Ecore::EDataType"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g91zs9heEeKgkM6XJF9t4A" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g91ztNheEeKgkM6XJF9t4A" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g91ztdheEeKgkM6XJF9t4A" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_c1uu2NheEeKgkM6XJF9t4A" type="5032"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_c1uu2dheEeKgkM6XJF9t4A" type="7039">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_c1uu2theEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_c1uu29heEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_c1uu3NheEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_c1uu3dheEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_c1uu3theEeKgkM6XJF9t4A" type="7040">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_c1uu39heEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_c1uu4NheEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_c1uu4dheEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_c1uu4theEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:PrimitiveType" href="layers.uml#_c1QNsNheEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_c1uu0dheEeKgkM6XJF9t4A" x="36" y="198"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_lV_fsNheEeKgkM6XJF9t4A" type="2009" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lV_fstheEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lV_fs9heEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lV_ftNheEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lV_ftdheEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lV_fttheEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lV_ft9heEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qH1eENheEeKgkM6XJF9t4A" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qH1eEdheEeKgkM6XJF9t4A" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qH1eEtheEeKgkM6XJF9t4A" key="StereotypeList" value="Ecore::EDataType"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qH1eE9heEeKgkM6XJF9t4A" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qH1eFNheEeKgkM6XJF9t4A" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qH1eFdheEeKgkM6XJF9t4A" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_lV_fuNheEeKgkM6XJF9t4A" type="5032"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_lV_fudheEeKgkM6XJF9t4A" type="7039">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_lV_futheEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_lV_fu9heEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_lV_fvNheEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lV_fvdheEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_lV_fvtheEeKgkM6XJF9t4A" type="7040">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_lV_fv9heEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_lV_fwNheEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_lV_fwdheEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lV_fwtheEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:PrimitiveType" href="layers.uml#_lVnFMNheEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lV_fsdheEeKgkM6XJF9t4A" x="240" y="198" height="103"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_QfRJAO7GEeK0p4PkXjd-_Q" type="2009" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QfRJAu7GEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QfRJA-7GEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QfRJBO7GEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QfRJBe7GEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QfRJBu7GEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QfRJB-7GEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Udvww-7GEeK0p4PkXjd-_Q" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UdvwxO7GEeK0p4PkXjd-_Q" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Udvwxe7GEeK0p4PkXjd-_Q" key="StereotypeList" value="Ecore::EDataType"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Udvwxu7GEeK0p4PkXjd-_Q" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Udvwx-7GEeK0p4PkXjd-_Q" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UdvwyO7GEeK0p4PkXjd-_Q" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_QfRJCO7GEeK0p4PkXjd-_Q" type="5032"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_QfRJCe7GEeK0p4PkXjd-_Q" type="7039">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_QfRJCu7GEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_QfRJC-7GEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_QfRJDO7GEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QfRJDe7GEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_QfRJDu7GEeK0p4PkXjd-_Q" type="7040">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_QfRJD-7GEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_QfRJEO7GEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_QfRJEe7GEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QfRJEu7GEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:PrimitiveType" href="layers.uml#_Qeyn4O7GEeK0p4PkXjd-_Q"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QfRJAe7GEeK0p4PkXjd-_Q" x="60" y="366" width="241"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_QLWs4da8EeKPiuTfpuvqHA"/>
+    <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_XXUswNhbEeKgkM6XJF9t4A" type="PapyrusUMLClassDiagram" name="Property" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_bHaTMNhbEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bHaTMthbEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bHgZ0NhbEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bHgZ0dhbEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bHgZ0thbEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bHgZ09hbEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bHgZ1NhbEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bHgZ1dhbEeKgkM6XJF9t4A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bHgZ1thbEeKgkM6XJF9t4A" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_sdoisNhcEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_sdWO0NhcEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_sdoisdhcEeKgkM6XJF9t4A"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_hUWEoNhdEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_hT9qINhdEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_hUWEodhdEeKgkM6XJF9t4A"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_HlSkkO3qEeKwLp35IbAIig" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_HjktUO3qEeKwLp35IbAIig"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_HlSkke3qEeKwLp35IbAIig"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bHgZ19hbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bHgZ2NhbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bHgZ2dhbEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bHgZ2thbEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bHgZ29hbEeKgkM6XJF9t4A" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_9LXrUNhcEeKgkM6XJF9t4A" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_9LLeENhcEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_9LXrUdhcEeKgkM6XJF9t4A"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bHgZ3NhbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bHgZ3dhbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bHgZ3thbEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bHgZ39hbEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bHgZ4NhbEeKgkM6XJF9t4A" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bHgZ4dhbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bHgZ4thbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bHgZ49hbEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bHgZ5NhbEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_-vaacNa7EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bHaTMdhbEeKgkM6XJF9t4A" x="18" y="144" height="385"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_bvJBkNhbEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bvJBkthbEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bvJBk9hbEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bvJBlNhbEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bvJBldhbEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bvJBlthbEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bvJBl9hbEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bvJBmNhbEeKgkM6XJF9t4A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bvJBmdhbEeKgkM6XJF9t4A" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bvJBmthbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bvJBm9hbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bvJBnNhbEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bvJBndhbEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bvJBnthbEeKgkM6XJF9t4A" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_ZGIS4EczEeOEBJ2PxFQgyQ" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_ZFFKAEczEeOEBJ2PxFQgyQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_ZGIS4UczEeOEBJ2PxFQgyQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_oKCn4Ec8EeOEBJ2PxFQgyQ" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_oJwUAEc8EeOEBJ2PxFQgyQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_oKCn4Uc8EeOEBJ2PxFQgyQ"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bvJBn9hbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bvJBoNhbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bvJBodhbEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bvJBothbEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bvJBo9hbEeKgkM6XJF9t4A" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bvJBpNhbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bvJBpdhbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bvJBpthbEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bvJBp9hbEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_AjTZ8Na8EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bvJBkdhbEeKgkM6XJF9t4A" x="378" y="426" width="205"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_EoeLgNhcEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EoeLgthcEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EoeLg9hcEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EoeLhNhcEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EoeLhdhcEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EoeLhthcEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EoeLh9hcEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_EoeLiNhcEeKgkM6XJF9t4A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_EoeLidhcEeKgkM6XJF9t4A" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_oT_MwNhcEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_oTs44NhcEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_oT_MwdhcEeKgkM6XJF9t4A"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_kq6-4NhdEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_kquxoNhdEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kq6-4dhdEeKgkM6XJF9t4A"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_EoeLithcEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_EoeLi9hcEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_EoeLjNhcEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EoeLjdhcEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_EoeLjthcEeKgkM6XJF9t4A" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_YqkrENhgEeKgkM6XJF9t4A" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_VRDxkNhgEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_YqkrEdhgEeKgkM6XJF9t4A" x="79" y="4"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_EoeLj9hcEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_EoeLkNhcEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_EoeLkdhcEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EoeLkthcEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_EoeLk9hcEeKgkM6XJF9t4A" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_EoeLlNhcEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_EoeLldhcEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_EoeLlthcEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EoeLl9hcEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_EoL3oNhcEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EoeLgdhcEeKgkM6XJF9t4A" x="378" y="144"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_I4Ip4NhcEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_I4Ip4thcEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_I4Ip49hcEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_I4Ip5NhcEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_I4Ip5dhcEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_I4Ip5thcEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_I4Ip59hcEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_I4Ip6NhcEeKgkM6XJF9t4A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_I4Ip6dhcEeKgkM6XJF9t4A" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_r6sYQNhdEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_r6aEYNhdEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_r6sYQdhdEeKgkM6XJF9t4A"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_viIZANhdEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_vhv-gNhdEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_viIZAdhdEeKgkM6XJF9t4A"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_i5_scNhgEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_i5nR8NhgEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_i5_scdhgEeKgkM6XJF9t4A"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_mSjjsNhgEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_mR_jANhgEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_mSjjsdhgEeKgkM6XJF9t4A"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_pk2a4NhgEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_pkeAYNhgEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_pk2a4dhgEeKgkM6XJF9t4A"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="__M_A8NhgEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#__MsGANhgEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="__M_A8dhgEeKgkM6XJF9t4A"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_I4Ip6thcEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_I4Ip69hcEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_I4Ip7NhcEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_I4Ip7dhcEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_I4Ip7thcEeKgkM6XJF9t4A" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_K3ckUNheEeKgkM6XJF9t4A" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_K3KQcNheEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_K3ckUdheEeKgkM6XJF9t4A"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_I4Ip79hcEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_I4Ip8NhcEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_I4Ip8dhcEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_I4Ip8thcEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_I4Ip89hcEeKgkM6XJF9t4A" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_I4Ip9NhcEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_I4Ip9dhcEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_I4Ip9thcEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_I4Ip99hcEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_I3wPYNhcEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_I4Ip4dhcEeKgkM6XJF9t4A" x="924" y="144"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_RF_msNhdEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RF_msthdEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RF_ms9hdEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RF_mtNhdEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RF_mtdhdEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RF_mtthdEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RF_mt9hdEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_RF_muNhdEeKgkM6XJF9t4A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_RF_mudhdEeKgkM6XJF9t4A" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_RF_muthdEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_RF_mu9hdEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_RF_mvNhdEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RF_mvdhdEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_RF_mvthdEeKgkM6XJF9t4A" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_RF_mv9hdEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_RF_mwNhdEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_RF_mwdhdEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RF_mwthdEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_RF_mw9hdEeKgkM6XJF9t4A" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_RF_mxNhdEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_RF_mxdhdEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_RF_mxthdEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RF_mx9hdEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_ggM80NhbEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RF_msdhdEeKgkM6XJF9t4A" x="96" y="12" width="169"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_6SDikNhhEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6SDikthhEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6SDik9hhEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6SDilNhhEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6SDildhhEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6SDilthhEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6SDil9hhEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_6SDimNhhEeKgkM6XJF9t4A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_6SDimdhhEeKgkM6XJF9t4A" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_HJqRsNhjEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_HJX90NhjEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_HJqRsdhjEeKgkM6XJF9t4A"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_6SDimthhEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_6SDim9hhEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_6SDinNhhEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6SDindhhEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_6SDinthhEeKgkM6XJF9t4A" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_6SDin9hhEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_6SDioNhhEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_6SDiodhhEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6SDiothhEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_6SDio9hhEeKgkM6XJF9t4A" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_6SDipNhhEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_6SDipdhhEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_6SDipthhEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6SDip9hhEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_6RrIENhhEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6SDikdhhEeKgkM6XJF9t4A" x="300" y="582"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_-zGr4NhhEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-zGr4thhEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-zGr49hhEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-zGr5NhhEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-zGr5dhhEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-zGr5thhEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-zGr59hhEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_-zGr6NhhEeKgkM6XJF9t4A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_-zGr6dhhEeKgkM6XJF9t4A" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_lMxgANhjEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_lMfMINhjEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_lMxgAdhjEeKgkM6XJF9t4A"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_-zGr6thhEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_-zGr69hhEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_-zGr7NhhEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-zGr7dhhEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_-zGr7thhEeKgkM6XJF9t4A" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_-zGr79hhEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_-zGr8NhhEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_-zGr8dhhEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-zGr8thhEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_-zGr89hhEeKgkM6XJF9t4A" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_-zGr9NhhEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_-zGr9dhhEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_-zGr9thhEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-zGr99hhEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_-yuRYNhhEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-zGr4dhhEeKgkM6XJF9t4A" x="444" y="582"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_CxJOwNhiEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CxJOwthiEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CxJOw9hiEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CxJOxNhiEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CxJOxdhiEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CxJOxthiEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CxJOx9hiEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_CxPVYNhiEeKgkM6XJF9t4A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CxPVYdhiEeKgkM6XJF9t4A" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_oRl74NhjEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_oRNhYNhjEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_oRl74dhjEeKgkM6XJF9t4A"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_CxPVYthiEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_CxPVY9hiEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_CxPVZNhiEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CxPVZdhiEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CxPVZthiEeKgkM6XJF9t4A" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_CxPVZ9hiEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_CxPVaNhiEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_CxPVadhiEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CxPVathiEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CxPVa9hiEeKgkM6XJF9t4A" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_CxPVbNhiEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_CxPVbdhiEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_CxPVbthiEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CxPVb9hiEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_Cww0QNhiEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CxJOwdhiEeKgkM6XJF9t4A" x="594" y="582"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_6xipANhjEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6xipAthjEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6xipA9hjEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6xipBNhjEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6xipBdhjEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6xipBthjEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6xipB9hjEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_6xipCNhjEeKgkM6XJF9t4A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_6xipCdhjEeKgkM6XJF9t4A" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_6xipCthjEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_6xipC9hjEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_6xipDNhjEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6xipDdhjEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_6xipDthjEeKgkM6XJF9t4A" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_6xipD9hjEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_6xipENhjEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_6xipEdhjEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6xipEthjEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_6xipE9hjEeKgkM6XJF9t4A" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_6xipFNhjEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_6xipFdhjEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_6xipFthjEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6xipF9hjEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_6xEH4NhjEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6xipAdhjEeKgkM6XJF9t4A" x="300" y="318" height="55"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="__i1NwNhjEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__i7UYNhjEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__i7UYdhjEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__i7UYthjEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__i7UY9hjEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__i7UZNhjEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__i7UZdhjEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="__i7UZthjEeKgkM6XJF9t4A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__i7UZ9hjEeKgkM6XJF9t4A" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__i7UaNhjEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__i7UadhjEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__i7UathjEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__i7Ua9hjEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__i7UbNhjEeKgkM6XJF9t4A" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__i7UbdhjEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__i7UbthjEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__i7Ub9hjEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__i7UcNhjEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__i7UcdhjEeKgkM6XJF9t4A" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__i7UcthjEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__i7Uc9hjEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__i7UdNhjEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__i7UddhjEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#__iczQNhjEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__i1NwdhjEeKgkM6XJF9t4A" x="420" y="318" height="55"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_E4NXANhkEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_E4NXAthkEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_E4NXA9hkEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_E4NXBNhkEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_E4NXBdhkEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_E4NXBthkEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_E4NXB9hkEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_E4NXCNhkEeKgkM6XJF9t4A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_E4NXCdhkEeKgkM6XJF9t4A" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_E4NXCthkEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_E4NXC9hkEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_E4NXDNhkEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E4NXDdhkEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_E4NXDthkEeKgkM6XJF9t4A" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_E4NXD9hkEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_E4NXENhkEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_E4NXEdhkEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E4NXEthkEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_E4NXE9hkEeKgkM6XJF9t4A" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_E4NXFNhkEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_E4NXFdhkEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_E4NXFthkEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E4NXF9hkEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_E308gNhkEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E4NXAdhkEeKgkM6XJF9t4A" x="540" y="318" height="48"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_J6bTsNhkEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_J6bTsthkEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_J6bTs9hkEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_J6bTtNhkEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_J6bTtdhkEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_J6bTtthkEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_J6bTt9hkEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_J6bTuNhkEeKgkM6XJF9t4A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_J6bTudhkEeKgkM6XJF9t4A" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_U0-VsNhkEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_U0l7MNhkEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_U0-VsdhkEeKgkM6XJF9t4A"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_J6bTuthkEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_J6bTu9hkEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_J6bTvNhkEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J6bTvdhkEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_J6bTvthkEeKgkM6XJF9t4A" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_J6bTv9hkEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_J6bTwNhkEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_J6bTwdhkEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J6bTwthkEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_J6bTw9hkEeKgkM6XJF9t4A" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_J6bTxNhkEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_J6bTxdhkEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_J6bTxthkEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J6bTx9hkEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_J6C5MNhkEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J6bTsdhkEeKgkM6XJF9t4A" x="660" y="318" width="181" height="73"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_agYdYNxWEeKwptaAAanMDg" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_agekANxWEeKwptaAAanMDg" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_agekAdxWEeKwptaAAanMDg" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_agekAtxWEeKwptaAAanMDg" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_agekA9xWEeKwptaAAanMDg" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_agekBNxWEeKwptaAAanMDg" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_agekBdxWEeKwptaAAanMDg" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_agekBtxWEeKwptaAAanMDg" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_agekB9xWEeKwptaAAanMDg" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_agekCNxWEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_agekCdxWEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_agekCtxWEeKwptaAAanMDg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_agekC9xWEeKwptaAAanMDg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_agekDNxWEeKwptaAAanMDg" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_OVcVENxXEeKwptaAAanMDg" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_OU7XsNxXEeKwptaAAanMDg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_OVcVEdxXEeKwptaAAanMDg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_agekDdxWEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_agekDtxWEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_agekD9xWEeKwptaAAanMDg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_agekENxWEeKwptaAAanMDg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_agekEdxWEeKwptaAAanMDg" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_agekEtxWEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_agekE9xWEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_agekFNxWEeKwptaAAanMDg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_agekFdxWEeKwptaAAanMDg"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_agAC4NxWEeKwptaAAanMDg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_agYdYdxWEeKwptaAAanMDg" x="174" y="582"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_XXUswdhbEeKgkM6XJF9t4A"/>
+    <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+    <edges xmi:type="notation:Connector" xmi:id="_L2wXINhcEeKgkM6XJF9t4A" type="4001" source="_bHaTMNhbEeKgkM6XJF9t4A" target="_EoeLgNhcEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_L2wXI9hcEeKgkM6XJF9t4A" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_L2wXJNhcEeKgkM6XJF9t4A" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_L2wXJdhcEeKgkM6XJF9t4A" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_L2wXJthcEeKgkM6XJF9t4A" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_L2wXJ9hcEeKgkM6XJF9t4A" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_L2wXKNhcEeKgkM6XJF9t4A" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_L2wXKdhcEeKgkM6XJF9t4A" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_L2wXKthcEeKgkM6XJF9t4A" x="-33" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_L2wXK9hcEeKgkM6XJF9t4A" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_L2wXLNhcEeKgkM6XJF9t4A" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_L2wXLdhcEeKgkM6XJF9t4A" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_L2wXLthcEeKgkM6XJF9t4A" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_L2wXIdhcEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_L2X8oNhcEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_L2wXIthcEeKgkM6XJF9t4A" points="[4, 6, -164, 0]$[160, 5, -8, -1]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_L28kYNhcEeKgkM6XJF9t4A" id="(0.9682539682539683,0.16591928251121077)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_L28kYdhcEeKgkM6XJF9t4A" id="(0.011764705882352941,0.3709677419354839)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_O7bCANhcEeKgkM6XJF9t4A" type="4001" source="_bHaTMNhbEeKgkM6XJF9t4A" target="_bvJBkNhbEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7bCA9hcEeKgkM6XJF9t4A" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_O7bCBNhcEeKgkM6XJF9t4A" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7bCBdhcEeKgkM6XJF9t4A" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_O7bCBthcEeKgkM6XJF9t4A" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7bCB9hcEeKgkM6XJF9t4A" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_O7bCCNhcEeKgkM6XJF9t4A" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7bCCdhcEeKgkM6XJF9t4A" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_O7bCCthcEeKgkM6XJF9t4A" x="-47" y="17"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7hIoNhcEeKgkM6XJF9t4A" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_O7hIodhcEeKgkM6XJF9t4A" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7hIothcEeKgkM6XJF9t4A" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_O7hIo9hcEeKgkM6XJF9t4A" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_O7bCAdhcEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_O7IuINhcEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_O7bCAthcEeKgkM6XJF9t4A" points="[7, 2, -165, 0]$[163, 5, -9, 3]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7nPQNhcEeKgkM6XJF9t4A" id="(0.9764705882352941,0.8859934853420195)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7nPQdhcEeKgkM6XJF9t4A" id="(0.09,0.65)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_khaTANhcEeKgkM6XJF9t4A" type="4001" source="_J6bTsNhkEeKgkM6XJF9t4A" target="_I4Ip4NhcEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_khaTA9hcEeKgkM6XJF9t4A" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_khaTBNhcEeKgkM6XJF9t4A" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_khaTBdhcEeKgkM6XJF9t4A" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_khaTBthcEeKgkM6XJF9t4A" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_khaTB9hcEeKgkM6XJF9t4A" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_khaTCNhcEeKgkM6XJF9t4A" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_khaTCdhcEeKgkM6XJF9t4A" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_khaTCthcEeKgkM6XJF9t4A" x="-32" y="23"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_khaTC9hcEeKgkM6XJF9t4A" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_khaTDNhcEeKgkM6XJF9t4A" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_khaTDdhcEeKgkM6XJF9t4A" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_khaTDthcEeKgkM6XJF9t4A" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_khaTAdhcEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_khB4gNhcEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_khaTAthcEeKgkM6XJF9t4A" points="[7, -6, -114, 103]$[118, -107, -3, 2]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_khmgQNhcEeKgkM6XJF9t4A" id="(0.96,0.28)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_khmgQdhcEeKgkM6XJF9t4A" id="(0.039525691699604744,0.8604651162790697)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_YRoG8NhdEeKgkM6XJF9t4A" type="4002" source="_bHaTMNhbEeKgkM6XJF9t4A" target="_RF_msNhdEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_YRuNkNhdEeKgkM6XJF9t4A" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_YRuNkdhdEeKgkM6XJF9t4A" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_YRoG8dhdEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_YRb5sNhdEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YRoG8thdEeKgkM6XJF9t4A" points="[0, -4, 0, 48]$[-2, -42, -2, 10]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YRuNkthdEeKgkM6XJF9t4A" id="(0.47368421052631576,0.017937219730941704)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YRuNk9hdEeKgkM6XJF9t4A" id="(0.45323741007194246,0.9)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_5UPMQNhdEeKgkM6XJF9t4A" type="4002" source="_EoeLgNhcEeKgkM6XJF9t4A" target="_RF_msNhdEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_5UPMQ9hdEeKgkM6XJF9t4A" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5UPMRNhdEeKgkM6XJF9t4A" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_5UPMQdhdEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_5T84YNhdEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5UPMQthdEeKgkM6XJF9t4A" points="[-13, -4, 179, 58]$[-177, -57, 15, 5]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5UV58NhdEeKgkM6XJF9t4A" id="(0.3764705882352941,0.03225806451612903)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5UV58dhdEeKgkM6XJF9t4A" id="(0.9112426035502958,0.74)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_7u0_YNhdEeKgkM6XJF9t4A" type="4002" source="_I4Ip4NhcEeKgkM6XJF9t4A" target="_RF_msNhdEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_7u0_Y9hdEeKgkM6XJF9t4A" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_7u0_ZNhdEeKgkM6XJF9t4A" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_7u0_YdhdEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_7uWeQNhdEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7u0_YthdEeKgkM6XJF9t4A" points="[-24, -5, 419, 89]$[-432, -96, 11, -2]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7u0_ZdhdEeKgkM6XJF9t4A" id="(0.2529411764705882,0.04032258064516129)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7u7GANhdEeKgkM6XJF9t4A" id="(0.9349112426035503,0.43)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_g5zEYNhiEeKgkM6XJF9t4A" type="4002" source="_6SDikNhhEeKgkM6XJF9t4A" target="_bvJBkNhbEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_g5zEY9hiEeKgkM6XJF9t4A" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_g5zEZNhiEeKgkM6XJF9t4A" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_g5zEYdhiEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_g5ap4NhiEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_g5zEYthiEeKgkM6XJF9t4A" points="[3, -3, -68, 60]$[70, -59, -1, 4]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_g55LANhiEeKgkM6XJF9t4A" id="(0.51,0.03)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_g55LAdhiEeKgkM6XJF9t4A" id="(0.44,0.96)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_klsuYNhiEeKgkM6XJF9t4A" type="4002" source="_-zGr4NhhEeKgkM6XJF9t4A" target="_bvJBkNhbEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_klsuY9hiEeKgkM6XJF9t4A" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_klsuZNhiEeKgkM6XJF9t4A" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_klsuYdhiEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_klghINhiEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_klsuYthiEeKgkM6XJF9t4A" points="[-3, -3, 52, 61]$[-55, -59, 0, 5]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kly1ANhiEeKgkM6XJF9t4A" id="(0.44,0.03)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kly1AdhiEeKgkM6XJF9t4A" id="(0.55,0.95)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_mlyW0NhiEeKgkM6XJF9t4A" type="4002" source="_CxJOwNhiEeKgkM6XJF9t4A" target="_bvJBkNhbEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_mlyW09hiEeKgkM6XJF9t4A" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_mlyW1NhiEeKgkM6XJF9t4A" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_mlyW0dhiEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_mlgC8NhiEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_mlyW0thiEeKgkM6XJF9t4A" points="[-23, -12, 136, 67]$[-150, -67, 9, 12]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ml4dcNhiEeKgkM6XJF9t4A" id="(0.23,0.11)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ml4dcdhiEeKgkM6XJF9t4A" id="(0.8,0.88)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_n32JsNhkEeKgkM6XJF9t4A" type="4002" source="_6xipANhjEeKgkM6XJF9t4A" target="_EoeLgNhcEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_n38QUNhkEeKgkM6XJF9t4A" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_n38QUdhkEeKgkM6XJF9t4A" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_n32JsdhkEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_n3p8cNhkEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_n32JsthkEeKgkM6XJF9t4A" points="[7, -5, -63, 44]$[66, -44, -4, 5]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_n38QUthkEeKgkM6XJF9t4A" id="(0.52,0.09090909090909091)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_n38QU9hkEeKgkM6XJF9t4A" id="(0.25882352941176473,0.9629629629629629)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_rg2QsNhkEeKgkM6XJF9t4A" type="4002" source="__i1NwNhjEeKgkM6XJF9t4A" target="_EoeLgNhcEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_rg23wNhkEeKgkM6XJF9t4A" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_rg23wdhkEeKgkM6XJF9t4A" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_rg2QsdhkEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_rgmZENhkEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rg2QsthkEeKgkM6XJF9t4A" points="[0, -7, 0, 48]$[0, -46, 0, 9]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rg7JMNhkEeKgkM6XJF9t4A" id="(0.43,0.12727272727272726)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rg7JMdhkEeKgkM6XJF9t4A" id="(0.5,0.9333333333333333)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_tdN2wNhkEeKgkM6XJF9t4A" type="4002" source="_E4NXANhkEeKgkM6XJF9t4A" target="_EoeLgNhcEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_tdN2w9hkEeKgkM6XJF9t4A" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_tdN2xNhkEeKgkM6XJF9t4A" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_tdN2wdhkEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_tdBpgNhkEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_tdN2wthkEeKgkM6XJF9t4A" points="[-10, -11, 39, 45]$[-45, -50, 4, 6]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tdT9YNhkEeKgkM6XJF9t4A" id="(0.23,0.22916666666666666)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tdT9YdhkEeKgkM6XJF9t4A" id="(0.8,0.9555555555555556)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_wLqaANhkEeKgkM6XJF9t4A" type="4002" source="_J6bTsNhkEeKgkM6XJF9t4A" target="_EoeLgNhcEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_wLqaA9hkEeKgkM6XJF9t4A" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_wLqaBNhkEeKgkM6XJF9t4A" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_wLqaAdhkEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_wLYGINhkEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_wLqaAthkEeKgkM6XJF9t4A" points="[-19, -7, 128, 48]$[-142, -52, 5, 3]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wLqaBdhkEeKgkM6XJF9t4A" id="(0.19607843137254902,0.12727272727272726)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wLqaBthkEeKgkM6XJF9t4A" id="(0.9705882352941176,0.9333333333333333)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_drg8oNxWEeKwptaAAanMDg" type="4002" source="_agYdYNxWEeKwptaAAanMDg" target="_bvJBkNhbEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_drg8o9xWEeKwptaAAanMDg" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_drg8pNxWEeKwptaAAanMDg" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_drg8odxWEeKwptaAAanMDg" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_drCbgNxWEeKwptaAAanMDg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_drg8otxWEeKwptaAAanMDg" points="[9, -4, -135, 59]$[141, -60, -3, 3]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_drnqUNxWEeKwptaAAanMDg" id="(0.7,0.04)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_drnqUdxWEeKwptaAAanMDg" id="(0.1,0.97)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_ePKuUNhbEeKgkM6XJF9t4A" type="PapyrusUMLClassDiagram" name="packages" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_fBRgsNhbEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fBRgsthbEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fBRgs9hbEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fBRgtNhbEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fBRgtdhbEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fBRgtthbEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fBRgt9hbEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_fBRguNhbEeKgkM6XJF9t4A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_fBRgudhbEeKgkM6XJF9t4A" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_pSg0ENhoEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_pSIZkNhoEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_pSg0EdhoEeKgkM6XJF9t4A"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_fBRguthbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_fBRgu9hbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_fBRgvNhbEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fBRgvdhbEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_fBXnUNhbEeKgkM6XJF9t4A" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_fBXnUdhbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_fBXnUthbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_fBXnU9hbEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fBXnVNhbEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_fBXnVdhbEeKgkM6XJF9t4A" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_fBXnVthbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_fBXnV9hbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_fBXnWNhbEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fBXnWdhbEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_fAmyUNhbEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fBRgsdhbEeKgkM6XJF9t4A" x="212" y="111"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_gglXUNhbEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gglXUthbEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gglXU9hbEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gglXVNhbEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gglXVdhbEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gglXVthbEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gglXV9hbEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_gglXWNhbEeKgkM6XJF9t4A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gglXWdhbEeKgkM6XJF9t4A" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gglXWthbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gglXW9hbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gglXXNhbEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gglXXdhbEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gglXXthbEeKgkM6XJF9t4A" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gglXX9hbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gglXYNhbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gglXYdhbEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gglXYthbEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gglXY9hbEeKgkM6XJF9t4A" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gglXZNhbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gglXZdhbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gglXZthbEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gglXZ9hbEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_ggM80NhbEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gglXUdhbEeKgkM6XJF9t4A" x="510" y="108" width="145" height="103"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_ePKuUdhbEeKgkM6XJF9t4A"/>
+    <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+    <edges xmi:type="notation:Connector" xmi:id="_jtwd8NhbEeKgkM6XJF9t4A" type="4001" source="_fBRgsNhbEeKgkM6XJF9t4A" target="_gglXUNhbEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_jtwd89hbEeKgkM6XJF9t4A" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jtwd9NhbEeKgkM6XJF9t4A" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jtwd9dhbEeKgkM6XJF9t4A" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jtwd9thbEeKgkM6XJF9t4A" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jtwd99hbEeKgkM6XJF9t4A" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jtwd-NhbEeKgkM6XJF9t4A" x="13" y="-19"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jtwd-dhbEeKgkM6XJF9t4A" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jtwd-thbEeKgkM6XJF9t4A" x="-21" y="17"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jtwd-9hbEeKgkM6XJF9t4A" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jtwd_NhbEeKgkM6XJF9t4A" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jtwd_dhbEeKgkM6XJF9t4A" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jtwd_thbEeKgkM6XJF9t4A" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_jtwd8dhbEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_jtR80NhbEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jtwd8thbEeKgkM6XJF9t4A" points="[10, -7, -200, 0]$[208, -8, -2, -1]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_juCx0NhbEeKgkM6XJF9t4A" id="(0.9,0.45)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_juCx0dhbEeKgkM6XJF9t4A" id="(0.013793103448275862,0.41)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_6nHbUNhbEeKgkM6XJF9t4A" type="4002" source="_fBRgsNhbEeKgkM6XJF9t4A" target="_gglXUNhbEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_6nNh8NhbEeKgkM6XJF9t4A" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_6nNh8dhbEeKgkM6XJF9t4A" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_6nHbUdhbEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_6l23ENhbEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_6nHbUthbEeKgkM6XJF9t4A" points="[9, 2, -202, 0]$[207, 3, -4, 1]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6nTokNhbEeKgkM6XJF9t4A" id="(0.91,0.79)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6nTokdhbEeKgkM6XJF9t4A" id="(0.027586206896551724,0.8155339805825242)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_Dtu4wNjkEeKQqZMBCFd2Uw" type="PapyrusUMLClassDiagram" name="Layer" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_Uvsk8NjkEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uvsk8tjkEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uvsk89jkEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uvsk9NjkEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uvsk9djkEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uvsk9tjkEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uvsk99jkEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Uvsk-NjkEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Uvsk-djkEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Uvsk-tjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Uvsk-9jkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Uvsk_NjkEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uvsk_djkEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Uvsk_tjkEeKQqZMBCFd2Uw" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_gjkCIOKIEeKOWoLMe41Aew" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_gfah8OKIEeKOWoLMe41Aew"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_gjkCIeKIEeKOWoLMe41Aew"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_vMCucOKIEeKOWoLMe41Aew" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_sJkb8OKIEeKOWoLMe41Aew"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_vMCuceKIEeKOWoLMe41Aew" x="61" y="63"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_wyp-kOKWEeKOWoLMe41Aew" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_ldtfkOKWEeKOWoLMe41Aew"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_wyp-keKWEeKOWoLMe41Aew" x="70" y="64"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_NC0BgOKXEeKOWoLMe41Aew" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_IR-vwOKXEeKOWoLMe41Aew"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_NC0BgeKXEeKOWoLMe41Aew" x="68" y="90"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Uvsk_9jkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_UvslANjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_UvslAdjkEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UvslAtjkEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_UvslA9jkEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_UvslBNjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_UvslBdjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_UvslBtjkEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UvslB9jkEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_51zAINa7EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uvsk8djkEeKQqZMBCFd2Uw" x="126" y="114" width="295" height="511"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_UvyrkNjkEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uv4yMNjkEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uv4yMdjkEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uv4yMtjkEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uv4yM9jkEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uv4yNNjkEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uv4yNdjkEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Uv4yNtjkEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Uv4yN9jkEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Uv4yONjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Uv4yOdjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Uv4yOtjkEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uv4yO9jkEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Uv4yPNjkEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Uv4yPdjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Uv4yPtjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Uv4yP9jkEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uv4yQNjkEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Uv4yQdjkEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Uv4yQtjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Uv4yQ9jkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Uv4yRNjkEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uv4yRdjkEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_AjTZ8Na8EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UvyrkdjkEeKQqZMBCFd2Uw" x="606" y="246" height="145"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_blTK0NjkEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_blTK0tjkEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_blTK09jkEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_blTK1NjkEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_blTK1djkEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_blTK1tjkEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_blTK19jkEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_blTK2NjkEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_blTK2djkEeKQqZMBCFd2Uw" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_uF4KENjkEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_1B8jINjKEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_uF4KEdjkEeKQqZMBCFd2Uw" x="58" y="4"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_uF-QsNjkEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_4f0_QNjKEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_uF-QsdjkEeKQqZMBCFd2Uw" x="58" y="4"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_blTK2tjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_blTK29jkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_blTK3NjkEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_blTK3djkEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_blTK3tjkEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_blTK39jkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_blTK4NjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_blTK4djkEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_blTK4tjkEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_blTK49jkEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_blTK5NjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_blTK5djkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_blTK5tjkEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_blTK59jkEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_vMMQsNjKEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_blTK0djkEeKQqZMBCFd2Uw" x="600" y="414"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_cs2BsNjkEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cs2BstjkEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cs2Bs9jkEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cs2BtNjkEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cs2BtdjkEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cs2BttjkEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cs2Bt9jkEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_cs2BuNjkEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cs8IUNjkEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cs8IUdjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cs8IUtjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cs8IU9jkEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cs8IVNjkEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cs8IVdjkEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cs8IVtjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cs8IV9jkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cs8IWNjkEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cs8IWdjkEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cs8IWtjkEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cs8IW9jkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cs8IXNjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cs8IXdjkEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cs8IXtjkEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_eNnjMNa7EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cs2BsdjkEeKQqZMBCFd2Uw" x="600" y="114"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_1pN_sNjkEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1pN_stjkEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1pN_s9jkEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1pN_tNjkEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1pN_tdjkEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1pN_ttjkEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1pN_t9jkEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_1pN_uNjkEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1pN_udjkEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1pN_utjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1pN_u9jkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1pN_vNjkEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1pN_vdjkEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1pN_vtjkEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1pN_v9jkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1pN_wNjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1pN_wdjkEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1pN_wtjkEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1pN_w9jkEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1pN_xNjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1pN_xdjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1pN_xtjkEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1pN_x9jkEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="notation/notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1pN_sdjkEeKQqZMBCFd2Uw" x="600" y="576"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_o64RUO-MEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_o65fcO-MEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_o65fce-MEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_o65fcu-MEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_o65fc--MEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_o65fdO-MEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_o66GgO-MEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_o66Gge-MEeK0p4PkXjd-_Q" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_o66Ggu-MEeK0p4PkXjd-_Q" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_o66Gg--MEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_o66GhO-MEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_o66Ghe-MEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o66Ghu-MEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_o66Gh--MEeK0p4PkXjd-_Q" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_o66GiO-MEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_o66Gie-MEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_o66Giu-MEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o66Gi--MEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_o66GjO-MEeK0p4PkXjd-_Q" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_o66Gje-MEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_o66Gju-MEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_o66Gj--MEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o66GkO-MEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_-vaacNa7EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o64RUe-MEeK0p4PkXjd-_Q" x="600" y="696"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_Dtu4wdjkEeKQqZMBCFd2Uw"/>
+    <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+    <edges xmi:type="notation:Connector" xmi:id="_Uv-40NjkEeKQqZMBCFd2Uw" type="4001" source="_Uvsk8NjkEeKQqZMBCFd2Uw" target="_UvyrkNjkEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Uv-409jkEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Uv-41NjkEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Uv-41djkEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Uv-41tjkEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Uv-419jkEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Uv-42NjkEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Uv-42djkEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Uv-42tjkEeKQqZMBCFd2Uw" x="-41" y="23"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Uv-429jkEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Uv-43NjkEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Uv-43djkEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Uv-43tjkEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_Uv-40djkEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_5YuNINa8EeKPiuTfpuvqHA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Uv-40tjkEeKQqZMBCFd2Uw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YMwhsNjkEeKQqZMBCFd2Uw" id="(0.9469026548672567,0.3131115459882583)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hiwAsNjkEeKQqZMBCFd2Uw" id="(0.06,0.16)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_blfYENjkEeKQqZMBCFd2Uw" type="4001" source="_Uvsk8NjkEeKQqZMBCFd2Uw" target="_blTK0NjkEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_bllesNjkEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bllesdjkEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bllestjkEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_blles9jkEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_blletNjkEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_blletdjkEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bllettjkEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bllet9jkEeKQqZMBCFd2Uw" x="-36" y="26"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_blleuNjkEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_blleudjkEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_blleutjkEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_blleu9jkEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_blfYEdjkEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_A1nlgNjLEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_blfYEtjkEeKQqZMBCFd2Uw" points="[-113, -124, 126, 137]$[-239, -261, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_f6SOENjkEeKQqZMBCFd2Uw" id="(0.9601769911504425,0.6986301369863014)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uuS08NjkEeKQqZMBCFd2Uw" id="(0.0,0.41935483870967744)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_ctIVkNjkEeKQqZMBCFd2Uw" type="4001" source="_Uvsk8NjkEeKQqZMBCFd2Uw" target="_cs2BsNjkEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ctIVk9jkEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ctIVlNjkEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ctIVldjkEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ctIVltjkEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ctIVl9jkEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ctIVmNjkEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ctIVmdjkEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ctIVmtjkEeKQqZMBCFd2Uw" x="-47" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ctIVm9jkEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ctIVnNjkEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ctIVndjkEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ctIVntjkEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_ctIVkdjkEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_LBIf0NjiEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ctIVktjkEeKQqZMBCFd2Uw" points="[-113, -124, 126, 137]$[-239, -261, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ewVjcNjkEeKQqZMBCFd2Uw" id="(0.9513274336283186,0.09784735812133072)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_3rXdoNjkEeKQqZMBCFd2Uw" type="4001" source="_Uvsk8NjkEeKQqZMBCFd2Uw" target="_1pN_sNjkEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_3rdkQNjkEeKQqZMBCFd2Uw" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3rdkQdjkEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_3rdkQtjkEeKQqZMBCFd2Uw" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3rdkQ9jkEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_3rdkRNjkEeKQqZMBCFd2Uw" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3rdkRdjkEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_3rdkRtjkEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3rdkR9jkEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_3rdkSNjkEeKQqZMBCFd2Uw" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3rdkSdjkEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_3rdkStjkEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3rdkS9jkEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_3rXdodjkEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_3q_DINjkEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3rXdotjkEeKQqZMBCFd2Uw" points="[6, 2, -253, 0]$[254, 0, -5, -2]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3rjq4NjkEeKQqZMBCFd2Uw" id="(0.9734513274336283,0.974559686888454)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3rjq4djkEeKQqZMBCFd2Uw" id="(0.05,0.38)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_rE_YcO-MEeK0p4PkXjd-_Q" type="4001" source="_Uvsk8NjkEeKQqZMBCFd2Uw" target="_o64RUO-MEeK0p4PkXjd-_Q" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_rE__gO-MEeK0p4PkXjd-_Q" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_rE__ge-MEeK0p4PkXjd-_Q" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_rFAmkO-MEeK0p4PkXjd-_Q" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_rFAmke-MEeK0p4PkXjd-_Q" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_rFAmku-MEeK0p4PkXjd-_Q" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_rFAmk--MEeK0p4PkXjd-_Q" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_rFAmlO-MEeK0p4PkXjd-_Q" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_rFAmle-MEeK0p4PkXjd-_Q" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_rFAmlu-MEeK0p4PkXjd-_Q" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_rFAml--MEeK0p4PkXjd-_Q" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_rFBNoO-MEeK0p4PkXjd-_Q" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_rFBNoe-MEeK0p4PkXjd-_Q" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_rE_Yce-MEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_rEb-0O-MEeK0p4PkXjd-_Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rE_Ycu-MEeK0p4PkXjd-_Q" points="[0, 4, -308, -115]$[0, 127, -308, 8]$[301, 127, -7, 8]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rFKXkO-MEeK0p4PkXjd-_Q" id="(0.7654867256637168,0.9921722113502935)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rFK-oO-MEeK0p4PkXjd-_Q" id="(0.07,0.44)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_-aAtoNjpEeKQqZMBCFd2Uw" type="PapyrusUMLClassDiagram" name="Registries" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_Atmg4NjqEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Atmg4tjqEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Atmg49jqEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Atmg5NjqEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Atmg5djqEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Atmg5tjqEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Atmg59jqEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Atmg6NjqEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Atmg6djqEeKQqZMBCFd2Uw" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_RruhsA2qEeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_idRzUA2qEeOjX-JbGFEH7w" source="Stereotype_Annotation">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_idRzUQ2qEeOjX-JbGFEH7w" key="StereotypeWithQualifiedNameList" value=""/>
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_idSaYA2qEeOjX-JbGFEH7w" key="StereotypeList" value="Ecore::EAttribute"/>
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_idSaYQ2qEeOjX-JbGFEH7w" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_idSaYg2qEeOjX-JbGFEH7w" key="PropStereoDisplay" value=""/>
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_idSaYw2qEeOjX-JbGFEH7w" key="StereotypePropertyLocation" value="Compartment"/>
+          </eAnnotations>
+          <element xmi:type="uml:Property" href="layers.uml#_RrX8YA2qEeOjX-JbGFEH7w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_RruhsQ2qEeOjX-JbGFEH7w"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Atmg6tjqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Atmg69jqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Atmg7NjqEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Atmg7djqEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Atmg7tjqEeKQqZMBCFd2Uw" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_1YYywNkCEeKQqZMBCFd2Uw" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_1X6RoNkCEeKQqZMBCFd2Uw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_1YYywdkCEeKQqZMBCFd2Uw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_lJ0JoOT7EeKSDdPH_NXL-g" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_dcjjAOT7EeKSDdPH_NXL-g"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_lJ0JoeT7EeKSDdPH_NXL-g" x="53" y="64"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_KmAZMA3LEeOjX-JbGFEH7w" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_Klpz4A3LEeOjX-JbGFEH7w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_KmAZMQ3LEeOjX-JbGFEH7w"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Atmg79jqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Atmg8NjqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Atmg8djqEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Atmg8tjqEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Atmg89jqEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Atmg9NjqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Atmg9djqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Atmg9tjqEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Atmg99jqEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_8OefoNjoEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Atmg4djqEeKQqZMBCFd2Uw" y="96" width="179" height="277"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_ERoBQNjqEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ERoBQtjqEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ERoBQ9jqEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ERoBRNjqEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ERoBRdjqEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ERoBRtjqEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ERoBR9jqEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ERoBSNjqEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ERoBSdjqEeKQqZMBCFd2Uw" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_G8FcYNjqEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_sdWO0NhcEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_G8FcYdjqEeKQqZMBCFd2Uw" x="36" y="12"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_G8LjANjqEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_hT9qINhdEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_G8LjAdjqEeKQqZMBCFd2Uw" x="36" y="12"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ERoBStjqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ERoBS9jqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ERoBTNjqEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ERoBTdjqEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ERoBTtjqEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ERoBT9jqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ERoBUNjqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ERoBUdjqEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ERoBUtjqEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ERoBU9jqEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ERoBVNjqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ERoBVdjqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ERoBVtjqEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ERoBV9jqEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_-vaacNa7EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ERoBQdjqEeKQqZMBCFd2Uw" x="678" y="96"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_ItfvoNjqEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ItfvotjqEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Itfvo9jqEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ItfvpNjqEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ItfvpdjqEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ItfvptjqEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Itfvp9jqEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ItfvqNjqEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ItfvqdjqEeKQqZMBCFd2Uw" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_j-VYsNjsEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_j-DE0NjsEeKQqZMBCFd2Uw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_j-VYsdjsEeKQqZMBCFd2Uw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ItfvqtjqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Itfvq9jqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ItfvrNjqEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ItfvrdjqEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ItfvrtjqEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Itfvr9jqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ItfvsNjqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ItfvsdjqEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ItfvstjqEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Itfvs9jqEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ItfvtNjqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ItfvtdjqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ItfvttjqEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Itfvt9jqEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_ItBOgNjqEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ItfvodjqEeKQqZMBCFd2Uw" x="504" y="96" width="115" height="115"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_hhHaQNjqEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hhHaQtjqEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hhHaQ9jqEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hhHaRNjqEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hhHaRdjqEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hhHaRtjqEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hhHaR9jqEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XtJ68NjsEeKQqZMBCFd2Uw" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XtJ68djsEeKQqZMBCFd2Uw" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XtJ68tjsEeKQqZMBCFd2Uw" key="StereotypeList" value="Ecore::EClass"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XtJ689jsEeKQqZMBCFd2Uw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XtJ69NjsEeKQqZMBCFd2Uw" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XtJ69djsEeKQqZMBCFd2Uw" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_hhHaSNjqEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_hhHaSdjqEeKQqZMBCFd2Uw" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_fQvoMNjsEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_fQXNsNjsEeKQqZMBCFd2Uw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_fQvoMdjsEeKQqZMBCFd2Uw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_hhHaStjqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_hhHaS9jqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_hhHaTNjqEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hhHaTdjqEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_hhHaTtjqEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_hhHaT9jqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_hhHaUNjqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_hhHaUdjqEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hhHaUtjqEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_hhHaU9jqEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_hhHaVNjqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_hhHaVdjqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_hhHaVtjqEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hhHaV9jqEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_hgu_wNjqEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hhHaQdjqEeKQqZMBCFd2Uw" x="294" y="96" width="139" height="115"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_HTfqQNj_EeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HTfqQtj_EeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HTfqQ9j_EeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HTfqRNj_EeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HTfqRdj_EeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HTfqRtj_EeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HTfqR9j_EeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_HTfqSNj_EeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_HTfqSdj_EeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_HTfqStj_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_HTfqS9j_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_HTfqTNj_EeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTfqTdj_EeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_HTfqTtj_EeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_HTfqT9j_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_HTfqUNj_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_HTfqUdj_EeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTfqUtj_EeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_HTlw4Nj_EeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_HTlw4dj_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_HTlw4tj_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_HTlw49j_EeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTlw5Nj_EeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_tLip8Nj-EeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTfqQdj_EeKQqZMBCFd2Uw" x="312" y="324"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_HTlw5dj_EeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HTlw59j_EeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HTr3gNj_EeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HTr3gdj_EeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HTr3gtj_EeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HTr3g9j_EeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HTr3hNj_EeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_HTr3hdj_EeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_HTr3htj_EeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_HTr3h9j_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_HTr3iNj_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_HTr3idj_EeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTr3itj_EeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_HTr3i9j_EeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_HTr3jNj_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_HTr3jdj_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_HTr3jtj_EeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTr3j9j_EeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_HTr3kNj_EeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_HTr3kdj_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_HTr3ktj_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_HTr3k9j_EeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTr3lNj_EeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_EoL3oNhcEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTlw5tj_EeKQqZMBCFd2Uw" x="768" y="329"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_P5J4gNj_EeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_P5J4gtj_EeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_P5J4g9j_EeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_P5J4hNj_EeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_P5J4hdj_EeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_P5J4htj_EeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_P5J4h9j_EeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gxnDYNj_EeKQqZMBCFd2Uw" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gxnDYdj_EeKQqZMBCFd2Uw" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gxnDYtj_EeKQqZMBCFd2Uw" key="StereotypeList" value="Ecore::EClass"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gxnDY9j_EeKQqZMBCFd2Uw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gxnDZNj_EeKQqZMBCFd2Uw" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gxnqcNj_EeKQqZMBCFd2Uw" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_P5J4iNj_EeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_P5J4idj_EeKQqZMBCFd2Uw" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_kayJgNj_EeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_kaf1oNj_EeKQqZMBCFd2Uw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kayJgdj_EeKQqZMBCFd2Uw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_P5J4itj_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_P5J4i9j_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_P5J4jNj_EeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P5J4jdj_EeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_P5J4jtj_EeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_P5J4j9j_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_P5J4kNj_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_P5J4kdj_EeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P5J4ktj_EeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_P5J4k9j_EeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_P5J4lNj_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_P5J4ldj_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_P5J4ltj_EeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P5J4l9j_EeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_P4xeANj_EeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P5J4gdj_EeKQqZMBCFd2Uw" x="528" y="324"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_M3hWsNkDEeKQqZMBCFd2Uw" type="2012" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_M3hWstkDEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_M3hWs9kDEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_M3hWtNkDEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_M3hWtdkDEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_M3hWttkDEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_M3hWt9kDEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_M3hWuNkDEeKQqZMBCFd2Uw" type="5038"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_M3hWsdkDEeKQqZMBCFd2Uw" x="246" y="180"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_a8TPANqCEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a8TPAtqCEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a8TPA9qCEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a8ZVoNqCEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a8ZVodqCEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a8ZVotqCEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a8ZVo9qCEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_a8ZVpNqCEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_a8ZVpdqCEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_a8ZVptqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_a8ZVp9qCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_a8ZVqNqCEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8ZVqdqCEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_a8ZVqtqCEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_a8ZVq9qCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_a8ZVrNqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_a8ZVrdqCEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8ZVrtqCEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_a8ZVr9qCEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_a8ZVsNqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_a8ZVsdqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_a8ZVstqCEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8ZVs9qCEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_zYGE8NqBEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8TPAdqCEeKQqZMBCFd2Uw" x="24" y="540"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_a8fcQNqCEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a8fcQtqCEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a8fcQ9qCEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a8fcRNqCEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a8fcRdqCEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a8fcRtqCEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a8fcR9qCEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_a8fcSNqCEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_a8fcSdqCEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_a8fcStqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_a8fcS9qCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_a8fcTNqCEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8fcTdqCEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_a8fcTtqCEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_a8fcT9qCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_a8fcUNqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_a8fcUdqCEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8fcUtqCEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_a8fcU9qCEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_a8fcVNqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_a8fcVdqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_a8fcVtqCEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8fcV9qCEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_eNnjMNa7EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8fcQdqCEeKQqZMBCFd2Uw" x="384" y="540" width="181"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_xiCs0NqCEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xiCs0tqCEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xiCs09qCEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xiCs1NqCEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xiCs1dqCEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xiCs1tqCEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xiCs19qCEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_xiCs2NqCEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_xiCs2dqCEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_xiCs2tqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_xiCs29qCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_xiCs3NqCEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xiCs3dqCEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_xiCs3tqCEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_xiCs39qCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_xiCs4NqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_xiCs4dqCEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xiCs4tqCEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_xiCs49qCEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_xiCs5NqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_xiCs5dqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_xiCs5tqCEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xiCs59qCEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_xhwY8NqCEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xiCs0dqCEeKQqZMBCFd2Uw" x="258" y="681" width="179"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_z5FcsNqCEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z5FcstqCEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z5Fcs9qCEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z5FctNqCEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z5FctdqCEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z5FcttqCEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z5Fct9qCEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_z5FcuNqCEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_z5FcudqCEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_z5FcutqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_z5Fcu9qCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_z5FcvNqCEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z5FcvdqCEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_z5FcvtqCEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_z5Fcv9qCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_z5FcwNqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_z5FcwdqCEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z5FcwtqCEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_z5Fcw9qCEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_z5FcxNqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_z5FcxdqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_z5FcxtqCEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z5Fcx9qCEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_z4m7kNqCEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z5FcsdqCEeKQqZMBCFd2Uw" x="552" y="684" width="170"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_-aAtodjpEeKQqZMBCFd2Uw"/>
+    <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+    <edges xmi:type="notation:Connector" xmi:id="_NV6sQNjqEeKQqZMBCFd2Uw" type="4001" source="_Atmg4NjqEeKQqZMBCFd2Uw" target="_ERoBQNjqEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_NV6sQ9jqEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_NV6sRNjqEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_NV6sRdjqEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_NV6sRtjqEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_NV6sR9jqEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_NV6sSNjqEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_NV6sSdjqEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_NV6sStjqEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_NV6sS9jqEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_NV6sTNjqEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_NV6sTdjqEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_NV6sTtjqEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_NV6sQdjqEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_NVcLINjqEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NV6sQtjqEeKQqZMBCFd2Uw" points="[5, 6, -474, 49]$[486, 6, 7, 49]$[486, -38, 7, 5]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NWAy4NjqEeKQqZMBCFd2Uw" id="(0.984,0.6498194945848376)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NWAy4djqEeKQqZMBCFd2Uw" id="(0.38235294117647056,0.9596774193548387)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_ZdgJINjqEeKQqZMBCFd2Uw" type="4001" source="_ItfvoNjqEeKQqZMBCFd2Uw" target="_ERoBQNjqEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ZdgJI9jqEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ZdgJJNjqEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ZdgJJdjqEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ZdgJJtjqEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ZdgJJ9jqEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ZdgJKNjqEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ZdgJKdjqEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ZdgJKtjqEeKQqZMBCFd2Uw" x="-31" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ZdgJK9jqEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ZdgJLNjqEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ZdgJLdjqEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ZdgJLtjqEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_ZdgJIdjqEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_ZdBoANjqEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ZdgJItjqEeKQqZMBCFd2Uw" points="[6, 8, -83, 0]$[83, 8, -6, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZdmPwNjqEeKQqZMBCFd2Uw" id="(0.991304347826087,0.6347826086956522)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZdmPwdjqEeKQqZMBCFd2Uw" id="(0.03529411764705882,0.5483870967741935)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_m0GW0NjqEeKQqZMBCFd2Uw" type="4001" source="_hhHaQNjqEeKQqZMBCFd2Uw" target="_ItfvoNjqEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_m0GW09jqEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_m0GW1NjqEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_m0GW1djqEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_m0GW1tjqEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_m0GW19jqEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_m0GW2NjqEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_m0GW2djqEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_m0GW2tjqEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_m0GW29jqEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_m0GW3NjqEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_m0GW3djqEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_m0GW3tjqEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_m0GW0djqEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_mzt8UNjqEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_m0GW0tjqEeKQqZMBCFd2Uw" points="[10, 0, -74, 0]$[78, -1, -6, -1]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_m0MdcNjqEeKQqZMBCFd2Uw" id="(0.9856115107913669,0.4596774193548387)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_m0MdcdjqEeKQqZMBCFd2Uw" id="(0.05217391304347826,0.4881889763779528)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_HTx-INj_EeKQqZMBCFd2Uw" type="4001" source="_HTfqQNj_EeKQqZMBCFd2Uw" target="_P5J4gNj_EeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_HTx-I9j_EeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_HTx-JNj_EeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_HTx-Jdj_EeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_HTx-Jtj_EeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_HTx-J9j_EeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_HTx-KNj_EeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_HTx-Kdj_EeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_HTx-Ktj_EeKQqZMBCFd2Uw" x="-26" y="17"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_HTx-K9j_EeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_HTx-LNj_EeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_HTx-Ldj_EeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_HTx-Ltj_EeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_HTx-Idj_EeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_2bADINj-EeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HTx-Itj_EeKQqZMBCFd2Uw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TJzJ4Nj_EeKQqZMBCFd2Uw" id="(0.025423728813559324,0.4596774193548387)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_JiaY4Nj_EeKQqZMBCFd2Uw" type="4001" source="_Atmg4NjqEeKQqZMBCFd2Uw" target="_HTfqQNj_EeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_JiaY49j_EeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_JigfgNj_EeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Jigfgdj_EeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Jigfgtj_EeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Jigfg9j_EeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_JigfhNj_EeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Jigfhdj_EeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Jigfhtj_EeKQqZMBCFd2Uw" x="-26" y="18"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Jigfh9j_EeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_JigfiNj_EeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Jigfidj_EeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Jigfitj_EeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_JiaY4dj_EeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_Jh73wNj_EeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JiaY4tj_EeKQqZMBCFd2Uw" points="[6, 1, -141, -26]$[139, 21, -8, -6]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JimmINj_EeKQqZMBCFd2Uw" id="(0.952,0.8916967509025271)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JimmIdj_EeKQqZMBCFd2Uw" id="(0.08,0.22)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_U1kIINj_EeKQqZMBCFd2Uw" type="4001" source="_P5J4gNj_EeKQqZMBCFd2Uw" target="_HTlw5dj_EeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_U1kvMNj_EeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_U1kvMdj_EeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_U1lWQNj_EeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_U1lWQdj_EeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_U1lWQtj_EeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_U1lWQ9j_EeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_U1lWRNj_EeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_U1lWRdj_EeKQqZMBCFd2Uw" x="-19" y="19"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_U1lWRtj_EeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_U1lWR9j_EeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_U1lWSNj_EeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_U1lWSdj_EeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_U1kIIdj_EeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_U1FnANj_EeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_U1kIItj_EeKQqZMBCFd2Uw" points="[6, -1, -127, 19]$[122, -25, -11, -5]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_U1srANj_EeKQqZMBCFd2Uw" id="(0.9491525423728814,0.42)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_U1srAdj_EeKQqZMBCFd2Uw" id="(0.06,0.48)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_o2GW4NkCEeKQqZMBCFd2Uw" type="4001" source="_ERoBQNjqEeKQqZMBCFd2Uw" target="_HTlw5dj_EeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_o2GW49kCEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_o2GW5NkCEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_o2GW5dkCEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_o2GW5tkCEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_o2GW59kCEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_o2GW6NkCEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_o2MdgNkCEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_o2MdgdkCEeKQqZMBCFd2Uw" x="-3" y="45"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_o2MdgtkCEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_o2Mdg9kCEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_o2MdhNkCEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_o2MdhdkCEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_o2GW4dkCEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_L2X8oNhcEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_o2GW4tkCEeKQqZMBCFd2Uw" points="[15, 62, -40, -159]$[42, 171, -13, -50]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_p5Y_4NkCEeKQqZMBCFd2Uw" id="(0.8176470588235294,0.9354838709677419)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_a8li4NqCEeKQqZMBCFd2Uw" type="4001" source="_a8TPANqCEeKQqZMBCFd2Uw" target="_a8fcQNqCEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_a8li49qCEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_a8li5NqCEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_a8li5dqCEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_a8li5tqCEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_a8li59qCEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_a8li6NqCEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_a8li6dqCEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_a8li6tqCEeKQqZMBCFd2Uw" x="-45" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_a8li69qCEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_a8li7NqCEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_a8li7dqCEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_a8li7tqCEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_a8li4dqCEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_Tz2loNqCEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_a8li4tqCEeKQqZMBCFd2Uw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_ii_TkNqCEeKQqZMBCFd2Uw" type="4001" source="_a8fcQNqCEeKQqZMBCFd2Uw" target="_Atmg4NjqEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ijFaMNqCEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ijFaMdqCEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ijFaMtqCEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ijFaM9qCEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ijFaNNqCEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ijFaNdqCEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ijFaNtqCEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ijFaN9qCEeKQqZMBCFd2Uw" x="54" y="94"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ijFaONqCEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ijFaOdqCEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ijFaOtqCEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ijFaO9qCEeKQqZMBCFd2Uw" x="48" y="-35"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_ii_TkdqCEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_iim5ENqCEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ii_TktqCEeKQqZMBCFd2Uw" points="[0, -12, 340, 174]$[0, -96, 340, 90]$[-334, -96, 6, 90]$[-334, -179, 6, 7]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ijLg0NqCEeKQqZMBCFd2Uw" id="(0.38095238095238093,0.12)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ijLg0dqCEeKQqZMBCFd2Uw" id="(0.4692737430167598,0.9747292418772563)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_3e3QkNqCEeKQqZMBCFd2Uw" type="4002" source="_xiCs0NqCEeKQqZMBCFd2Uw" target="_a8fcQNqCEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_3e3Qk9qCEeKQqZMBCFd2Uw" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3e3QlNqCEeKQqZMBCFd2Uw" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_3e3QkdqCEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_3ee2ENqCEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3e3QktqCEeKQqZMBCFd2Uw" points="[10, -8, -68, 52]$[69, -49, -9, 11]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3e3QldqCEeKQqZMBCFd2Uw" id="(0.6089385474860335,0.08)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3e3QltqCEeKQqZMBCFd2Uw" id="(0.3370165745856354,0.89)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_5SH98NqCEeKQqZMBCFd2Uw" type="4002" source="_z5FcsNqCEeKQqZMBCFd2Uw" target="_a8fcQNqCEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_5SH989qCEeKQqZMBCFd2Uw" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5SH99NqCEeKQqZMBCFd2Uw" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_5SH98dqCEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_5RvjcNqCEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5SH98tqCEeKQqZMBCFd2Uw" points="[-14, -7, 97, 52]$[-108, -51, 3, 8]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5SOEkNqCEeKQqZMBCFd2Uw" id="(0.3,0.07)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5SOEkdqCEeKQqZMBCFd2Uw" id="(0.5966850828729282,0.92)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_gSkRsNxGEeKwptaAAanMDg" type="PapyrusUMLClassDiagram" name="exceptions" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_iYyXUNxGEeKwptaAAanMDg" type="2009" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iYy-YNxGEeKwptaAAanMDg" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iYy-YdxGEeKwptaAAanMDg" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iYzlcNxGEeKwptaAAanMDg" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iYzlcdxGEeKwptaAAanMDg" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iYzlctxGEeKwptaAAanMDg" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iYzlc9xGEeKwptaAAanMDg" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qcdS09xGEeKwptaAAanMDg" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qcdS1NxGEeKwptaAAanMDg" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qcdS1dxGEeKwptaAAanMDg" key="StereotypeList" value="Ecore::EDataType"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qcdS1txGEeKwptaAAanMDg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qcdS19xGEeKwptaAAanMDg" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qcdS2NxGEeKwptaAAanMDg" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_iYzldNxGEeKwptaAAanMDg" type="5032"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_iY0MgNxGEeKwptaAAanMDg" type="7039">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_iY0MgdxGEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_iY0MgtxGEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_iY0Mg9xGEeKwptaAAanMDg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iY0MhNxGEeKwptaAAanMDg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_iY0MhdxGEeKwptaAAanMDg" type="7040">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_iY0MhtxGEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_iY0Mh9xGEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_iY0MiNxGEeKwptaAAanMDg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iY0MidxGEeKwptaAAanMDg"/>
+      </children>
+      <element xmi:type="uml:PrimitiveType" href="layers.uml#_iYKFMNxGEeKwptaAAanMDg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iYyXUdxGEeKwptaAAanMDg" x="263" y="39" width="140"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_k-76MNxGEeKwptaAAanMDg" type="2009" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_k-76MtxGEeKwptaAAanMDg" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_k-76M9xGEeKwptaAAanMDg" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_k-76NNxGEeKwptaAAanMDg" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_k-76NdxGEeKwptaAAanMDg" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_k-76NtxGEeKwptaAAanMDg" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_k-76N9xGEeKwptaAAanMDg" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4SAtY9xGEeKwptaAAanMDg" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4SAtZNxGEeKwptaAAanMDg" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4SAtZdxGEeKwptaAAanMDg" key="StereotypeList" value="Ecore::EDataType"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4SAtZtxGEeKwptaAAanMDg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4SAtZ9xGEeKwptaAAanMDg" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4SAtaNxGEeKwptaAAanMDg" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_k-76ONxGEeKwptaAAanMDg" type="5032"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_k-76OdxGEeKwptaAAanMDg" type="7039">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_k-76OtxGEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_k-76O9xGEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_k-76PNxGEeKwptaAAanMDg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_k-76PdxGEeKwptaAAanMDg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_k-76PtxGEeKwptaAAanMDg" type="7040">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_k-76P9xGEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_k-76QNxGEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_k-76QdxGEeKwptaAAanMDg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_k-76QtxGEeKwptaAAanMDg"/>
+      </children>
+      <element xmi:type="uml:PrimitiveType" href="layers.uml#_k-dZENxGEeKwptaAAanMDg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_k-76MdxGEeKwptaAAanMDg" x="444" y="186" width="141"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_KHZoUNxMEeKwptaAAanMDg" type="2009" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KHZoUtxMEeKwptaAAanMDg" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KHZoU9xMEeKwptaAAanMDg" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KHZoVNxMEeKwptaAAanMDg" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KHZoVdxMEeKwptaAAanMDg" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KHZoVtxMEeKwptaAAanMDg" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KHZoV9xMEeKwptaAAanMDg" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PWnfMNxMEeKwptaAAanMDg" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PWnfMdxMEeKwptaAAanMDg" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PWnfMtxMEeKwptaAAanMDg" key="StereotypeList" value="Ecore::EDataType"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PWnfM9xMEeKwptaAAanMDg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PWnfNNxMEeKwptaAAanMDg" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PWnfNdxMEeKwptaAAanMDg" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_KHZoWNxMEeKwptaAAanMDg" type="5032"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_KHZoWdxMEeKwptaAAanMDg" type="7039">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_KHZoWtxMEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_KHZoW9xMEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_KHZoXNxMEeKwptaAAanMDg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KHZoXdxMEeKwptaAAanMDg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_KHZoXtxMEeKwptaAAanMDg" type="7040">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_KHZoX9xMEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_KHZoYNxMEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_KHZoYdxMEeKwptaAAanMDg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KHZoYtxMEeKwptaAAanMDg"/>
+      </children>
+      <element xmi:type="uml:PrimitiveType" href="layers.uml#_KG7HMNxMEeKwptaAAanMDg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KHZoUdxMEeKwptaAAanMDg" x="72" y="192" width="145"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_gSkRsdxGEeKwptaAAanMDg"/>
+    <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+    <edges xmi:type="notation:Connector" xmi:id="_ox-G8NxGEeKwptaAAanMDg" type="4002" source="_k-76MNxGEeKwptaAAanMDg" target="_iYyXUNxGEeKwptaAAanMDg" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ox_VENxGEeKwptaAAanMDg" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ox_VEdxGEeKwptaAAanMDg" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_ox-G8dxGEeKwptaAAanMDg" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_oxlscNxGEeKwptaAAanMDg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ox-G8txGEeKwptaAAanMDg" points="[-10, -5, 124, 68]$[-128, -61, 6, 12]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oyDmgNxGEeKwptaAAanMDg" id="(0.2978723404255319,0.054945054945054944)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oyDmgdxGEeKwptaAAanMDg" id="(0.6357142857142857,0.8681318681318682)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_ShmNcNxMEeKwptaAAanMDg" type="4002" source="_KHZoUNxMEeKwptaAAanMDg" target="_iYyXUNxGEeKwptaAAanMDg" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ShmNc9xMEeKwptaAAanMDg" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ShmNdNxMEeKwptaAAanMDg" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_ShmNcdxMEeKwptaAAanMDg" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_ShHsUNxMEeKwptaAAanMDg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ShmNctxMEeKwptaAAanMDg" points="[12, -8, -83, 52]$[82, -50, -13, 10]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ShsUENxMEeKwptaAAanMDg" id="(0.7517241379310344,0.07207207207207207)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ShsUEdxMEeKwptaAAanMDg" id="(0.09285714285714286,0.9099099099099099)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_j4XzEOT_EeKSDdPH_NXL-g" type="PapyrusUMLClassDiagram" name="Appearance Properties" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_ruaiQOT_EeKSDdPH_NXL-g" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rugo4eT_EeKSDdPH_NXL-g" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rugo4uT_EeKSDdPH_NXL-g" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rugo4-T_EeKSDdPH_NXL-g" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rugo5OT_EeKSDdPH_NXL-g" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rugo5eT_EeKSDdPH_NXL-g" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rugo5uT_EeKSDdPH_NXL-g" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_rugo5-T_EeKSDdPH_NXL-g" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_rugo6OT_EeKSDdPH_NXL-g" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_rugo6eT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_rugo6uT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_rugo6-T_EeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rugo7OT_EeKSDdPH_NXL-g"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_rugo7eT_EeKSDdPH_NXL-g" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_rugo7uT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_rugo7-T_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_rugo8OT_EeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rugo8eT_EeKSDdPH_NXL-g"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_rugo8uT_EeKSDdPH_NXL-g" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_rugo8-T_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_rugo9OT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_rugo9eT_EeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rugo9uT_EeKSDdPH_NXL-g"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_AjTZ8Na8EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rugo4OT_EeKSDdPH_NXL-g" x="294" y="60"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_tBcQYOT_EeKSDdPH_NXL-g" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tBcQYuT_EeKSDdPH_NXL-g" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tBcQY-T_EeKSDdPH_NXL-g" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tBcQZOT_EeKSDdPH_NXL-g" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tBcQZeT_EeKSDdPH_NXL-g" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tBcQZuT_EeKSDdPH_NXL-g" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tBcQZ-T_EeKSDdPH_NXL-g" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_tBcQaOT_EeKSDdPH_NXL-g" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_tBcQaeT_EeKSDdPH_NXL-g" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_tBcQauT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_tBcQa-T_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_tBcQbOT_EeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tBcQbeT_EeKSDdPH_NXL-g"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_tBcQbuT_EeKSDdPH_NXL-g" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_tBcQb-T_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_tBcQcOT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_tBcQceT_EeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tBcQcuT_EeKSDdPH_NXL-g"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_tBcQc-T_EeKSDdPH_NXL-g" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_tBcQdOT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_tBcQdeT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_tBcQduT_EeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tBcQd-T_EeKSDdPH_NXL-g"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_EoL3oNhcEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tBcQYeT_EeKSDdPH_NXL-g" x="696" y="65"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_tjX4wOT_EeKSDdPH_NXL-g" type="2008" fontName="Segoe UI" fillColor="15053796" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tjX4wuT_EeKSDdPH_NXL-g" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tjX4w-T_EeKSDdPH_NXL-g" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tjX4xOT_EeKSDdPH_NXL-g" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tjX4xeT_EeKSDdPH_NXL-g" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tjX4xuT_EeKSDdPH_NXL-g" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tjX4x-T_EeKSDdPH_NXL-g" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_tjX4yOT_EeKSDdPH_NXL-g" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_tjX4yeT_EeKSDdPH_NXL-g" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_tjX4yuT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_tjX4y-T_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_tjX4zOT_EeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tjX4zeT_EeKSDdPH_NXL-g"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_tjX4zuT_EeKSDdPH_NXL-g" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_tjX4z-T_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_tjX40OT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_tjX40eT_EeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tjX40uT_EeKSDdPH_NXL-g"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_tjX40-T_EeKSDdPH_NXL-g" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_tjX41OT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_tjX41eT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_tjX41uT_EeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tjX41-T_EeKSDdPH_NXL-g"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_ti_eQOT_EeKSDdPH_NXL-g"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tjX4weT_EeKSDdPH_NXL-g" x="726" y="215"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_vkxIwOT_EeKSDdPH_NXL-g" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vkxIwuT_EeKSDdPH_NXL-g" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vkxIw-T_EeKSDdPH_NXL-g" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vkxIxOT_EeKSDdPH_NXL-g" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vkxIxeT_EeKSDdPH_NXL-g" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vkxIxuT_EeKSDdPH_NXL-g" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vkxIx-T_EeKSDdPH_NXL-g" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_vkxIyOT_EeKSDdPH_NXL-g" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_vkxIyeT_EeKSDdPH_NXL-g" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_VwHpgOUAEeKSDdPH_NXL-g" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_Q8HvAOUAEeKSDdPH_NXL-g"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_VwHpgeUAEeKSDdPH_NXL-g" x="15"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_vkxIyuT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_vkxIy-T_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_vkxIzOT_EeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vkxIzeT_EeKSDdPH_NXL-g"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_vkxIzuT_EeKSDdPH_NXL-g" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_vkxIz-T_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_vkxI0OT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_vkxI0eT_EeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vkxI0uT_EeKSDdPH_NXL-g"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_vkxI0-T_EeKSDdPH_NXL-g" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_vkxI1OT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_vkxI1eT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_vkxI1uT_EeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vkxI1-T_EeKSDdPH_NXL-g"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_vkSnoOT_EeKSDdPH_NXL-g"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vkxIweT_EeKSDdPH_NXL-g" x="192" y="209" height="91"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_fMVFQOUAEeKSDdPH_NXL-g" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fMVFQuUAEeKSDdPH_NXL-g" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fMVFQ-UAEeKSDdPH_NXL-g" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fMVFROUAEeKSDdPH_NXL-g" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fMVFReUAEeKSDdPH_NXL-g" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fMVFRuUAEeKSDdPH_NXL-g" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fMVFR-UAEeKSDdPH_NXL-g" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_fMVFSOUAEeKSDdPH_NXL-g" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_fMVFSeUAEeKSDdPH_NXL-g" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_p9Xl8OUAEeKSDdPH_NXL-g" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_nVngkOUAEeKSDdPH_NXL-g"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_p9Xl8eUAEeKSDdPH_NXL-g" x="39" y="11"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_fMVFSuUAEeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_fMVFS-UAEeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_fMVFTOUAEeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fMVFTeUAEeKSDdPH_NXL-g"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_fMVFTuUAEeKSDdPH_NXL-g" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_fMVFT-UAEeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_fMVFUOUAEeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_fMVFUeUAEeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fMVFUuUAEeKSDdPH_NXL-g"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_fMVFU-UAEeKSDdPH_NXL-g" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_fMVFVOUAEeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_fMVFVeUAEeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_fMVFVuUAEeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fMVFV-UAEeKSDdPH_NXL-g"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_fL2kIOUAEeKSDdPH_NXL-g"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fMVFQeUAEeKSDdPH_NXL-g" x="390" y="209" height="91"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_gsWtkOUAEeKSDdPH_NXL-g" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gsWtkuUAEeKSDdPH_NXL-g" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gsWtk-UAEeKSDdPH_NXL-g" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gsWtlOUAEeKSDdPH_NXL-g" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gsc0MOUAEeKSDdPH_NXL-g" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gsc0MeUAEeKSDdPH_NXL-g" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gsc0MuUAEeKSDdPH_NXL-g" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_gsc0M-UAEeKSDdPH_NXL-g" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gsc0NOUAEeKSDdPH_NXL-g" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gsc0NeUAEeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gsc0NuUAEeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gsc0N-UAEeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gsc0OOUAEeKSDdPH_NXL-g"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gsc0OeUAEeKSDdPH_NXL-g" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gsc0OuUAEeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gsc0O-UAEeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gsc0POUAEeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gsc0PeUAEeKSDdPH_NXL-g"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gsc0PuUAEeKSDdPH_NXL-g" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gsc0P-UAEeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gsc0QOUAEeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gsc0QeUAEeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gsc0QuUAEeKSDdPH_NXL-g"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_gsEZsOUAEeKSDdPH_NXL-g"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gsWtkeUAEeKSDdPH_NXL-g" x="604" y="217"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Rn740O-YEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Rn740u-YEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Rn740--YEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Rn741O-YEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Rn741e-YEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Rn741u-YEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Rn741--YEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Rn742O-YEeK0p4PkXjd-_Q" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Rn742e-YEeK0p4PkXjd-_Q" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Rn742u-YEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Rn742--YEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Rn743O-YEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Rn743e-YEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Rn743u-YEeK0p4PkXjd-_Q" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Rn743--YEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Rn744O-YEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Rn744e-YEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Rn744u-YEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Rn744--YEeK0p4PkXjd-_Q" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Rn745O-YEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Rn745e-YEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Rn745u-YEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Rn745--YEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_RnjeUO-YEeK0p4PkXjd-_Q"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Rn740e-YEeK0p4PkXjd-_Q" x="651" y="379"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_ZHO78O-YEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZHO78u-YEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZHO78--YEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZHO79O-YEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZHO79e-YEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZHO79u-YEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZHO79--YEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ZHO7-O-YEeK0p4PkXjd-_Q" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ZHO7-e-YEeK0p4PkXjd-_Q" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_vpscQO-YEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_vpaIYO-YEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_vpscQe-YEeK0p4PkXjd-_Q"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_yrtbwO-YEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_yrVBQO-YEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_yrtbwe-YEeK0p4PkXjd-_Q"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ZHO7-u-YEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ZHO7---YEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ZHO7_O-YEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZHO7_e-YEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ZHO7_u-YEeK0p4PkXjd-_Q" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ZHO7_--YEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ZHO8AO-YEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ZHO8Ae-YEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZHO8Au-YEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ZHO8A--YEeK0p4PkXjd-_Q" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ZHO8BO-YEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ZHO8Be-YEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ZHO8Bu-YEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZHO8B--YEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_ZGwa0O-YEeK0p4PkXjd-_Q"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZHO78e-YEeK0p4PkXjd-_Q" y="204" height="91"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Ot3I0O-iEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ot3I0u-iEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ot3I0--iEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ot3I1O-iEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ot3I1e-iEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ot3I1u-iEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ot3I1--iEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Ot3I2O-iEeK0p4PkXjd-_Q" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Ot3I2e-iEeK0p4PkXjd-_Q" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_XmGU0O-iEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_Xlt6UO-iEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XmGU0e-iEeK0p4PkXjd-_Q"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_bEXygO-iEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_bD8UsO-iEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_bEXyge-iEeK0p4PkXjd-_Q"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_eqEG0O-iEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_epxy8O-iEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_eqEG0e-iEeK0p4PkXjd-_Q"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_indJcO-iEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_inEu8O-iEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_indJce-iEeK0p4PkXjd-_Q"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Ot3I2u-iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Ot3I2--iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Ot3I3O-iEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ot3I3e-iEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Ot3I3u-iEeK0p4PkXjd-_Q" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Ot3I3--iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Ot3I4O-iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Ot3I4e-iEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ot3I4u-iEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Ot3I4--iEeK0p4PkXjd-_Q" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Ot3I5O-iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Ot3I5e-iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Ot3I5u-iEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ot3I5--iEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_OtShEO-iEeK0p4PkXjd-_Q"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ot3I0e-iEeK0p4PkXjd-_Q" x="148" y="374"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Q7FOUO-iEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Q7FOUu-iEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Q7FOU--iEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Q7FOVO-iEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Q7FOVe-iEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Q7FOVu-iEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Q7FOV--iEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Q7FOWO-iEeK0p4PkXjd-_Q" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Q7FOWe-iEeK0p4PkXjd-_Q" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Q7FOWu-iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Q7FOW--iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Q7FOXO-iEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Q7FOXe-iEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Q7FOXu-iEeK0p4PkXjd-_Q" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Q7FOX--iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Q7FOYO-iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Q7FOYe-iEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Q7FOYu-iEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Q7FOY--iEeK0p4PkXjd-_Q" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Q7FOZO-iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Q7FOZe-iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Q7FOZu-iEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Q7FOZ--iEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_Q6ta4O-iEeK0p4PkXjd-_Q"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Q7FOUe-iEeK0p4PkXjd-_Q" x="799" y="398"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_j4XzEeT_EeKSDdPH_NXL-g"/>
+    <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+    <edges xmi:type="notation:Connector" xmi:id="_YC914OUAEeKSDdPH_NXL-g" type="4002" source="_vkxIwOT_EeKSDdPH_NXL-g" target="_ruaiQOT_EeKSDdPH_NXL-g" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_YDD8gOUAEeKSDdPH_NXL-g" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_YDD8geUAEeKSDdPH_NXL-g" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_YC914eUAEeKSDdPH_NXL-g" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_YCxooOUAEeKSDdPH_NXL-g"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YC914uUAEeKSDdPH_NXL-g" points="[5, -13, -35, 79]$[34, -80, -6, 12]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YDD8guUAEeKSDdPH_NXL-g" id="(0.5779816513761468,0.125)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YDD8g-UAEeKSDdPH_NXL-g" id="(0.31,0.88)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_Y03M4OUAEeKSDdPH_NXL-g" type="4002" source="_tjX4wOT_EeKSDdPH_NXL-g" target="_tBcQYOT_EeKSDdPH_NXL-g" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Y09TgOUAEeKSDdPH_NXL-g" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Y09TgeUAEeKSDdPH_NXL-g" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_Y03M4eUAEeKSDdPH_NXL-g" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_Y0k5AOUAEeKSDdPH_NXL-g"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Y03M4uUAEeKSDdPH_NXL-g" points="[-22, -7, 246, 68]$[-252, -60, 16, 15]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Y09TguUAEeKSDdPH_NXL-g" id="(0.22,0.08)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Y09Tg-UAEeKSDdPH_NXL-g" id="(0.3,0.77)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_iqWrUOUAEeKSDdPH_NXL-g" type="4002" source="_gsWtkOUAEeKSDdPH_NXL-g" target="_tBcQYOT_EeKSDdPH_NXL-g" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_iqcx8OUAEeKSDdPH_NXL-g" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_iqcx8eUAEeKSDdPH_NXL-g" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_iqWrUeUAEeKSDdPH_NXL-g" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_ip-Q0OUAEeKSDdPH_NXL-g"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iqWrUuUAEeKSDdPH_NXL-g" points="[11, -9, -112, 88]$[114, -92, -9, 5]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iqgcUOUAEeKSDdPH_NXL-g" id="(0.38,0.09)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iqgcUeUAEeKSDdPH_NXL-g" id="(0.09,0.75)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_jXrEUOUAEeKSDdPH_NXL-g" type="4002" source="_fMVFQOUAEeKSDdPH_NXL-g" target="_ruaiQOT_EeKSDdPH_NXL-g" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_jXrEU-UAEeKSDdPH_NXL-g" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jXrEVOUAEeKSDdPH_NXL-g" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_jXrEUeUAEeKSDdPH_NXL-g" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_jXYwcOUAEeKSDdPH_NXL-g"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jXrEUuUAEeKSDdPH_NXL-g" points="[-6, -9, 45, 75]$[-47, -72, 4, 12]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jXrEVeUAEeKSDdPH_NXL-g" id="(0.36,0.09)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jXrEVuUAEeKSDdPH_NXL-g" id="(0.65,0.88)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_uUewIOUAEeKSDdPH_NXL-g" type="4001" source="_fMVFQOUAEeKSDdPH_NXL-g" target="_vkxIwOT_EeKSDdPH_NXL-g" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_uUfXMOUAEeKSDdPH_NXL-g" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_uUfXMeUAEeKSDdPH_NXL-g" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_uUfXMuUAEeKSDdPH_NXL-g" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_uUfXM-UAEeKSDdPH_NXL-g" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_uUf-QOUAEeKSDdPH_NXL-g" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_uUf-QeUAEeKSDdPH_NXL-g" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_uUf-QuUAEeKSDdPH_NXL-g" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_uUf-Q-UAEeKSDdPH_NXL-g" x="-16" y="23"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_uUf-ROUAEeKSDdPH_NXL-g" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_uUf-ReUAEeKSDdPH_NXL-g" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_uUf-RuUAEeKSDdPH_NXL-g" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_uUf-R-UAEeKSDdPH_NXL-g" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_uUewIeUAEeKSDdPH_NXL-g" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_uTre4OUAEeKSDdPH_NXL-g"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uUewIuUAEeKSDdPH_NXL-g" points="[-1, 1, 73, 0]$[-72, 0, 2, -1]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uUohIOUAEeKSDdPH_NXL-g" id="(0.009174311926605505,0.4175824175824176)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uUohIeUAEeKSDdPH_NXL-g" id="(0.981651376146789,0.42857142857142855)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_UJZI8O-YEeK0p4PkXjd-_Q" type="4002" source="_Rn740O-YEeK0p4PkXjd-_Q" target="_tBcQYOT_EeKSDdPH_NXL-g" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_UJZI8--YEeK0p4PkXjd-_Q" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_UJZI9O-YEeK0p4PkXjd-_Q" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_UJZI8e-YEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_UJAucO-YEeK0p4PkXjd-_Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_UJZI8u-YEeK0p4PkXjd-_Q" points="[0, -10, -17, 231]$[5, -224, -12, 17]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UJfPkO-YEeK0p4PkXjd-_Q" id="(0.56,0.1)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UJfPke-YEeK0p4PkXjd-_Q" id="(0.28,0.83)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_ikHGEO-YEeK0p4PkXjd-_Q" type="4002" source="_ZHO78O-YEeK0p4PkXjd-_Q" target="_ruaiQOT_EeKSDdPH_NXL-g" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ikHGE--YEeK0p4PkXjd-_Q" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ikHGFO-YEeK0p4PkXjd-_Q" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_ikHGEe-YEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_ijurkO-YEeK0p4PkXjd-_Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ikHGEu-YEeK0p4PkXjd-_Q" points="[0, -6, -30, 236]$[30, -233, 0, 9]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ikNMsO-YEeK0p4PkXjd-_Q" id="(0.67,0.06)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ikNMse-YEeK0p4PkXjd-_Q" id="(0.51,0.91)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_UKjbAO-iEeK0p4PkXjd-_Q" type="4002" source="_Q7FOUO-iEeK0p4PkXjd-_Q" target="_tBcQYOT_EeKSDdPH_NXL-g" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_UKjbA--iEeK0p4PkXjd-_Q" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_UKjbBO-iEeK0p4PkXjd-_Q" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_UKjbAe-iEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_UKLAgO-iEeK0p4PkXjd-_Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_UKjbAu-iEeK0p4PkXjd-_Q" points="[-2, -6, 76, 246]$[-75, -239, 3, 13]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UKjbBe-iEeK0p4PkXjd-_Q" id="(0.35,0.06)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UKjbBu-iEeK0p4PkXjd-_Q" id="(0.6,0.87)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_VIS1oO-iEeK0p4PkXjd-_Q" type="4002" source="_Ot3I0O-iEeK0p4PkXjd-_Q" target="_ruaiQOT_EeKSDdPH_NXL-g" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_VIY8QO-iEeK0p4PkXjd-_Q" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_VIY8Qe-iEeK0p4PkXjd-_Q" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_VIS1oe-iEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_VH6bIO-iEeK0p4PkXjd-_Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_VIS1ou-iEeK0p4PkXjd-_Q" points="[6, -13, -118, 222]$[124, -227, 0, 8]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VId0wO-iEeK0p4PkXjd-_Q" id="(0.76,0.13)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VId0we-iEeK0p4PkXjd-_Q" id="(0.54,0.92)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_UCFqMO3vEeKwLp35IbAIig" type="PapyrusUMLClassDiagram" name="PropertySetter" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_aL5hEO3vEeKwLp35IbAIig" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aL5hEu3vEeKwLp35IbAIig" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aL5hE-3vEeKwLp35IbAIig" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aL5hFO3vEeKwLp35IbAIig" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aL5hFe3vEeKwLp35IbAIig" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aL5hFu3vEeKwLp35IbAIig" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aL5hF-3vEeKwLp35IbAIig" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_aL5hGO3vEeKwLp35IbAIig" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_aL_nsO3vEeKwLp35IbAIig" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_aL_nse3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_aL_nsu3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_aL_ns-3vEeKwLp35IbAIig"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aL_ntO3vEeKwLp35IbAIig"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_aL_nte3vEeKwLp35IbAIig" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_aL_ntu3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_aL_nt-3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_aL_nuO3vEeKwLp35IbAIig"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aL_nue3vEeKwLp35IbAIig"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_aL_nuu3vEeKwLp35IbAIig" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_aL_nu-3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_aL_nvO3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_aL_nve3vEeKwLp35IbAIig"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aL_nvu3vEeKwLp35IbAIig"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_DN8s0NjhEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aL5hEe3vEeKwLp35IbAIig" x="96" y="30"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_aMFuUO3vEeKwLp35IbAIig" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aMFuUu3vEeKwLp35IbAIig" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aMFuU-3vEeKwLp35IbAIig" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aMFuVO3vEeKwLp35IbAIig" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aMFuVe3vEeKwLp35IbAIig" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aMFuVu3vEeKwLp35IbAIig" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aMFuV-3vEeKwLp35IbAIig" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_aMFuWO3vEeKwLp35IbAIig" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_aMFuWe3vEeKwLp35IbAIig" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_aMFuWu3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_aMFuW-3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_aMFuXO3vEeKwLp35IbAIig"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aMFuXe3vEeKwLp35IbAIig"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_aMFuXu3vEeKwLp35IbAIig" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_L7eCkO5WEeK0p4PkXjd-_Q" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_L7LusO5WEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_L7eCke5WEeK0p4PkXjd-_Q"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_kD_hwO5WEeK0p4PkXjd-_Q" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_fF4pAO5WEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kD_hwe5WEeK0p4PkXjd-_Q" x="61" y="25"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_mDO1oO5WEeK0p4PkXjd-_Q" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_mCwUgO5WEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_mDO1oe5WEeK0p4PkXjd-_Q"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_aMFuX-3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_aMFuYO3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_aMFuYe3vEeKwLp35IbAIig"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aMFuYu3vEeKwLp35IbAIig"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_aMFuY-3vEeKwLp35IbAIig" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_aMFuZO3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_aMFuZe3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_aMFuZu3vEeKwLp35IbAIig"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aMFuZ-3vEeKwLp35IbAIig"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_q85OgO3uEeKwLp35IbAIig"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aMFuUe3vEeKwLp35IbAIig" x="96" y="198"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_fyt_oO3vEeKwLp35IbAIig" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fyt_ou3vEeKwLp35IbAIig" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fyt_o-3vEeKwLp35IbAIig" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fyt_pO3vEeKwLp35IbAIig" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fyt_pe3vEeKwLp35IbAIig" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fyt_pu3vEeKwLp35IbAIig" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fyt_p-3vEeKwLp35IbAIig" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_fyt_qO3vEeKwLp35IbAIig" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_fyt_qe3vEeKwLp35IbAIig" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_p4HscO5qEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_p3vR8O5qEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_p4Hsce5qEeK0p4PkXjd-_Q"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_fyt_qu3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_fyt_q-3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_fyt_rO3vEeKwLp35IbAIig"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fyt_re3vEeKwLp35IbAIig"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_fyt_ru3vEeKwLp35IbAIig" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_GQIF0O5VEeK0p4PkXjd-_Q" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_GOgVMO5VEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_GQIF0e5VEeK0p4PkXjd-_Q"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_fyt_r-3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_fyt_sO3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_fyt_se3vEeKwLp35IbAIig"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fyt_su3vEeKwLp35IbAIig"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_fy0GQO3vEeKwLp35IbAIig" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_fy0GQe3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_fy0GQu3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_fy0GQ-3vEeKwLp35IbAIig"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fy0GRO3vEeKwLp35IbAIig"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_fyVlIO3vEeKwLp35IbAIig"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fyt_oe3vEeKwLp35IbAIig" x="96" y="438"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_28aOsO5VEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_28gVUO5VEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_28gVUe5VEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_28gVUu5VEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_28gVU-5VEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_28gVVO5VEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_28gVVe5VEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_28gVVu5VEeK0p4PkXjd-_Q" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_28mb8O5VEeK0p4PkXjd-_Q" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_28mb8e5VEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_28mb8u5VEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_28mb8-5VEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_28mb9O5VEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_28mb9e5VEeK0p4PkXjd-_Q" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_28mb9u5VEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_28mb9-5VEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_28mb-O5VEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_28mb-e5VEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_28mb-u5VEeK0p4PkXjd-_Q" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_28mb--5VEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_28mb_O5VEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_28mb_e5VEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_28mb_u5VEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_-vaacNa7EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_28aOse5VEeK0p4PkXjd-_Q" x="492" y="444"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_R-02sO5XEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_R-02su5XEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_R-02s-5XEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_R-02tO5XEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_R-02te5XEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_R-02tu5XEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_R-02t-5XEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_R-02uO5XEeK0p4PkXjd-_Q" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_R-02ue5XEeK0p4PkXjd-_Q" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_R-02uu5XEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_R-02u-5XEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_R-02vO5XEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_R-02ve5XEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_R-02vu5XEeK0p4PkXjd-_Q" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_R-02v-5XEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_R-02wO5XEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_R-02we5XEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_R-02wu5XEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_R-02w-5XEeK0p4PkXjd-_Q" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_R-02xO5XEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_R-02xe5XEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_R-02xu5XEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_R-02x-5XEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_R-WVkO5XEeK0p4PkXjd-_Q"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_R-02se5XEeK0p4PkXjd-_Q" x="24" y="611"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_UfT2cO5XEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UfT2cu5XEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UfT2c-5XEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UfT2dO5XEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UfT2de5XEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UfT2du5XEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UfT2d-5XEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_UfT2eO5XEeK0p4PkXjd-_Q" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_UfT2ee5XEeK0p4PkXjd-_Q" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_UfT2eu5XEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_UfT2e-5XEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_UfT2fO5XEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UfT2fe5XEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_UfT2fu5XEeK0p4PkXjd-_Q" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_UfT2f-5XEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_UfT2gO5XEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_UfT2ge5XEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UfT2gu5XEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_UfT2g-5XEeK0p4PkXjd-_Q" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_UfT2hO5XEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_UfT2he5XEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_UfT2hu5XEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UfT2h-5XEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_Ue7b8O5XEeK0p4PkXjd-_Q"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UfT2ce5XEeK0p4PkXjd-_Q" x="222" y="612"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_JSk6cO5mEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JSk6cu5mEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JSk6c-5mEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JSk6dO5mEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JSk6de5mEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JSk6du5mEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JSk6d-5mEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cyvucO5mEeK0p4PkXjd-_Q" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cyvuce5mEeK0p4PkXjd-_Q" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cyvucu5mEeK0p4PkXjd-_Q" key="StereotypeList" value="Ecore::EClass"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cyvuc-5mEeK0p4PkXjd-_Q" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cyvudO5mEeK0p4PkXjd-_Q" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cyvude5mEeK0p4PkXjd-_Q" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_JSk6eO5mEeK0p4PkXjd-_Q" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_JSk6ee5mEeK0p4PkXjd-_Q" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_NCGgMO5mEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_NBuFsO5mEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_NCGgMe5mEeK0p4PkXjd-_Q"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_JSk6eu5mEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_JSk6e-5mEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_JSk6fO5mEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JSk6fe5mEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_JSk6fu5mEeK0p4PkXjd-_Q" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_JSk6f-5mEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_JSk6gO5mEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_JSk6ge5mEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JSk6gu5mEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_JSk6g-5mEeK0p4PkXjd-_Q" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_JSk6hO5mEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_JSk6he5mEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_JSk6hu5mEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JSk6h-5mEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_JSMf8O5mEeK0p4PkXjd-_Q"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JSk6ce5mEeK0p4PkXjd-_Q" x="528" y="210"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_-0YU4O5zEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-0YU4u5zEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-0YU4-5zEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-0YU5O5zEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-0YU5e5zEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-0YU5u5zEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-0YU5-5zEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_-0YU6O5zEeK0p4PkXjd-_Q" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_-0YU6e5zEeK0p4PkXjd-_Q" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_-0YU6u5zEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_-0YU6-5zEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_-0YU7O5zEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-0YU7e5zEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_-0YU7u5zEeK0p4PkXjd-_Q" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_-0YU7-5zEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_-0YU8O5zEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_-0YU8e5zEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-0YU8u5zEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_-0YU8-5zEeK0p4PkXjd-_Q" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_-0YU9O5zEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_-0YU9e5zEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_-0YU9u5zEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-0YU9-5zEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_-z_6YO5zEeK0p4PkXjd-_Q"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-0YU4e5zEeK0p4PkXjd-_Q" x="420" y="612"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_JhQv0O-cEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JhQv0u-cEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JhQv0--cEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JhQv1O-cEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JhQv1e-cEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JhQv1u-cEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JhQv1--cEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_JhQv2O-cEeK0p4PkXjd-_Q" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_JhQv2e-cEeK0p4PkXjd-_Q" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_JhQv2u-cEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_JhQv2--cEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_JhQv3O-cEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JhQv3e-cEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_JhQv3u-cEeK0p4PkXjd-_Q" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_JhQv3--cEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_JhQv4O-cEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_JhQv4e-cEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JhQv4u-cEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_JhQv4--cEeK0p4PkXjd-_Q" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_JhQv5O-cEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_JhQv5e-cEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_JhQv5u-cEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JhQv5--cEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_JgyOsO-cEeK0p4PkXjd-_Q"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JhQv0e-cEeK0p4PkXjd-_Q" x="120" y="726"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_GwJEUO-iEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GwJEUu-iEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GwJEU--iEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GwJEVO-iEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GwJEVe-iEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GwJEVu-iEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GwJEV--iEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_GwJEWO-iEeK0p4PkXjd-_Q" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GwJEWe-iEeK0p4PkXjd-_Q" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GwJEWu-iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GwJEW--iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GwJEXO-iEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GwJEXe-iEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GwJEXu-iEeK0p4PkXjd-_Q" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GwJEX--iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GwJEYO-iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GwJEYe-iEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GwJEYu-iEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GwJEY--iEeK0p4PkXjd-_Q" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GwJEZO-iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GwJEZe-iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GwJEZu-iEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GwJEZ--iEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_Gvwp0O-iEeK0p4PkXjd-_Q"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GwJEUe-iEeK0p4PkXjd-_Q" x="315" y="763"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_xaib4O-lEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xajqAO-lEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xak4IO-lEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xak4Ie-lEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xak4Iu-lEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xak4I--lEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xak4JO-lEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_xak4Je-lEeK0p4PkXjd-_Q" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_xalfMO-lEeK0p4PkXjd-_Q" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_xalfMe-lEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_xalfMu-lEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_xalfM--lEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xalfNO-lEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_xalfNe-lEeK0p4PkXjd-_Q" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_xalfNu-lEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_xalfN--lEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_xalfOO-lEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xalfOe-lEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_xalfOu-lEeK0p4PkXjd-_Q" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_xalfO--lEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_xalfPO-lEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_xalfPe-lEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xalfPu-lEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_xZ-bMO-lEeK0p4PkXjd-_Q"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xaib4e-lEeK0p4PkXjd-_Q" x="509" y="764"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_XyHrUBZ1EeOZwp016gnCFQ" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XyHrUhZ1EeOZwp016gnCFQ" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XyHrUxZ1EeOZwp016gnCFQ" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XyHrVBZ1EeOZwp016gnCFQ" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XyHrVRZ1EeOZwp016gnCFQ" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XyHrVhZ1EeOZwp016gnCFQ" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XyHrVxZ1EeOZwp016gnCFQ" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_XyHrWBZ1EeOZwp016gnCFQ" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_XyHrWRZ1EeOZwp016gnCFQ" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_XyHrWhZ1EeOZwp016gnCFQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_XyHrWxZ1EeOZwp016gnCFQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_XyHrXBZ1EeOZwp016gnCFQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XyHrXRZ1EeOZwp016gnCFQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_XyHrXhZ1EeOZwp016gnCFQ" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_XyHrXxZ1EeOZwp016gnCFQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_XyHrYBZ1EeOZwp016gnCFQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_XyHrYRZ1EeOZwp016gnCFQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XyHrYhZ1EeOZwp016gnCFQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_XyHrYxZ1EeOZwp016gnCFQ" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_XyHrZBZ1EeOZwp016gnCFQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_XyHrZRZ1EeOZwp016gnCFQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_XyHrZhZ1EeOZwp016gnCFQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XyHrZxZ1EeOZwp016gnCFQ"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_Xxh1cBZ1EeOZwp016gnCFQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XyHrURZ1EeOZwp016gnCFQ" x="644" y="622"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_UCFqMe3vEeKwLp35IbAIig"/>
+    <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+    <edges xmi:type="notation:Connector" xmi:id="_aMR7kO3vEeKwLp35IbAIig" type="4001" source="_aL5hEO3vEeKwLp35IbAIig" target="_aMFuUO3vEeKwLp35IbAIig" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_aMR7k-3vEeKwLp35IbAIig" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_aMR7lO3vEeKwLp35IbAIig" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_aMR7le3vEeKwLp35IbAIig" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_aMR7lu3vEeKwLp35IbAIig" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_aMR7l-3vEeKwLp35IbAIig" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_aMR7mO3vEeKwLp35IbAIig" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_aMR7me3vEeKwLp35IbAIig" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_aMR7mu3vEeKwLp35IbAIig" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_aMR7m-3vEeKwLp35IbAIig" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_aMR7nO3vEeKwLp35IbAIig" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_aMR7ne3vEeKwLp35IbAIig" visible="false" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_aMR7nu3vEeKwLp35IbAIig" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_aMR7ke3vEeKwLp35IbAIig" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_3GHqIO3uEeKwLp35IbAIig"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aMR7ku3vEeKwLp35IbAIig" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_iQEy4O3vEeKwLp35IbAIig" type="4001" source="_aMFuUO3vEeKwLp35IbAIig" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_iQEy4-3vEeKwLp35IbAIig" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_iQEy5O3vEeKwLp35IbAIig" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_iQEy5e3vEeKwLp35IbAIig" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_iQEy5u3vEeKwLp35IbAIig" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_iQEy5-3vEeKwLp35IbAIig" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_iQEy6O3vEeKwLp35IbAIig" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_iQEy6e3vEeKwLp35IbAIig" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_iQEy6u3vEeKwLp35IbAIig" y="65"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_iQEy6-3vEeKwLp35IbAIig" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_iQEy7O3vEeKwLp35IbAIig" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_iQEy7e3vEeKwLp35IbAIig" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_iQEy7u3vEeKwLp35IbAIig" x="-12" y="-31"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_iQEy4e3vEeKwLp35IbAIig" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_iPmRwO3vEeKwLp35IbAIig"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iQEy4u3vEeKwLp35IbAIig" points="[-43, 56, 92, -120]$[-95, 124, 40, -52]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iQXGwO3vEeKwLp35IbAIig" id="(0.2196078431372549,0.8611111111111112)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iQXGwe3vEeKwLp35IbAIig" id="(0.2554112554112554,0.038461538461538464)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_4DtN8O5VEeK0p4PkXjd-_Q" type="4001" source="_fyt_oO3vEeKwLp35IbAIig" target="_28aOsO5VEeK0p4PkXjd-_Q" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_4DtN8-5VEeK0p4PkXjd-_Q" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_4DtN9O5VEeK0p4PkXjd-_Q" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_4DtN9e5VEeK0p4PkXjd-_Q" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_4DtN9u5VEeK0p4PkXjd-_Q" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_4DtN9-5VEeK0p4PkXjd-_Q" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_4DtN-O5VEeK0p4PkXjd-_Q" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_4DtN-e5VEeK0p4PkXjd-_Q" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_4DtN-u5VEeK0p4PkXjd-_Q" x="-33" y="17"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_4DtN--5VEeK0p4PkXjd-_Q" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_4DtN_O5VEeK0p4PkXjd-_Q" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_4DtN_e5VEeK0p4PkXjd-_Q" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_4DtN_u5VEeK0p4PkXjd-_Q" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_4DtN8e5VEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_4DImMO5VEeK0p4PkXjd-_Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4DtN8u5VEeK0p4PkXjd-_Q" points="[6, -7, -170, 0]$[171, -10, -5, -3]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4D_h0O5VEeK0p4PkXjd-_Q" id="(0.974025974025974,0.40384615384615385)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4D_h0e5VEeK0p4PkXjd-_Q" id="(0.05,0.29)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_Y9OMMO5XEeK0p4PkXjd-_Q" type="4002" source="_R-02sO5XEeK0p4PkXjd-_Q" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Y9US0O5XEeK0p4PkXjd-_Q" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Y9US0e5XEeK0p4PkXjd-_Q" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_Y9OMMe5XEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_Y8pkcO5XEeK0p4PkXjd-_Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Y9OMMu5XEeK0p4PkXjd-_Q" points="[12, -10, -97, 77]$[103, -79, -6, 8]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Y9US0u5XEeK0p4PkXjd-_Q" id="(0.41739130434782606,0.1)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Y9US0-5XEeK0p4PkXjd-_Q" id="(0.36796536796536794,0.9230769230769231)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_ZyK3MO5XEeK0p4PkXjd-_Q" type="4002" source="_UfT2cO5XEeK0p4PkXjd-_Q" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ZyK3M-5XEeK0p4PkXjd-_Q" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ZyK3NO5XEeK0p4PkXjd-_Q" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_ZyK3Me5XEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_ZxycsO5XEeK0p4PkXjd-_Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ZyK3Mu5XEeK0p4PkXjd-_Q" points="[-8, -12, 50, 76]$[-56, -82, 2, 6]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZyXEcO5XEeK0p4PkXjd-_Q" id="(0.4642857142857143,0.12)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZyXEce5XEeK0p4PkXjd-_Q" id="(0.5757575757575758,0.9423076923076923)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_QgWvwO5mEeK0p4PkXjd-_Q" type="4001" source="_JSk6cO5mEeK0p4PkXjd-_Q" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_QgX94O5mEeK0p4PkXjd-_Q" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_QgX94e5mEeK0p4PkXjd-_Q" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_QgX94u5mEeK0p4PkXjd-_Q" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_QgX94-5mEeK0p4PkXjd-_Q" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_QgYk8O5mEeK0p4PkXjd-_Q" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_QgYk8e5mEeK0p4PkXjd-_Q" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_QgYk8u5mEeK0p4PkXjd-_Q" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_QgYk8-5mEeK0p4PkXjd-_Q" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_QgYk9O5mEeK0p4PkXjd-_Q" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_QgYk9e5mEeK0p4PkXjd-_Q" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_QgYk9u5mEeK0p4PkXjd-_Q" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_QgYk9-5mEeK0p4PkXjd-_Q" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_QgWvwe5mEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_QfvrwO5mEeK0p4PkXjd-_Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QgWvwu5mEeK0p4PkXjd-_Q" points="[0, 15, 251, -111]$[0, 77, 251, -49]$[-251, 77, 0, -49]$[-251, 119, 0, -7]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Qghu4O5mEeK0p4PkXjd-_Q" id="(0.24342105263157895,0.8846153846153846)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Qghu4e5mEeK0p4PkXjd-_Q" id="(0.9437229437229437,0.0673076923076923)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_hnJRkO5mEeK0p4PkXjd-_Q" type="4001" source="_aMFuUO3vEeKwLp35IbAIig" target="_JSk6cO5mEeK0p4PkXjd-_Q" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_hnJRk-5mEeK0p4PkXjd-_Q" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hnJRlO5mEeK0p4PkXjd-_Q" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_hnPYMO5mEeK0p4PkXjd-_Q" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hnPYMe5mEeK0p4PkXjd-_Q" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_hnPYMu5mEeK0p4PkXjd-_Q" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hnPYM-5mEeK0p4PkXjd-_Q" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_hnPYNO5mEeK0p4PkXjd-_Q" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hnPYNe5mEeK0p4PkXjd-_Q" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_hnPYNu5mEeK0p4PkXjd-_Q" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hnPYN-5mEeK0p4PkXjd-_Q" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_hnPYOO5mEeK0p4PkXjd-_Q" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hnPYOe5mEeK0p4PkXjd-_Q" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_hnJRke5mEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_hmkp0O5mEeK0p4PkXjd-_Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hnJRku5mEeK0p4PkXjd-_Q" points="[3, 3, -87, 0]$[90, 3, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hnVe0O5mEeK0p4PkXjd-_Q" id="(0.9882352941176471,0.5625)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hnVe0e5mEeK0p4PkXjd-_Q" id="(0.0,0.532258064516129)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_CpMqUO50EeK0p4PkXjd-_Q" type="4002" source="_-0YU4O5zEeK0p4PkXjd-_Q" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_CpMqU-50EeK0p4PkXjd-_Q" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_CpMqVO50EeK0p4PkXjd-_Q" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_CpMqUe50EeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_Co0P0O50EeK0p4PkXjd-_Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CpMqUu50EeK0p4PkXjd-_Q" points="[-23, -11, 134, 67]$[-145, -70, 12, 8]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CpSw8O50EeK0p4PkXjd-_Q" id="(0.21951219512195122,0.11)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CpSw8e50EeK0p4PkXjd-_Q" id="(0.8398268398268398,0.9304347826086956)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_QK9AoO-cEeK0p4PkXjd-_Q" type="4002" source="_JhQv0O-cEeK0p4PkXjd-_Q" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_QK-OwO-cEeK0p4PkXjd-_Q" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_QK-Owe-cEeK0p4PkXjd-_Q" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_QK9nsO-cEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_QKhi0O-cEeK0p4PkXjd-_Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QK9nse-cEeK0p4PkXjd-_Q" points="[1, -9, -24, 183]$[22, -182, -3, 10]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QLCgMO-cEeK0p4PkXjd-_Q" id="(0.43902439024390244,0.09)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QLCgMe-cEeK0p4PkXjd-_Q" id="(0.4458874458874459,0.9130434782608695)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_LuSZUO-iEeK0p4PkXjd-_Q" type="4002" source="_GwJEUO-iEeK0p4PkXjd-_Q" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_LuSZU--iEeK0p4PkXjd-_Q" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_LuSZVO-iEeK0p4PkXjd-_Q" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_LuSZUe-iEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_LuAFcO-iEeK0p4PkXjd-_Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LuSZUu-iEeK0p4PkXjd-_Q" points="[-7, -15, 94, 223]$[-85, -225, 16, 13]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LuYf8O-iEeK0p4PkXjd-_Q" id="(0.424,0.15)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LuYf8e-iEeK0p4PkXjd-_Q" id="(0.7402597402597403,0.8869565217391304)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_02FVsO-lEeK0p4PkXjd-_Q" type="4002" source="_xaib4O-lEeK0p4PkXjd-_Q" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_02LcUO-lEeK0p4PkXjd-_Q" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_02LcUe-lEeK0p4PkXjd-_Q" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_02FVse-lEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_01zB0O-lEeK0p4PkXjd-_Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_02FVsu-lEeK0p4PkXjd-_Q" points="[-7, -5, 274, 229]$[-252, -216, 29, 18]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_02LcUu-lEeK0p4PkXjd-_Q" id="(0.32,0.05)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_02LcU--lEeK0p4PkXjd-_Q" id="(0.7792207792207793,0.8434782608695652)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_a9MgMBZ1EeOZwp016gnCFQ" type="4002" source="_XyHrUBZ1EeOZwp016gnCFQ" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_a9MgMxZ1EeOZwp016gnCFQ" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_a9MgNBZ1EeOZwp016gnCFQ" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_a9MgMRZ1EeOZwp016gnCFQ" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_a8mqUBZ1EeOZwp016gnCFQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_a9MgMhZ1EeOZwp016gnCFQ" points="[-31, -7, 335, 78]$[-352, -79, 14, 6]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_a9MgNRZ1EeOZwp016gnCFQ" id="(0.26515151515151514,0.07)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_a9MgNhZ1EeOZwp016gnCFQ" id="(0.9393939393939394,0.9217391304347826)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_Up8U8P91EeKlldop5b2mtw" type="PapyrusUMLClassDiagram" name="LayerOperators" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_mqw8QAkcEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mq3C4AkcEeOnVqX9VcfeWQ" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mq3C4QkcEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mq9JgAkcEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mq9JgQkcEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mq9JggkcEeOnVqX9VcfeWQ" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mq9JgwkcEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_mq9JhAkcEeOnVqX9VcfeWQ" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_mq9JhQkcEeOnVqX9VcfeWQ" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_FKWlwAw_EeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#__XEYgAw-EeOjX-JbGFEH7w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_FKWlwQw_EeOjX-JbGFEH7w" x="85" y="11"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_mq9JhgkcEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_mq9JhwkcEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_mq9JiAkcEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mq9JiQkcEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_mq9JigkcEeOnVqX9VcfeWQ" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_Dh-88AxDEeOjX-JbGFEH7w" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_Dhl7YAxDEeOjX-JbGFEH7w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_Dh-88QxDEeOjX-JbGFEH7w"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_0VwJkA3SEeOjX-JbGFEH7w" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_0VaLUA3SEeOjX-JbGFEH7w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_0VwJkQ3SEeOjX-JbGFEH7w"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_mq9JiwkcEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_mq9JjAkcEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_mq9JjQkcEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mq9JjgkcEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_mq9JjwkcEeOnVqX9VcfeWQ" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_mq9JkAkcEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_mq9JkQkcEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_mq9JkgkcEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mq9JkwkcEeOnVqX9VcfeWQ"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_WuVRUNjjEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mqw8QQkcEeOnVqX9VcfeWQ" x="-162" y="246"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_GLILsAkdEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GLILsgkdEeOnVqX9VcfeWQ" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GLILswkdEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GLILtAkdEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GLILtQkdEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GLILtgkdEeOnVqX9VcfeWQ" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GLILtwkdEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_GLILuAkdEeOnVqX9VcfeWQ" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GLILuQkdEeOnVqX9VcfeWQ" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_ysgoIAkiEeOnVqX9VcfeWQ" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_ysOUQAkiEeOnVqX9VcfeWQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_ysgoIQkiEeOnVqX9VcfeWQ"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GLILugkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GLILuwkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GLILvAkdEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GLILvQkdEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GLOSUAkdEeOnVqX9VcfeWQ" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_w6KWMAkhEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_w5x7sAkhEeOnVqX9VcfeWQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_w6KWMQkhEeOnVqX9VcfeWQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_T0Ap8AkiEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_TzuWEAkiEeOnVqX9VcfeWQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_T0Ap8QkiEeOnVqX9VcfeWQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_huCU0AkiEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_htp6UAkiEeOnVqX9VcfeWQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_huCU0QkiEeOnVqX9VcfeWQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_okYS0AkoEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_oj_4UAkoEeOnVqX9VcfeWQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_okYS0QkoEeOnVqX9VcfeWQ"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GLOSUQkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GLOSUgkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GLOSUwkdEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GLOSVAkdEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GLOSVQkdEeOnVqX9VcfeWQ" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GLOSVgkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GLOSVwkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GLOSWAkdEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GLOSWQkdEeOnVqX9VcfeWQ"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_GKddUAkdEeOnVqX9VcfeWQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GLILsQkdEeOnVqX9VcfeWQ" x="288" y="222" width="391"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_T6PAAAkdEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T6PAAgkdEeOnVqX9VcfeWQ" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T6PAAwkdEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T6PABAkdEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T6PABQkdEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T6PABgkdEeOnVqX9VcfeWQ" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T6PABwkdEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_T6PACAkdEeOnVqX9VcfeWQ" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_T6PACQkdEeOnVqX9VcfeWQ" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_TfenkAkmEeOnVqX9VcfeWQ" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_TfMTsAkmEeOnVqX9VcfeWQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_TfenkQkmEeOnVqX9VcfeWQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_rUDAsA2fEeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1yttEA2hEeOjX-JbGFEH7w" source="Stereotype_Annotation">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1yttEQ2hEeOjX-JbGFEH7w" key="StereotypeWithQualifiedNameList" value=""/>
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1yuUIA2hEeOjX-JbGFEH7w" key="StereotypeList" value="Ecore::EReference"/>
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1yuUIQ2hEeOjX-JbGFEH7w" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1yuUIg2hEeOjX-JbGFEH7w" key="PropStereoDisplay" value=""/>
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1yuUIw2hEeOjX-JbGFEH7w" key="StereotypePropertyLocation" value="Compartment"/>
+          </eAnnotations>
+          <element xmi:type="uml:Property" href="layers.uml#_rTr0UA2fEeOjX-JbGFEH7w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_rUDAsQ2fEeOjX-JbGFEH7w"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_T6PACgkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_T6PACwkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_T6PADAkdEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T6PADQkdEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_T6PADgkdEeOnVqX9VcfeWQ" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_ZkDggAkjEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_ZjkYUAkjEeOnVqX9VcfeWQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_ZkDggQkjEeOnVqX9VcfeWQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_1LL0kAkjEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_sQbgEAkjEeOnVqX9VcfeWQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_1LL0kQkjEeOnVqX9VcfeWQ" x="80" y="23"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_6U7VkAkjEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_6Ui7EAkjEeOnVqX9VcfeWQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_6U7VkQkjEeOnVqX9VcfeWQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_NyJjQAkkEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_HQzWIAkkEeOnVqX9VcfeWQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_NyJjQQkkEeOnVqX9VcfeWQ" x="69" y="59"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_U31MgAkkEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_U3cyAAkkEeOnVqX9VcfeWQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_U31MgQkkEeOnVqX9VcfeWQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_wq9owBKGEeO9e9pZ1EIGJg" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_p1keQBKGEeO9e9pZ1EIGJg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_wq9owRKGEeO9e9pZ1EIGJg" x="108" y="97"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_T6PADwkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_T6PAEAkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_T6PAEQkdEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T6PAEgkdEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_T6PAEwkdEeOnVqX9VcfeWQ" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_T6PAFAkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_T6PAFQkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_T6PAFgkdEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T6PAFwkdEeOnVqX9VcfeWQ"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_T5we4AkdEeOnVqX9VcfeWQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T6PAAQkdEeOnVqX9VcfeWQ" x="294" y="-132"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_wlZj8AkdEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wlZj8gkdEeOnVqX9VcfeWQ" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wlZj8wkdEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wlZj9AkdEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wlZj9QkdEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wlZj9gkdEeOnVqX9VcfeWQ" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wlZj9wkdEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_wlZj-AkdEeOnVqX9VcfeWQ" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_wlZj-QkdEeOnVqX9VcfeWQ" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_AmaP0AkmEeOnVqX9VcfeWQ" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_8J3zEAklEeOnVqX9VcfeWQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_AmaP0QkmEeOnVqX9VcfeWQ" x="78" y="14"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_wlZj-gkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_wlZj-wkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_wlZj_AkdEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wlZj_QkdEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_wlZj_gkdEeOnVqX9VcfeWQ" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_oF32EAkhEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_WKdZYAkhEeOnVqX9VcfeWQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_oF32EQkhEeOnVqX9VcfeWQ" x="77" y="23"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_wlZj_wkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_wlZkAAkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_wlZkAQkdEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wlZkAgkdEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_wlZkAwkdEeOnVqX9VcfeWQ" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_wlZkBAkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_wlZkBQkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_wlZkBgkdEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wlZkBwkdEeOnVqX9VcfeWQ"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_wk7C0AkdEeOnVqX9VcfeWQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wlZj8QkdEeOnVqX9VcfeWQ" x="822" y="222" width="138"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_G-_bIAkpEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G-_bIgkpEeOnVqX9VcfeWQ" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G-_bIwkpEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G-_bJAkpEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G-_bJQkpEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G-_bJgkpEeOnVqX9VcfeWQ" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G-_bJwkpEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_G-_bKAkpEeOnVqX9VcfeWQ" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_G-_bKQkpEeOnVqX9VcfeWQ" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_G-_bKgkpEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_G-_bKwkpEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_G-_bLAkpEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G-_bLQkpEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_G-_bLgkpEeOnVqX9VcfeWQ" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_G-_bLwkpEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_G-_bMAkpEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_G-_bMQkpEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G-_bMgkpEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_G-_bMwkpEeOnVqX9VcfeWQ" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_G-_bNAkpEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_G-_bNQkpEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_G-_bNgkpEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G-_bNwkpEeOnVqX9VcfeWQ"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_G-g6AAkpEeOnVqX9VcfeWQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G-_bIQkpEeOnVqX9VcfeWQ" x="696" y="378"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_ELjJgAkxEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ELjJggkxEeOnVqX9VcfeWQ" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ELjJgwkxEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ELjJhAkxEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ELjJhQkxEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ELjJhgkxEeOnVqX9VcfeWQ" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ELjJhwkxEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ELjJiAkxEeOnVqX9VcfeWQ" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ELjJiQkxEeOnVqX9VcfeWQ" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ELjJigkxEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ELjJiwkxEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ELjJjAkxEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ELjJjQkxEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ELjJjgkxEeOnVqX9VcfeWQ" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ELjJjwkxEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ELjJkAkxEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ELjJkQkxEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ELjJkgkxEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ELjJkwkxEeOnVqX9VcfeWQ" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ELjJlAkxEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ELjJlQkxEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ELjJlgkxEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ELjJlwkxEeOnVqX9VcfeWQ"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_ELKvAAkxEeOnVqX9VcfeWQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ELjJgQkxEeOnVqX9VcfeWQ" x="246" y="492" width="208"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_HyFLUAkxEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HyFLUgkxEeOnVqX9VcfeWQ" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HyFLUwkxEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HyFLVAkxEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HyFLVQkxEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HyFLVgkxEeOnVqX9VcfeWQ" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HyLR8AkxEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_HyLR8QkxEeOnVqX9VcfeWQ" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_HyLR8gkxEeOnVqX9VcfeWQ" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_HyLR8wkxEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_HyLR9AkxEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_HyLR9QkxEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HyLR9gkxEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_HyLR9wkxEeOnVqX9VcfeWQ" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_HyLR-AkxEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_HyLR-QkxEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_HyLR-gkxEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HyLR-wkxEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_HyLR_AkxEeOnVqX9VcfeWQ" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_HyLR_QkxEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_HyLR_gkxEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_HyLR_wkxEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HyLSAAkxEeOnVqX9VcfeWQ"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_Hxsw0AkxEeOnVqX9VcfeWQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HyFLUQkxEeOnVqX9VcfeWQ" x="522" y="492" width="229"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_muS64AnsEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_muS64gnsEeOnVqX9VcfeWQ" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_muS64wnsEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_muS65AnsEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_muS65QnsEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_muS65gnsEeOnVqX9VcfeWQ" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_muS65wnsEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_muS66AnsEeOnVqX9VcfeWQ" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_muS66QnsEeOnVqX9VcfeWQ" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_zQxkAAnsEeOnVqX9VcfeWQ" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_yEySAAnsEeOnVqX9VcfeWQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_zQxkAQnsEeOnVqX9VcfeWQ" x="59" y="4"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_XTyfQAntEeOnVqX9VcfeWQ" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_XTdvIAntEeOnVqX9VcfeWQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XTyfQQntEeOnVqX9VcfeWQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_uNebYA3gEeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_XwmlsA3gEeOjX-JbGFEH7w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_uNebYQ3gEeOjX-JbGFEH7w" x="54" y="45"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_muS66gnsEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_muS66wnsEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_muS67AnsEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_muS67QnsEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_muS67gnsEeOnVqX9VcfeWQ" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_vb3hIA3gEeOjX-JbGFEH7w" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_vbiJ8A3gEeOjX-JbGFEH7w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_vb3hIQ3gEeOjX-JbGFEH7w"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_muS67wnsEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_muS68AnsEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_muS68QnsEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_muS68gnsEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_muS68wnsEeOnVqX9VcfeWQ" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_muS69AnsEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_muS69QnsEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_muS69gnsEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_muS69wnsEeOnVqX9VcfeWQ"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_mt6gYAnsEeOnVqX9VcfeWQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_muS64QnsEeOnVqX9VcfeWQ" x="924" y="378" width="229" height="127"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_G71l8AxJEeOjX-JbGFEH7w" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G71l8gxJEeOjX-JbGFEH7w" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G71l8wxJEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G71l9AxJEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G71l9QxJEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G71l9gxJEeOjX-JbGFEH7w" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G71l9wxJEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_G71l-AxJEeOjX-JbGFEH7w" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_G71l-QxJEeOjX-JbGFEH7w" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_G71l-gxJEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_G71l-wxJEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_G71l_AxJEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G71l_QxJEeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_G71l_gxJEeOjX-JbGFEH7w" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_G71l_wxJEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_G71mAAxJEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_G71mAQxJEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G71mAgxJEeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_G71mAwxJEeOjX-JbGFEH7w" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_G71mBAxJEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_G71mBQxJEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_G71mBgxJEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G71mBwxJEeOjX-JbGFEH7w"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_G7XE0AxJEeOjX-JbGFEH7w"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G71l8QxJEeOjX-JbGFEH7w" x="672" y="666" width="262"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_LU3bsAxJEeOjX-JbGFEH7w" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LU3bsgxJEeOjX-JbGFEH7w" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LU3bswxJEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LU3btAxJEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LU3btQxJEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LU3btgxJEeOjX-JbGFEH7w" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LU3btwxJEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_LU3buAxJEeOjX-JbGFEH7w" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LU3buQxJEeOjX-JbGFEH7w" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LU3bugxJEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LU3buwxJEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LU3bvAxJEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LU3bvQxJEeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LU3bvgxJEeOjX-JbGFEH7w" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LU3bvwxJEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LU3bwAxJEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LU3bwQxJEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LU3bwgxJEeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LU3bwwxJEeOjX-JbGFEH7w" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LU3bxAxJEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LU3bxQxJEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LU3bxgxJEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LU3bxwxJEeOjX-JbGFEH7w"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_LUfBMAxJEeOjX-JbGFEH7w"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LU3bsQxJEeOjX-JbGFEH7w" x="390" y="666" width="255"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="__Arl4AxLEeOjX-JbGFEH7w" type="2009" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__AsM8AxLEeOjX-JbGFEH7w" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__As0AAxLEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__As0AQxLEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__As0AgxLEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__As0AwxLEeOjX-JbGFEH7w" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__As0BAxLEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Fy5gkAxMEeOjX-JbGFEH7w" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Fy5gkQxMEeOjX-JbGFEH7w" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Fy5gkgxMEeOjX-JbGFEH7w" key="StereotypeList" value="Ecore::EDataType"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Fy5gkwxMEeOjX-JbGFEH7w" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Fy5glAxMEeOjX-JbGFEH7w" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Fy5glQxMEeOjX-JbGFEH7w" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="__As0BQxLEeOjX-JbGFEH7w" type="5032"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__As0BgxLEeOjX-JbGFEH7w" type="7039">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__As0BwxLEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__As0CAxLEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__As0CQxLEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__As0CgxLEeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__AtbEAxLEeOjX-JbGFEH7w" type="7040">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__AtbEQxLEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__AtbEgxLEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__AtbEwxLEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__AtbFAxLEeOjX-JbGFEH7w"/>
+      </children>
+      <element xmi:type="uml:PrimitiveType" href="layers.uml#__ADTwAxLEeOjX-JbGFEH7w"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__Arl4QxLEeOjX-JbGFEH7w" x="1056" y="240" width="234"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_Up8U8f91EeKlldop5b2mtw"/>
+    <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+    <edges xmi:type="notation:Connector" xmi:id="_KTjZoAkdEeOnVqX9VcfeWQ" type="4001" source="_mqw8QAkcEeOnVqX9VcfeWQ" target="_GLILsAkdEeOnVqX9VcfeWQ" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_KTknwAkdEeOnVqX9VcfeWQ" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_KTlO0AkdEeOnVqX9VcfeWQ" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_KTlO0QkdEeOnVqX9VcfeWQ" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_KTlO0gkdEeOnVqX9VcfeWQ" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_KTlO0wkdEeOnVqX9VcfeWQ" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_KTlO1AkdEeOnVqX9VcfeWQ" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_KTlO1QkdEeOnVqX9VcfeWQ" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_KTl14AkdEeOnVqX9VcfeWQ" x="-47" y="16"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_KTl14QkdEeOnVqX9VcfeWQ" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_KTl14gkdEeOnVqX9VcfeWQ" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_KTl14wkdEeOnVqX9VcfeWQ" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_KTl15AkdEeOnVqX9VcfeWQ" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_KTjZoQkdEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_KSvhUAkdEeOnVqX9VcfeWQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_KTjZogkdEeOnVqX9VcfeWQ" points="[5, 6, -146, 0]$[151, 6, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KTyqMAkdEeOnVqX9VcfeWQ" id="(0.9662162162162162,0.42)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KTyqMQkdEeOnVqX9VcfeWQ" id="(0.0,0.42)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_X849IAkdEeOnVqX9VcfeWQ" type="4001" source="_T6PAAAkdEeOnVqX9VcfeWQ" target="_GLILsAkdEeOnVqX9VcfeWQ" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_X849IwkdEeOnVqX9VcfeWQ" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_X849JAkdEeOnVqX9VcfeWQ" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_X849JQkdEeOnVqX9VcfeWQ" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_X849JgkdEeOnVqX9VcfeWQ" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_X849JwkdEeOnVqX9VcfeWQ" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_X849KAkdEeOnVqX9VcfeWQ" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_X849KQkdEeOnVqX9VcfeWQ" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_X849KgkdEeOnVqX9VcfeWQ" x="-2" y="56"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_X849KwkdEeOnVqX9VcfeWQ" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_X849LAkdEeOnVqX9VcfeWQ" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_X849LQkdEeOnVqX9VcfeWQ" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_X849LgkdEeOnVqX9VcfeWQ" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_X849IQkdEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_X8acAAkdEeOnVqX9VcfeWQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_X849IgkdEeOnVqX9VcfeWQ" points="[-3, 5, 0, -56]$[-3, 60, 0, -1]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_X9FKYAkdEeOnVqX9VcfeWQ" id="(0.5089058524173028,0.9794871794871794)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_X9FKYQkdEeOnVqX9VcfeWQ" id="(0.5133689839572193,0.01)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_32P7YAkdEeOnVqX9VcfeWQ" type="4001" source="_T6PAAAkdEeOnVqX9VcfeWQ" target="_wlZj8AkdEeOnVqX9VcfeWQ" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_32QicAkdEeOnVqX9VcfeWQ" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_32RJgAkdEeOnVqX9VcfeWQ" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_32RJgQkdEeOnVqX9VcfeWQ" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_32RJggkdEeOnVqX9VcfeWQ" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_32RJgwkdEeOnVqX9VcfeWQ" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_32RJhAkdEeOnVqX9VcfeWQ" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_32RJhQkdEeOnVqX9VcfeWQ" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_32RJhgkdEeOnVqX9VcfeWQ" x="1" y="-89"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_32RJhwkdEeOnVqX9VcfeWQ" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_32RwkAkdEeOnVqX9VcfeWQ" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_32RwkQkdEeOnVqX9VcfeWQ" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_32RwkgkdEeOnVqX9VcfeWQ" x="41" y="-66"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_32P7YQkdEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_31lNAAkdEeOnVqX9VcfeWQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_32P7YgkdEeOnVqX9VcfeWQ" points="[10, 0, -100, -121]$[116, 0, 6, -121]$[116, 117, 6, -4]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_32aTcAkdEeOnVqX9VcfeWQ" id="(0.981651376146789,0.64)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_32a6gAkdEeOnVqX9VcfeWQ" id="(0.6521739130434783,0.038461538461538464)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_5yYQ4AkdEeOnVqX9VcfeWQ" type="4001" source="_GLILsAkdEeOnVqX9VcfeWQ" target="_wlZj8AkdEeOnVqX9VcfeWQ" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_5yYQ4wkdEeOnVqX9VcfeWQ" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5yYQ5AkdEeOnVqX9VcfeWQ" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5yYQ5QkdEeOnVqX9VcfeWQ" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5yYQ5gkdEeOnVqX9VcfeWQ" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5yYQ5wkdEeOnVqX9VcfeWQ" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5yYQ6AkdEeOnVqX9VcfeWQ" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5yYQ6QkdEeOnVqX9VcfeWQ" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5yYQ6gkdEeOnVqX9VcfeWQ" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5yYQ6wkdEeOnVqX9VcfeWQ" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5yYQ7AkdEeOnVqX9VcfeWQ" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5yYQ7QkdEeOnVqX9VcfeWQ" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5yYQ7gkdEeOnVqX9VcfeWQ" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_5yYQ4QkdEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_5x5vwAkdEeOnVqX9VcfeWQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5yYQ4gkdEeOnVqX9VcfeWQ" points="[9, 0, -194, -12]$[200, 12, -3, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5ykeIAkdEeOnVqX9VcfeWQ" id="(0.983957219251337,0.3282051282051282)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5ykeIQkdEeOnVqX9VcfeWQ" id="(0.021739130434782608,0.5)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_LBOhgAkpEeOnVqX9VcfeWQ" type="4002" source="_G-_bIAkpEeOnVqX9VcfeWQ" target="_wlZj8AkdEeOnVqX9VcfeWQ" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_LBOhgwkpEeOnVqX9VcfeWQ" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_LBOhhAkpEeOnVqX9VcfeWQ" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_LBOhgQkpEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_LAjzIAkpEeOnVqX9VcfeWQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LBOhggkpEeOnVqX9VcfeWQ" points="[9, -8, -57, 50]$[60, -49, -6, 9]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LBUoIAkpEeOnVqX9VcfeWQ" id="(0.608433734939759,0.08)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LBUoIQkpEeOnVqX9VcfeWQ" id="(0.2971014492753623,0.9217391304347826)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_OOdY4AkxEeOnVqX9VcfeWQ" type="4002" source="_ELjJgAkxEeOnVqX9VcfeWQ" target="_GLILsAkdEeOnVqX9VcfeWQ" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_OOdY4wkxEeOnVqX9VcfeWQ" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_OOdY5AkxEeOnVqX9VcfeWQ" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_OOdY4QkxEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_ON-3wAkxEeOnVqX9VcfeWQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OOdY4gkxEeOnVqX9VcfeWQ" points="[7, -9, -86, 106]$[87, -104, -6, 11]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OOjfgAkxEeOnVqX9VcfeWQ" id="(0.5048076923076923,0.09)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OOjfgQkxEeOnVqX9VcfeWQ" id="(0.2887700534759358,0.9371428571428572)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_PRQSoAkxEeOnVqX9VcfeWQ" type="4002" source="_HyFLUAkxEeOnVqX9VcfeWQ" target="_GLILsAkdEeOnVqX9VcfeWQ" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_PRQSowkxEeOnVqX9VcfeWQ" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_PRQSpAkxEeOnVqX9VcfeWQ" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_PRQSoQkxEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_PQ9-wAkxEeOnVqX9VcfeWQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_PRQSogkxEeOnVqX9VcfeWQ" points="[-6, -10, 54, 109]$[-55, -105, 5, 14]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PRWZQAkxEeOnVqX9VcfeWQ" id="(0.2183406113537118,0.1)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PRWZQQkxEeOnVqX9VcfeWQ" id="(0.6524064171122995,0.92)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_SfzL0AntEeOnVqX9VcfeWQ" type="4002" source="_muS64AnsEeOnVqX9VcfeWQ" target="_wlZj8AkdEeOnVqX9VcfeWQ" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Sf0Z8AntEeOnVqX9VcfeWQ" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Sf0Z8QntEeOnVqX9VcfeWQ" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_SfzL0QntEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_SfZjMAntEeOnVqX9VcfeWQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_SfzL0gntEeOnVqX9VcfeWQ" points="[-13, -10, 65, 50]$[-73, -51, 5, 9]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Sf4EUAntEeOnVqX9VcfeWQ" id="(0.4245810055865922,0.09615384615384616)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Sf4EUQntEeOnVqX9VcfeWQ" id="(0.7246376811594203,0.9217391304347826)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_TziRIAxJEeOjX-JbGFEH7w" type="4002" source="_LU3bsAxJEeOjX-JbGFEH7w" target="_HyFLUAkxEeOnVqX9VcfeWQ" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_TziRIwxJEeOjX-JbGFEH7w" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_TziRJAxJEeOjX-JbGFEH7w" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_TziRIQxJEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_TzDwAAxJEeOjX-JbGFEH7w"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_TziRIgxJEeOjX-JbGFEH7w" points="[0, 0, 0, 74]$[0, -74, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TzoXwAxJEeOjX-JbGFEH7w" id="(0.7568627450980392,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TzoXwQxJEeOjX-JbGFEH7w" id="(0.2663755458515284,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_UrLDwAxJEeOjX-JbGFEH7w" type="4002" source="_G71l8AxJEeOjX-JbGFEH7w" target="_HyFLUAkxEeOnVqX9VcfeWQ" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_UrLDwwxJEeOjX-JbGFEH7w" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_UrRKYAxJEeOjX-JbGFEH7w" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_UrLDwQxJEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_Uq4v4AxJEeOjX-JbGFEH7w"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_UrLDwgxJEeOjX-JbGFEH7w" points="[0, 0, 0, 74]$[0, -74, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UrRKYQxJEeOjX-JbGFEH7w" id="(0.14885496183206107,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UrRKYgxJEeOjX-JbGFEH7w" id="(0.8253275109170306,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_Vjf6UHbuEeOlpfB_tZS-QA" type="PapyrusUMLClassDiagram" name="LayersStack" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_bGfo0HbuEeOlpfB_tZS-QA" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfo0XbuEeOlpfB_tZS-QA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfo0nbuEeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfo03buEeOlpfB_tZS-QA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfo1HbuEeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfo1XbuEeOlpfB_tZS-QA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfo1nbuEeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bGfo13buEeOlpfB_tZS-QA" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bGfo2HbuEeOlpfB_tZS-QA" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_bGfo2XbuEeOlpfB_tZS-QA" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_AWx_gNjuEeKQqZMBCFd2Uw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfo2nbuEeOlpfB_tZS-QA" x="47" y="9"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_bGfo23buEeOlpfB_tZS-QA" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_AW-MwNjuEeKQqZMBCFd2Uw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfo3HbuEeOlpfB_tZS-QA" x="47" y="9"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_bGfo3XbuEeOlpfB_tZS-QA" type="3012" fontName="Segoe UI" lineColor="0">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfo3nbuEeOlpfB_tZS-QA" source="Stereotype_Annotation">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfo33buEeOlpfB_tZS-QA" key="StereotypeWithQualifiedNameList" value=""/>
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfo4HbuEeOlpfB_tZS-QA" key="StereotypeList" value="Ecore::EAttribute"/>
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfo4XbuEeOlpfB_tZS-QA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfo4nbuEeOlpfB_tZS-QA" key="PropStereoDisplay" value=""/>
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfo43buEeOlpfB_tZS-QA" key="StereotypePropertyLocation" value="Compartment"/>
+          </eAnnotations>
+          <element xmi:type="uml:Property" href="layers.uml#_mCUIAAxEEeOjX-JbGFEH7w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfo5HbuEeOlpfB_tZS-QA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_bGfo5XbuEeOlpfB_tZS-QA" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_qaozIAxEEeOjX-JbGFEH7w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfo5nbuEeOlpfB_tZS-QA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_bGfo53buEeOlpfB_tZS-QA" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_xcbgQGQ7EeOlpfB_tZS-QA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfo6HbuEeOlpfB_tZS-QA" x="153" y="77"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_E2yuoHluEeOlpfB_tZS-QA" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_E2soAHluEeOlpfB_tZS-QA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_E2yuoXluEeOlpfB_tZS-QA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bGfo6XbuEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bGfo6nbuEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bGfo63buEeOlpfB_tZS-QA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfo7HbuEeOlpfB_tZS-QA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bGfo7XbuEeOlpfB_tZS-QA" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_bGfo7nbuEeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfo73buEeOlpfB_tZS-QA" source="CustomAppearance_Annotation">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfo8HbuEeOlpfB_tZS-QA" key="CustomAppearance_MaskValue" value="17160"/>
+          </eAnnotations>
+          <element xmi:type="uml:Operation" href="layers.uml#_VdSFsO7HEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfo8XbuEeOlpfB_tZS-QA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_bGfo8nbuEeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfo83buEeOlpfB_tZS-QA" source="CustomAppearance_Annotation">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfo9HbuEeOlpfB_tZS-QA" key="CustomAppearance_MaskValue" value="17160"/>
+          </eAnnotations>
+          <element xmi:type="uml:Operation" href="layers.uml#_xfz8UO7HEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfo9XbuEeOlpfB_tZS-QA" x="93" y="23"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_bGfo9nbuEeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfo93buEeOlpfB_tZS-QA" source="CustomAppearance_Annotation">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfo-HbuEeOlpfB_tZS-QA" key="CustomAppearance_MaskValue" value="17160"/>
+          </eAnnotations>
+          <element xmi:type="uml:Operation" href="layers.uml#_x2PfUO7HEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfo-XbuEeOlpfB_tZS-QA" x="93" y="23"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_bGfo-nbuEeOlpfB_tZS-QA" type="3013" fontColor="8421504" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_Ps2L4GUaEeOlpfB_tZS-QA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfo-3buEeOlpfB_tZS-QA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_bGfo_HbuEeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_kzSSwGUdEeOlpfB_tZS-QA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfo_XbuEeOlpfB_tZS-QA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_g7BWwHbvEeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_YeJ4IHbvEeOlpfB_tZS-QA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_g7BWwXbvEeOlpfB_tZS-QA" x="212" y="84"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_VTiN4HluEeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_VTcHQHluEeOlpfB_tZS-QA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_VTiN4XluEeOlpfB_tZS-QA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_XeS1QXluEeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_XeS1QHluEeOlpfB_tZS-QA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XeS1QnluEeOlpfB_tZS-QA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_XNTkMXl0EeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_XNTkMHl0EeOlpfB_tZS-QA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XNTkMnl0EeOlpfB_tZS-QA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bGfo_nbuEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bGfo_3buEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bGfpAHbuEeOlpfB_tZS-QA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfpAXbuEeOlpfB_tZS-QA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bGfpAnbuEeOlpfB_tZS-QA" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bGfpA3buEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bGfpBHbuEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bGfpBXbuEeOlpfB_tZS-QA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfpBnbuEeOlpfB_tZS-QA"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_9IaAANjiEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfpCnbuEeOlpfB_tZS-QA" x="546" y="132" width="481" height="349"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_bGfp73buEeOlpfB_tZS-QA" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfp8HbuEeOlpfB_tZS-QA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfp8XbuEeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfp8nbuEeOlpfB_tZS-QA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfp83buEeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfp9HbuEeOlpfB_tZS-QA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfp9XbuEeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bGfp9nbuEeOlpfB_tZS-QA" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bGfp93buEeOlpfB_tZS-QA" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bGfp-HbuEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bGfp-XbuEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bGfp-nbuEeOlpfB_tZS-QA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfp-3buEeOlpfB_tZS-QA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bGfp_HbuEeOlpfB_tZS-QA" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bGfp_XbuEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bGfp_nbuEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bGfp_3buEeOlpfB_tZS-QA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfqAHbuEeOlpfB_tZS-QA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bGfqAXbuEeOlpfB_tZS-QA" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bGfqAnbuEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bGfqA3buEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bGfqBHbuEeOlpfB_tZS-QA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfqBXbuEeOlpfB_tZS-QA"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_325AENt0EeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfqCXbuEeOlpfB_tZS-QA" x="690" y="30" height="45"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_bGfqCnbuEeOlpfB_tZS-QA" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfqC3buEeOlpfB_tZS-QA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfqDHbuEeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfqDXbuEeOlpfB_tZS-QA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfqDnbuEeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfqD3buEeOlpfB_tZS-QA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfqEHbuEeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bGfqEXbuEeOlpfB_tZS-QA" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bGfqEnbuEeOlpfB_tZS-QA" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bGfqE3buEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bGfqFHbuEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bGfqFXbuEeOlpfB_tZS-QA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfqFnbuEeOlpfB_tZS-QA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bGfqF3buEeOlpfB_tZS-QA" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bGfqGHbuEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bGfqGXbuEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bGfqGnbuEeOlpfB_tZS-QA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfqG3buEeOlpfB_tZS-QA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bGfqHHbuEeOlpfB_tZS-QA" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bGfqHXbuEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bGfqHnbuEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bGfqH3buEeOlpfB_tZS-QA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfqIHbuEeOlpfB_tZS-QA"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_51zAINa7EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfqJHbuEeOlpfB_tZS-QA" x="774" y="576" width="115" height="193"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_bGfq6HbuEeOlpfB_tZS-QA" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfq6XbuEeOlpfB_tZS-QA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfq6nbuEeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfq63buEeOlpfB_tZS-QA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfq7HbuEeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfq7XbuEeOlpfB_tZS-QA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfq7nbuEeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bGfq73buEeOlpfB_tZS-QA" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bGfq8HbuEeOlpfB_tZS-QA" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_bGfq8XbuEeOlpfB_tZS-QA" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_ctvjINjwEeKQqZMBCFd2Uw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfq8nbuEeOlpfB_tZS-QA" x="58" y="16"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_bGfq83buEeOlpfB_tZS-QA" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_ct7wYNjwEeKQqZMBCFd2Uw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfq9HbuEeOlpfB_tZS-QA" x="58" y="16"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_fKXnwHl8EeOlpfB_tZS-QA" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_c5OEgHl8EeOlpfB_tZS-QA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_fKXnwXl8EeOlpfB_tZS-QA" x="112" y="67"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bGfq9XbuEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bGfq9nbuEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bGfq93buEeOlpfB_tZS-QA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfq-HbuEeOlpfB_tZS-QA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bGfq-XbuEeOlpfB_tZS-QA" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_rQGJoXbuEeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_rQGJoHbuEeOlpfB_tZS-QA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_rQGJonbuEeOlpfB_tZS-QA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_9n-f4XbuEeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_9n-f4HbuEeOlpfB_tZS-QA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_9n-f4nbuEeOlpfB_tZS-QA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_an4UAHl8EeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_RnmmUHl8EeOlpfB_tZS-QA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_an4UAXl8EeOlpfB_tZS-QA" x="90" y="100"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_an-aoHl8EeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_RnmmUnl8EeOlpfB_tZS-QA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_an-aoXl8EeOlpfB_tZS-QA" x="90" y="100"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_aoEhQHl8EeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_RnmmVHl8EeOlpfB_tZS-QA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_aoEhQXl8EeOlpfB_tZS-QA" x="90" y="100"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_aoEhQnl8EeOlpfB_tZS-QA" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_RnmmVnl8EeOlpfB_tZS-QA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_aoEhQ3l8EeOlpfB_tZS-QA" x="90" y="100"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bGfq-nbuEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bGfq-3buEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bGfq_HbuEeOlpfB_tZS-QA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfq_XbuEeOlpfB_tZS-QA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bGfq_nbuEeOlpfB_tZS-QA" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bGfq_3buEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bGfrAHbuEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bGfrAXbuEeOlpfB_tZS-QA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfrAnbuEeOlpfB_tZS-QA"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_gT0asNa7EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfrBnbuEeOlpfB_tZS-QA" x="72" y="132" width="310" height="343"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_bGfrN3buEeOlpfB_tZS-QA" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfrOHbuEeOlpfB_tZS-QA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfrOXbuEeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfrOnbuEeOlpfB_tZS-QA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfrO3buEeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bGfrPHbuEeOlpfB_tZS-QA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bGfrPXbuEeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bGfrPnbuEeOlpfB_tZS-QA" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bGfrP3buEeOlpfB_tZS-QA" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bGfrQHbuEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bGfrQXbuEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bGfrQnbuEeOlpfB_tZS-QA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfrQ3buEeOlpfB_tZS-QA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bGfrRHbuEeOlpfB_tZS-QA" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bGfrRXbuEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bGfrRnbuEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bGfrR3buEeOlpfB_tZS-QA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfrSHbuEeOlpfB_tZS-QA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bGfrSXbuEeOlpfB_tZS-QA" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bGfrSnbuEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bGfrS3buEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bGfrTHbuEeOlpfB_tZS-QA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfrTXbuEeOlpfB_tZS-QA"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_HoKjcNjjEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bGfrUXbuEeOlpfB_tZS-QA" x="438" y="576" width="115"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_9AF4IHltEeOlpfB_tZS-QA" type="2006" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9AL-wHltEeOlpfB_tZS-QA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9AL-wXltEeOlpfB_tZS-QA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9AL-wnltEeOlpfB_tZS-QA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9AL-w3ltEeOlpfB_tZS-QA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9AL-xHltEeOlpfB_tZS-QA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9AL-xXltEeOlpfB_tZS-QA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_9AL-xnltEeOlpfB_tZS-QA" type="5023"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_9AL-x3ltEeOlpfB_tZS-QA" type="7015">
+        <children xmi:type="notation:Shape" xmi:id="_AKSjQHluEeOlpfB_tZS-QA" type="3017" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:EnumerationLiteral" href="layers.uml#_AKMcoHluEeOlpfB_tZS-QA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_AKSjQXluEeOlpfB_tZS-QA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_BUS4QXluEeOlpfB_tZS-QA" type="3017" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:EnumerationLiteral" href="layers.uml#_BUS4QHluEeOlpfB_tZS-QA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_BUS4QnluEeOlpfB_tZS-QA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_9AL-yHltEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_9AL-yXltEeOlpfB_tZS-QA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_9AL-ynltEeOlpfB_tZS-QA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9AL-y3ltEeOlpfB_tZS-QA"/>
+      </children>
+      <element xmi:type="uml:Enumeration" href="layers.uml#_8__xgHltEeOlpfB_tZS-QA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9AF4IXltEeOlpfB_tZS-QA" x="1122" y="162"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_Vjf6UXbuEeOlpfB_tZS-QA"/>
+    <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+    <edges xmi:type="notation:Connector" xmi:id="_bGfpC3buEeOlpfB_tZS-QA" type="4002" source="_bGfrN3buEeOlpfB_tZS-QA" target="_bGfo0HbuEeOlpfB_tZS-QA" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_bGfpDHbuEeOlpfB_tZS-QA" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfpDXbuEeOlpfB_tZS-QA" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_bGfpDnbuEeOlpfB_tZS-QA" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_OJCPcNjjEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bGfpD3buEeOlpfB_tZS-QA" points="[2, -2, -91, 72]$[90, -64, -3, 10]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bGfpEHbuEeOlpfB_tZS-QA" id="(0.6,0.02)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bGfpEXbuEeOlpfB_tZS-QA" id="(0.4122137404580153,0.9)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_bGfpVnbuEeOlpfB_tZS-QA" type="4002" source="_bGfo0HbuEeOlpfB_tZS-QA" target="_bGfp73buEeOlpfB_tZS-QA" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_bGfpV3buEeOlpfB_tZS-QA" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfpWHbuEeOlpfB_tZS-QA" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_bGfpWXbuEeOlpfB_tZS-QA" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_18JYYNt5EeKwptaAAanMDg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bGfpWnbuEeOlpfB_tZS-QA" points="[-3, -5, 0, 82]$[-11, -80, -8, 7]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bGfpW3buEeOlpfB_tZS-QA" id="(0.48210526315789476,0.004672897196261682)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bGfpXHbuEeOlpfB_tZS-QA" id="(0.41624365482233505,0.8444444444444444)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_bGfpXXbuEeOlpfB_tZS-QA" type="4002" source="_bGfqCnbuEeOlpfB_tZS-QA" target="_bGfo0HbuEeOlpfB_tZS-QA" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_bGfpXnbuEeOlpfB_tZS-QA" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfpX3buEeOlpfB_tZS-QA" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_bGfpYHbuEeOlpfB_tZS-QA" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#__ujk4NjMEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bGfpYXbuEeOlpfB_tZS-QA" points="[25, -12, -69, 32]$[88, -42, -6, 2]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bGfpYnbuEeOlpfB_tZS-QA" id="(0.62,0.053811659192825115)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bGfpY3buEeOlpfB_tZS-QA" id="(0.08396946564885496,0.59)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_bGfp3nbuEeOlpfB_tZS-QA" type="4001" source="_bGfq6HbuEeOlpfB_tZS-QA" target="_bGfo0HbuEeOlpfB_tZS-QA" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_bGfp33buEeOlpfB_tZS-QA" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfp4HbuEeOlpfB_tZS-QA" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bGfp4XbuEeOlpfB_tZS-QA" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfp4nbuEeOlpfB_tZS-QA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bGfp43buEeOlpfB_tZS-QA" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfp5HbuEeOlpfB_tZS-QA" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bGfp5XbuEeOlpfB_tZS-QA" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfp5nbuEeOlpfB_tZS-QA" x="-16" y="9"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bGfp53buEeOlpfB_tZS-QA" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfp6HbuEeOlpfB_tZS-QA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bGfp6XbuEeOlpfB_tZS-QA" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfp6nbuEeOlpfB_tZS-QA" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_bGfp63buEeOlpfB_tZS-QA" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_cHkbsNbGEeKPiuTfpuvqHA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bGfp7HbuEeOlpfB_tZS-QA" points="[5, -6, -94, 0]$[97, -7, -2, -1]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bGfp7XbuEeOlpfB_tZS-QA" id="(0.9941176470588236,0.3533834586466165)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bGfp7nbuEeOlpfB_tZS-QA" id="(0.002079002079002079,0.2591362126245847)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_bGfqJXbuEeOlpfB_tZS-QA" type="4001" source="_bGfo0HbuEeOlpfB_tZS-QA" target="_bGfq6HbuEeOlpfB_tZS-QA" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_bGfqJnbuEeOlpfB_tZS-QA" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfqJ3buEeOlpfB_tZS-QA" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bGfqKHbuEeOlpfB_tZS-QA" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfqKXbuEeOlpfB_tZS-QA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bGfqKnbuEeOlpfB_tZS-QA" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfqK3buEeOlpfB_tZS-QA" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bGfqLHbuEeOlpfB_tZS-QA" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfqLXbuEeOlpfB_tZS-QA" x="-22" y="15"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bGfqLnbuEeOlpfB_tZS-QA" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfqL3buEeOlpfB_tZS-QA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bGfqMHbuEeOlpfB_tZS-QA" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfqMXbuEeOlpfB_tZS-QA" x="-14" y="-15"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_bGfqMnbuEeOlpfB_tZS-QA" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_PznBc2Q5EeOlpfB_tZS-QA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bGfqM3buEeOlpfB_tZS-QA" points="[-2, -4, 81, 0]$[-78, -1, 5, 3]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bGfqNHbuEeOlpfB_tZS-QA" id="(0.004210526315789474,0.5560747663551402)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bGfqNXbuEeOlpfB_tZS-QA" id="(0.9705882352941176,0.8646616541353384)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_bGfrB3buEeOlpfB_tZS-QA" type="4001" source="_bGfrN3buEeOlpfB_tZS-QA" target="_bGfo0HbuEeOlpfB_tZS-QA" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_bGfrCHbuEeOlpfB_tZS-QA" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfrCXbuEeOlpfB_tZS-QA" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bGfrCnbuEeOlpfB_tZS-QA" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfrC3buEeOlpfB_tZS-QA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bGfrDHbuEeOlpfB_tZS-QA" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfrDXbuEeOlpfB_tZS-QA" x="-34" y="-41"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bGfrDnbuEeOlpfB_tZS-QA" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfrD3buEeOlpfB_tZS-QA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bGfrEHbuEeOlpfB_tZS-QA" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfrEXbuEeOlpfB_tZS-QA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bGfrEnbuEeOlpfB_tZS-QA" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bGfrE3buEeOlpfB_tZS-QA" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_bGfrFHbuEeOlpfB_tZS-QA" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_em-rwNjnEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bGfrFXbuEeOlpfB_tZS-QA" points="[0, -4, -89, 78]$[0, -76, -89, 6]$[87, -76, -2, 6]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bGfrFnbuEeOlpfB_tZS-QA" id="(0.1826086956521739,0.04)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bGfrF3buEeOlpfB_tZS-QA" id="(0.015267175572519083,0.84)"/>
+    </edges>
+  </notation:Diagram>
+</xmi:XMI>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.uml b/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.uml
new file mode 100755
index 0000000..8200c28
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/model/layers.uml
@@ -0,0 +1,1554 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20110701" xmlns:xmi="http://www.omg.org/spec/XMI/20110701" 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/4.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="_gAOFQLcqEeK8_t7Rpq6ZJA" name="layers">
+    <ownedComment xmi:type="uml:Comment" xmi:id="_7_dC4HbuEeOlpfB_tZS-QA" annotatedElement="_gAOFQLcqEeK8_t7Rpq6ZJA">
+      <body>Start the LayesStack.&#xD;
+This method should be called after the LayersStack creation. It is not called from the constructor, because &#xD;
+the initialisation can differ if the LayersStack is created by the user or by EMF after a reloading.&#xD;
+</body>
+    </ownedComment>
+    <packageImport xmi:type="uml:PackageImport" xmi:id="_uhlc8LcqEeK8_t7Rpq6ZJA">
+      <importedPackage xmi:type="uml:Model" href="notation/notation.uml#_AziHILcnEeKeLJDBCBPhPw"/>
+    </packageImport>
+    <packagedElement xmi:type="uml:Class" xmi:id="_yN_dQLcqEeK8_t7Rpq6ZJA" name="LayerNamedStyle">
+      <generalization xmi:type="uml:Generalization" xmi:id="_0NyKwLcqEeK8_t7Rpq6ZJA">
+        <general xmi:type="uml:Class" href="notation/notation.uml#_AziHercnEeKeLJDBCBPhPw"/>
+      </generalization>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_jWHHANa7EeKPiuTfpuvqHA" name="layersStack" type="_gT0asNa7EeKPiuTfpuvqHA" aggregation="composite" association="_jWQ4ANa7EeKPiuTfpuvqHA">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jWHHAda7EeKPiuTfpuvqHA"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jWHHAta7EeKPiuTfpuvqHA" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_OyQ5QL1xEeKKJJ5BmR3W3Q" name="String"/>
+    <packagedElement xmi:type="uml:Class" xmi:id="_eNnjMNa7EeKPiuTfpuvqHA" name="LayerDescriptor">
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_iiUlMNqCEeKQqZMBCFd2Uw" name="propertyRegistry" type="_8OefoNjoEeKQqZMBCFd2Uw" association="_iim5ENqCEeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iiUlMdqCEeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iiUlMtqCEeKQqZMBCFd2Uw" value="1"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_gT0asNa7EeKPiuTfpuvqHA" clientDependency="_2bk1oHpGEeOlpfB_tZS-QA" name="LayersStack">
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_cHaqsNbGEeKPiuTfpuvqHA" name="layers" type="_9IaAANjiEeKQqZMBCFd2Uw" aggregation="composite" association="_cHkbsNbGEeKPiuTfpuvqHA">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_cHaqsdbGEeKPiuTfpuvqHA"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cHaqstbGEeKPiuTfpuvqHA" value="1"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_ctvjINjwEeKQqZMBCFd2Uw" name="name" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ctvjIdjwEeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ctvjItjwEeKQqZMBCFd2Uw" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_ctvjI9jwEeKQqZMBCFd2Uw">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_ct7wYNjwEeKQqZMBCFd2Uw" name="description" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ct7wYdjwEeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ct7wYtjwEeKQqZMBCFd2Uw" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_ct7wY9jwEeKQqZMBCFd2Uw">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_hQIS8NkhEeKQqZMBCFd2Uw" name="diagram" association="_hQam0NkhEeKQqZMBCFd2Uw">
+        <type xmi:type="uml:Class" href="notation/notation.uml#_AziHhrcnEeKeLJDBCBPhPw"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hQIS8dkhEeKQqZMBCFd2Uw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hQIS8tkhEeKQqZMBCFd2Uw" value="1"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_c5OEgHl8EeOlpfB_tZS-QA" name="state" visibility="public" type="_8__xgHltEeOlpfB_tZS-QA" isUnique="false">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_c5OEgXl8EeOlpfB_tZS-QA" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_c5OEgnl8EeOlpfB_tZS-QA" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_c5OEg3l8EeOlpfB_tZS-QA" name="detached" value="detached"/>
+      </ownedAttribute>
+      <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_2bk1oHpGEeOlpfB_tZS-QA" name="InterfaceRealization1" client="_gT0asNa7EeKPiuTfpuvqHA" supplier="_RopgYHpGEeOlpfB_tZS-QA" contract="_RopgYHpGEeOlpfB_tZS-QA"/>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_8H1xgO70EeK0p4PkXjd-_Q" name="getComputePropertyValueCommand" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_8H1xge70EeK0p4PkXjd-_Q">
+          <body>Get the ComputePropertyValueCommands for the specified views and Property.&#xD;
+@return A list of Command allowing to get the value of the property for each view. The list contains null if no command is available for a View.</body>
+        </ownedComment>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_8H1xgu70EeK0p4PkXjd-_Q" name="view">
+          <type xmi:type="uml:Class" href="notation/notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_8H1xg-70EeK0p4PkXjd-_Q" name="property" type="_-vaacNa7EeKPiuTfpuvqHA"/>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_8H1xhO70EeK0p4PkXjd-_Q" name="result" type="_Qeyn4O7GEeK0p4PkXjd-_Q" direction="return"/>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_8IAJkO70EeK0p4PkXjd-_Q" name="getPropertiesComputePropertyValueCommand" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_8IAJke70EeK0p4PkXjd-_Q">
+          <body>Get the ComputePropertyValueCommands for the specified view and Properties.&#xD;
+@return A list of Command allowing to get the value of the properties for the specified view. The list contains null if no command is available for a property.</body>
+        </ownedComment>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_8IAJku70EeK0p4PkXjd-_Q" name="view">
+          <type xmi:type="uml:Class" href="notation/notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_8IAJk-70EeK0p4PkXjd-_Q" name="property" type="_-vaacNa7EeKPiuTfpuvqHA" isOrdered="true" direction="inout">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8IAJlO70EeK0p4PkXjd-_Q" value="1"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8IAJle70EeK0p4PkXjd-_Q" value="*"/>
+        </ownedParameter>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_8IAJlu70EeK0p4PkXjd-_Q" name="result" type="_Qeyn4O7GEeK0p4PkXjd-_Q" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8IAJl-70EeK0p4PkXjd-_Q"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8IAJmO70EeK0p4PkXjd-_Q" value="*"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_8ILIsO70EeK0p4PkXjd-_Q" name="getViewsComputePropertyValueCommand" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_8ILIse70EeK0p4PkXjd-_Q">
+          <body>Get the ComputePropertyValueCommands for the specified view and Property.&#xD;
+@return the Command allowing to get the value, or null.</body>
+        </ownedComment>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_8ILIsu70EeK0p4PkXjd-_Q" name="view" isOrdered="true" direction="inout">
+          <type xmi:type="uml:Class" href="notation/notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8ILIs-70EeK0p4PkXjd-_Q"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8ILItO70EeK0p4PkXjd-_Q" value="*"/>
+        </ownedParameter>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_8ILIte70EeK0p4PkXjd-_Q" name="property" type="_-vaacNa7EeKPiuTfpuvqHA"/>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_8ILItu70EeK0p4PkXjd-_Q" name="result" type="_Qeyn4O7GEeK0p4PkXjd-_Q" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8ILIt-70EeK0p4PkXjd-_Q"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8ILIuO70EeK0p4PkXjd-_Q" value="*"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_rQGJoHbuEeOlpfB_tZS-QA" name="startAfterCreation"/>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_9n-f4HbuEeOlpfB_tZS-QA" name="attachLayers" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_Go6U4HbvEeOlpfB_tZS-QA" annotatedElement="_9n-f4HbuEeOlpfB_tZS-QA">
+          <body>Start the LayersStack after a reloading by EMF. This method should be explicitly called after a reloading.&#xD;
+The method usually start the layer behaviors.</body>
+        </ownedComment>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_RnmmUHl8EeOlpfB_tZS-QA" name="attach" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_RnmmUXl8EeOlpfB_tZS-QA" annotatedElement="_RnmmUHl8EeOlpfB_tZS-QA">
+          <body>Try to attach this Layer. If successful, the state go to &quot;attached&quot;. Otherwise, an exception is thrown.&#xD;
+A Layer can be attached if its required attributes are set.&#xD;
+Required attributes:&#xD;
+&lt;ul>&#xD;
+  &lt;li>application&lt;/li>&#xD;
+  &lt;li>owningLayerStack&lt;/li>&#xD;
+  &lt;li>parent container&lt;/li>&#xD;
+  &lt;li>&lt;/li>&#xD;
+&lt;/ul>&#xD;
+Just after enterring in &quot;attached&quot; state, the enterAttachedState() method is called.&#xD;
+If this Layer is successfully attached, then attach subLayers.</body>
+        </ownedComment>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_RnmmUnl8EeOlpfB_tZS-QA" name="detach" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_RnmmU3l8EeOlpfB_tZS-QA" annotatedElement="_RnmmUnl8EeOlpfB_tZS-QA">
+          <body>Detach the Layer. The state go to &quot;detached&quot;.&#xD;
+Associated behavior are stopped.</body>
+        </ownedComment>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_RnmmVHl8EeOlpfB_tZS-QA" name="enterAttachedState" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_RnmmVXl8EeOlpfB_tZS-QA" annotatedElement="_RnmmVHl8EeOlpfB_tZS-QA">
+          <body>This method is called by the class immediately after entering in attached state.&#xD;
+The methodcan be used to start the layer behaviors.</body>
+        </ownedComment>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_RnmmVnl8EeOlpfB_tZS-QA" name="exitAttachedState">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_RnmmV3l8EeOlpfB_tZS-QA" annotatedElement="_RnmmVnl8EeOlpfB_tZS-QA">
+          <body>This method is called just before this Layer leave the attached state.&#xD;
+</body>
+        </ownedComment>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_jWQ4ANa7EeKPiuTfpuvqHA" name="layerNamedStyle_layerStack_1" memberEnd="_jWQ4Ada7EeKPiuTfpuvqHA _jWHHANa7EeKPiuTfpuvqHA">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_jWQ4Ada7EeKPiuTfpuvqHA" name="layerNamedStyle" type="_yN_dQLcqEeK8_t7Rpq6ZJA" association="_jWQ4ANa7EeKPiuTfpuvqHA">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jWQ4Ata7EeKPiuTfpuvqHA" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jWQ4A9a7EeKPiuTfpuvqHA" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_51zAINa7EeKPiuTfpuvqHA" name="AbstractLayer" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="__ujk4NjMEeKgkM6XJF9t4A" general="_9IaAANjiEeKQqZMBCFd2Uw"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_5YkcINa8EeKPiuTfpuvqHA" name="propertyValues" type="_AjTZ8Na8EeKPiuTfpuvqHA" isOrdered="true" isUnique="false" association="_5YuNINa8EeKPiuTfpuvqHA">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_yAlZYNkWEeKQqZMBCFd2Uw">
+          <body>An ordered list of references onvalue instances.&#xD;
+This list is used to access instances by indexes.&#xD;
+Elements are set in the list when they are attached to the layer. A null element mean that the property at the specified index is not attached.&#xD;
+The list must have the same size as the list of available properties.</body>
+        </ownedComment>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5YkcIda8EeKPiuTfpuvqHA"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5YkcIta8EeKPiuTfpuvqHA" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_A1bYQNjLEeKgkM6XJF9t4A" name="propertyValueMap" type="_vMMQsNjKEeKgkM6XJF9t4A" aggregation="composite" association="_A1nlgNjLEeKgkM6XJF9t4A">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A1bYQdjLEeKgkM6XJF9t4A"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A1bYQtjLEeKgkM6XJF9t4A" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_LA8SkNjiEeKQqZMBCFd2Uw" name="layerDescriptor" type="_eNnjMNa7EeKPiuTfpuvqHA" association="_LBIf0NjiEeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LA8SkdjiEeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LA8SktjiEeKQqZMBCFd2Uw" value="1"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_3qy14NjkEeKQqZMBCFd2Uw" name="views" association="_3q_DINjkEeKQqZMBCFd2Uw">
+        <type xmi:type="uml:Class" href="notation/notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3qy14djkEeKQqZMBCFd2Uw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3qy14tjkEeKQqZMBCFd2Uw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_rEPKgO-MEeK0p4PkXjd-_Q" name="attachedProperties" type="_-vaacNa7EeKPiuTfpuvqHA" aggregation="composite" isDerived="true" association="_rEb-0O-MEeK0p4PkXjd-_Q">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_0zHqoO-MEeK0p4PkXjd-_Q">
+          <body>Return the list of Property (descriptors) attached to the Layer.&#xD;
+This is a derived transient list.</body>
+        </ownedComment>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rEPKge-MEeK0p4PkXjd-_Q"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rEPKgu-MEeK0p4PkXjd-_Q" value="*"/>
+      </ownedAttribute>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_gfah8OKIEeKOWoLMe41Aew" name="addPropertyInstance" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_zzrA4OKIEeKOWoLMe41Aew">
+          <body>Add the specified property to the map of property.</body>
+        </ownedComment>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_ocu90OKIEeKOWoLMe41Aew" name="property" type="_-vaacNa7EeKPiuTfpuvqHA"/>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_9j3nQOKWEeKOWoLMe41Aew" name="result" type="_AjTZ8Na8EeKPiuTfpuvqHA" direction="return"/>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_sJkb8OKIEeKOWoLMe41Aew" name="removePropertyInstance">
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_sJkb8eKIEeKOWoLMe41Aew" name="property" type="_-vaacNa7EeKPiuTfpuvqHA"/>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_ldtfkOKWEeKOWoLMe41Aew" name="getPropertyInstance" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_ldtfkeKWEeKOWoLMe41Aew">
+          <body>Add the specified property to the map of property.</body>
+        </ownedComment>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_ldtfkuKWEeKOWoLMe41Aew" name="property" type="_-vaacNa7EeKPiuTfpuvqHA"/>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_voU5cOKWEeKOWoLMe41Aew" name="result" type="_AjTZ8Na8EeKPiuTfpuvqHA" direction="return"/>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_IR-vwOKXEeKOWoLMe41Aew" name="getPropertyInstance" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_IR-vweKXEeKOWoLMe41Aew">
+          <body>Add the specified property to the map of property.</body>
+        </ownedComment>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_IR-vwuKXEeKOWoLMe41Aew" name="property" type="_OyQ5QL1xEeKKJJ5BmR3W3Q"/>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_IR-vw-KXEeKOWoLMe41Aew" name="result" type="_AjTZ8Na8EeKPiuTfpuvqHA" direction="return"/>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_-vaacNa7EeKPiuTfpuvqHA" name="Property">
+      <generalization xmi:type="uml:Generalization" xmi:id="_YRb5sNhdEeKgkM6XJF9t4A" general="_ggM80NhbEeKgkM6XJF9t4A"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_L2FowNhcEeKgkM6XJF9t4A" name="type" type="_EoL3oNhcEeKgkM6XJF9t4A" association="_L2X8oNhcEeKgkM6XJF9t4A">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_L2FowdhcEeKgkM6XJF9t4A" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_L2FowthcEeKgkM6XJF9t4A" value="1"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_O62aQNhcEeKgkM6XJF9t4A" name="defaultValue" type="_AjTZ8Na8EeKPiuTfpuvqHA" aggregation="composite" association="_O7IuINhcEeKgkM6XJF9t4A">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_O62aQdhcEeKgkM6XJF9t4A"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_O62aQthcEeKgkM6XJF9t4A" value="1"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_sdWO0NhcEeKgkM6XJF9t4A" name="name" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_utwLMNhcEeKgkM6XJF9t4A" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ut8YcNhcEeKgkM6XJF9t4A" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_uunG0NhcEeKgkM6XJF9t4A">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_hT9qINhdEeKgkM6XJF9t4A" name="description" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_j92dgNhdEeKgkM6XJF9t4A" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_j-CqwNhdEeKgkM6XJF9t4A" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_j-tZINhdEeKgkM6XJF9t4A">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_HjktUO3qEeKwLp35IbAIig" name="index" visibility="public" type="_SuHkkNa8EeKPiuTfpuvqHA">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_OHvk8O3qEeKwLp35IbAIig">
+          <body>Index of the property in the arrays of the application.&#xD;
+The index is used by the application to access property in arrays.&#xD;
+Each property has a unique index. This is the application responsability to maintain the index.&#xD;
+Usually, the  index is set by the PropertyRegistry when Properties are registered. Then, all arrays indexed Properties can reorder themself. &#xD;
+This is done immediately after the owner of the array know the application or the PropertyRegistry &#xD;
+(see org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerImpl.resetAllPropertyValuesFromRegistry() )&#xD;
+</body>
+        </ownedComment>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LG9UgO3qEeKwLp35IbAIig" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LHPoYO3qEeKwLp35IbAIig" value="1"/>
+        <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_Bic9oO-FEeK0p4PkXjd-_Q" value="-1"/>
+      </ownedAttribute>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_9LLeENhcEeKgkM6XJF9t4A" name="createInstance" raisedException="_KG7HMNxMEeKwptaAAanMDg">
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_HPKEcNhdEeKgkM6XJF9t4A" name="return" type="_AjTZ8Na8EeKPiuTfpuvqHA" direction="return"/>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AjTZ8Na8EeKPiuTfpuvqHA" clientDependency="_g2QFQO8YEeK0p4PkXjd-_Q" name="TypeInstance" isAbstract="true">
+      <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_g2QFQO8YEeK0p4PkXjd-_Q" name="InterfaceRealization1" client="_AjTZ8Na8EeKPiuTfpuvqHA" supplier="_XZJOcO8UEeK0p4PkXjd-_Q" contract="_XZJOcO8UEeK0p4PkXjd-_Q"/>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_ZFFKAEczEeOEBJ2PxFQgyQ" name="setValueFromString">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_ghl-4EczEeOEBJ2PxFQgyQ">
+          <body>Set the value of the instance from the porvided String.&#xD;
+Actually, only simple values are accepted.&#xD;
+TODO Allows complexe values, using a well defined syntax ?</body>
+        </ownedComment>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_fODTYEczEeOEBJ2PxFQgyQ" name="value" type="_OyQ5QL1xEeKKJJ5BmR3W3Q"/>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_oJwUAEc8EeOEBJ2PxFQgyQ" name="setValueFromInstance">
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_tVpxIEc8EeOEBJ2PxFQgyQ" name="value" type="_AjTZ8Na8EeKPiuTfpuvqHA"/>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_SuHkkNa8EeKPiuTfpuvqHA" name="int"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_TqqsYNa8EeKPiuTfpuvqHA" name="boolean"/>
+    <packagedElement xmi:type="uml:Association" xmi:id="_5YuNINa8EeKPiuTfpuvqHA" name="layer_propertyValue_1" memberEnd="_5YuNIda8EeKPiuTfpuvqHA _5YkcINa8EeKPiuTfpuvqHA">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_5YuNIda8EeKPiuTfpuvqHA" name="layer" type="_51zAINa7EeKPiuTfpuvqHA" association="_5YuNINa8EeKPiuTfpuvqHA">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5YuNIta8EeKPiuTfpuvqHA" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5YuNI9a8EeKPiuTfpuvqHA" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_cHkbsNbGEeKPiuTfpuvqHA" name="layersStack_layer_1" memberEnd="_cHkbsdbGEeKPiuTfpuvqHA _cHaqsNbGEeKPiuTfpuvqHA">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_cHkbsdbGEeKPiuTfpuvqHA" name="layersStack" type="_gT0asNa7EeKPiuTfpuvqHA" association="_cHkbsNbGEeKPiuTfpuvqHA">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_cHkbstbGEeKPiuTfpuvqHA" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cHkbs9bGEeKPiuTfpuvqHA" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_fAmyUNhbEeKgkM6XJF9t4A" name="Folder">
+      <generalization xmi:type="uml:Generalization" xmi:id="_6l23ENhbEeKgkM6XJF9t4A" general="_ggM80NhbEeKgkM6XJF9t4A"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_js_o8NhbEeKgkM6XJF9t4A" name="elements" type="_ggM80NhbEeKgkM6XJF9t4A" aggregation="composite" association="_jtR80NhbEeKgkM6XJF9t4A">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_js_o8dhbEeKgkM6XJF9t4A"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_js_o8thbEeKgkM6XJF9t4A" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_pSIZkNhoEeKgkM6XJF9t4A" name="name" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r_ILUNhoEeKgkM6XJF9t4A" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r_afMNhoEeKgkM6XJF9t4A" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_sALUMNhoEeKgkM6XJF9t4A">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_ggM80NhbEeKgkM6XJF9t4A" name="FolderElement" isAbstract="true"/>
+    <packagedElement xmi:type="uml:Association" xmi:id="_jtR80NhbEeKgkM6XJF9t4A" name="package_packageableElement_1" memberEnd="_jtR80dhbEeKgkM6XJF9t4A _js_o8NhbEeKgkM6XJF9t4A">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_jtR80dhbEeKgkM6XJF9t4A" name="folder" type="_fAmyUNhbEeKgkM6XJF9t4A" association="_jtR80NhbEeKgkM6XJF9t4A">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jtR80thbEeKgkM6XJF9t4A"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jtR809hbEeKgkM6XJF9t4A" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_EoL3oNhcEeKgkM6XJF9t4A" name="Type" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_5T84YNhdEeKgkM6XJF9t4A" general="_ggM80NhbEeKgkM6XJF9t4A"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_kg7x4NhcEeKgkM6XJF9t4A" name="metamodel" type="_I3wPYNhcEeKgkM6XJF9t4A" association="_khB4gNhcEeKgkM6XJF9t4A">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_kg7x4dhcEeKgkM6XJF9t4A" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_kg7x4thcEeKgkM6XJF9t4A" value="1"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_oTs44NhcEeKgkM6XJF9t4A" name="name" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rDya4NhcEeKgkM6XJF9t4A" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rD-oINhcEeKgkM6XJF9t4A" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_rEpWgNhcEeKgkM6XJF9t4A">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_kquxoNhdEeKgkM6XJF9t4A" name="description" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_m6-9ANhdEeKgkM6XJF9t4A" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_m7RQ4NhdEeKgkM6XJF9t4A" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_m77_QNhdEeKgkM6XJF9t4A">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_VRDxkNhgEeKgkM6XJF9t4A" name="createInstance">
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_VRDxkdhgEeKgkM6XJF9t4A" name="return" type="_AjTZ8Na8EeKPiuTfpuvqHA" direction="return"/>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_I3wPYNhcEeKgkM6XJF9t4A" name="Metamodel">
+      <generalization xmi:type="uml:Generalization" xmi:id="_7uWeQNhdEeKgkM6XJF9t4A" general="_ggM80NhbEeKgkM6XJF9t4A"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_r6aEYNhdEeKgkM6XJF9t4A" name="name" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_u3drYNhdEeKgkM6XJF9t4A" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_u3p4oNhdEeKgkM6XJF9t4A" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_u4UnANhdEeKgkM6XJF9t4A">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_vhv-gNhdEeKgkM6XJF9t4A" name="description" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xtI4ANhdEeKgkM6XJF9t4A" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xtbL4NhdEeKgkM6XJF9t4A" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_xuF6QNhdEeKgkM6XJF9t4A">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_i5nR8NhgEeKgkM6XJF9t4A" name="nsuri" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_llQY0NhgEeKgkM6XJF9t4A" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_llcmENhgEeKgkM6XJF9t4A" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_lmHUcNhgEeKgkM6XJF9t4A">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_mR_jANhgEeKgkM6XJF9t4A" name="pluginID" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_o2xM4NhgEeKgkM6XJF9t4A" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_o3DgwNhgEeKgkM6XJF9t4A" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_o3uPINhgEeKgkM6XJF9t4A">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_pkeAYNhgEeKgkM6XJF9t4A" name="ePackageInstanceName" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uXcAINhgEeKgkM6XJF9t4A" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uXoNYNhgEeKgkM6XJF9t4A" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_uYZCYNhgEeKgkM6XJF9t4A">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="__MsGANhgEeKgkM6XJF9t4A" name="isTypeValid" visibility="public" type="_TqqsYNa8EeKPiuTfpuvqHA">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_Eu5xYNhhEeKgkM6XJF9t4A">
+          <body>Flag indicating if the type is valide, ie if the type can be instancied with the provided values.&#xD;
+This flag is set automatically by the class. The class listen to the modifications of nsuri, pluginID and ePAckageInstance. &#xD;
+When one of these property is modified, the class check if the type can be instanciated. Set the flag accordingly.</body>
+        </ownedComment>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AHx1QNhhEeKgkM6XJF9t4A" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AH-CgNhhEeKgkM6XJF9t4A" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_AIow4NhhEeKgkM6XJF9t4A">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_K3KQcNheEeKgkM6XJF9t4A" name="getEPackage">
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_SDWKUNheEeKgkM6XJF9t4A" name="return" type="_lVnFMNheEeKgkM6XJF9t4A" direction="return"/>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_L2X8oNhcEeKgkM6XJF9t4A" name="propertyDescriptor_type_1" memberEnd="_L2X8odhcEeKgkM6XJF9t4A _L2FowNhcEeKgkM6XJF9t4A">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_L2X8odhcEeKgkM6XJF9t4A" name="propertyDescriptor" type="_-vaacNa7EeKPiuTfpuvqHA" association="_L2X8oNhcEeKgkM6XJF9t4A">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_L2X8othcEeKgkM6XJF9t4A" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_L2X8o9hcEeKgkM6XJF9t4A" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_O7IuINhcEeKgkM6XJF9t4A" name="propertyDescriptor_propertyValue_1" memberEnd="_O7IuIdhcEeKgkM6XJF9t4A _O62aQNhcEeKgkM6XJF9t4A">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_O7IuIdhcEeKgkM6XJF9t4A" name="propertyDescriptor" type="_-vaacNa7EeKPiuTfpuvqHA" association="_O7IuINhcEeKgkM6XJF9t4A">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_O7IuIthcEeKgkM6XJF9t4A" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_O7IuI9hcEeKgkM6XJF9t4A" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_khB4gNhcEeKgkM6XJF9t4A" name="type_metamodel_1" memberEnd="_khB4gdhcEeKgkM6XJF9t4A _kg7x4NhcEeKgkM6XJF9t4A">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_khB4gdhcEeKgkM6XJF9t4A" name="type" type="_J6C5MNhkEeKgkM6XJF9t4A" association="_khB4gNhcEeKgkM6XJF9t4A">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_khB4gthcEeKgkM6XJF9t4A" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_khB4g9hcEeKgkM6XJF9t4A" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_c1QNsNheEeKgkM6XJF9t4A" name="Object"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_lVnFMNheEeKgkM6XJF9t4A" name="EPackage"/>
+    <packagedElement xmi:type="uml:Class" xmi:id="_6RrIENhhEeKgkM6XJF9t4A" name="IntInstance">
+      <generalization xmi:type="uml:Generalization" xmi:id="_g5ap4NhiEeKgkM6XJF9t4A" general="_AjTZ8Na8EeKPiuTfpuvqHA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_HJX90NhjEeKgkM6XJF9t4A" name="value" visibility="public" type="_SuHkkNa8EeKPiuTfpuvqHA">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_kY2vwNhjEeKgkM6XJF9t4A" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_kZC9ANhjEeKgkM6XJF9t4A" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_kZtrYNhjEeKgkM6XJF9t4A">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_-yuRYNhhEeKgkM6XJF9t4A" name="BooleanInstance">
+      <generalization xmi:type="uml:Generalization" xmi:id="_klghINhiEeKgkM6XJF9t4A" general="_AjTZ8Na8EeKPiuTfpuvqHA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_lMfMINhjEeKgkM6XJF9t4A" name="value" visibility="public" type="_TqqsYNa8EeKPiuTfpuvqHA">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ngE_YNhjEeKgkM6XJF9t4A" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ngRMoNhjEeKgkM6XJF9t4A" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_ng77ANhjEeKgkM6XJF9t4A">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Cww0QNhiEeKgkM6XJF9t4A" name="StringInstance">
+      <generalization xmi:type="uml:Generalization" xmi:id="_mlgC8NhiEeKgkM6XJF9t4A" general="_AjTZ8Na8EeKPiuTfpuvqHA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_oRNhYNhjEeKgkM6XJF9t4A" name="value" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qxBywNhjEeKgkM6XJF9t4A" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qxOAANhjEeKgkM6XJF9t4A" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_qx4uYNhjEeKgkM6XJF9t4A">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_6xEH4NhjEeKgkM6XJF9t4A" name="IntType">
+      <generalization xmi:type="uml:Generalization" xmi:id="_n3p8cNhkEeKgkM6XJF9t4A" general="_EoL3oNhcEeKgkM6XJF9t4A"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="__iczQNhjEeKgkM6XJF9t4A" name="BooleanType">
+      <generalization xmi:type="uml:Generalization" xmi:id="_rgmZENhkEeKgkM6XJF9t4A" general="_EoL3oNhcEeKgkM6XJF9t4A"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_E308gNhkEeKgkM6XJF9t4A" name="StringType">
+      <generalization xmi:type="uml:Generalization" xmi:id="_tdBpgNhkEeKgkM6XJF9t4A" general="_EoL3oNhcEeKgkM6XJF9t4A"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_J6C5MNhkEeKgkM6XJF9t4A" name="CustomType">
+      <ownedComment xmi:type="uml:Comment" xmi:id="_08frwNhkEeKgkM6XJF9t4A">
+        <body>A CustomType is used to refer to a type defined in an external metamodel.&#xD;
+The classifier specify the name of the type defined in a ECore metamodel. The metamodel property is used&#xD;
+to specify the ECore metamodel containing  the type referenced.</body>
+      </ownedComment>
+      <generalization xmi:type="uml:Generalization" xmi:id="_wLYGINhkEeKgkM6XJF9t4A" general="_EoL3oNhcEeKgkM6XJF9t4A"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_U0l7MNhkEeKgkM6XJF9t4A" name="classifier" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V7OMENhkEeKgkM6XJF9t4A" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V7aZUNhkEeKgkM6XJF9t4A" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_V8FHsNhkEeKgkM6XJF9t4A">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_vMMQsNjKEeKgkM6XJF9t4A" name="StringToTypeInstanceMap">
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_1B8jINjKEeKgkM6XJF9t4A" name="key" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3hw0gNjKEeKgkM6XJF9t4A" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3h9BwNjKEeKgkM6XJF9t4A" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_3it2wNjKEeKgkM6XJF9t4A">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_4f0_QNjKEeKgkM6XJF9t4A" name="value" visibility="public" type="_AjTZ8Na8EeKPiuTfpuvqHA" aggregation="composite">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8Z8rcNjKEeKgkM6XJF9t4A" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8aJfwNjKEeKgkM6XJF9t4A" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_8a6UwNjKEeKgkM6XJF9t4A">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A1nlgNjLEeKgkM6XJF9t4A" name="layer_stringToTypeInstanceMap_1" memberEnd="_A1nlgdjLEeKgkM6XJF9t4A _A1bYQNjLEeKgkM6XJF9t4A">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_A1nlgdjLEeKgkM6XJF9t4A" name="layer" type="_51zAINa7EeKPiuTfpuvqHA" association="_A1nlgNjLEeKgkM6XJF9t4A">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A1nlgtjLEeKgkM6XJF9t4A" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A1nlg9jLEeKgkM6XJF9t4A" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_DN8s0NjhEeKQqZMBCFd2Uw" name="LayersStackApplication">
+      <ownedComment xmi:type="uml:Comment" xmi:id="_K6hW8NjhEeKQqZMBCFd2Uw">
+        <body>This represent the root of LayerStack.&#xD;
+All model with LayerStack has an instance of this class as root.&#xD;
+This class allows to find the associated registries : PropertyRegistry, LayerDescriptorRegistry</body>
+      </ownedComment>
+      <generalization xmi:type="uml:Generalization" xmi:id="_bwKaMNjoEeKQqZMBCFd2Uw" general="_ggM80NhbEeKgkM6XJF9t4A"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_aj6GoNjhEeKQqZMBCFd2Uw" name="layersStacks" type="_gT0asNa7EeKPiuTfpuvqHA" aggregation="composite" association="_akGT4NjhEeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aj6GodjhEeKQqZMBCFd2Uw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aj6GotjhEeKQqZMBCFd2Uw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_DYWsYNjpEeKQqZMBCFd2Uw" name="layerStackRegistry" type="_uMYd4NjoEeKQqZMBCFd2Uw" aggregation="composite" association="_DYi5oNjpEeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DYWsYdjpEeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DYWsYtjpEeKQqZMBCFd2Uw" value="1"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_EEc9YNjpEeKQqZMBCFd2Uw" name="propertyRegistry" type="_8OefoNjoEeKQqZMBCFd2Uw" aggregation="composite" association="_EEjEANjpEeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EEc9YdjpEeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EEc9YtjpEeKQqZMBCFd2Uw" value="1"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_5rptsNqBEeKQqZMBCFd2Uw" name="layerDescriptorRegistry" type="_zYGE8NqBEeKQqZMBCFd2Uw" aggregation="composite" association="_5r8BkNqBEeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5rptsdqBEeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5rptstqBEeKQqZMBCFd2Uw" value="1"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_wRCXENt2EeKQqZMBCFd2Uw" name="factory" type="_IOwJ4Nt2EeKQqZMBCFd2Uw" aggregation="composite" association="_wROkUNt2EeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wRCXEdt2EeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wRCXEtt2EeKQqZMBCFd2Uw" value="1"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_3F7c4O3uEeKwLp35IbAIig" name="propertySetterRegistry" type="_q85OgO3uEeKwLp35IbAIig" aggregation="composite" association="_3GHqIO3uEeKwLp35IbAIig">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3F7c4e3uEeKwLp35IbAIig"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3F7c4u3uEeKwLp35IbAIig" value="1"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_FDc3EAxAEeOjX-JbGFEH7w" name="layerOperatorDescriptorRegistry" type="_T5we4AkdEeOnVqX9VcfeWQ" aggregation="composite" association="_FDpEUAxAEeOjX-JbGFEH7w">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FDc3EQxAEeOjX-JbGFEH7w"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FDc3EgxAEeOjX-JbGFEH7w" value="1"/>
+      </ownedAttribute>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_jo2R4NjhEeKQqZMBCFd2Uw" name="getLayersStackFor">
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_3TxkYNjhEeKQqZMBCFd2Uw" name="diagram">
+          <type xmi:type="uml:Class" href="notation/notation.uml#_AziHhrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_8X93ANjhEeKQqZMBCFd2Uw" name="return" type="_gT0asNa7EeKPiuTfpuvqHA" direction="return"/>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_8QO3kN0kEeKwptaAAanMDg" name="removeLayersStackFor">
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_8QO3kd0kEeKwptaAAanMDg" name="diagram">
+          <type xmi:type="uml:Class" href="notation/notation.uml#_AziHhrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_H4FrgN0lEeKwptaAAanMDg" name="isLayersStackAttachedFor">
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_H4Frgd0lEeKwptaAAanMDg" name="diagram">
+          <type xmi:type="uml:Class" href="notation/notation.uml#_AziHhrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_H4Frgt0lEeKwptaAAanMDg" name="return" type="_TqqsYNa8EeKPiuTfpuvqHA" direction="return"/>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_ZJ8N0N0lEeKwptaAAanMDg" name="createLayersStackFor">
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_ZJ8N0d0lEeKwptaAAanMDg" name="diagram">
+          <type xmi:type="uml:Class" href="notation/notation.uml#_AziHhrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_ZJ8N0t0lEeKwptaAAanMDg" name="return" type="_gT0asNa7EeKPiuTfpuvqHA" direction="return"/>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_ZdgqEN0lEeKwptaAAanMDg" name="lookupLayersStackFor" raisedException="_k-dZENxGEeKwptaAAanMDg">
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_ZdgqEd0lEeKwptaAAanMDg" name="diagram">
+          <type xmi:type="uml:Class" href="notation/notation.uml#_AziHhrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_ZdgqEt0lEeKwptaAAanMDg" name="return" type="_gT0asNa7EeKPiuTfpuvqHA" direction="return"/>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_akGT4NjhEeKQqZMBCFd2Uw" name="layersStackApplication_layersStack_1" memberEnd="_akGT4djhEeKQqZMBCFd2Uw _aj6GoNjhEeKQqZMBCFd2Uw">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_akGT4djhEeKQqZMBCFd2Uw" name="layersStackApplication" type="_DN8s0NjhEeKQqZMBCFd2Uw" association="_akGT4NjhEeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_akGT4tjhEeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_akGT49jhEeKQqZMBCFd2Uw" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_LBIf0NjiEeKQqZMBCFd2Uw" name="layer_layerDescriptor_1" memberEnd="_LBIf0djiEeKQqZMBCFd2Uw _LA8SkNjiEeKQqZMBCFd2Uw">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_LBIf0djiEeKQqZMBCFd2Uw" name="layer" type="_51zAINa7EeKPiuTfpuvqHA" association="_LBIf0NjiEeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LBIf0tjiEeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LBIf09jiEeKQqZMBCFd2Uw" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_9IaAANjiEeKQqZMBCFd2Uw" name="LayerExpression" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_18JYYNt5EeKwptaAAanMDg" general="_325AENt0EeKQqZMBCFd2Uw"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_AWx_gNjuEeKQqZMBCFd2Uw" name="name" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AWx_gdjuEeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AWx_gtjuEeKQqZMBCFd2Uw" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_AWx_g9juEeKQqZMBCFd2Uw">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_AW-MwNjuEeKQqZMBCFd2Uw" name="description" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AW-MwdjuEeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AW-MwtjuEeKQqZMBCFd2Uw" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_AW-Mw9juEeKQqZMBCFd2Uw">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_mCUIAAxEEeOjX-JbGFEH7w" name="isLayerEnabledInternal" visibility="public" type="_TqqsYNa8EeKPiuTfpuvqHA" isReadOnly="true" isDerived="true">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_unSZwAxEEeOjX-JbGFEH7w">
+          <body>Return true if the Layer is enabled (participate to the diagram), or false if it is not enabled.&#xD;
+This is a derieved property.&#xD;
+This flag is used internally to check if the layer is enabled. It is used by operation computing command. If the flag return false, no command is returned.&#xD;
+This property is used by LayerExpressions to bypass or not a layer.</body>
+        </ownedComment>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_puPAIAxEEeOjX-JbGFEH7w" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pukXUAxEEeOjX-JbGFEH7w" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_pvaE0AxEEeOjX-JbGFEH7w">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_qaozIAxEEeOjX-JbGFEH7w" name="isLayerEnabled" visibility="public" type="_TqqsYNa8EeKPiuTfpuvqHA">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_-aGyQAxEEeOjX-JbGFEH7w">
+          <body>Is the user enabled this layer ?&#xD;
+Return true if the user enable this layer, false if the user disable this layer.&#xD;
+When the user disable a layer, the isEnable property also return false.</body>
+        </ownedComment>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tAyWAAxEEeOjX-JbGFEH7w" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tBHGIAxEEeOjX-JbGFEH7w" value="1"/>
+        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_hvDRIAxGEeOjX-JbGFEH7w" value="true"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_xcbgQGQ7EeOlpfB_tZS-QA" name="isBranchEnabled" visibility="public" type="_TqqsYNa8EeKPiuTfpuvqHA">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_egbT0GQ8EeOlpfB_tZS-QA" annotatedElement="_xcbgQGQ7EeOlpfB_tZS-QA">
+          <body>Is the branch from this node to the root enabled ?&#xD;
+A branch is enabled if all node of the branch are enabled.&#xD;
+In other world, if an ancestor node is disable, the branch is disabled.&#xD;
+Setting the value of this node set the value of the subnodes.</body>
+        </ownedComment>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xcbgQmQ7EeOlpfB_tZS-QA" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xcbgQ2Q7EeOlpfB_tZS-QA" value="1"/>
+        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_xcbgRGQ7EeOlpfB_tZS-QA" value="true"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_PznBcGQ5EeOlpfB_tZS-QA" name="owningLayersStack" type="_gT0asNa7EeKPiuTfpuvqHA" association="_PznBc2Q5EeOlpfB_tZS-QA">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PznBcWQ5EeOlpfB_tZS-QA"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PznBcmQ5EeOlpfB_tZS-QA" value="1"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_E2soAHluEeOlpfB_tZS-QA" name="state" visibility="public" type="_8__xgHltEeOlpfB_tZS-QA" isUnique="false">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ISCtgHluEeOlpfB_tZS-QA" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ISCtgXluEeOlpfB_tZS-QA" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_QPjWoHluEeOlpfB_tZS-QA" name="detached" value="detached"/>
+      </ownedAttribute>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_VdSFsO7HEeK0p4PkXjd-_Q" name="getComputePropertyValueCommand" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_CI71QO7JEeK0p4PkXjd-_Q">
+          <body>Get the ComputePropertyValueCommands for the specified views and Property.&#xD;
+@return A list of Command allowing to get the value of the property for each view. The list contains null if no command is available for a View.</body>
+        </ownedComment>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_kPANkO7HEeK0p4PkXjd-_Q" name="view">
+          <type xmi:type="uml:Class" href="notation/notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_pVVOMO7HEeK0p4PkXjd-_Q" name="property" type="_-vaacNa7EeKPiuTfpuvqHA"/>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_vwTtkO7HEeK0p4PkXjd-_Q" name="result" type="_Qeyn4O7GEeK0p4PkXjd-_Q" direction="return"/>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_xfz8UO7HEeK0p4PkXjd-_Q" name="getViewsComputePropertyValueCommand" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_QUzeEO7JEeK0p4PkXjd-_Q">
+          <body>Get the ComputePropertyValueCommands for the specified view and Property.&#xD;
+@return the Command allowing to get the value, or null.</body>
+        </ownedComment>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_xfz8Ue7HEeK0p4PkXjd-_Q" name="view" isOrdered="true" direction="inout">
+          <type xmi:type="uml:Class" href="notation/notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SKx9sO7IEeK0p4PkXjd-_Q"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SLGGwO7IEeK0p4PkXjd-_Q" value="*"/>
+        </ownedParameter>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_xfz8Uu7HEeK0p4PkXjd-_Q" name="property" type="_-vaacNa7EeKPiuTfpuvqHA"/>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_xfz8U-7HEeK0p4PkXjd-_Q" name="result" type="_Qeyn4O7GEeK0p4PkXjd-_Q" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_T3aeoO7IEeK0p4PkXjd-_Q"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_T31VYO7IEeK0p4PkXjd-_Q" value="*"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_x2PfUO7HEeK0p4PkXjd-_Q" name="getPropertiesComputePropertyValueCommand" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_Q2rcEO7JEeK0p4PkXjd-_Q">
+          <body>Get the ComputePropertyValueCommands for the specified view and Properties.&#xD;
+@return A list of Command allowing to get the value of the properties for the specified view. The list contains null if no command is available for a property.</body>
+        </ownedComment>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_x2PfUe7HEeK0p4PkXjd-_Q" name="view">
+          <type xmi:type="uml:Class" href="notation/notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_x2PfUu7HEeK0p4PkXjd-_Q" name="property" type="_-vaacNa7EeKPiuTfpuvqHA" isOrdered="true" direction="inout">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_a3kHoO7IEeK0p4PkXjd-_Q" value="1"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_a32bgO7IEeK0p4PkXjd-_Q" value="*"/>
+        </ownedParameter>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_x2PfU-7HEeK0p4PkXjd-_Q" name="result" type="_Qeyn4O7GEeK0p4PkXjd-_Q" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_coyNoO7IEeK0p4PkXjd-_Q"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cpKoIO7IEeK0p4PkXjd-_Q" value="*"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_Ps2L4GUaEeOlpfB_tZS-QA" name="attachToLayersStack">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_nC1a4GUaEeOlpfB_tZS-QA" annotatedElement="_Ps2L4GUaEeOlpfB_tZS-QA">
+          <body>Method called to specify that this Layer should be initialized for the specified LayerStack.&#xD;
+Init this Layer for the specified LayersStack.&#xD;
+This method is called by the LayersStack when it detect that tha layer is attached to it.&#xD;
+</body>
+        </ownedComment>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_cr5cQGUaEeOlpfB_tZS-QA" name="owningLayersStack" type="_gT0asNa7EeKPiuTfpuvqHA"/>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_kzSSwGUdEeOlpfB_tZS-QA" name="getLayersStack" raisedException="_k-dZENxGEeKwptaAAanMDg">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_04NH4GUdEeOlpfB_tZS-QA" annotatedElement="_kzSSwGUdEeOlpfB_tZS-QA">
+          <body>A checked version of getOwningLayersStack.&#xD;
+</body>
+        </ownedComment>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_r3jmwGUdEeOlpfB_tZS-QA" name="layersStack" type="_gT0asNa7EeKPiuTfpuvqHA" direction="return"/>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_YeJ4IHbvEeOlpfB_tZS-QA" name="enterAttachedState" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_YeJ4IXbvEeOlpfB_tZS-QA" annotatedElement="_YeJ4IHbvEeOlpfB_tZS-QA">
+          <body>This method is called by the class immediately after entering in attached state.&#xD;
+The methodcan be used to start the layer behaviors.</body>
+        </ownedComment>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_VTcHQHluEeOlpfB_tZS-QA" name="attach" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_tUEZQHlvEeOlpfB_tZS-QA" annotatedElement="_VTcHQHluEeOlpfB_tZS-QA">
+          <body>Try to attach this Layer. If successful, the state go to &quot;attached&quot;. Otherwise, an exception is thrown.&#xD;
+A Layer can be attached if its required attributes are set.&#xD;
+Required attributes:&#xD;
+&lt;ul>&#xD;
+  &lt;li>application&lt;/li>&#xD;
+  &lt;li>owningLayerStack&lt;/li>&#xD;
+  &lt;li>parent container&lt;/li>&#xD;
+  &lt;li>&lt;/li>&#xD;
+&lt;/ul>&#xD;
+Just after enterring in &quot;attached&quot; state, the enterAttachedState() method is called.&#xD;
+If this Layer is successfully attached, then attach subLayers.</body>
+        </ownedComment>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_XeS1QHluEeOlpfB_tZS-QA" name="detach" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_yitoYHlvEeOlpfB_tZS-QA" annotatedElement="_XeS1QHluEeOlpfB_tZS-QA">
+          <body>Detach the Layer. The state go to &quot;detached&quot;.&#xD;
+Associated behavior are stopped.</body>
+        </ownedComment>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_XNTkMHl0EeOlpfB_tZS-QA" name="exitAttachedState">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_e9TVwHl0EeOlpfB_tZS-QA" annotatedElement="_XNTkMHl0EeOlpfB_tZS-QA">
+          <body>This method is called just before this Layer leave the attached state.&#xD;
+</body>
+        </ownedComment>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_HoKjcNjjEeKQqZMBCFd2Uw" clientDependency="_0RxQgHpGEeOlpfB_tZS-QA" name="LayerOperator" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_OJCPcNjjEeKQqZMBCFd2Uw" general="_9IaAANjiEeKQqZMBCFd2Uw"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_emyegNjnEeKQqZMBCFd2Uw" name="layers" type="_9IaAANjiEeKQqZMBCFd2Uw" isOrdered="true" aggregation="composite" association="_em-rwNjnEeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_emyegdjnEeKQqZMBCFd2Uw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_emyegtjnEeKQqZMBCFd2Uw" value="*"/>
+      </ownedAttribute>
+      <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_0RxQgHpGEeOlpfB_tZS-QA" name="InterfaceRealization1" client="_HoKjcNjjEeKQqZMBCFd2Uw" supplier="_RopgYHpGEeOlpfB_tZS-QA" contract="_RopgYHpGEeOlpfB_tZS-QA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_WuVRUNjjEeKQqZMBCFd2Uw" name="AbstractLayerOperator" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_0lwNANjjEeKQqZMBCFd2Uw" general="_HoKjcNjjEeKQqZMBCFd2Uw"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_KSjUEAkdEeOnVqX9VcfeWQ" name="layerOperatorDescriptor" type="_GKddUAkdEeOnVqX9VcfeWQ" association="_KSvhUAkdEeOnVqX9VcfeWQ">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KSjUEQkdEeOnVqX9VcfeWQ" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KSjUEgkdEeOnVqX9VcfeWQ" value="1"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="__XEYgAw-EeOjX-JbGFEH7w" name="layerOperatorDescriptorName" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_GnIFwAw_EeOjX-JbGFEH7w">
+          <body>The name of the associated descriptor.&#xD;
+This name is persisted with the  LayerOperator. The descriptor is not persisted.&#xD;
+The name is used to retrieve the Descriptor from the LayerOperatorDescriptorRegistry, when the application object is set. </body>
+        </ownedComment>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__XEYgQw-EeOjX-JbGFEH7w" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__XEYggw-EeOjX-JbGFEH7w" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="__XEYgww-EeOjX-JbGFEH7w">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_Dhl7YAxDEeOjX-JbGFEH7w" name="isDescriptorSet">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_LWD9QAxDEeOjX-JbGFEH7w">
+          <body>Return true if the Descriptor is set. Return false otherwise.</body>
+        </ownedComment>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_KE53YAxDEeOjX-JbGFEH7w" name="return" type="_TqqsYNa8EeKPiuTfpuvqHA" direction="return"/>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_0VaLUA3SEeOjX-JbGFEH7w" name="resetDescriptor">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_4IMgcA3SEeOjX-JbGFEH7w">
+          <body>Reset the descriptor accordingly to the descriptor name.&#xD;
+The descriptor is resseted only if the ::application and ::layerOperatorDescriptorName are set.&#xD;
+Nothing is done if one of the attribute is not set.&#xD;
+Nothing is done if the descriptor can not be found (maybe a log is issue).</body>
+        </ownedComment>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_gqW1kNjjEeKQqZMBCFd2Uw" name="TopLayerOperator">
+      <generalization xmi:type="uml:Generalization" xmi:id="_zoqSoNjjEeKQqZMBCFd2Uw" general="_WuVRUNjjEeKQqZMBCFd2Uw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_wpB4wNjjEeKQqZMBCFd2Uw" name="StackedLayerOperator">
+      <generalization xmi:type="uml:Generalization" xmi:id="_zL9IgNjjEeKQqZMBCFd2Uw" general="_WuVRUNjjEeKQqZMBCFd2Uw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_1xJCENjjEeKQqZMBCFd2Uw" name="CustomLayerOperator">
+      <generalization xmi:type="uml:Generalization" xmi:id="_4b_ewNjjEeKQqZMBCFd2Uw" general="_HoKjcNjjEeKQqZMBCFd2Uw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_3q_DINjkEeKQqZMBCFd2Uw" name="layer_view_1" memberEnd="_3q_DIdjkEeKQqZMBCFd2Uw _3qy14NjkEeKQqZMBCFd2Uw">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_3q_DIdjkEeKQqZMBCFd2Uw" name="layer" type="_51zAINa7EeKPiuTfpuvqHA" association="_3q_DINjkEeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3q_DItjkEeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3q_DI9jkEeKQqZMBCFd2Uw" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_em-rwNjnEeKQqZMBCFd2Uw" name="layerOperator_layerExpression_1" memberEnd="_em-rwdjnEeKQqZMBCFd2Uw _emyegNjnEeKQqZMBCFd2Uw">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_em-rwdjnEeKQqZMBCFd2Uw" name="layerOperator" type="_HoKjcNjjEeKQqZMBCFd2Uw" association="_em-rwNjnEeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_em-rwtjnEeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_em-rw9jnEeKQqZMBCFd2Uw" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_uMYd4NjoEeKQqZMBCFd2Uw" name="LayerStackDescriptorRegistry"/>
+    <packagedElement xmi:type="uml:Class" xmi:id="_8OefoNjoEeKQqZMBCFd2Uw" name="PropertyRegistry">
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_NVP94NjqEeKQqZMBCFd2Uw" name="properties" type="_-vaacNa7EeKPiuTfpuvqHA" isOrdered="true" aggregation="composite" association="_NVcLINjqEeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NVP94djqEeKQqZMBCFd2Uw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NVP94tjqEeKQqZMBCFd2Uw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_JhvqgNj_EeKQqZMBCFd2Uw" name="typeRegistry" type="_tLip8Nj-EeKQqZMBCFd2Uw" aggregation="composite" association="_Jh73wNj_EeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Jhvqgdj_EeKQqZMBCFd2Uw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Jhvqgtj_EeKQqZMBCFd2Uw" value="1"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_RrX8YA2qEeOjX-JbGFEH7w" name="propertiesCount" visibility="public" type="_SuHkkNa8EeKPiuTfpuvqHA" isReadOnly="true" isDerived="true">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_p3RfsA2qEeOjX-JbGFEH7w">
+          <body>The number of registered properties.&#xD;
+This is a value derived from the internal list of properties.</body>
+        </ownedComment>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V9bncA2qEeOjX-JbGFEH7w" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V9w-oA2qEeOjX-JbGFEH7w" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_V-leAA2qEeOjX-JbGFEH7w">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_1X6RoNkCEeKQqZMBCFd2Uw" name="getPropertyIndex" raisedException="_k-dZENxGEeKwptaAAanMDg">
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="__hV_wNkCEeKQqZMBCFd2Uw" name="propertyName" type="_OyQ5QL1xEeKKJJ5BmR3W3Q"/>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_F2HJcNkDEeKQqZMBCFd2Uw" name="return" type="_SuHkkNa8EeKPiuTfpuvqHA" direction="return"/>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_dcjjAOT7EeKSDdPH_NXL-g" name="getProperty" raisedException="_k-dZENxGEeKwptaAAanMDg">
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_dcjjAeT7EeKSDdPH_NXL-g" name="propertyName" type="_OyQ5QL1xEeKKJJ5BmR3W3Q"/>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_dcjjAuT7EeKSDdPH_NXL-g" name="return" type="_-vaacNa7EeKPiuTfpuvqHA" direction="return"/>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_Klpz4A3LEeOjX-JbGFEH7w" name="addProperty">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_RE4hIA3LEeOjX-JbGFEH7w">
+          <body>Add the property to the registry.&#xD;
+Also set the index of the property.&#xD;
+Do nothing if a Property with the same name already exist.&#xD;
+Note: a Property can not be retrieved from the registry (the operation is not supported by the application).</body>
+        </ownedComment>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_P1PeMA3LEeOjX-JbGFEH7w" name="property" type="_-vaacNa7EeKPiuTfpuvqHA"/>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_DYi5oNjpEeKQqZMBCFd2Uw" name="layersStackApplication_layerStackRegistry_1" memberEnd="_DYi5odjpEeKQqZMBCFd2Uw _DYWsYNjpEeKQqZMBCFd2Uw">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_DYi5odjpEeKQqZMBCFd2Uw" name="layersStackApplication" type="_DN8s0NjhEeKQqZMBCFd2Uw" association="_DYi5oNjpEeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DYi5otjpEeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DYi5o9jpEeKQqZMBCFd2Uw" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_EEjEANjpEeKQqZMBCFd2Uw" name="layersStackApplication_propertyRegistry_1" memberEnd="_EEjEAdjpEeKQqZMBCFd2Uw _EEc9YNjpEeKQqZMBCFd2Uw">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_EEjEAdjpEeKQqZMBCFd2Uw" name="layersStackApplication" type="_DN8s0NjhEeKQqZMBCFd2Uw" association="_EEjEANjpEeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EEjEAtjpEeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EEjEA9jpEeKQqZMBCFd2Uw" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_ItBOgNjqEeKQqZMBCFd2Uw" name="PropertyIndex">
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_ZcvUINjqEeKQqZMBCFd2Uw" name="property" type="_-vaacNa7EeKPiuTfpuvqHA" association="_ZdBoANjqEeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZcvUIdjqEeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZcvUItjqEeKQqZMBCFd2Uw" value="1"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_j-DE0NjsEeKQqZMBCFd2Uw" name="index" visibility="public" type="_SuHkkNa8EeKPiuTfpuvqHA">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lYYU0NjsEeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lYqosNjsEeKQqZMBCFd2Uw" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_lZbdsNjsEeKQqZMBCFd2Uw">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_NVcLINjqEeKQqZMBCFd2Uw" name="propertyRegistry_property_1" memberEnd="_NVcLIdjqEeKQqZMBCFd2Uw _NVP94NjqEeKQqZMBCFd2Uw">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_NVcLIdjqEeKQqZMBCFd2Uw" name="propertyRegistry" type="_8OefoNjoEeKQqZMBCFd2Uw" association="_NVcLINjqEeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NVcLItjqEeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NVcLI9jqEeKQqZMBCFd2Uw" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_ZdBoANjqEeKQqZMBCFd2Uw" name="propertyIndex_property_1" memberEnd="_ZdBoAdjqEeKQqZMBCFd2Uw _ZcvUINjqEeKQqZMBCFd2Uw">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_ZdBoAdjqEeKQqZMBCFd2Uw" name="propertyIndex" type="_ItBOgNjqEeKQqZMBCFd2Uw" association="_ZdBoANjqEeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZdBoAtjqEeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZdBoA9jqEeKQqZMBCFd2Uw" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_hgu_wNjqEeKQqZMBCFd2Uw" name="StringToPropertyIndexMap">
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_mzbocNjqEeKQqZMBCFd2Uw" name="value" type="_ItBOgNjqEeKQqZMBCFd2Uw" aggregation="composite" association="_mzt8UNjqEeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mzbocdjqEeKQqZMBCFd2Uw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mzboctjqEeKQqZMBCFd2Uw" value="1"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_fQXNsNjsEeKQqZMBCFd2Uw" name="key" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hC3tINjsEeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hDKoENjsEeKQqZMBCFd2Uw" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_hD5A0NjsEeKQqZMBCFd2Uw">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_mzt8UNjqEeKQqZMBCFd2Uw" name="stringToPropertyIndexMap_propertyIndex_1" memberEnd="_mzt8UdjqEeKQqZMBCFd2Uw _mzbocNjqEeKQqZMBCFd2Uw">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_mzt8UdjqEeKQqZMBCFd2Uw" name="stringToPropertyIndexMap" type="_hgu_wNjqEeKQqZMBCFd2Uw" association="_mzt8UNjqEeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mzt8UtjqEeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mzt8U9jqEeKQqZMBCFd2Uw" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_tLip8Nj-EeKQqZMBCFd2Uw" name="TypeRegistry">
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_2az14Nj-EeKQqZMBCFd2Uw" name="types" type="_P4xeANj_EeKQqZMBCFd2Uw" aggregation="composite" association="_2bADINj-EeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2az14dj-EeKQqZMBCFd2Uw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2az14tj-EeKQqZMBCFd2Uw" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_2bADINj-EeKQqZMBCFd2Uw" name="typeRegistry_type_1" memberEnd="_2bADIdj-EeKQqZMBCFd2Uw _2az14Nj-EeKQqZMBCFd2Uw">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_2bADIdj-EeKQqZMBCFd2Uw" name="typeRegistry" type="_tLip8Nj-EeKQqZMBCFd2Uw" association="_2bADINj-EeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2bADItj-EeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2bADI9j-EeKQqZMBCFd2Uw" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_Jh73wNj_EeKQqZMBCFd2Uw" name="propertyRegistry_typeRegistry_1" memberEnd="_Jh73wdj_EeKQqZMBCFd2Uw _JhvqgNj_EeKQqZMBCFd2Uw">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_Jh73wdj_EeKQqZMBCFd2Uw" name="propertyRegistry" type="_8OefoNjoEeKQqZMBCFd2Uw" association="_Jh73wNj_EeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Jh73wtj_EeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Jh73w9j_EeKQqZMBCFd2Uw" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_P4xeANj_EeKQqZMBCFd2Uw" name="StringToTypeMap">
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_U05ZwNj_EeKQqZMBCFd2Uw" name="value" type="_EoL3oNhcEeKgkM6XJF9t4A" aggregation="composite" association="_U1FnANj_EeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_U05Zwdj_EeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_U05Zwtj_EeKQqZMBCFd2Uw" value="1"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_kaf1oNj_EeKQqZMBCFd2Uw" name="key" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lxSCYNj_EeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lxkWQNj_EeKQqZMBCFd2Uw" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_lyPEoNj_EeKQqZMBCFd2Uw">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_U1FnANj_EeKQqZMBCFd2Uw" name="stringToTypeMap_type_1" memberEnd="_U1FnAdj_EeKQqZMBCFd2Uw _U05ZwNj_EeKQqZMBCFd2Uw">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_U1FnAdj_EeKQqZMBCFd2Uw" name="stringToTypeMap" type="_P4xeANj_EeKQqZMBCFd2Uw" association="_U1FnANj_EeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_U1FnAtj_EeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_U1FnA9j_EeKQqZMBCFd2Uw" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_hQam0NkhEeKQqZMBCFd2Uw" name="layersStack_diagram_1" memberEnd="_hQam0dkhEeKQqZMBCFd2Uw _hQIS8NkhEeKQqZMBCFd2Uw">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_hQam0dkhEeKQqZMBCFd2Uw" name="layersStack" type="_gT0asNa7EeKPiuTfpuvqHA" association="_hQam0NkhEeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hQam0tkhEeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hQam09khEeKQqZMBCFd2Uw" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_zYGE8NqBEeKQqZMBCFd2Uw" name="LayerDescriptorRegistry">
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_TzkRwNqCEeKQqZMBCFd2Uw" name="layerDescriptors" type="_eNnjMNa7EeKPiuTfpuvqHA" aggregation="composite" association="_Tz2loNqCEeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_TzkRwdqCEeKQqZMBCFd2Uw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_TzkRwtqCEeKQqZMBCFd2Uw" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_5r8BkNqBEeKQqZMBCFd2Uw" name="layersStackApplication_layerDescriptorRegistry_1" memberEnd="_5r8BkdqBEeKQqZMBCFd2Uw _5rptsNqBEeKQqZMBCFd2Uw">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_5r8BkdqBEeKQqZMBCFd2Uw" name="layersStackApplication" type="_DN8s0NjhEeKQqZMBCFd2Uw" association="_5r8BkNqBEeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5r8BktqBEeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5r8Bk9qBEeKQqZMBCFd2Uw" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_Tz2loNqCEeKQqZMBCFd2Uw" name="layerDescriptorRegistry_layerDescriptor_1" memberEnd="_Tz2lodqCEeKQqZMBCFd2Uw _TzkRwNqCEeKQqZMBCFd2Uw">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_Tz2lodqCEeKQqZMBCFd2Uw" name="layerDescriptorRegistry" type="_zYGE8NqBEeKQqZMBCFd2Uw" association="_Tz2loNqCEeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Tz2lotqCEeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Tz2lo9qCEeKQqZMBCFd2Uw" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_iim5ENqCEeKQqZMBCFd2Uw" name="layerDescriptor_propertyRegistry_1" memberEnd="_iim5EdqCEeKQqZMBCFd2Uw _iiUlMNqCEeKQqZMBCFd2Uw">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_iim5EdqCEeKQqZMBCFd2Uw" name="layerDescriptor" type="_eNnjMNa7EeKPiuTfpuvqHA" association="_iim5ENqCEeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iim5EtqCEeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iim5E9qCEeKQqZMBCFd2Uw" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_xhwY8NqCEeKQqZMBCFd2Uw" name="SimpleLayerDescriptor">
+      <generalization xmi:type="uml:Generalization" xmi:id="_3ee2ENqCEeKQqZMBCFd2Uw" general="_eNnjMNa7EeKPiuTfpuvqHA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_z4m7kNqCEeKQqZMBCFd2Uw" name="RegExpLayerDescriptor">
+      <generalization xmi:type="uml:Generalization" xmi:id="_5RvjcNqCEeKQqZMBCFd2Uw" general="_eNnjMNa7EeKPiuTfpuvqHA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_325AENt0EeKQqZMBCFd2Uw" name="ApplicationDependantElement" isAbstract="true">
+      <ownedComment xmi:type="uml:Comment" xmi:id="_KjtrkNt1EeKQqZMBCFd2Uw">
+        <body>Base class for elements depending on the LayerStackApplication.&#xD;
+This class carry a referenceto the Application.</body>
+      </ownedComment>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="__rXB8Nt0EeKQqZMBCFd2Uw" name="application" type="_DN8s0NjhEeKQqZMBCFd2Uw" association="__rpV0Nt0EeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__rXB8dt0EeKQqZMBCFd2Uw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__rXB8tt0EeKQqZMBCFd2Uw" value="1"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="__rpV0Nt0EeKQqZMBCFd2Uw" name="applicationDependantElement_layersStackApplication_1" memberEnd="__rpV0dt0EeKQqZMBCFd2Uw __rXB8Nt0EeKQqZMBCFd2Uw">
+      <ownedEnd xmi:type="uml:Property" xmi:id="__rpV0dt0EeKQqZMBCFd2Uw" name="applicationDependantElement" type="_325AENt0EeKQqZMBCFd2Uw" association="__rpV0Nt0EeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__rpV0tt0EeKQqZMBCFd2Uw" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__rpV09t0EeKQqZMBCFd2Uw" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_IOwJ4Nt2EeKQqZMBCFd2Uw" name="LayerApplicationFactory">
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_wROkUdt2EeKQqZMBCFd2Uw" name="application" type="_DN8s0NjhEeKQqZMBCFd2Uw" association="_wROkUNt2EeKQqZMBCFd2Uw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wROkUtt2EeKQqZMBCFd2Uw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wROkU9t2EeKQqZMBCFd2Uw" value="1"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_wROkUNt2EeKQqZMBCFd2Uw" name="layersStackApplication_layerApplicationFactory_1" memberEnd="_wROkUdt2EeKQqZMBCFd2Uw _wRCXENt2EeKQqZMBCFd2Uw"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_iYKFMNxGEeKwptaAAanMDg" name="LayersException"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_k-dZENxGEeKwptaAAanMDg" name="NotFoundException">
+      <generalization xmi:type="uml:Generalization" xmi:id="_oxlscNxGEeKwptaAAanMDg" general="_iYKFMNxGEeKwptaAAanMDg"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_KG7HMNxMEeKwptaAAanMDg" name="BadStateException">
+      <generalization xmi:type="uml:Generalization" xmi:id="_ShHsUNxMEeKwptaAAanMDg" general="_iYKFMNxGEeKwptaAAanMDg"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_agAC4NxWEeKwptaAAanMDg" name="NullInstance">
+      <generalization xmi:type="uml:Generalization" xmi:id="_drCbgNxWEeKwptaAAanMDg" general="_AjTZ8Na8EeKPiuTfpuvqHA"/>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_OU7XsNxXEeKwptaAAanMDg" name="getInstance" isStatic="true">
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_WSaLoNxXEeKwptaAAanMDg" type="_agAC4NxWEeKwptaAAanMDg" direction="return"/>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_z9aN8OHTEeKCZbxNW-U3VQ" name="RegExpLayer">
+      <generalization xmi:type="uml:Generalization" xmi:id="_R8qP8OHUEeKCZbxNW-U3VQ" general="_51zAINa7EeKPiuTfpuvqHA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_Bm93wBZ1EeOZwp016gnCFQ" name="expr" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DqoYoBZ1EeOZwp016gnCFQ" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Dq76oBZ1EeOZwp016gnCFQ" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_Dr0rcBZ1EeOZwp016gnCFQ">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_Fp_BQBZ1EeOZwp016gnCFQ" name="language" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_H11NwBZ1EeOZwp016gnCFQ" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_H2IIsBZ1EeOZwp016gnCFQ" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_H3BgkBZ1EeOZwp016gnCFQ">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_NAa0AFCkEeO_9LQ4jZWm3w" name="isDomainChangedEventDependant" visibility="public" type="_TqqsYNa8EeKPiuTfpuvqHA">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_TxFPgFCkEeO_9LQ4jZWm3w" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_TxFPgVCkEeO_9LQ4jZWm3w" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_TxFPglCkEeO_9LQ4jZWm3w">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_X_qIwFCkEeO_9LQ4jZWm3w" name="domainChangedEventLevel" visibility="public" type="_7cWpgFVHEeOah7Z-UYdQAA">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rnnm0FCkEeO_9LQ4jZWm3w" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rnnm0VCkEeO_9LQ4jZWm3w" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_rnnm0lCkEeO_9LQ4jZWm3w">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_uJr68FCkEeO_9LQ4jZWm3w" name="isDiagramChangedEventDependant" visibility="public" type="_TqqsYNa8EeKPiuTfpuvqHA">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ua2jcFCkEeO_9LQ4jZWm3w" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ua8qEFCkEeO_9LQ4jZWm3w" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_ua8qEVCkEeO_9LQ4jZWm3w">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_y220sFCkEeO_9LQ4jZWm3w" name="diagramChangedEventLevel" visibility="public" type="_7cWpgFVHEeOah7Z-UYdQAA">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1VR-8FCkEeO_9LQ4jZWm3w" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1VR-8VCkEeO_9LQ4jZWm3w" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_1VR-8lCkEeO_9LQ4jZWm3w">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_sPbYQFClEeO_9LQ4jZWm3w" name="expressionContextObjectType" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wnnggFClEeO_9LQ4jZWm3w" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wnnggVClEeO_9LQ4jZWm3w" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_wnngglClEeO_9LQ4jZWm3w">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_kI0XsBZ0EeOZwp016gnCFQ" name="activate">
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_Ifv3ABaBEeOZwp016gnCFQ" name="newParentLayer" type="_WuVRUNjjEeKQqZMBCFd2Uw"/>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_lpOagBZ0EeOZwp016gnCFQ" name="deactivate">
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_MZS7cBaBEeOZwp016gnCFQ" name="oldParentLayer" type="_WuVRUNjjEeKQqZMBCFd2Uw"/>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_pKKxsBZ0EeOZwp016gnCFQ" name="isDerivedView" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_-UwgIBZ0EeOZwp016gnCFQ" name="res" type="_TqqsYNa8EeKPiuTfpuvqHA" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LLUi4BZ1EeOZwp016gnCFQ" value="1"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LLnd0BZ1EeOZwp016gnCFQ" value="1"/>
+        </ownedParameter>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_0YIjYFVIEeOah7Z-UYdQAA" name="view">
+          <type xmi:type="uml:Class" href="notation/notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_EnH6gFVJEeOah7Z-UYdQAA" name="attachDerivedView" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_Pusr4FVJEeOah7Z-UYdQAA">
+          <body>Attach the provided view to the Layer if the isDerivedView(view) return true for this view.</body>
+        </ownedComment>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_EnH6hFVJEeOah7Z-UYdQAA" name="view">
+          <type xmi:type="uml:Class" href="notation/notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_Y5m8QFVJEeOah7Z-UYdQAA" name="attachDerivedViews" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_Y5m8QVVJEeOah7Z-UYdQAA">
+          <body>For each view, attach it to the Layer if the isDerivedView(view) return true for the view.</body>
+        </ownedComment>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_Y5m8QlVJEeOah7Z-UYdQAA" name="views">
+          <type xmi:type="uml:Class" href="notation/notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_h3YvkFVJEeOah7Z-UYdQAA"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_h3YvkVVJEeOah7Z-UYdQAA" value="*"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_m3jd0FVJEeOah7Z-UYdQAA" name="attachDerivedViews" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_m3jd0VVJEeOah7Z-UYdQAA">
+          <body>Attach the views associated to the Diagram to this layer, if the isDerivedView(view) return true for the view.</body>
+        </ownedComment>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_Lwc4MFVKEeOah7Z-UYdQAA" name="lookupDerivedViews" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_Lwc4MVVKEeOah7Z-UYdQAA">
+          <body>Return the subcollection of views for which the expression return true.</body>
+        </ownedComment>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_Lwc4MlVKEeOah7Z-UYdQAA" name="views">
+          <type xmi:type="uml:Class" href="notation/notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Lwc4M1VKEeOah7Z-UYdQAA"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Lwc4NFVKEeOah7Z-UYdQAA" value="*"/>
+        </ownedParameter>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_X28v8FVKEeOah7Z-UYdQAA" name="res" direction="return">
+          <type xmi:type="uml:Class" href="notation/notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hTG1cFVXEeOeP67GJGKDkA"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hTG1cVVXEeOeP67GJGKDkA" value="*"/>
+        </ownedParameter>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="__1GNoOHTEeKCZbxNW-U3VQ" name="Layer">
+      <generalization xmi:type="uml:Generalization" xmi:id="_am4OEOHUEeKCZbxNW-U3VQ" general="_51zAINa7EeKPiuTfpuvqHA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_ti_eQOT_EeKSDdPH_NXL-g" name="Color">
+      <generalization xmi:type="uml:Generalization" xmi:id="_Y0k5AOUAEeKSDdPH_NXL-g" general="_EoL3oNhcEeKgkM6XJF9t4A"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_vkSnoOT_EeKSDdPH_NXL-g" name="ColorInstance">
+      <generalization xmi:type="uml:Generalization" xmi:id="_YCxooOUAEeKSDdPH_NXL-g" general="_AjTZ8Na8EeKPiuTfpuvqHA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_Q8HvAOUAEeKSDdPH_NXL-g" name="value" visibility="public" type="_SuHkkNa8EeKPiuTfpuvqHA">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q8HvAeUAEeKSDdPH_NXL-g" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q8HvAuUAEeKSDdPH_NXL-g" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_Q8HvA-UAEeKSDdPH_NXL-g">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_fL2kIOUAEeKSDdPH_NXL-g" name="FillInstance">
+      <generalization xmi:type="uml:Generalization" xmi:id="_jXYwcOUAEeKSDdPH_NXL-g" general="_AjTZ8Na8EeKPiuTfpuvqHA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_nVngkOUAEeKSDdPH_NXL-g" name="transparency" visibility="public" type="_SuHkkNa8EeKPiuTfpuvqHA">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nVngkeUAEeKSDdPH_NXL-g" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nVngkuUAEeKSDdPH_NXL-g" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_nVngk-UAEeKSDdPH_NXL-g">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_uTht4OUAEeKSDdPH_NXL-g" name="fillColor" type="_vkSnoOT_EeKSDdPH_NXL-g" aggregation="composite" association="_uTre4OUAEeKSDdPH_NXL-g">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uTht4eUAEeKSDdPH_NXL-g" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uTht4uUAEeKSDdPH_NXL-g" value="1"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_gsEZsOUAEeKSDdPH_NXL-g" name="Fill">
+      <generalization xmi:type="uml:Generalization" xmi:id="_ip-Q0OUAEeKSDdPH_NXL-g" general="_EoL3oNhcEeKgkM6XJF9t4A"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_uTre4OUAEeKSDdPH_NXL-g" name="fillInstance_colorInstance_1" memberEnd="_uTre4eUAEeKSDdPH_NXL-g _uTht4OUAEeKSDdPH_NXL-g">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_uTre4eUAEeKSDdPH_NXL-g" name="fillInstance" type="_fL2kIOUAEeKSDdPH_NXL-g" association="_uTre4OUAEeKSDdPH_NXL-g">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uTre4uUAEeKSDdPH_NXL-g" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uTre4-UAEeKSDdPH_NXL-g" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_q85OgO3uEeKwLp35IbAIig" name="PropertySetterRegistry">
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_3GHqIe3uEeKwLp35IbAIig" name="application" type="_DN8s0NjhEeKQqZMBCFd2Uw" association="_3GHqIO3uEeKwLp35IbAIig">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3GHqIu3uEeKwLp35IbAIig"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3GHqI-3uEeKwLp35IbAIig" value="1"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_iPT94O3vEeKwLp35IbAIig" name="propertySetters" type="_fyVlIO3vEeKwLp35IbAIig" isOrdered="true" association="_iPmRwO3vEeKwLp35IbAIig">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iPT94e3vEeKwLp35IbAIig"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iPT94u3vEeKwLp35IbAIig" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_hmejMO5mEeK0p4PkXjd-_Q" name="setterMap" type="_JSMf8O5mEeK0p4PkXjd-_Q" aggregation="composite" association="_hmkp0O5mEeK0p4PkXjd-_Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hmejMe5mEeK0p4PkXjd-_Q"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hmejMu5mEeK0p4PkXjd-_Q" value="*"/>
+      </ownedAttribute>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_L7LusO5WEeK0p4PkXjd-_Q" name="getPropertySetter" raisedException="_k-dZENxGEeKwptaAAanMDg">
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_Tr1nkO5WEeK0p4PkXjd-_Q" name="property" type="_-vaacNa7EeKPiuTfpuvqHA"/>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_ZJbRoO5WEeK0p4PkXjd-_Q" name="return" type="_fyVlIO3vEeKwLp35IbAIig" direction="return"/>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_fF4pAO5WEeK0p4PkXjd-_Q" name="getPropertySetter" raisedException="_k-dZENxGEeKwptaAAanMDg">
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_fF4pAe5WEeK0p4PkXjd-_Q" name="property" type="_OyQ5QL1xEeKKJJ5BmR3W3Q"/>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_fF4pAu5WEeK0p4PkXjd-_Q" name="return" type="_fyVlIO3vEeKwLp35IbAIig" direction="return"/>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_mCwUgO5WEeK0p4PkXjd-_Q" name="addPropertySetter">
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_quPzQO5WEeK0p4PkXjd-_Q" name="setter" type="_fyVlIO3vEeKwLp35IbAIig"/>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_3GHqIO3uEeKwLp35IbAIig" name="layersStackApplication_propertySetterRegistry_1" memberEnd="_3GHqIe3uEeKwLp35IbAIig _3F7c4O3uEeKwLp35IbAIig"/>
+    <packagedElement xmi:type="uml:Class" xmi:id="_fyVlIO3vEeKwLp35IbAIig" name="PropertySetter" isAbstract="true">
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_4C8Y8O5VEeK0p4PkXjd-_Q" name="property" type="_-vaacNa7EeKPiuTfpuvqHA" association="_4DImMO5VEeK0p4PkXjd-_Q">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_ApRVkO5WEeK0p4PkXjd-_Q">
+          <body>The property for which this setter is for.</body>
+        </ownedComment>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4C8Y8e5VEeK0p4PkXjd-_Q"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4C8Y8u5VEeK0p4PkXjd-_Q" value="1"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_p3vR8O5qEeK0p4PkXjd-_Q" name="propertyName" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_scKWgO5qEeK0p4PkXjd-_Q" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sccqYO5qEeK0p4PkXjd-_Q" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_sdl54O5qEeK0p4PkXjd-_Q">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_GOgVMO5VEeK0p4PkXjd-_Q" name="setValue">
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_P9Ky4O5VEeK0p4PkXjd-_Q" name="view">
+          <type xmi:type="uml:Class" href="notation/notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_pXFBcO5VEeK0p4PkXjd-_Q" name="value" type="_AjTZ8Na8EeKPiuTfpuvqHA"/>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_iPmRwO3vEeKwLp35IbAIig" name="propertySetterRegistry_propertySetter_1" memberEnd="_iPmRwe3vEeKwLp35IbAIig _iPT94O3vEeKwLp35IbAIig">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_iPmRwe3vEeKwLp35IbAIig" name="propertySetterRegistry" type="_q85OgO3uEeKwLp35IbAIig" association="_iPmRwO3vEeKwLp35IbAIig">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iPmRwu3vEeKwLp35IbAIig" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iPmRw-3vEeKwLp35IbAIig" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_4DImMO5VEeK0p4PkXjd-_Q" name="propertySetter_property_1" memberEnd="_4DImMe5VEeK0p4PkXjd-_Q _4C8Y8O5VEeK0p4PkXjd-_Q">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_4DImMe5VEeK0p4PkXjd-_Q" name="propertySetter" type="_fyVlIO3vEeKwLp35IbAIig" association="_4DImMO5VEeK0p4PkXjd-_Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4DImMu5VEeK0p4PkXjd-_Q" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4DImM-5VEeK0p4PkXjd-_Q" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_R-WVkO5XEeK0p4PkXjd-_Q" name="FillPropertySetter">
+      <generalization xmi:type="uml:Generalization" xmi:id="_Y8pkcO5XEeK0p4PkXjd-_Q" general="_fyVlIO3vEeKwLp35IbAIig"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Ue7b8O5XEeK0p4PkXjd-_Q" name="IsValidPropertySetter">
+      <generalization xmi:type="uml:Generalization" xmi:id="_ZxycsO5XEeK0p4PkXjd-_Q" general="_fyVlIO3vEeKwLp35IbAIig"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_JSMf8O5mEeK0p4PkXjd-_Q" name="StringToPropertySetter">
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_NBuFsO5mEeK0p4PkXjd-_Q" name="key" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PgE-gO5mEeK0p4PkXjd-_Q" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PgdZAO5mEeK0p4PkXjd-_Q" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_Phgh4O5mEeK0p4PkXjd-_Q">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_QfjegO5mEeK0p4PkXjd-_Q" name="value" type="_fyVlIO3vEeKwLp35IbAIig" aggregation="composite" association="_QfvrwO5mEeK0p4PkXjd-_Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qfjege5mEeK0p4PkXjd-_Q" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qfjegu5mEeK0p4PkXjd-_Q" value="1"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_QfvrwO5mEeK0p4PkXjd-_Q" name="stringToPropertySetter_propertySetter_1" memberEnd="_Qfvrwe5mEeK0p4PkXjd-_Q _QfjegO5mEeK0p4PkXjd-_Q">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_Qfvrwe5mEeK0p4PkXjd-_Q" name="stringToPropertySetter" type="_JSMf8O5mEeK0p4PkXjd-_Q" association="_QfvrwO5mEeK0p4PkXjd-_Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Qfvrwu5mEeK0p4PkXjd-_Q" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Qfvrw-5mEeK0p4PkXjd-_Q" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_hmkp0O5mEeK0p4PkXjd-_Q" name="propertySetterRegistry_stringToPropertySetter_1" memberEnd="_hmkp0e5mEeK0p4PkXjd-_Q _hmejMO5mEeK0p4PkXjd-_Q">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_hmkp0e5mEeK0p4PkXjd-_Q" name="propertySetterRegistry" type="_q85OgO3uEeKwLp35IbAIig" association="_hmkp0O5mEeK0p4PkXjd-_Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hmkp0u5mEeK0p4PkXjd-_Q" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hmkp0-5mEeK0p4PkXjd-_Q" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_-z_6YO5zEeK0p4PkXjd-_Q" name="NullPropertySetter">
+      <generalization xmi:type="uml:Generalization" xmi:id="_Co0P0O50EeK0p4PkXjd-_Q" general="_fyVlIO3vEeKwLp35IbAIig"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_Qeyn4O7GEeK0p4PkXjd-_Q" name="ComputePropertyValueCommand"/>
+    <packagedElement xmi:type="uml:Interface" xmi:id="_XZJOcO8UEeK0p4PkXjd-_Q" name="ComputePropertyValueCommandItf">
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_uYMx4O8ZEeK0p4PkXjd-_Q" name="getCmdValue" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_f0BhUO8aEeK0p4PkXjd-_Q">
+          <body>	 * Execute the command and return the computed value.&#xD;
+	 * Compute the value of the Property, and return it.&#xD;
+	 * @return The computed value of the Property.&#xD;
+</body>
+        </ownedComment>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_zjYdUO8ZEeK0p4PkXjd-_Q" type="_AjTZ8Na8EeKPiuTfpuvqHA" direction="return"/>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_rEb-0O-MEeK0p4PkXjd-_Q" name="abstractLayer_property_1" memberEnd="_rEb-0e-MEeK0p4PkXjd-_Q _rEPKgO-MEeK0p4PkXjd-_Q">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_rEb-0e-MEeK0p4PkXjd-_Q" name="abstractLayer" type="_51zAINa7EeKPiuTfpuvqHA" association="_rEb-0O-MEeK0p4PkXjd-_Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rEb-0u-MEeK0p4PkXjd-_Q" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rEb-0--MEeK0p4PkXjd-_Q" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_RnjeUO-YEeK0p4PkXjd-_Q" name="LineType">
+      <generalization xmi:type="uml:Generalization" xmi:id="_UJAucO-YEeK0p4PkXjd-_Q" general="_EoL3oNhcEeKgkM6XJF9t4A"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_ZGwa0O-YEeK0p4PkXjd-_Q" name="LineInstance">
+      <generalization xmi:type="uml:Generalization" xmi:id="_ijurkO-YEeK0p4PkXjd-_Q" general="_AjTZ8Na8EeKPiuTfpuvqHA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_vpaIYO-YEeK0p4PkXjd-_Q" name="lineColor" visibility="public" type="_SuHkkNa8EeKPiuTfpuvqHA">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_x1KOQO-YEeK0p4PkXjd-_Q" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_x1iowO-YEeK0p4PkXjd-_Q" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_x2frAO-YEeK0p4PkXjd-_Q">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_yrVBQO-YEeK0p4PkXjd-_Q" name="lineWith" visibility="public" type="_SuHkkNa8EeKPiuTfpuvqHA">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1JMK0O-YEeK0p4PkXjd-_Q" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1JbbYO-YEeK0p4PkXjd-_Q" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_1KSXAO-YEeK0p4PkXjd-_Q">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_JgyOsO-cEeK0p4PkXjd-_Q" name="LinePropertySetter">
+      <generalization xmi:type="uml:Generalization" xmi:id="_QKhi0O-cEeK0p4PkXjd-_Q" general="_fyVlIO3vEeKwLp35IbAIig"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Gvwp0O-iEeK0p4PkXjd-_Q" name="FontPropertySetter">
+      <generalization xmi:type="uml:Generalization" xmi:id="_LuAFcO-iEeK0p4PkXjd-_Q" general="_fyVlIO3vEeKwLp35IbAIig"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_OtShEO-iEeK0p4PkXjd-_Q" name="FontInstance">
+      <generalization xmi:type="uml:Generalization" xmi:id="_VH6bIO-iEeK0p4PkXjd-_Q" general="_AjTZ8Na8EeKPiuTfpuvqHA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_Xlt6UO-iEeK0p4PkXjd-_Q" name="fontColor" visibility="public" type="_SuHkkNa8EeKPiuTfpuvqHA">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aTOpcO-iEeK0p4PkXjd-_Q" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aTnD8O-iEeK0p4PkXjd-_Q" value="1"/>
+        <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_vcdF8O-iEeK0p4PkXjd-_Q" value="15053796"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_bD8UsO-iEeK0p4PkXjd-_Q" name="fontName" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dY9rUO-iEeK0p4PkXjd-_Q" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dZWF0O-iEeK0p4PkXjd-_Q" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_sZKUEO-iEeK0p4PkXjd-_Q" value="Segoe UI"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_epxy8O-iEeK0p4PkXjd-_Q" name="fontHeigh" visibility="public" type="_SuHkkNa8EeKPiuTfpuvqHA">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_heIw8O-iEeK0p4PkXjd-_Q" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hebE0O-iEeK0p4PkXjd-_Q" value="1"/>
+        <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_x9IS8O-iEeK0p4PkXjd-_Q" value="9"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_inEu8O-iEeK0p4PkXjd-_Q" name="bold" visibility="public" type="_TqqsYNa8EeKPiuTfpuvqHA">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_k3zbcO-iEeK0p4PkXjd-_Q" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_k4L18O-iEeK0p4PkXjd-_Q" value="1"/>
+        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_0K5LAO-iEeK0p4PkXjd-_Q" value="true"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Q6ta4O-iEeK0p4PkXjd-_Q" name="FontType">
+      <generalization xmi:type="uml:Generalization" xmi:id="_UKLAgO-iEeK0p4PkXjd-_Q" general="_EoL3oNhcEeKgkM6XJF9t4A"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_xZ-bMO-lEeK0p4PkXjd-_Q" name="IsVisiblePropertySetter">
+      <generalization xmi:type="uml:Generalization" xmi:id="_01zB0O-lEeK0p4PkXjd-_Q" general="_fyVlIO3vEeKwLp35IbAIig"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_GKddUAkdEeOnVqX9VcfeWQ" name="LayerOperatorDescriptor">
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_5xnb4AkdEeOnVqX9VcfeWQ" name="propertyOperators" type="_wk7C0AkdEeOnVqX9VcfeWQ" isOrdered="true" association="_5x5vwAkdEeOnVqX9VcfeWQ">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5xnb4QkdEeOnVqX9VcfeWQ"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5xnb4gkdEeOnVqX9VcfeWQ" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_ysOUQAkiEeOnVqX9VcfeWQ" name="name" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1AnYwAkiEeOnVqX9VcfeWQ" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1A5soAkiEeOnVqX9VcfeWQ" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_1B2u4AkiEeOnVqX9VcfeWQ">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_w5x7sAkhEeOnVqX9VcfeWQ" name="getPropertyOperator" raisedException="_k-dZENxGEeKwptaAAanMDg">
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_C90I4AkiEeOnVqX9VcfeWQ" name="property" type="_-vaacNa7EeKPiuTfpuvqHA"/>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_MNkdAAkiEeOnVqX9VcfeWQ" name="return" type="_wk7C0AkdEeOnVqX9VcfeWQ" direction="return"/>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_TzuWEAkiEeOnVqX9VcfeWQ" name="setPropertyOperator">
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_boCm8AkiEeOnVqX9VcfeWQ" name="property" type="_-vaacNa7EeKPiuTfpuvqHA"/>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_eeXT0AkiEeOnVqX9VcfeWQ" name="operator" type="_wk7C0AkdEeOnVqX9VcfeWQ"/>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_htp6UAkiEeOnVqX9VcfeWQ" name="createLayerOperator">
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_rwGPoAkiEeOnVqX9VcfeWQ" name="return" type="_WuVRUNjjEeKQqZMBCFd2Uw" direction="return"/>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_oj_4UAkoEeOnVqX9VcfeWQ" name="setPropertyCollectionSize">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_x-5FcAkoEeOnVqX9VcfeWQ">
+          <body>Set the size of the property collection declared in the PropertyRegistry.&#xD;
+Setting the size allow to set the size of the lists indexed with Properties' index (like propertyOperators).</body>
+        </ownedComment>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_wdouEAkoEeOnVqX9VcfeWQ" name="size" type="_SuHkkNa8EeKPiuTfpuvqHA"/>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_x2wVwAkrEeOnVqX9VcfeWQ" name="defaultPropertyOperator" type="_G-g6AAkpEeOnVqX9VcfeWQ"/>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_KSvhUAkdEeOnVqX9VcfeWQ" name="abstractLayerOperator_layerOperatorDescriptor_1" memberEnd="_KSvhUQkdEeOnVqX9VcfeWQ _KSjUEAkdEeOnVqX9VcfeWQ">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_KSvhUQkdEeOnVqX9VcfeWQ" name="abstractLayerOperator" type="_WuVRUNjjEeKQqZMBCFd2Uw" association="_KSvhUAkdEeOnVqX9VcfeWQ">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KSvhUgkdEeOnVqX9VcfeWQ" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KSvhUwkdEeOnVqX9VcfeWQ" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_T5we4AkdEeOnVqX9VcfeWQ" name="LayerOperatorDescriptorRegistry">
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_X8IIIAkdEeOnVqX9VcfeWQ" name="descriptors" type="_GKddUAkdEeOnVqX9VcfeWQ" aggregation="composite" association="_X8acAAkdEeOnVqX9VcfeWQ">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_X8IIIQkdEeOnVqX9VcfeWQ"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_X8IIIgkdEeOnVqX9VcfeWQ" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_31bcAAkdEeOnVqX9VcfeWQ" name="propertyOperators" type="_wk7C0AkdEeOnVqX9VcfeWQ" isOrdered="true" aggregation="composite" association="_31lNAAkdEeOnVqX9VcfeWQ">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_31bcAQkdEeOnVqX9VcfeWQ"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_31bcAgkdEeOnVqX9VcfeWQ" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_TfMTsAkmEeOnVqX9VcfeWQ" name="propertyCollectionSize" visibility="public" type="_SuHkkNa8EeKPiuTfpuvqHA">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_Z8ZnsAkmEeOnVqX9VcfeWQ">
+          <body>This represents the number of Properties that are declared in the PrpertyRegistry.&#xD;
+This number is used to initialized the collections indexed by Properties' index &#xD;
+(like LayerOperatorDescriptor::propertyOperators).&#xD;
+&lt;br>&#xD;
+This number should be set before any call to addLayerOperatorDescriptor.</body>
+        </ownedComment>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XrjmcAkmEeOnVqX9VcfeWQ" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Xr8A8AkmEeOnVqX9VcfeWQ" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_Xs5DMAkmEeOnVqX9VcfeWQ">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_rTr0UA2fEeOjX-JbGFEH7w" name="defaultOperator" visibility="public" type="_G-g6AAkpEeOnVqX9VcfeWQ" isReadOnly="true">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_xzwPEA2fEeOjX-JbGFEH7w">
+          <body>The default Operator used when the propertiesListSize are set.</body>
+        </ownedComment>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_usAbAA2fEeOjX-JbGFEH7w" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_usUkEA2fEeOjX-JbGFEH7w" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_utH1UA2fEeOjX-JbGFEH7w">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_ZjkYUAkjEeOnVqX9VcfeWQ" name="addLayerOperatorDescriptor">
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_kc_Y8AkjEeOnVqX9VcfeWQ" name="descriptor" type="_GKddUAkdEeOnVqX9VcfeWQ"/>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_sQbgEAkjEeOnVqX9VcfeWQ" name="getLayerOperatorDescriptor" raisedException="_k-dZENxGEeKwptaAAanMDg">
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_sQbgEQkjEeOnVqX9VcfeWQ" name="descriptor" type="_GKddUAkdEeOnVqX9VcfeWQ" direction="return"/>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_0hL1UAkjEeOnVqX9VcfeWQ" name="name" type="_OyQ5QL1xEeKKJJ5BmR3W3Q"/>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_6Ui7EAkjEeOnVqX9VcfeWQ" name="addPropertyOperator">
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="__1tdkAkjEeOnVqX9VcfeWQ" name="operator" type="_wk7C0AkdEeOnVqX9VcfeWQ"/>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_HQzWIAkkEeOnVqX9VcfeWQ" name="getPropertyOperator" raisedException="_k-dZENxGEeKwptaAAanMDg">
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_HQzWIQkkEeOnVqX9VcfeWQ" name="operator" type="_wk7C0AkdEeOnVqX9VcfeWQ" direction="return"/>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_M6KLUAkkEeOnVqX9VcfeWQ" name="name" type="_OyQ5QL1xEeKKJJ5BmR3W3Q"/>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_U3cyAAkkEeOnVqX9VcfeWQ" name="attachOperatorToDescriptor" raisedException="_k-dZENxGEeKwptaAAanMDg">
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_v9TU8A0JEeOjX-JbGFEH7w" name="property" type="_-vaacNa7EeKPiuTfpuvqHA"/>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_csy9oAkkEeOnVqX9VcfeWQ" name="operatorName" type="_OyQ5QL1xEeKKJJ5BmR3W3Q"/>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_hIyn0AkkEeOnVqX9VcfeWQ" name="layerDescriptorName" type="_OyQ5QL1xEeKKJJ5BmR3W3Q"/>
+      </ownedOperation>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_p1keQBKGEeO9e9pZ1EIGJg" name="createLayerOperator" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_p1keQRKGEeO9e9pZ1EIGJg" name="return" type="_WuVRUNjjEeKQqZMBCFd2Uw" direction="return"/>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_vtq6EBKGEeO9e9pZ1EIGJg" name="layerOperatorID" type="_OyQ5QL1xEeKKJJ5BmR3W3Q"/>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_X8acAAkdEeOnVqX9VcfeWQ" name="layerOperatorDescriptorRegistry_layerOperatorDescriptor_1" memberEnd="_X8acAQkdEeOnVqX9VcfeWQ _X8IIIAkdEeOnVqX9VcfeWQ">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_X8acAQkdEeOnVqX9VcfeWQ" name="layerOperatorDescriptorRegistry" type="_T5we4AkdEeOnVqX9VcfeWQ" association="_X8acAAkdEeOnVqX9VcfeWQ">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_X8acAgkdEeOnVqX9VcfeWQ" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_X8acAwkdEeOnVqX9VcfeWQ" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_wk7C0AkdEeOnVqX9VcfeWQ" name="PropertyOperator">
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_8J3zEAklEeOnVqX9VcfeWQ" name="name" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8J3zEQklEeOnVqX9VcfeWQ" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8J3zEgklEeOnVqX9VcfeWQ" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_8J3zEwklEeOnVqX9VcfeWQ">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_WKdZYAkhEeOnVqX9VcfeWQ" name="getComputePropertyValueCommand" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_WKdZYQkhEeOnVqX9VcfeWQ">
+          <body>Get the ComputePropertyValueCommands for the specified views and Property.&#xD;
+@return A list of Command allowing to get the value of the property for each view. The list contains null if no command is available for a View.</body>
+        </ownedComment>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_WKdZYwkhEeOnVqX9VcfeWQ" name="property" type="_Qeyn4O7GEeK0p4PkXjd-_Q" isOrdered="true">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lkDZkAkhEeOnVqX9VcfeWQ"/>
+          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lkVtcAkhEeOnVqX9VcfeWQ" value="*"/>
+        </ownedParameter>
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_WKdZZAkhEeOnVqX9VcfeWQ" name="result" type="_Qeyn4O7GEeK0p4PkXjd-_Q" direction="return"/>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_31lNAAkdEeOnVqX9VcfeWQ" name="layerOperatorDescriptorRegistry_propertyOperator_1" memberEnd="_31lNAQkdEeOnVqX9VcfeWQ _31bcAAkdEeOnVqX9VcfeWQ">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_31lNAQkdEeOnVqX9VcfeWQ" name="layerOperatorDescriptorRegistry" type="_T5we4AkdEeOnVqX9VcfeWQ" association="_31lNAAkdEeOnVqX9VcfeWQ">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_31lNAgkdEeOnVqX9VcfeWQ" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_31lNAwkdEeOnVqX9VcfeWQ" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_5x5vwAkdEeOnVqX9VcfeWQ" name="layerOperatorDescriptor_propertyOperator_1" memberEnd="_5x5vwQkdEeOnVqX9VcfeWQ _5xnb4AkdEeOnVqX9VcfeWQ">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_5x5vwQkdEeOnVqX9VcfeWQ" name="layerOperatorDescriptor" type="_GKddUAkdEeOnVqX9VcfeWQ" association="_5x5vwAkdEeOnVqX9VcfeWQ">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5x5vwgkdEeOnVqX9VcfeWQ" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5x5vwwkdEeOnVqX9VcfeWQ" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_G-g6AAkpEeOnVqX9VcfeWQ" name="DefaultPropertyOperator">
+      <ownedComment xmi:type="uml:Comment" xmi:id="_MkVTAAkpEeOnVqX9VcfeWQ">
+        <body>This DefaultPropertyOperator works for any Property.&#xD;
+It returns the first value of the provided list.</body>
+      </ownedComment>
+      <generalization xmi:type="uml:Generalization" xmi:id="_LAjzIAkpEeOnVqX9VcfeWQ" general="_wk7C0AkdEeOnVqX9VcfeWQ"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_ELKvAAkxEeOnVqX9VcfeWQ" name="TopLayerOperatorDescriptor">
+      <generalization xmi:type="uml:Generalization" xmi:id="_ON-3wAkxEeOnVqX9VcfeWQ" general="_GKddUAkdEeOnVqX9VcfeWQ"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Hxsw0AkxEeOnVqX9VcfeWQ" name="StackedLayerOperatorDescriptor">
+      <generalization xmi:type="uml:Generalization" xmi:id="_PQ9-wAkxEeOnVqX9VcfeWQ" general="_GKddUAkdEeOnVqX9VcfeWQ"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_mt6gYAnsEeOnVqX9VcfeWQ" name="CustomPropertyOperator">
+      <generalization xmi:type="uml:Generalization" xmi:id="_SfZjMAntEeOnVqX9VcfeWQ" general="_wk7C0AkdEeOnVqX9VcfeWQ"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_yEySAAnsEeOnVqX9VcfeWQ" name="classname" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yEySAQnsEeOnVqX9VcfeWQ" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yEySAgnsEeOnVqX9VcfeWQ" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_yEySAwnsEeOnVqX9VcfeWQ">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_XTdvIAntEeOnVqX9VcfeWQ" name="operatorInstance" visibility="public" type="__ADTwAxLEeOjX-JbGFEH7w">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_cqOYcAntEeOnVqX9VcfeWQ" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cqgsUAntEeOnVqX9VcfeWQ" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_crLasAntEeOnVqX9VcfeWQ">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_XwmlsA3gEeOjX-JbGFEH7w" name="classBundleID" visibility="public" type="_OyQ5QL1xEeKKJJ5BmR3W3Q">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_c4HSEA3gEeOjX-JbGFEH7w">
+          <body>Bundle ID of the class specified by classname.&#xD;
+This is generally the id of the plugin containing the class specified by classname.&#xD;
+This is required when the custom operator is defined by its classname, and the operator is not located in the current &#xD;
+plugin (ie the layer model plugin).&#xD;
+</body>
+        </ownedComment>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XwnMwA3gEeOjX-JbGFEH7w" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_XwnMwQ3gEeOjX-JbGFEH7w" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_XwnMwg3gEeOjX-JbGFEH7w">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_vbiJ8A3gEeOjX-JbGFEH7w" name="resetOperatorInstance" raisedException="_iYKFMNxGEeKwptaAAanMDg">
+        <ownedComment xmi:type="uml:Comment" xmi:id="_y6QTkA3gEeOjX-JbGFEH7w">
+          <body>Set the operator instance from the classname and BundleID if and only if this two properties are set.</body>
+        </ownedComment>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_FDpEUAxAEeOjX-JbGFEH7w" name="layersStackApplication_layerOperatorDescriptorRegistry_1" memberEnd="_FDpEUQxAEeOjX-JbGFEH7w _FDc3EAxAEeOjX-JbGFEH7w">
+      <ownedEnd xmi:type="uml:Property" xmi:id="_FDpEUQxAEeOjX-JbGFEH7w" name="layersStackApplication" type="_DN8s0NjhEeKQqZMBCFd2Uw" association="_FDpEUAxAEeOjX-JbGFEH7w">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FDpEUgxAEeOjX-JbGFEH7w" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FDpEUwxAEeOjX-JbGFEH7w" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_G7XE0AxJEeOjX-JbGFEH7w" name="AndStackedLayerOperatorDescriptor">
+      <generalization xmi:type="uml:Generalization" xmi:id="_Uq4v4AxJEeOjX-JbGFEH7w" general="_Hxsw0AkxEeOnVqX9VcfeWQ"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_LUfBMAxJEeOjX-JbGFEH7w" name="OrStackedLayerOperatorDescriptor">
+      <generalization xmi:type="uml:Generalization" xmi:id="_TzDwAAxJEeOjX-JbGFEH7w" general="_Hxsw0AkxEeOnVqX9VcfeWQ"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="__ADTwAxLEeOjX-JbGFEH7w" name="CustomPropertyOpertorInstance"/>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Xxh1cBZ1EeOZwp016gnCFQ" name="IsAbstractUmlSetter">
+      <generalization xmi:type="uml:Generalization" xmi:id="_a8mqUBZ1EeOZwp016gnCFQ" general="_fyVlIO3vEeKwLp35IbAIig"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Enumeration" xmi:id="_7cWpgFVHEeOah7Z-UYdQAA" name="EventLevel">
+      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_ItnrQFVIEeOah7Z-UYdQAA" name="level1"/>
+      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="__fkAQFVHEeOah7Z-UYdQAA" name="allLevels">
+        <specification xmi:type="uml:LiteralInteger" xmi:id="_gy8lIFVLEeOah7Z-UYdQAA" name="intValue" value="-1"/>
+      </ownedLiteral>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_PznBc2Q5EeOlpfB_tZS-QA" name="layerExpression_layersStack_1" memberEnd="_PznBdGQ5EeOlpfB_tZS-QA _PznBcGQ5EeOlpfB_tZS-QA">
+      <ownedComment xmi:type="uml:Comment" xmi:id="_KyI2MGQ6EeOlpfB_tZS-QA" annotatedElement="_PznBc2Q5EeOlpfB_tZS-QA">
+        <body>The LayerStack owning this LayerExpression.&#xD;
+This property is set by the LayerStack when the LayerExpression is attach to a parent.&#xD;
+The LayerStack listen to node addition/removal.&#xD;
+During the load from the Resource, this property is set by the LayerStack calling &#xD;
+layerStackChanged().</body>
+      </ownedComment>
+      <ownedEnd xmi:type="uml:Property" xmi:id="_PznBdGQ5EeOlpfB_tZS-QA" name="layerExpression" type="_9IaAANjiEeKQqZMBCFd2Uw" association="_PznBc2Q5EeOlpfB_tZS-QA">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PznBdWQ5EeOlpfB_tZS-QA" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PznBdmQ5EeOlpfB_tZS-QA" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_ft-hUGtpEeOlpfB_tZS-QA" name="AllViewsDerivedLayer">
+      <generalization xmi:type="uml:Generalization" xmi:id="_p-dSoGtpEeOlpfB_tZS-QA" general="_51zAINa7EeKPiuTfpuvqHA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Enumeration" xmi:id="_8__xgHltEeOlpfB_tZS-QA" name="LayerState">
+      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_AKMcoHluEeOlpfB_tZS-QA" name="detached"/>
+      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_BUS4QHluEeOlpfB_tZS-QA" name="attached"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Interface" xmi:id="_RopgYHpGEeOlpfB_tZS-QA" name="LayersContainer">
+      <ownedComment xmi:type="uml:Comment" xmi:id="_igIa4HpGEeOlpfB_tZS-QA" annotatedElement="_RopgYHpGEeOlpfB_tZS-QA">
+        <body>Layers implementing this interface can contains others layers.&#xD;
+The interface provide one method allowing to add a LayerExpression to the container.</body>
+      </ownedComment>
+      <ownedOperation xmi:type="uml:Operation" xmi:id="_jHtYQHpGEeOlpfB_tZS-QA" name="addLayer">
+        <ownedParameter xmi:type="uml:Parameter" xmi:id="_qpEQ4HpGEeOlpfB_tZS-QA" name="layer" type="_9IaAANjiEeKQqZMBCFd2Uw"/>
+      </ownedOperation>
+    </packagedElement>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_X07z8LcsEeK8_t7Rpq6ZJA">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_X2lZwLcsEeK8_t7Rpq6ZJA" 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 xmi:type="uml:Profile" href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+    </profileApplication>
+  </uml:Model>
+  <Ecore:EPackage xmi:id="_ZYU5ULcsEeK8_t7Rpq6ZJA" base_Package="_gAOFQLcqEeK8_t7Rpq6ZJA" nsPrefix="" nsURI="org.eclipse.papyrus.layers.0.10" basePackage="org.eclipse.papyrus.layers.stackmodel"/>
+  <Ecore:EDataType xmi:id="_Yn8ysL12EeKr1s-73D4BvA" instanceClassName="java.lang.String" base_PrimitiveType="_OyQ5QL1xEeKKJJ5BmR3W3Q"/>
+  <Ecore:EDataType xmi:id="_WynUwNa8EeKPiuTfpuvqHA" instanceClassName="int" base_PrimitiveType="_SuHkkNa8EeKPiuTfpuvqHA"/>
+  <Ecore:EDataType xmi:id="_ZDhncNa8EeKPiuTfpuvqHA" instanceClassName="boolean" base_PrimitiveType="_TqqsYNa8EeKPiuTfpuvqHA"/>
+  <Ecore:EDataType xmi:id="_g9dZMNheEeKgkM6XJF9t4A" instanceClassName="java.lang.Object" base_PrimitiveType="_c1QNsNheEeKgkM6XJF9t4A"/>
+  <Ecore:EDataType xmi:id="_qHjKMNheEeKgkM6XJF9t4A" instanceClassName="org.eclipse.emf.ecore.EPackage" base_PrimitiveType="_lVnFMNheEeKgkM6XJF9t4A"/>
+  <Ecore:EClass xmi:id="_Tfa8wNjMEeKgkM6XJF9t4A" instanceClassName="java.util.Map$Entry" base_Class="_vMMQsNjKEeKgkM6XJF9t4A"/>
+  <Ecore:EReference xmi:id="_l2jl8NjpEeKQqZMBCFd2Uw" isTransient="true" base_Property="_DYWsYNjpEeKQqZMBCFd2Uw"/>
+  <Ecore:EReference xmi:id="_r_t8kNjpEeKQqZMBCFd2Uw" isTransient="true" base_Property="_EEc9YNjpEeKQqZMBCFd2Uw"/>
+  <Ecore:EClass xmi:id="_XsrZ0NjsEeKQqZMBCFd2Uw" instanceClassName="java.util.Map$Entry" base_Class="_hgu_wNjqEeKQqZMBCFd2Uw"/>
+  <Ecore:EClass xmi:id="_gxK-gNj_EeKQqZMBCFd2Uw" instanceClassName="java.util.Map$Entry" base_Class="_P4xeANj_EeKQqZMBCFd2Uw"/>
+  <Ecore:EReference xmi:id="_CihYINt8EeKwptaAAanMDg" isTransient="true" base_Property="_5rptsNqBEeKQqZMBCFd2Uw"/>
+  <Ecore:EReference xmi:id="_GbspINt8EeKwptaAAanMDg" isTransient="true" base_Property="_wRCXENt2EeKQqZMBCFd2Uw"/>
+  <Ecore:EReference xmi:id="_cqKPYNt8EeKwptaAAanMDg" isTransient="true" base_Property="_wROkUdt2EeKQqZMBCFd2Uw"/>
+  <Ecore:EDataType xmi:id="_qcE4UNxGEeKwptaAAanMDg" instanceClassName="org.eclipse.papyrus.layers.stackmodel.LayersException" base_PrimitiveType="_iYKFMNxGEeKwptaAAanMDg"/>
+  <Ecore:EDataType xmi:id="_4RuZgNxGEeKwptaAAanMDg" instanceClassName="org.eclipse.papyrus.layers.stackmodel.NotFoundException" base_PrimitiveType="_k-dZENxGEeKwptaAAanMDg"/>
+  <Ecore:EDataType xmi:id="_PWPEsNxMEeKwptaAAanMDg" instanceClassName="org.eclipse.papyrus.layers.stackmodel.BadStateException" base_PrimitiveType="_KG7HMNxMEeKwptaAAanMDg"/>
+  <Ecore:EClass xmi:id="_cyLGsO5mEeK0p4PkXjd-_Q" instanceClassName="java.util.Map$Entry" base_Class="_JSMf8O5mEeK0p4PkXjd-_Q"/>
+  <Ecore:EDataType xmi:id="_UdUS8O7GEeK0p4PkXjd-_Q" instanceClassName="org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand" base_PrimitiveType="_Qeyn4O7GEeK0p4PkXjd-_Q"/>
+  <Ecore:EReference xmi:id="_Bw8NMO7jEeK0p4PkXjd-_Q" isTransient="true" base_Property="_3F7c4O3uEeKwLp35IbAIig"/>
+  <Ecore:EReference xmi:id="_ByAHsO7kEeK0p4PkXjd-_Q" isTransient="true" base_Property="_3GHqIe3uEeKwLp35IbAIig"/>
+  <Ecore:EParameter xmi:id="_8ebqYO7lEeK0p4PkXjd-_Q" base_Parameter="_xfz8Ue7HEeK0p4PkXjd-_Q"/>
+  <Ecore:EParameter xmi:id="_8I1QAO70EeK0p4PkXjd-_Q" base_Parameter="_8ILIsu70EeK0p4PkXjd-_Q"/>
+  <Ecore:EClass xmi:id="_ZDqPgO8UEeK0p4PkXjd-_Q" instanceClassName="org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand" base_Interface="_XZJOcO8UEeK0p4PkXjd-_Q"/>
+  <Ecore:EReference xmi:id="_EZ4kIO-NEeK0p4PkXjd-_Q" isTransient="true" base_Property="_rEPKgO-MEeK0p4PkXjd-_Q"/>
+  <Ecore:EReference xmi:id="_dF0wYAkeEeOnVqX9VcfeWQ" isTransient="true" base_Property="_5xnb4AkdEeOnVqX9VcfeWQ"/>
+  <Ecore:EReference xmi:id="_hXqZAAkeEeOnVqX9VcfeWQ" isTransient="true" base_Property="_31bcAAkdEeOnVqX9VcfeWQ"/>
+  <Ecore:EReference xmi:id="_hIIUsAw-EeOjX-JbGFEH7w" isTransient="true" base_Property="_X8IIIAkdEeOnVqX9VcfeWQ"/>
+  <Ecore:EReference xmi:id="_0vze4Aw-EeOjX-JbGFEH7w" isTransient="true" base_Property="_KSjUEAkdEeOnVqX9VcfeWQ"/>
+  <Ecore:EReference xmi:id="_i_yH8AxAEeOjX-JbGFEH7w" isTransient="true" base_Property="_FDc3EAxAEeOjX-JbGFEH7w"/>
+  <Ecore:EAttribute xmi:id="_B49pUAxGEeOjX-JbGFEH7w" isTransient="true" base_Property="_mCUIAAxEEeOjX-JbGFEH7w"/>
+  <Ecore:EDataType xmi:id="_Fya_cAxMEeOjX-JbGFEH7w" instanceClassName="org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance" base_PrimitiveType="__ADTwAxLEeOjX-JbGFEH7w"/>
+  <Ecore:EReference xmi:id="_1yMvsA2hEeOjX-JbGFEH7w" isTransient="true" base_Property="_rTr0UA2fEeOjX-JbGFEH7w"/>
+  <Ecore:EAttribute xmi:id="_iczSMA2qEeOjX-JbGFEH7w" isTransient="true" base_Property="_RrX8YA2qEeOjX-JbGFEH7w"/>
+  <Ecore:EAttribute xmi:id="_8zffIGQ7EeOlpfB_tZS-QA" isTransient="true" base_Property="_xcbgQGQ7EeOlpfB_tZS-QA"/>
+</xmi:XMI>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.di b/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.di
new file mode 100755
index 0000000..2483614
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.di
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<di:SashWindowsMngr xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi">
+  <pageList>
+    <availablePage>
+      <emfPageIdentifier href="layersconfig.notation#_RgieEBHLEeOjX-JbGFEH7w"/>
+    </availablePage>
+    <availablePage>
+      <emfPageIdentifier href="layersconfig.notation#_ute5YBHLEeOjX-JbGFEH7w"/>
+    </availablePage>
+    <availablePage>
+      <emfPageIdentifier href="layersconfig.notation#_CKUFgBHMEeOjX-JbGFEH7w"/>
+    </availablePage>
+    <availablePage>
+      <emfPageIdentifier href="layersconfig.notation#_3oDWwBQzEeO9e9pZ1EIGJg"/>
+    </availablePage>
+  </pageList>
+  <sashModel currentSelection="//@sashModel/@windows.0/@children.0">
+    <windows>
+      <children xsi:type="di:TabFolder">
+        <children>
+          <emfPageIdentifier href="layersconfig.notation#_RgieEBHLEeOjX-JbGFEH7w"/>
+        </children>
+        <children>
+          <emfPageIdentifier href="layersconfig.notation#_ute5YBHLEeOjX-JbGFEH7w"/>
+        </children>
+        <children>
+          <emfPageIdentifier href="layersconfig.notation#_CKUFgBHMEeOjX-JbGFEH7w"/>
+        </children>
+        <children>
+          <emfPageIdentifier href="layersconfig.notation#_3oDWwBQzEeO9e9pZ1EIGJg"/>
+        </children>
+      </children>
+    </windows>
+  </sashModel>
+</di:SashWindowsMngr>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.ecore b/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.ecore
new file mode 100755
index 0000000..e314dd0
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.ecore
@@ -0,0 +1,66 @@
+<?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="layersconfig" nsURI="org.eclipse.papyrus.layersconfig.0.10"
+    nsPrefix="layersconfig">
+  <eClassifiers xsi:type="ecore:EClass" name="Folder" eSuperTypes="#//FolderElement">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="folderElements" ordered="false"
+        upperBound="-1" eType="#//FolderElement" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="FolderElement" abstract="true">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" lowerBound="1"
+        eType="#//String"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="String" instanceClassName="java.lang.String"/>
+  <eClassifiers xsi:type="ecore:EClass" name="LayerOperatorConfig" eSuperTypes="#//InstanciableElement">
+    <eOperations name="createLayersOperatorDescriptor" ordered="false" lowerBound="1"
+        eType="#//LayerOperatorDescriptor" eExceptions="#//InstanciationException"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="InstanciableElement" abstract="true"
+      eSuperTypes="#//FolderElement">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="classname" ordered="false"
+        lowerBound="1" eType="#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="bundleID" ordered="false"
+        lowerBound="1" eType="#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="displayName" ordered="false"
+        lowerBound="1" eType="#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="iconPath" ordered="false"
+        lowerBound="1" eType="#//String"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="classnameKind" ordered="false"
+        lowerBound="1" eType="#//ClassnameKind" defaultValueLiteral="UNDEFINED"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="ClassnameKind">
+    <eLiterals name="UNDEFINED"/>
+    <eLiterals name="EMF_CLASSNAME" value="1"/>
+    <eLiterals name="POJO_CLASSNAME" value="2"/>
+    <eLiterals name="NOT_FOUND" value="3"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="InstanciationException" instanceClassName="org.eclipse.papyrus.layers.stackmodel.InstanciationException"/>
+  <eClassifiers xsi:type="ecore:EDataType" name="LayerOperatorDescriptor" instanceClassName="org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor"/>
+  <eClassifiers xsi:type="ecore:EClass" name="OperatorConfig" eSuperTypes="#//InstanciableElement">
+    <eOperations name="createOperatorDescriptor" ordered="false" lowerBound="1" eType="#//PropertyOperator"
+        eExceptions="#//InstanciationException"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="PropertyOperator" instanceClassName="org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator"/>
+  <eClassifiers xsi:type="ecore:EClass" name="PropertyId" eSuperTypes="#//FolderElement">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" lowerBound="1"
+        eType="#//TypeConfig"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TypeConfig" eSuperTypes="#//FolderElement"/>
+  <eClassifiers xsi:type="ecore:EClass" name="LayerOperatorMultipleBinding" eSuperTypes="#//FolderElement">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="layerOperatorConfig" ordered="false"
+        lowerBound="1" eType="#//LayerOperatorConfig"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="bindings" ordered="false"
+        upperBound="-1" eType="#//OperatorBinding" containment="true" eOpposite="#//OperatorBinding/owner"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="OperatorBinding">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="operator" ordered="false"
+        lowerBound="1" eType="#//OperatorConfig"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="layerOperatorConfig" ordered="false"
+        lowerBound="1" eType="#//LayerOperatorConfig" changeable="false" volatile="true"
+        transient="true" derived="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="propertyId" ordered="false"
+        lowerBound="1" eType="#//PropertyId"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="owner" ordered="false"
+        lowerBound="1" eType="#//LayerOperatorMultipleBinding" eOpposite="#//LayerOperatorMultipleBinding/bindings"/>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.genmodel b/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.genmodel
new file mode 100755
index 0000000..13d3818
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.genmodel
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel 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:genmodel="http://www.eclipse.org/uml2/2.2.0/GenModel"
+    modelDirectory="/org.eclipse.papyrus.layers.stackmodel/src" modelPluginID="org.eclipse.papyrus.layers.stackmodel"
+    modelName="Layersconfig" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+    importerID="org.eclipse.uml2.uml.ecore.importer" complianceLevel="6.0" copyrightFields="false"
+    operationReflection="true" importOrganizing="true">
+  <genAnnotations source="http://www.eclipse.org/emf/2002/GenModel/importer/org.eclipse.uml2.uml.ecore.importer">
+    <details key="ECORE_TAGGED_VALUES" value="PROCESS"/>
+    <details key="UNION_PROPERTIES" value="REPORT"/>
+    <details key="DUPLICATE_FEATURES" value="DISCARD"/>
+    <details key="SUBSETTING_PROPERTIES" value="REPORT"/>
+    <details key="VALIDATION_DELEGATES" value="IGNORE"/>
+    <details key="COMMENTS" value="PROCESS"/>
+    <details key="DUPLICATE_FEATURE_INHERITANCE" value="DISCARD"/>
+    <details key="DUPLICATE_OPERATIONS" value="DISCARD"/>
+    <details key="INVARIANT_CONSTRAINTS" value="PROCESS"/>
+    <details key="REDEFINING_PROPERTIES" value="REPORT"/>
+    <details key="ANNOTATION_DETAILS" value="PROCESS"/>
+    <details key="DUPLICATE_OPERATION_INHERITANCE" value="DISCARD"/>
+    <details key="REDEFINING_OPERATIONS" value="REPORT"/>
+    <details key="INVOCATION_DELEGATES" value="IGNORE"/>
+    <details key="DERIVED_FEATURES" value="PROCESS"/>
+    <details key="OPERATION_BODIES" value="IGNORE"/>
+    <details key="CAMEL_CASE_NAMES" value="IGNORE"/>
+    <details key="SUPER_CLASS_ORDER" value="PROCESS"/>
+  </genAnnotations>
+  <foreignModel>layersconfig.uml</foreignModel>
+  <genPackages xsi:type="genmodel:GenPackage" prefix="Layersconfig" basePackage="org.eclipse.papyrus.layers.configmodel"
+      disposableProviderFactory="true" ecorePackage="layersconfig.ecore#/">
+    <genEnums xsi:type="genmodel:GenEnum" typeSafeEnumCompatible="false" ecoreEnum="layersconfig.ecore#//ClassnameKind">
+      <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="layersconfig.ecore#//ClassnameKind/UNDEFINED"/>
+      <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="layersconfig.ecore#//ClassnameKind/EMF_CLASSNAME"/>
+      <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="layersconfig.ecore#//ClassnameKind/POJO_CLASSNAME"/>
+      <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="layersconfig.ecore#//ClassnameKind/NOT_FOUND"/>
+    </genEnums>
+    <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="layersconfig.ecore#//String"/>
+    <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="layersconfig.ecore#//InstanciationException"/>
+    <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="layersconfig.ecore#//LayerOperatorDescriptor"/>
+    <genDataTypes xsi:type="genmodel:GenDataType" ecoreDataType="layersconfig.ecore#//PropertyOperator"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layersconfig.ecore#//Folder">
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference layersconfig.ecore#//Folder/folderElements"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layersconfig.ecore#//FolderElement">
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layersconfig.ecore#//FolderElement/name"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layersconfig.ecore#//LayerOperatorConfig">
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layersconfig.ecore#//LayerOperatorConfig/createLayersOperatorDescriptor"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layersconfig.ecore#//InstanciableElement">
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layersconfig.ecore#//InstanciableElement/classname"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layersconfig.ecore#//InstanciableElement/bundleID"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layersconfig.ecore#//InstanciableElement/displayName"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layersconfig.ecore#//InstanciableElement/iconPath"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute layersconfig.ecore#//InstanciableElement/classnameKind"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layersconfig.ecore#//OperatorConfig">
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="layersconfig.ecore#//OperatorConfig/createOperatorDescriptor"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layersconfig.ecore#//PropertyId">
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference layersconfig.ecore#//PropertyId/type"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layersconfig.ecore#//TypeConfig"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layersconfig.ecore#//LayerOperatorMultipleBinding">
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference layersconfig.ecore#//LayerOperatorMultipleBinding/layerOperatorConfig"/>
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference layersconfig.ecore#//LayerOperatorMultipleBinding/bindings"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="layersconfig.ecore#//OperatorBinding">
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference layersconfig.ecore#//OperatorBinding/operator"/>
+      <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" notify="false"
+          createChild="false" ecoreFeature="ecore:EReference layersconfig.ecore#//OperatorBinding/layerOperatorConfig"/>
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference layersconfig.ecore#//OperatorBinding/propertyId"/>
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" notify="false" createChild="false"
+          ecoreFeature="ecore:EReference layersconfig.ecore#//OperatorBinding/owner"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.notation b/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.notation
new file mode 100755
index 0000000..d544671
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.notation
@@ -0,0 +1,856 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+  <notation:Diagram xmi:id="_RgieEBHLEeOjX-JbGFEH7w" type="PapyrusUMLClassDiagram" name="folders" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_dur18BHLEeOjX-JbGFEH7w" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dutEEBHLEeOjX-JbGFEH7w" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dutEERHLEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dutrIBHLEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dutrIRHLEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dutrIhHLEeOjX-JbGFEH7w" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dutrIxHLEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_dutrJBHLEeOjX-JbGFEH7w" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_duuSMBHLEeOjX-JbGFEH7w" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_duuSMRHLEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_duuSMhHLEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_duuSMxHLEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_duuSNBHLEeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_duuSNRHLEeOjX-JbGFEH7w" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_duuSNhHLEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_duuSNxHLEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_duuSOBHLEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_duuSORHLEeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_duu5QBHLEeOjX-JbGFEH7w" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_duu5QRHLEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_duu5QhHLEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_duu5QxHLEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_duu5RBHLEeOjX-JbGFEH7w"/>
+      </children>
+      <element xmi:type="uml:Class" href="layersconfig.uml#_dupZsBHLEeOjX-JbGFEH7w"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dur18RHLEeOjX-JbGFEH7w" x="115" y="126"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_e8RDYBHLEeOjX-JbGFEH7w" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_e8SRgBHLEeOjX-JbGFEH7w" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_e8SRgRHLEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_e8S4kBHLEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_e8S4kRHLEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_e8S4khHLEeOjX-JbGFEH7w" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_e8S4kxHLEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_e8S4lBHLEeOjX-JbGFEH7w" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_e8TfoBHLEeOjX-JbGFEH7w" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_8YepwBHLEeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layersconfig.uml#_8YScgBHLEeOjX-JbGFEH7w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_8YepwRHLEeOjX-JbGFEH7w"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_e8TfoRHLEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_e8TfohHLEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_e8TfoxHLEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e8TfpBHLEeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_e8TfpRHLEeOjX-JbGFEH7w" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_e8TfphHLEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_e8TfpxHLEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_e8TfqBHLEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e8TfqRHLEeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_e8TfqhHLEeOjX-JbGFEH7w" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_e8TfqxHLEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_e8TfrBHLEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_e8TfrRHLEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e8UGsBHLEeOjX-JbGFEH7w"/>
+      </children>
+      <element xmi:type="uml:Class" href="layersconfig.uml#_e6kaQBHLEeOjX-JbGFEH7w"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e8RDYRHLEeOjX-JbGFEH7w" x="438" y="132"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_RgieERHLEeOjX-JbGFEH7w"/>
+    <element xmi:type="uml:Model" href="layersconfig.uml#_RggB0BHLEeOjX-JbGFEH7w"/>
+    <edges xmi:type="notation:Connector" xmi:id="_jmQGQBHLEeOjX-JbGFEH7w" type="4002" source="_dur18BHLEeOjX-JbGFEH7w" target="_e8RDYBHLEeOjX-JbGFEH7w" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_jmQtUBHLEeOjX-JbGFEH7w" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jmRUYBHLEeOjX-JbGFEH7w" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_jmQGQRHLEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layersconfig.uml#_jl454BHLEeOjX-JbGFEH7w"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jmQGQhHLEeOjX-JbGFEH7w" points="[10, 6, -225, 0]$[233, 5, -2, -1]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jmVl0BHLEeOjX-JbGFEH7w" id="(0.9,0.34)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jmVl0RHLEeOjX-JbGFEH7w" id="(0.02,0.34)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_laRBkBHLEeOjX-JbGFEH7w" type="4001" source="_dur18BHLEeOjX-JbGFEH7w" target="_e8RDYBHLEeOjX-JbGFEH7w" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_laRooBHLEeOjX-JbGFEH7w" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_laRooRHLEeOjX-JbGFEH7w" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_laRoohHLEeOjX-JbGFEH7w" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_laRooxHLEeOjX-JbGFEH7w" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_laSPsBHLEeOjX-JbGFEH7w" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_laSPsRHLEeOjX-JbGFEH7w" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_laSPshHLEeOjX-JbGFEH7w" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_laSPsxHLEeOjX-JbGFEH7w" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_laSPtBHLEeOjX-JbGFEH7w" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_laSPtRHLEeOjX-JbGFEH7w" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_laS2wBHLEeOjX-JbGFEH7w" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_laS2wRHLEeOjX-JbGFEH7w" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_laRBkRHLEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layersconfig.uml#_lZ9fkBHLEeOjX-JbGFEH7w"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_laRBkhHLEeOjX-JbGFEH7w" points="[3, 8, -223, 0]$[226, 8, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_labZoBHLEeOjX-JbGFEH7w" id="(0.99,0.83)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_labZoRHLEeOjX-JbGFEH7w" id="(0.0,0.71)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_ute5YBHLEeOjX-JbGFEH7w" type="PapyrusUMLClassDiagram" name="datatypes" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_vyhO0BHLEeOjX-JbGFEH7w" type="2009" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vyh14BHLEeOjX-JbGFEH7w" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vyh14RHLEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vyh14hHLEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vyh14xHLEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vyh15BHLEeOjX-JbGFEH7w" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vyic8BHLEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4WT00BHLEeOjX-JbGFEH7w" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4WT00RHLEeOjX-JbGFEH7w" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4WT00hHLEeOjX-JbGFEH7w" key="StereotypeList" value="Ecore::EDataType"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4WT00xHLEeOjX-JbGFEH7w" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4WT01BHLEeOjX-JbGFEH7w" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4WT01RHLEeOjX-JbGFEH7w" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_vyic8RHLEeOjX-JbGFEH7w" type="5032"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_vyic8hHLEeOjX-JbGFEH7w" type="7039">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_vyic8xHLEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_vyic9BHLEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_vyic9RHLEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vyic9hHLEeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_vyic9xHLEeOjX-JbGFEH7w" type="7040">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_vyic-BHLEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_vyic-RHLEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_vyic-hHLEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vyic-xHLEeOjX-JbGFEH7w"/>
+      </children>
+      <element xmi:type="uml:PrimitiveType" href="layersconfig.uml#_vyPiABHLEeOjX-JbGFEH7w"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vyhO0RHLEeOjX-JbGFEH7w" x="102" y="96"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Z9ppsBKOEeO9e9pZ1EIGJg" type="2009" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Z9ppshKOEeO9e9pZ1EIGJg" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Z9ppsxKOEeO9e9pZ1EIGJg" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Z9zasBKOEeO9e9pZ1EIGJg" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Z9zasRKOEeO9e9pZ1EIGJg" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Z9zashKOEeO9e9pZ1EIGJg" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Z9zasxKOEeO9e9pZ1EIGJg" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qxlg8xKOEeO9e9pZ1EIGJg" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qxlg9BKOEeO9e9pZ1EIGJg" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qxlg9RKOEeO9e9pZ1EIGJg" key="StereotypeList" value="Ecore::EDataType"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qxlg9hKOEeO9e9pZ1EIGJg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qxlg9xKOEeO9e9pZ1EIGJg" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qxlg-BKOEeO9e9pZ1EIGJg" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Z9zatBKOEeO9e9pZ1EIGJg" type="5032"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Z9zatRKOEeO9e9pZ1EIGJg" type="7039">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Z9zathKOEeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Z9zatxKOEeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Z9zauBKOEeO9e9pZ1EIGJg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Z9zauRKOEeO9e9pZ1EIGJg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Z9zauhKOEeO9e9pZ1EIGJg" type="7040">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Z9zauxKOEeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Z9zavBKOEeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Z9zavRKOEeO9e9pZ1EIGJg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Z9zavhKOEeO9e9pZ1EIGJg"/>
+      </children>
+      <element xmi:type="uml:PrimitiveType" href="layersconfig.uml#_Z9gfwBKOEeO9e9pZ1EIGJg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Z9ppsRKOEeO9e9pZ1EIGJg" x="294" y="168" width="187"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_nDfXMBKREeO9e9pZ1EIGJg" type="2009" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_nDfXMhKREeO9e9pZ1EIGJg" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nDfXMxKREeO9e9pZ1EIGJg" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_nDfXNBKREeO9e9pZ1EIGJg" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nDfXNRKREeO9e9pZ1EIGJg" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_nDfXNhKREeO9e9pZ1EIGJg" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nDfXNxKREeO9e9pZ1EIGJg" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qjsHgxKREeO9e9pZ1EIGJg" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qjsHhBKREeO9e9pZ1EIGJg" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qjsHhRKREeO9e9pZ1EIGJg" key="StereotypeList" value="Ecore::EDataType"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qjsHhhKREeO9e9pZ1EIGJg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qjsHhxKREeO9e9pZ1EIGJg" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qjsHiBKREeO9e9pZ1EIGJg" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_nDfXOBKREeO9e9pZ1EIGJg" type="5032"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_nDfXORKREeO9e9pZ1EIGJg" type="7039">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_nDfXOhKREeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_nDfXOxKREeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_nDfXPBKREeO9e9pZ1EIGJg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nDfXPRKREeO9e9pZ1EIGJg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_nDfXPhKREeO9e9pZ1EIGJg" type="7040">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_nDfXPxKREeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_nDfXQBKREeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_nDfXQRKREeO9e9pZ1EIGJg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nDfXQhKREeO9e9pZ1EIGJg"/>
+      </children>
+      <element xmi:type="uml:PrimitiveType" href="layersconfig.uml#_nDCrQBKREeO9e9pZ1EIGJg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nDfXMRKREeO9e9pZ1EIGJg" x="282" y="36"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_wT7yYBKSEeO9e9pZ1EIGJg" type="2009" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wT7yYhKSEeO9e9pZ1EIGJg" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wT7yYxKSEeO9e9pZ1EIGJg" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wT7yZBKSEeO9e9pZ1EIGJg" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wT7yZRKSEeO9e9pZ1EIGJg" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wT7yZhKSEeO9e9pZ1EIGJg" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wT7yZxKSEeO9e9pZ1EIGJg" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zm5X8xKSEeO9e9pZ1EIGJg" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zm5X9BKSEeO9e9pZ1EIGJg" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zm5X9RKSEeO9e9pZ1EIGJg" key="StereotypeList" value="Ecore::EDataType"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zm5X9hKSEeO9e9pZ1EIGJg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zm5X9xKSEeO9e9pZ1EIGJg" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zm5X-BKSEeO9e9pZ1EIGJg" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_wT7yaBKSEeO9e9pZ1EIGJg" type="5032"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_wT7yaRKSEeO9e9pZ1EIGJg" type="7039">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_wT7yahKSEeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_wT7yaxKSEeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_wT7ybBKSEeO9e9pZ1EIGJg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wT7ybRKSEeO9e9pZ1EIGJg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_wT7ybhKSEeO9e9pZ1EIGJg" type="7040">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_wT7ybxKSEeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_wT7ycBKSEeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_wT7ycRKSEeO9e9pZ1EIGJg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wT7ychKSEeO9e9pZ1EIGJg"/>
+      </children>
+      <element xmi:type="uml:PrimitiveType" href="layersconfig.uml#_wTo3cBKSEeO9e9pZ1EIGJg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wT7yYRKSEeO9e9pZ1EIGJg" x="543" y="63"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_ute5YRHLEeOjX-JbGFEH7w"/>
+    <element xmi:type="uml:Model" href="layersconfig.uml#_RggB0BHLEeOjX-JbGFEH7w"/>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_CKUFgBHMEeOjX-JbGFEH7w" type="PapyrusUMLClassDiagram" name="overview" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_DDYbgBHMEeOjX-JbGFEH7w" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DDYbghHMEeOjX-JbGFEH7w" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DDZCkBHMEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DDZCkRHMEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DDZCkhHMEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DDZCkxHMEeOjX-JbGFEH7w" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DDZClBHMEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_DDZClRHMEeOjX-JbGFEH7w" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_DDZClhHMEeOjX-JbGFEH7w" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_DDZClxHMEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_DDZCmBHMEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_DDZCmRHMEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DDZCmhHMEeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_DDZCmxHMEeOjX-JbGFEH7w" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_RRr_IBKOEeO9e9pZ1EIGJg" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layersconfig.uml#_RRZEMBKOEeO9e9pZ1EIGJg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_RRr_IRKOEeO9e9pZ1EIGJg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_DDZCnBHMEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_DDZCnRHMEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_DDZCnhHMEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DDZCnxHMEeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_DDZpoBHMEeOjX-JbGFEH7w" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_DDZpoRHMEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_DDZpohHMEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_DDZpoxHMEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DDZppBHMEeOjX-JbGFEH7w"/>
+      </children>
+      <element xmi:type="uml:Class" href="layersconfig.uml#_DDJyABHMEeOjX-JbGFEH7w"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DDYbgRHMEeOjX-JbGFEH7w" x="42" y="366" width="188" height="163"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_IFcAIBHMEeOjX-JbGFEH7w" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IFcnMBHMEeOjX-JbGFEH7w" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IFcnMRHMEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IFcnMhHMEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IFcnMxHMEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IFcnNBHMEeOjX-JbGFEH7w" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IFcnNRHMEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_IFcnNhHMEeOjX-JbGFEH7w" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_IFcnNxHMEeOjX-JbGFEH7w" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_IFcnOBHMEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_IFcnORHMEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_IFcnOhHMEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IFcnOxHMEeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_IFdOQBHMEeOjX-JbGFEH7w" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_7iEewBKSEeO9e9pZ1EIGJg" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layersconfig.uml#_aNsUABKSEeO9e9pZ1EIGJg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_7iEewRKSEeO9e9pZ1EIGJg" x="38" y="37"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_IFdOQRHMEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_IFdOQhHMEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_IFdOQxHMEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IFdORBHMEeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_IFdORRHMEeOjX-JbGFEH7w" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_IFdORhHMEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_IFdORxHMEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_IFdOSBHMEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IFdOSRHMEeOjX-JbGFEH7w"/>
+      </children>
+      <element xmi:type="uml:Class" href="layersconfig.uml#_IFGo8BHMEeOjX-JbGFEH7w"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IFcAIRHMEeOjX-JbGFEH7w" x="672" y="366" width="217" height="163"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Zqz7YBHMEeOjX-JbGFEH7w" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Zq1JgBHMEeOjX-JbGFEH7w" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Zq1JgRHMEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Zq1JghHMEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Zq1JgxHMEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Zq1wkBHMEeOjX-JbGFEH7w" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Zq1wkRHMEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Zq1wkhHMEeOjX-JbGFEH7w" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Zq1wkxHMEeOjX-JbGFEH7w" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_QbjqcBQlEeO9e9pZ1EIGJg" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layersconfig.uml#_8YScgBHLEeOjX-JbGFEH7w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_QbjqcRQlEeO9e9pZ1EIGJg" x="67" y="9"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Zq1wlBHMEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Zq1wlRHMEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Zq1wlhHMEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Zq1wlxHMEeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Zq2XoBHMEeOjX-JbGFEH7w" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Zq2XoRHMEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Zq2XohHMEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Zq2XoxHMEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Zq2XpBHMEeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Zq2-sBHMEeOjX-JbGFEH7w" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Zq2-sRHMEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Zq2-shHMEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Zq2-sxHMEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Zq2-tBHMEeOjX-JbGFEH7w"/>
+      </children>
+      <element xmi:type="uml:Class" href="layersconfig.uml#_e6kaQBHLEeOjX-JbGFEH7w"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Zqz7YRHMEeOjX-JbGFEH7w" x="348" y="12" width="158" height="74"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_qox4YBHMEeOjX-JbGFEH7w" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qoyfcBHMEeOjX-JbGFEH7w" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qoyfcRHMEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qoyfchHMEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qoyfcxHMEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qoyfdBHMEeOjX-JbGFEH7w" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qoyfdRHMEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_qoyfdhHMEeOjX-JbGFEH7w" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_qoyfdxHMEeOjX-JbGFEH7w" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_qoyfeBHMEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_qoyfeRHMEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_qoyfehHMEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qoyfexHMEeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_qozGgBHMEeOjX-JbGFEH7w" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_qozGgRHMEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_qozGghHMEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_qozGgxHMEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qozGhBHMEeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_qozGhRHMEeOjX-JbGFEH7w" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_qozGhhHMEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_qozGhxHMEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_qozGiBHMEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qozGiRHMEeOjX-JbGFEH7w"/>
+      </children>
+      <element xmi:type="uml:Class" href="layersconfig.uml#_qodvUBHMEeOjX-JbGFEH7w"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qox4YRHMEeOjX-JbGFEH7w" x="642" y="12" width="130" height="79"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_J7YYoBHNEeOjX-JbGFEH7w" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_J7Y_sRHNEeOjX-JbGFEH7w" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_J7ZmwBHNEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_J7ZmwRHNEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_J7ZmwhHNEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_J7ZmwxHNEeOjX-JbGFEH7w" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_J7ZmxBHNEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_J7ZmxRHNEeOjX-JbGFEH7w" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_J7ZmxhHNEeOjX-JbGFEH7w" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_QZqDoBHNEeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layersconfig.uml#_QZd2YBHNEeOjX-JbGFEH7w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_QZqDoRHNEeOjX-JbGFEH7w"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_S9U6QBHNEeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layersconfig.uml#_S9IF8BHNEeOjX-JbGFEH7w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_S9U6QRHNEeOjX-JbGFEH7w"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_cNDZMBHNEeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layersconfig.uml#_cMta8BHNEeOjX-JbGFEH7w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_cNDZMRHNEeOjX-JbGFEH7w"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_gMAiEBHNEeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layersconfig.uml#_gLlrUBHNEeOjX-JbGFEH7w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_gMAiERHNEeOjX-JbGFEH7w"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_CcfcoBQnEeO9e9pZ1EIGJg" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layersconfig.uml#_CcFM8BQnEeO9e9pZ1EIGJg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_CcfcoRQnEeO9e9pZ1EIGJg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_J7ZmxxHNEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_J7ZmyBHNEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_J7ZmyRHNEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J7ZmyhHNEeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_J7ZmyxHNEeOjX-JbGFEH7w" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_J7ZmzBHNEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_J7ZmzRHNEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_J7ZmzhHNEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J7ZmzxHNEeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_J7aN0BHNEeOjX-JbGFEH7w" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_J7aN0RHNEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_J7aN0hHNEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_J7aN0xHNEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J7aN1BHNEeOjX-JbGFEH7w"/>
+      </children>
+      <element xmi:type="uml:Class" href="layersconfig.uml#_J6-I8BHNEeOjX-JbGFEH7w"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J7Y_sBHNEeOjX-JbGFEH7w" x="276" y="150" width="301" height="181"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_hA-o8BHSEeOjX-JbGFEH7w" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hA_QABHSEeOjX-JbGFEH7w" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hA_QARHSEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hA_QAhHSEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hA_3EBHSEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hA_3ERHSEeOjX-JbGFEH7w" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hA_3EhHSEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_hA_3ExHSEeOjX-JbGFEH7w" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_hA_3FBHSEeOjX-JbGFEH7w" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_hA_3FRHSEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_hA_3FhHSEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_hA_3FxHSEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hA_3GBHSEeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_hA_3GRHSEeOjX-JbGFEH7w" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_hA_3GhHSEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_hA_3GxHSEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_hA_3HBHSEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hA_3HRHSEeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_hBAeIBHSEeOjX-JbGFEH7w" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_hBAeIRHSEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_hBAeIhHSEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_hBAeIxHSEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hBAeJBHSEeOjX-JbGFEH7w"/>
+      </children>
+      <element xmi:type="uml:Class" href="layersconfig.uml#_hAs8IBHSEeOjX-JbGFEH7w"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hA-o8RHSEeOjX-JbGFEH7w" x="306" y="486" width="145" height="66"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_jLGXIBHSEeOjX-JbGFEH7w" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jLG-MBHSEeOjX-JbGFEH7w" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jLG-MRHSEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jLG-MhHSEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jLG-MxHSEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jLG-NBHSEeOjX-JbGFEH7w" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jLG-NRHSEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jLHlQBHSEeOjX-JbGFEH7w" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_jLHlQRHSEeOjX-JbGFEH7w" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_jLHlQhHSEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_jLHlQxHSEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_jLHlRBHSEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jLHlRRHSEeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_jLHlRhHSEeOjX-JbGFEH7w" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_jLHlRxHSEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_jLHlSBHSEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_jLHlSRHSEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jLHlShHSEeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_jLIMUBHSEeOjX-JbGFEH7w" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_jLIMURHSEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_jLIMUhHSEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_jLIMUxHSEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jLIMVBHSEeOjX-JbGFEH7w"/>
+      </children>
+      <element xmi:type="uml:Class" href="layersconfig.uml#_jKujsBHSEeOjX-JbGFEH7w"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jLGXIRHSEeOjX-JbGFEH7w" x="516" y="486" width="125" height="67"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_wp3IgBQmEeO9e9pZ1EIGJg" type="2006" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wp3vkBQmEeO9e9pZ1EIGJg" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wp4WoBQmEeO9e9pZ1EIGJg" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wp4WoRQmEeO9e9pZ1EIGJg" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wp4WohQmEeO9e9pZ1EIGJg" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wp4WoxQmEeO9e9pZ1EIGJg" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wp4WpBQmEeO9e9pZ1EIGJg" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_wp4WpRQmEeO9e9pZ1EIGJg" type="5023"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_wp4WphQmEeO9e9pZ1EIGJg" type="7015">
+        <children xmi:type="notation:Shape" xmi:id="_zkftoBQmEeO9e9pZ1EIGJg" type="3017" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:EnumerationLiteral" href="layersconfig.uml#_zj87EBQmEeO9e9pZ1EIGJg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_zkftoRQmEeO9e9pZ1EIGJg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_1AMPkBQmEeO9e9pZ1EIGJg" type="3017" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:EnumerationLiteral" href="layersconfig.uml#_0_1DMBQmEeO9e9pZ1EIGJg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_1AMPkRQmEeO9e9pZ1EIGJg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_3ZQ_wBQmEeO9e9pZ1EIGJg" type="3017" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:EnumerationLiteral" href="layersconfig.uml#_3Y_6ABQmEeO9e9pZ1EIGJg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_3ZQ_wRQmEeO9e9pZ1EIGJg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_5Oh4QBQmEeO9e9pZ1EIGJg" type="3017" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:EnumerationLiteral" href="layersconfig.uml#_5OQLcBQmEeO9e9pZ1EIGJg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_5Oh4QRQmEeO9e9pZ1EIGJg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_wp4WpxQmEeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_wp4WqBQmEeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_wp4WqRQmEeO9e9pZ1EIGJg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wp4WqhQmEeO9e9pZ1EIGJg"/>
+      </children>
+      <element xmi:type="uml:Enumeration" href="layersconfig.uml#_wpf8IBQmEeO9e9pZ1EIGJg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wp3IgRQmEeO9e9pZ1EIGJg" x="732" y="182" width="136"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_a3bNIECrEeOxsL3-gu79hA" type="2012" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a3naYECrEeOxsL3-gu79hA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a3naYUCrEeOxsL3-gu79hA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a3naYkCrEeOxsL3-gu79hA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a3naY0CrEeOxsL3-gu79hA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a3naZECrEeOxsL3-gu79hA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a3naZUCrEeOxsL3-gu79hA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_a3naZkCrEeOxsL3-gu79hA" type="5038"/>
+      <element xmi:type="uml:Comment" href="layersconfig.uml#_a1IuIECrEeOxsL3-gu79hA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a3bNIUCrEeOxsL3-gu79hA" x="882" y="348" width="187"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_CKUFgRHMEeOjX-JbGFEH7w"/>
+    <element xmi:type="uml:Model" href="layersconfig.uml#_RggB0BHLEeOjX-JbGFEH7w"/>
+    <edges xmi:type="notation:Connector" xmi:id="_cNhIsBHMEeOjX-JbGFEH7w" type="4002" source="_DDYbgBHMEeOjX-JbGFEH7w" target="_J7YYoBHNEeOjX-JbGFEH7w" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_cNhvwBHMEeOjX-JbGFEH7w" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_cNhvwRHMEeOjX-JbGFEH7w" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_cNhIsRHMEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layersconfig.uml#_cNPb4BHMEeOjX-JbGFEH7w"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_cNhIshHMEeOjX-JbGFEH7w" points="[25, -10, -221, 86]$[238, -86, -8, 10]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cNlaIBHMEeOjX-JbGFEH7w" id="(0.5569620253164557,0.1)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cNlaIRHMEeOjX-JbGFEH7w" id="(0.06986899563318777,0.9801324503311258)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_dXmWMBHMEeOjX-JbGFEH7w" type="4002" source="_IFcAIBHMEeOjX-JbGFEH7w" target="_J7YYoBHNEeOjX-JbGFEH7w" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dXm9QBHMEeOjX-JbGFEH7w" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dXm9QRHMEeOjX-JbGFEH7w" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_dXmWMRHMEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layersconfig.uml#_dXPw4BHMEeOjX-JbGFEH7w"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dXmWMhHMEeOjX-JbGFEH7w" points="[2, -7, -30, 84]$[25, -83, -7, 8]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dXrOsBHMEeOjX-JbGFEH7w" id="(0.5867768595041323,0.07)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dXrOsRHMEeOjX-JbGFEH7w" id="(0.8951965065502183,0.9668874172185431)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_wASvoBHMEeOjX-JbGFEH7w" type="4001" source="_jLGXIBHSEeOjX-JbGFEH7w" target="_qox4YBHMEeOjX-JbGFEH7w" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_wATWsBHMEeOjX-JbGFEH7w" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_wATWsRHMEeOjX-JbGFEH7w" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_wATWshHMEeOjX-JbGFEH7w" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_wATWsxHMEeOjX-JbGFEH7w" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_wAT9wBHMEeOjX-JbGFEH7w" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_wAT9wRHMEeOjX-JbGFEH7w" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_wAT9whHMEeOjX-JbGFEH7w" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_wAT9wxHMEeOjX-JbGFEH7w" x="55" y="49"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_wAT9xBHMEeOjX-JbGFEH7w" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_wAT9xRHMEeOjX-JbGFEH7w" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_wAT9xhHMEeOjX-JbGFEH7w" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_wAT9xxHMEeOjX-JbGFEH7w" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_wASvoRHMEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layersconfig.uml#_wAAbwBHMEeOjX-JbGFEH7w"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_wASvohHMEeOjX-JbGFEH7w" points="[-2, -10, 8, 87]$[12, -81, 22, 16]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wAb5kBHMEeOjX-JbGFEH7w" id="(0.456,0.014925373134328358)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wAb5kRHMEeOjX-JbGFEH7w" id="(0.7538461538461538,0.7974683544303798)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_4SBVQBHMEeOjX-JbGFEH7w" type="4002" source="_qox4YBHMEeOjX-JbGFEH7w" target="_Zqz7YBHMEeOjX-JbGFEH7w" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_4SCjYBHMEeOjX-JbGFEH7w" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_4SCjYRHMEeOjX-JbGFEH7w" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_4SBVQRHMEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layersconfig.uml#_4R1vEBHMEeOjX-JbGFEH7w"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4SBVQhHMEeOjX-JbGFEH7w" points="[-9, -4, 144, 0]$[-145, -5, 8, -1]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4SGNwBHMEeOjX-JbGFEH7w" id="(0.06923076923076923,0.4810126582278481)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4SGNwRHMEeOjX-JbGFEH7w" id="(0.9493670886075949,0.4594594594594595)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_zA_rEBHNEeOjX-JbGFEH7w" type="4002" source="_J7YYoBHNEeOjX-JbGFEH7w" target="_Zqz7YBHMEeOjX-JbGFEH7w" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_zBASIBHNEeOjX-JbGFEH7w" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_zBASIRHNEeOjX-JbGFEH7w" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_zA_rERHNEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layersconfig.uml#_zAn3oBHNEeOjX-JbGFEH7w"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_zA_rEhHNEeOjX-JbGFEH7w" points="[6, -6, 0, 78]$[-23, -70, -29, 14]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zBD8gBHNEeOjX-JbGFEH7w" id="(0.27074235807860264,0.039735099337748346)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zBD8gRHNEeOjX-JbGFEH7w" id="(0.20253164556962025,0.8108108108108109)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_xgP3wBHSEeOjX-JbGFEH7w" type="4001" source="_hA-o8BHSEeOjX-JbGFEH7w" target="_DDYbgBHMEeOjX-JbGFEH7w" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_xgQe0BHSEeOjX-JbGFEH7w" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_xgRF4BHSEeOjX-JbGFEH7w" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_xgRF4RHSEeOjX-JbGFEH7w" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_xgRF4hHSEeOjX-JbGFEH7w" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_xgRF4xHSEeOjX-JbGFEH7w" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_xgRF5BHSEeOjX-JbGFEH7w" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_xgRF5RHSEeOjX-JbGFEH7w" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_xgRF5hHSEeOjX-JbGFEH7w" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_xgRs8BHSEeOjX-JbGFEH7w" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_xgRs8RHSEeOjX-JbGFEH7w" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_xgRs8hHSEeOjX-JbGFEH7w" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_xgRs8xHSEeOjX-JbGFEH7w" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_xgP3wRHSEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layersconfig.uml#_xf7usBHSEeOjX-JbGFEH7w"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_xgP3whHSEeOjX-JbGFEH7w" points="[-1, -2, 82, 0]$[-77, 2, 6, 4]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_xgZowBHSEeOjX-JbGFEH7w" id="(0.006896551724137931,0.25757575757575757)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_xgZowRHSEeOjX-JbGFEH7w" id="(0.9620253164556962,0.8282208588957055)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_dm7HcBHTEeOjX-JbGFEH7w" type="4001" source="_hA-o8BHSEeOjX-JbGFEH7w" target="_jLGXIBHSEeOjX-JbGFEH7w" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dm7ugBHTEeOjX-JbGFEH7w" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dm7ugRHTEeOjX-JbGFEH7w" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_dm7ughHTEeOjX-JbGFEH7w" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dm7ugxHTEeOjX-JbGFEH7w" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_dm8VkBHTEeOjX-JbGFEH7w" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dm8VkRHTEeOjX-JbGFEH7w" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_dm8VkhHTEeOjX-JbGFEH7w" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dm8VkxHTEeOjX-JbGFEH7w" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_dm8VlBHTEeOjX-JbGFEH7w" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dm8VlRHTEeOjX-JbGFEH7w" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_dm8VlhHTEeOjX-JbGFEH7w" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dm8VlxHTEeOjX-JbGFEH7w" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_dm7HcRHTEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layersconfig.uml#_dmmXUBHTEeOjX-JbGFEH7w"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dm7HchHTEeOjX-JbGFEH7w" points="[6, -5, -66, 0]$[71, -6, -1, -1]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dnGGkBHTEeOjX-JbGFEH7w" id="(0.9586206896551724,0.5606060606060606)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dnGGkRHTEeOjX-JbGFEH7w" id="(0.008,0.47761194029850745)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_7rcD8BHTEeOjX-JbGFEH7w" type="4001" source="_jLGXIBHSEeOjX-JbGFEH7w" target="_IFcAIBHMEeOjX-JbGFEH7w" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_7rdSEBHTEeOjX-JbGFEH7w" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_7rdSERHTEeOjX-JbGFEH7w" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_7rdSEhHTEeOjX-JbGFEH7w" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_7rdSExHTEeOjX-JbGFEH7w" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_7rd5IBHTEeOjX-JbGFEH7w" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_7rd5IRHTEeOjX-JbGFEH7w" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_7rd5IhHTEeOjX-JbGFEH7w" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_7rd5IxHTEeOjX-JbGFEH7w" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_7rd5JBHTEeOjX-JbGFEH7w" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_7rd5JRHTEeOjX-JbGFEH7w" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_7rd5JhHTEeOjX-JbGFEH7w" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_7rd5JxHTEeOjX-JbGFEH7w" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_7rcD8RHTEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layersconfig.uml#_7rHT0BHTEeOjX-JbGFEH7w"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7rcD8hHTEeOjX-JbGFEH7w" points="[5, -1, -36, 0]$[36, 3, -5, 4]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7rlN4BHTEeOjX-JbGFEH7w" id="(0.96,0.23880597014925373)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7rl08BHTEeOjX-JbGFEH7w" id="(0.04132231404958678,0.8282208588957055)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_fqgTUBHUEeOjX-JbGFEH7w" type="4002" source="_hA-o8BHSEeOjX-JbGFEH7w" target="_Zqz7YBHMEeOjX-JbGFEH7w" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_fqhhcBHUEeOjX-JbGFEH7w" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_fqhhcRHUEeOjX-JbGFEH7w" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_fqgTURHUEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layersconfig.uml#_fqIf4BHUEeOjX-JbGFEH7w"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fqgTUhHUEeOjX-JbGFEH7w" points="[-4, -5, -16, 417]$[-139, -209, -151, 213]$[-139, -431, -151, -9]$[5, -431, -7, -9]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fqlL0BHUEeOjX-JbGFEH7w" id="(0.25517241379310346,0.07575757575757576)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fqlL0RHUEeOjX-JbGFEH7w" id="(0.04430379746835443,0.7702702702702703)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_XhQ8QBKNEeO9e9pZ1EIGJg" type="4001" source="_jLGXIBHSEeOjX-JbGFEH7w" target="_DDYbgBHMEeOjX-JbGFEH7w" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_XhQ8QxKNEeO9e9pZ1EIGJg" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_XhQ8RBKNEeO9e9pZ1EIGJg" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_XhQ8RRKNEeO9e9pZ1EIGJg" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_XhQ8RhKNEeO9e9pZ1EIGJg" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_XhaGMBKNEeO9e9pZ1EIGJg" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_XhaGMRKNEeO9e9pZ1EIGJg" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_XhaGMhKNEeO9e9pZ1EIGJg" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_XhaGMxKNEeO9e9pZ1EIGJg" x="88" y="38"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_XhaGNBKNEeO9e9pZ1EIGJg" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_XhaGNRKNEeO9e9pZ1EIGJg" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_XhaGNhKNEeO9e9pZ1EIGJg" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_XhaGNxKNEeO9e9pZ1EIGJg" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_XhQ8QRKNEeO9e9pZ1EIGJg" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layersconfig.uml#_Xg-BUBKNEeO9e9pZ1EIGJg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_XhQ8QhKNEeO9e9pZ1EIGJg" points="[0, 4, 369, 30]$[0, 51, 369, 77]$[-375, 51, -6, 77]$[-375, -20, -6, 6]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Xhj3MBKNEeO9e9pZ1EIGJg" id="(0.264,0.9402985074626866)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Xhj3MRKNEeO9e9pZ1EIGJg" id="(0.6835443037974683,0.9631901840490797)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_3oDWwBQzEeO9e9pZ1EIGJg" type="PapyrusUMLClassDiagram" name="property" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_6ckFwBQzEeO9e9pZ1EIGJg" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6clT4BQzEeO9e9pZ1EIGJg" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6clT4RQzEeO9e9pZ1EIGJg" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6clT4hQzEeO9e9pZ1EIGJg" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6cl68BQzEeO9e9pZ1EIGJg" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6cl68RQzEeO9e9pZ1EIGJg" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6cl68hQzEeO9e9pZ1EIGJg" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_6cl68xQzEeO9e9pZ1EIGJg" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_6cl69BQzEeO9e9pZ1EIGJg" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_BKfWUBQ0EeO9e9pZ1EIGJg" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layersconfig.uml#_BKIJ8BQ0EeO9e9pZ1EIGJg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_BKfWURQ0EeO9e9pZ1EIGJg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_6cl69RQzEeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_6cl69hQzEeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_6cl69xQzEeO9e9pZ1EIGJg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6cl6-BQzEeO9e9pZ1EIGJg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_6cmiABQzEeO9e9pZ1EIGJg" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_6cmiARQzEeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_6cmiAhQzEeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_6cmiAxQzEeO9e9pZ1EIGJg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6cmiBBQzEeO9e9pZ1EIGJg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_6cmiBRQzEeO9e9pZ1EIGJg" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_6cmiBhQzEeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_6cmiBxQzEeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_6cmiCBQzEeO9e9pZ1EIGJg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6cmiCRQzEeO9e9pZ1EIGJg"/>
+      </children>
+      <element xmi:type="uml:Class" href="layersconfig.uml#_qodvUBHMEeOjX-JbGFEH7w"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6ckFwRQzEeO9e9pZ1EIGJg" x="144" y="144" width="259"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_6cyvQBQzEeO9e9pZ1EIGJg" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6czWUBQzEeO9e9pZ1EIGJg" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6czWURQzEeO9e9pZ1EIGJg" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6czWUhQzEeO9e9pZ1EIGJg" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6czWUxQzEeO9e9pZ1EIGJg" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6czWVBQzEeO9e9pZ1EIGJg" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6czWVRQzEeO9e9pZ1EIGJg" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_6czWVhQzEeO9e9pZ1EIGJg" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_6czWVxQzEeO9e9pZ1EIGJg" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_71p_oBQzEeO9e9pZ1EIGJg" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layersconfig.uml#_8YScgBHLEeOjX-JbGFEH7w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_71p_oRQzEeO9e9pZ1EIGJg" x="52" y="4"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_6czWWBQzEeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_6czWWRQzEeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_6czWWhQzEeO9e9pZ1EIGJg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6czWWxQzEeO9e9pZ1EIGJg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_6czWXBQzEeO9e9pZ1EIGJg" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_6czWXRQzEeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_6cz9YBQzEeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_6cz9YRQzEeO9e9pZ1EIGJg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6cz9YhQzEeO9e9pZ1EIGJg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_6cz9YxQzEeO9e9pZ1EIGJg" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_6cz9ZBQzEeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_6cz9ZRQzEeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_6cz9ZhQzEeO9e9pZ1EIGJg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6cz9ZxQzEeO9e9pZ1EIGJg"/>
+      </children>
+      <element xmi:type="uml:Class" href="layersconfig.uml#_e6kaQBHLEeOjX-JbGFEH7w"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6cyvQRQzEeO9e9pZ1EIGJg" x="210" y="10" height="75"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_RW7vwBQ0EeO9e9pZ1EIGJg" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RW8W0BQ0EeO9e9pZ1EIGJg" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RW8W0RQ0EeO9e9pZ1EIGJg" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RW8W0hQ0EeO9e9pZ1EIGJg" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RW8W0xQ0EeO9e9pZ1EIGJg" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RW8W1BQ0EeO9e9pZ1EIGJg" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RW8W1RQ0EeO9e9pZ1EIGJg" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_RW8W1hQ0EeO9e9pZ1EIGJg" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_RW8W1xQ0EeO9e9pZ1EIGJg" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_RW8W2BQ0EeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_RW8W2RQ0EeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_RW8W2hQ0EeO9e9pZ1EIGJg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RW8W2xQ0EeO9e9pZ1EIGJg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_RW894BQ0EeO9e9pZ1EIGJg" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_RW894RQ0EeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_RW894hQ0EeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_RW894xQ0EeO9e9pZ1EIGJg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RW895BQ0EeO9e9pZ1EIGJg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_RW895RQ0EeO9e9pZ1EIGJg" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_RW895hQ0EeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_RW895xQ0EeO9e9pZ1EIGJg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_RW896BQ0EeO9e9pZ1EIGJg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RW896RQ0EeO9e9pZ1EIGJg"/>
+      </children>
+      <element xmi:type="uml:Class" href="layersconfig.uml#_RWlKcBQ0EeO9e9pZ1EIGJg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RW7vwRQ0EeO9e9pZ1EIGJg" x="576" y="144" width="119"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_3oDWwRQzEeO9e9pZ1EIGJg"/>
+    <element xmi:type="uml:Model" href="layersconfig.uml#_RggB0BHLEeOjX-JbGFEH7w"/>
+    <edges xmi:type="notation:Connector" xmi:id="_6dLJwBQzEeO9e9pZ1EIGJg" type="4002" source="_6ckFwBQzEeO9e9pZ1EIGJg" target="_6cyvQBQzEeO9e9pZ1EIGJg" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_6dLw0BQzEeO9e9pZ1EIGJg" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_6dLw0RQzEeO9e9pZ1EIGJg" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_6dLJwRQzEeO9e9pZ1EIGJg" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layersconfig.uml#_4R1vEBHMEeOjX-JbGFEH7w"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_6dLJwhQzEeO9e9pZ1EIGJg" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_UHGKQBQ0EeO9e9pZ1EIGJg" type="4002" source="_RW7vwBQ0EeO9e9pZ1EIGJg" target="_6cyvQBQzEeO9e9pZ1EIGJg" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_UHHYYBQ0EeO9e9pZ1EIGJg" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_UHHYYRQ0EeO9e9pZ1EIGJg" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_UHGKQRQ0EeO9e9pZ1EIGJg" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layersconfig.uml#_UGshoBQ0EeO9e9pZ1EIGJg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_UHGKQhQ0EeO9e9pZ1EIGJg" points="[-21, -4, 312, 75]$[-298, -41, 35, 38]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UHLCwBQ0EeO9e9pZ1EIGJg" id="(0.2773109243697479,0.04)"/>
+    </edges>
+  </notation:Diagram>
+</xmi:XMI>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.uml b/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.uml
new file mode 100755
index 0000000..de09831
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/model/layersconfig.uml
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20110701" xmlns:xmi="http://www.omg.org/spec/XMI/20110701" 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/4.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="_RggB0BHLEeOjX-JbGFEH7w" name="layersconfig">
+    <ownedComment xmi:id="_a1IuIECrEeOxsL3-gu79hA">
+      <body>Rename to &#xD;
+PropertyOpeatorConfig ?</body>
+    </ownedComment>
+    <packagedElement xmi:type="uml:Class" xmi:id="_dupZsBHLEeOjX-JbGFEH7w" name="Folder">
+      <generalization xmi:id="_jl454BHLEeOjX-JbGFEH7w" general="_e6kaQBHLEeOjX-JbGFEH7w"/>
+      <ownedAttribute xmi:id="_lZ2K0BHLEeOjX-JbGFEH7w" name="folderElements" type="_e6kaQBHLEeOjX-JbGFEH7w" aggregation="composite" association="_lZ9fkBHLEeOjX-JbGFEH7w">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lZ2K0RHLEeOjX-JbGFEH7w"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lZ2K0hHLEeOjX-JbGFEH7w" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_e6kaQBHLEeOjX-JbGFEH7w" name="FolderElement" isAbstract="true">
+      <ownedAttribute xmi:id="_8YScgBHLEeOjX-JbGFEH7w" name="name" visibility="public" type="_vyPiABHLEeOjX-JbGFEH7w">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9vrGMBHLEeOjX-JbGFEH7w" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9v2sYBHLEeOjX-JbGFEH7w" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_9wSKMBHLEeOjX-JbGFEH7w">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_lZ9fkBHLEeOjX-JbGFEH7w" name="folder_folderElement_1" memberEnd="_lZ9fkRHLEeOjX-JbGFEH7w _lZ2K0BHLEeOjX-JbGFEH7w">
+      <ownedEnd xmi:id="_lZ9fkRHLEeOjX-JbGFEH7w" name="folder" type="_dupZsBHLEeOjX-JbGFEH7w" association="_lZ9fkBHLEeOjX-JbGFEH7w">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lZ9fkhHLEeOjX-JbGFEH7w" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lZ9fkxHLEeOjX-JbGFEH7w" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_vyPiABHLEeOjX-JbGFEH7w" name="String"/>
+    <packagedElement xmi:type="uml:Class" xmi:id="_DDJyABHMEeOjX-JbGFEH7w" name="LayerOperatorConfig">
+      <generalization xmi:id="_cNPb4BHMEeOjX-JbGFEH7w" general="_J6-I8BHNEeOjX-JbGFEH7w"/>
+      <ownedOperation xmi:id="_RRZEMBKOEeO9e9pZ1EIGJg" name="createLayersOperatorDescriptor" raisedException="_nDCrQBKREeO9e9pZ1EIGJg">
+        <ownedParameter xmi:id="_7oMRsBKOEeO9e9pZ1EIGJg" name="return" type="_Z9gfwBKOEeO9e9pZ1EIGJg" direction="return"/>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_IFGo8BHMEeOjX-JbGFEH7w" name="OperatorConfig">
+      <generalization xmi:id="_dXPw4BHMEeOjX-JbGFEH7w" general="_J6-I8BHNEeOjX-JbGFEH7w"/>
+      <ownedOperation xmi:id="_aNsUABKSEeO9e9pZ1EIGJg" name="createOperatorDescriptor" raisedException="_nDCrQBKREeO9e9pZ1EIGJg">
+        <ownedParameter xmi:id="_aNsUARKSEeO9e9pZ1EIGJg" name="return" type="_wTo3cBKSEeO9e9pZ1EIGJg" direction="return"/>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_qodvUBHMEeOjX-JbGFEH7w" name="PropertyId">
+      <generalization xmi:id="_4R1vEBHMEeOjX-JbGFEH7w" general="_e6kaQBHLEeOjX-JbGFEH7w"/>
+      <ownedAttribute xmi:id="_BKIJ8BQ0EeO9e9pZ1EIGJg" name="type" visibility="public" type="_RWlKcBQ0EeO9e9pZ1EIGJg">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lQ7ZABQ0EeO9e9pZ1EIGJg" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lRL3sBQ0EeO9e9pZ1EIGJg" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_lR_wABQ0EeO9e9pZ1EIGJg">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_wAAbwBHMEeOjX-JbGFEH7w" name="operatorConfig_propertyId_1" memberEnd="_wAAbwRHMEeOjX-JbGFEH7w _v_2DsBHMEeOjX-JbGFEH7w">
+      <ownedEnd xmi:id="_wAAbwRHMEeOjX-JbGFEH7w" name="operatorConfig" type="_jKujsBHSEeOjX-JbGFEH7w" association="_wAAbwBHMEeOjX-JbGFEH7w">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wAAbwhHMEeOjX-JbGFEH7w" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wAAbwxHMEeOjX-JbGFEH7w" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_J6-I8BHNEeOjX-JbGFEH7w" name="InstanciableElement" isAbstract="true">
+      <generalization xmi:id="_zAn3oBHNEeOjX-JbGFEH7w" general="_e6kaQBHLEeOjX-JbGFEH7w"/>
+      <ownedAttribute xmi:id="_QZd2YBHNEeOjX-JbGFEH7w" name="classname" visibility="public" type="_vyPiABHLEeOjX-JbGFEH7w">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SN1XABHNEeOjX-JbGFEH7w" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SOBkQBHNEeOjX-JbGFEH7w" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_SOooQBHNEeOjX-JbGFEH7w">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_S9IF8BHNEeOjX-JbGFEH7w" name="bundleID" visibility="public" type="_vyPiABHLEeOjX-JbGFEH7w">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VABx0BHNEeOjX-JbGFEH7w" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_VAOmIBHNEeOjX-JbGFEH7w" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_VA3fUBHNEeOjX-JbGFEH7w">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_cMta8BHNEeOjX-JbGFEH7w" name="displayName" visibility="public" type="_vyPiABHLEeOjX-JbGFEH7w">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fovc8BHNEeOjX-JbGFEH7w" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fo9fYBHNEeOjX-JbGFEH7w" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_fpnmsBHNEeOjX-JbGFEH7w">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_gLlrUBHNEeOjX-JbGFEH7w" name="iconPath" visibility="public" type="_vyPiABHLEeOjX-JbGFEH7w">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iHO4oBHNEeOjX-JbGFEH7w" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iHbF4BHNEeOjX-JbGFEH7w" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_iIAUsBHNEeOjX-JbGFEH7w">
+          <value xsi:nil="true"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_CcFM8BQnEeO9e9pZ1EIGJg" name="classnameKind" visibility="public" type="_wpf8IBQmEeO9e9pZ1EIGJg">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GkE9EBQnEeO9e9pZ1EIGJg" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GkU0sBQnEeO9e9pZ1EIGJg" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_RYhXEBQnEeO9e9pZ1EIGJg" name="UNDEFINED" value="UNDEFINED"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_hAs8IBHSEeOjX-JbGFEH7w" name="LayerOperatorMultipleBinding">
+      <generalization xmi:id="_fqIf4BHUEeOjX-JbGFEH7w" general="_e6kaQBHLEeOjX-JbGFEH7w"/>
+      <ownedAttribute xmi:id="_xf1BABHSEeOjX-JbGFEH7w" name="layerOperatorConfig" type="_DDJyABHMEeOjX-JbGFEH7w" association="_xf7usBHSEeOjX-JbGFEH7w">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xf1BARHSEeOjX-JbGFEH7w" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xf1BAhHSEeOjX-JbGFEH7w" value="1"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_dmfCkBHTEeOjX-JbGFEH7w" name="bindings" type="_jKujsBHSEeOjX-JbGFEH7w" aggregation="composite" association="_dmmXUBHTEeOjX-JbGFEH7w">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dmfCkRHTEeOjX-JbGFEH7w"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dmfCkhHTEeOjX-JbGFEH7w" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_jKujsBHSEeOjX-JbGFEH7w" name="OperatorBinding">
+      <ownedAttribute xmi:id="_dmmXURHTEeOjX-JbGFEH7w" name="owner" type="_hAs8IBHSEeOjX-JbGFEH7w" association="_dmmXUBHTEeOjX-JbGFEH7w">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dmmXUhHTEeOjX-JbGFEH7w" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dmmXUxHTEeOjX-JbGFEH7w" value="1"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_7q__EBHTEeOjX-JbGFEH7w" name="operator" type="_IFGo8BHMEeOjX-JbGFEH7w" association="_7rHT0BHTEeOjX-JbGFEH7w">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7q__ERHTEeOjX-JbGFEH7w" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7q__EhHTEeOjX-JbGFEH7w" value="1"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_XgqfUBKNEeO9e9pZ1EIGJg" name="layerOperatorConfig" type="_DDJyABHMEeOjX-JbGFEH7w" isReadOnly="true" isDerived="true" association="_Xg-BUBKNEeO9e9pZ1EIGJg">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XgqfURKNEeO9e9pZ1EIGJg" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_XgqfUhKNEeO9e9pZ1EIGJg" value="1"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_v_2DsBHMEeOjX-JbGFEH7w" name="propertyId" type="_qodvUBHMEeOjX-JbGFEH7w" association="_wAAbwBHMEeOjX-JbGFEH7w">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_v_2DsRHMEeOjX-JbGFEH7w" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_v_2DshHMEeOjX-JbGFEH7w" value="1"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_xf7usBHSEeOjX-JbGFEH7w" name="class1_layerOperatorConfig_1" memberEnd="_xf7usRHSEeOjX-JbGFEH7w _xf1BABHSEeOjX-JbGFEH7w">
+      <ownedEnd xmi:id="_xf7usRHSEeOjX-JbGFEH7w" name="class1" type="_hAs8IBHSEeOjX-JbGFEH7w" association="_xf7usBHSEeOjX-JbGFEH7w">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xf7ushHSEeOjX-JbGFEH7w" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xf7usxHSEeOjX-JbGFEH7w" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_dmmXUBHTEeOjX-JbGFEH7w" name="layerOperatorBindings" memberEnd="_dmmXURHTEeOjX-JbGFEH7w _dmfCkBHTEeOjX-JbGFEH7w"/>
+    <packagedElement xmi:type="uml:Association" xmi:id="_7rHT0BHTEeOjX-JbGFEH7w" name="simpleBinding_operatorConfig_1" memberEnd="_7rHT0RHTEeOjX-JbGFEH7w _7q__EBHTEeOjX-JbGFEH7w">
+      <ownedEnd xmi:id="_7rHT0RHTEeOjX-JbGFEH7w" name="simpleBinding" type="_jKujsBHSEeOjX-JbGFEH7w" association="_7rHT0BHTEeOjX-JbGFEH7w">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7rHT0hHTEeOjX-JbGFEH7w" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7rHT0xHTEeOjX-JbGFEH7w" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_Xg-BUBKNEeO9e9pZ1EIGJg" name="simpleBinding_layerOperatorConfig_1" memberEnd="_Xg-BURKNEeO9e9pZ1EIGJg _XgqfUBKNEeO9e9pZ1EIGJg">
+      <ownedEnd xmi:id="_Xg-BURKNEeO9e9pZ1EIGJg" name="simpleBinding" type="_jKujsBHSEeOjX-JbGFEH7w" association="_Xg-BUBKNEeO9e9pZ1EIGJg">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Xg-BUhKNEeO9e9pZ1EIGJg" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Xg-BUxKNEeO9e9pZ1EIGJg" value="1"/>
+      </ownedEnd>
+    </packagedElement>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_Z9gfwBKOEeO9e9pZ1EIGJg" name="LayerOperatorDescriptor"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_nDCrQBKREeO9e9pZ1EIGJg" name="InstanciationException"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_wTo3cBKSEeO9e9pZ1EIGJg" name="PropertyOperator"/>
+    <packagedElement xmi:type="uml:Enumeration" xmi:id="_wpf8IBQmEeO9e9pZ1EIGJg" name="ClassnameKind">
+      <ownedLiteral xmi:id="_zj87EBQmEeO9e9pZ1EIGJg" name="UNDEFINED"/>
+      <ownedLiteral xmi:id="_0_1DMBQmEeO9e9pZ1EIGJg" name="EMF_CLASSNAME"/>
+      <ownedLiteral xmi:id="_3Y_6ABQmEeO9e9pZ1EIGJg" name="POJO_CLASSNAME"/>
+      <ownedLiteral xmi:id="_5OQLcBQmEeO9e9pZ1EIGJg" name="NOT_FOUND"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_RWlKcBQ0EeO9e9pZ1EIGJg" name="TypeConfig">
+      <generalization xmi:id="_UGshoBQ0EeO9e9pZ1EIGJg" general="_e6kaQBHLEeOjX-JbGFEH7w"/>
+    </packagedElement>
+    <profileApplication xmi:id="_zHFW4BHLEeOjX-JbGFEH7w">
+      <eAnnotations xmi:id="_zM0LcBHLEeOjX-JbGFEH7w" 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:EDataType xmi:id="_4V6zQBHLEeOjX-JbGFEH7w" instanceClassName="java.lang.String" base_PrimitiveType="_vyPiABHLEeOjX-JbGFEH7w"/>
+  <Ecore:EPackage xmi:id="_I4_5IBHOEeOjX-JbGFEH7w" base_Package="_RggB0BHLEeOjX-JbGFEH7w" nsPrefix="layersconfig" nsURI="org.eclipse.papyrus.layersconfig.0.10" basePackage="org.eclipse.papyrus.layers.configmodel"/>
+  <Ecore:EReference xmi:id="_n0AyABKNEeO9e9pZ1EIGJg" isTransient="true" base_Property="_XgqfUBKNEeO9e9pZ1EIGJg"/>
+  <Ecore:EDataType xmi:id="_qxSmABKOEeO9e9pZ1EIGJg" instanceClassName="org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor" base_PrimitiveType="_Z9gfwBKOEeO9e9pZ1EIGJg"/>
+  <Ecore:EDataType xmi:id="_qjZMkBKREeO9e9pZ1EIGJg" instanceClassName="org.eclipse.papyrus.layers.stackmodel.InstanciationException" base_PrimitiveType="_nDCrQBKREeO9e9pZ1EIGJg"/>
+  <Ecore:EDataType xmi:id="_zmmdABKSEeO9e9pZ1EIGJg" instanceClassName="org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator" base_PrimitiveType="_wTo3cBKSEeO9e9pZ1EIGJg"/>
+</xmi:XMI>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/ecore.uml b/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/ecore.uml
new file mode 100755
index 0000000..cfe91c2
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/ecore.uml
@@ -0,0 +1,1126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20110701" xmlns:xmi="http://www.omg.org/spec/XMI/20110701" 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/4.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="_A45IQLcnEeKeLJDBCBPhPw" name="ecore" URI="http://www.eclipse.org/emf/2002/Ecore">
+    <packagedElement xmi:type="uml:Class" xmi:id="_A45IQbcnEeKeLJDBCBPhPw" name="EAttribute">
+      <generalization xmi:id="_A45IQrcnEeKeLJDBCBPhPw" general="_A45IRrcnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_A45IQ7cnEeKeLJDBCBPhPw" name="iD" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IRLcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45IRbcnEeKeLJDBCBPhPw" name="eAttributeType" type="_A45J37cnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" isDerived="true" association="_A45J7bcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_A45IRrcnEeKeLJDBCBPhPw" name="EStructuralFeature" isAbstract="true">
+      <generalization xmi:id="_A45IR7cnEeKeLJDBCBPhPw" general="_A45IY7cnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_A45ISLcnEeKeLJDBCBPhPw" name="eContainingClass" type="_A45JC7cnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" association="_A45J2rcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45ISbcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45ISrcnEeKeLJDBCBPhPw" name="changeable" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IS7cnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_A45ITLcnEeKeLJDBCBPhPw" value="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45ITbcnEeKeLJDBCBPhPw" name="volatile" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45ITrcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45IT7cnEeKeLJDBCBPhPw" name="transient" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IULcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45IUbcnEeKeLJDBCBPhPw" name="defaultValueLiteral" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IUrcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45IU7cnEeKeLJDBCBPhPw" name="defaultValue" visibility="public" isOrdered="true" isReadOnly="true" isDerived="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IVLcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45IVbcnEeKeLJDBCBPhPw" name="unsettable" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IVrcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45IV7cnEeKeLJDBCBPhPw" name="derived" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IWLcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedOperation xmi:id="_A45IWbcnEeKeLJDBCBPhPw" name="getFeatureID" visibility="public">
+        <ownedParameter xmi:id="_A45IWrcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IW7cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_A45IXLcnEeKeLJDBCBPhPw" name="getContainerClass" visibility="public">
+        <ownedParameter xmi:id="_A45IXbcnEeKeLJDBCBPhPw" type="_A45IYLcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IXrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <nestedClassifier xmi:type="uml:Class" xmi:id="_A45IX7cnEeKeLJDBCBPhPw" name="Wildcard"/>
+      <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_A45IYLcnEeKeLJDBCBPhPw" name="EJavaClass_Wildcard">
+        <templateBinding xmi:id="_A45IYbcnEeKeLJDBCBPhPw">
+          <parameterSubstitution xmi:id="_A45IYrcnEeKeLJDBCBPhPw" actual="_A45IX7cnEeKeLJDBCBPhPw">
+            <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="_A45IY7cnEeKeLJDBCBPhPw" name="ETypedElement" isAbstract="true">
+      <generalization xmi:id="_A45IZLcnEeKeLJDBCBPhPw" general="_A45IeLcnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_A45IZbcnEeKeLJDBCBPhPw" name="ordered" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IZrcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_A45IZ7cnEeKeLJDBCBPhPw" value="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45IaLcnEeKeLJDBCBPhPw" name="unique" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IabcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_A45IarcnEeKeLJDBCBPhPw" value="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45Ia7cnEeKeLJDBCBPhPw" name="lowerBound" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IbLcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45IbbcnEeKeLJDBCBPhPw" name="upperBound" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IbrcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_A45Ib7cnEeKeLJDBCBPhPw" value="1">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45IcLcnEeKeLJDBCBPhPw" name="many" visibility="public" isOrdered="true" isReadOnly="true" isDerived="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IcbcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45IcrcnEeKeLJDBCBPhPw" name="required" visibility="public" isOrdered="true" isReadOnly="true" isDerived="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45Ic7cnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45IdLcnEeKeLJDBCBPhPw" name="eType" type="_A45IfLcnEeKeLJDBCBPhPw" isOrdered="true" association="_A45J6bcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IdbcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45IdrcnEeKeLJDBCBPhPw" name="eGenericType" type="_A45JhrcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45J67cnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45Id7cnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_A45IeLcnEeKeLJDBCBPhPw" name="ENamedElement" isAbstract="true">
+      <generalization xmi:id="_A45IebcnEeKeLJDBCBPhPw" general="_A5C5ZrcnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_A45IercnEeKeLJDBCBPhPw" name="name" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45Ie7cnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_A45IfLcnEeKeLJDBCBPhPw" name="EClassifier" isAbstract="true">
+      <generalization xmi:id="_A45IfbcnEeKeLJDBCBPhPw" general="_A45IeLcnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_A45IfrcnEeKeLJDBCBPhPw" name="instanceClassName" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45If7cnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45IgLcnEeKeLJDBCBPhPw" name="instanceClass" visibility="public" type="_A45IlLcnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" isDerived="true">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IgbcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45IgrcnEeKeLJDBCBPhPw" name="defaultValue" visibility="public" isOrdered="true" isReadOnly="true" isDerived="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45Ig7cnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45IhLcnEeKeLJDBCBPhPw" name="instanceTypeName" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IhbcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45IhrcnEeKeLJDBCBPhPw" name="ePackage" type="_A45Il7cnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" association="_A45J5bcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45Ih7cnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45IiLcnEeKeLJDBCBPhPw" name="eTypeParameters" type="_A45JgbcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45J57cnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IibcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45IircnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedOperation xmi:id="_A45Ii7cnEeKeLJDBCBPhPw" name="isInstance" visibility="public">
+        <ownedParameter xmi:id="_A45IjLcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IjbcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_A45IjrcnEeKeLJDBCBPhPw" name="object" isOrdered="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45Ij7cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_A45IkLcnEeKeLJDBCBPhPw" name="getClassifierID" visibility="public">
+        <ownedParameter xmi:id="_A45IkbcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IkrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <nestedClassifier xmi:type="uml:Class" xmi:id="_A45Ik7cnEeKeLJDBCBPhPw" name="Wildcard"/>
+      <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_A45IlLcnEeKeLJDBCBPhPw" name="EJavaClass_Wildcard">
+        <templateBinding xmi:id="_A45IlbcnEeKeLJDBCBPhPw">
+          <parameterSubstitution xmi:id="_A45IlrcnEeKeLJDBCBPhPw" actual="_A45Ik7cnEeKeLJDBCBPhPw">
+            <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="_A45Il7cnEeKeLJDBCBPhPw" name="EPackage">
+      <generalization xmi:id="_A45ImLcnEeKeLJDBCBPhPw" general="_A45IeLcnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_A45ImbcnEeKeLJDBCBPhPw" name="nsURI" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45ImrcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45Im7cnEeKeLJDBCBPhPw" name="nsPrefix" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45InLcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45InbcnEeKeLJDBCBPhPw" name="eFactoryInstance" type="_A45Iq7cnEeKeLJDBCBPhPw" isOrdered="true" association="_A45J5LcnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_A45InrcnEeKeLJDBCBPhPw" name="eClassifiers" type="_A45IfLcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45J5bcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45In7cnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45IoLcnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45IobcnEeKeLJDBCBPhPw" name="eSubpackages" type="_A45Il7cnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45J5rcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IorcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45Io7cnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45IpLcnEeKeLJDBCBPhPw" name="eSuperPackage" type="_A45Il7cnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" association="_A45J5rcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IpbcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedOperation xmi:id="_A45IprcnEeKeLJDBCBPhPw" name="getEClassifier" visibility="public">
+        <ownedParameter xmi:id="_A45Ip7cnEeKeLJDBCBPhPw" type="_A45IfLcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IqLcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_A45IqbcnEeKeLJDBCBPhPw" name="name" isOrdered="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IqrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_A45Iq7cnEeKeLJDBCBPhPw" name="EFactory">
+      <generalization xmi:id="_A45IrLcnEeKeLJDBCBPhPw" general="_A5C5ZrcnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_A45IrbcnEeKeLJDBCBPhPw" name="ePackage" type="_A45Il7cnEeKeLJDBCBPhPw" isOrdered="true" association="_A45J5LcnEeKeLJDBCBPhPw"/>
+      <ownedOperation xmi:id="_A45IrrcnEeKeLJDBCBPhPw" name="create" visibility="public">
+        <ownedParameter xmi:id="_A45Ir7cnEeKeLJDBCBPhPw" type="_A45IwbcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IsLcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_A45IsbcnEeKeLJDBCBPhPw" name="eClass" type="_A45JC7cnEeKeLJDBCBPhPw" isOrdered="true">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IsrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_A45Is7cnEeKeLJDBCBPhPw" name="createFromString" visibility="public">
+        <ownedParameter xmi:id="_A45ItLcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45ItbcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_A45ItrcnEeKeLJDBCBPhPw" name="eDataType" type="_A45J37cnEeKeLJDBCBPhPw" isOrdered="true">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45It7cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_A45IuLcnEeKeLJDBCBPhPw" name="literalValue" isOrdered="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IubcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_A45IurcnEeKeLJDBCBPhPw" name="convertToString" visibility="public">
+        <ownedParameter xmi:id="_A45Iu7cnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IvLcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_A45IvbcnEeKeLJDBCBPhPw" name="eDataType" type="_A45J37cnEeKeLJDBCBPhPw" isOrdered="true">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IvrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_A45Iv7cnEeKeLJDBCBPhPw" name="instanceValue" isOrdered="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IwLcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_A45IwbcnEeKeLJDBCBPhPw" name="EObject">
+      <ownedOperation xmi:id="_A45IwrcnEeKeLJDBCBPhPw" name="eClass" visibility="public">
+        <ownedParameter xmi:id="_A45Iw7cnEeKeLJDBCBPhPw" type="_A45JC7cnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IxLcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_A45IxbcnEeKeLJDBCBPhPw" name="eIsProxy" visibility="public">
+        <ownedParameter xmi:id="_A45IxrcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45Ix7cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_A45IyLcnEeKeLJDBCBPhPw" name="eResource" visibility="public">
+        <ownedParameter xmi:id="_A45IybcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EResource"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IyrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_A45Iy7cnEeKeLJDBCBPhPw" name="eContainer" visibility="public">
+        <ownedParameter xmi:id="_A45IzLcnEeKeLJDBCBPhPw" type="_A45IwbcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45IzbcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_A45IzrcnEeKeLJDBCBPhPw" name="eContainingFeature" visibility="public">
+        <ownedParameter xmi:id="_A45Iz7cnEeKeLJDBCBPhPw" type="_A45IRrcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I0LcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_A45I0bcnEeKeLJDBCBPhPw" name="eContainmentFeature" visibility="public">
+        <ownedParameter xmi:id="_A45I0rcnEeKeLJDBCBPhPw" type="_A45JtbcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I07cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_A45I1LcnEeKeLJDBCBPhPw" name="eContents" visibility="public">
+        <ownedParameter xmi:id="_A45I1bcnEeKeLJDBCBPhPw" type="_A45JAbcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I1rcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_A45I17cnEeKeLJDBCBPhPw" name="eAllContents" visibility="public">
+        <ownedParameter xmi:id="_A45I2LcnEeKeLJDBCBPhPw" type="_A45JBLcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I2bcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_A45I2rcnEeKeLJDBCBPhPw" name="eCrossReferences" visibility="public">
+        <ownedParameter xmi:id="_A45I27cnEeKeLJDBCBPhPw" type="_A45JAbcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I3LcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_A45I3bcnEeKeLJDBCBPhPw" name="eGet" visibility="public">
+        <ownedParameter xmi:id="_A45I3rcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I37cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_A45I4LcnEeKeLJDBCBPhPw" name="feature" type="_A45IRrcnEeKeLJDBCBPhPw" isOrdered="true">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I4bcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_A45I4rcnEeKeLJDBCBPhPw" name="eGet" visibility="public">
+        <ownedParameter xmi:id="_A45I47cnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I5LcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_A45I5bcnEeKeLJDBCBPhPw" name="feature" type="_A45IRrcnEeKeLJDBCBPhPw" isOrdered="true">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I5rcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_A45I57cnEeKeLJDBCBPhPw" name="resolve" isOrdered="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I6LcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_A45I6bcnEeKeLJDBCBPhPw" name="eSet" visibility="public">
+        <ownedParameter xmi:id="_A45I6rcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I67cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_A45I7LcnEeKeLJDBCBPhPw" name="feature" type="_A45IRrcnEeKeLJDBCBPhPw" isOrdered="true">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I7bcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_A45I7rcnEeKeLJDBCBPhPw" name="newValue" isOrdered="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I77cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_A45I8LcnEeKeLJDBCBPhPw" name="eIsSet" visibility="public">
+        <ownedParameter xmi:id="_A45I8bcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I8rcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_A45I87cnEeKeLJDBCBPhPw" name="feature" type="_A45IRrcnEeKeLJDBCBPhPw" isOrdered="true">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I9LcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_A45I9bcnEeKeLJDBCBPhPw" name="eUnset" visibility="public">
+        <ownedParameter xmi:id="_A45I9rcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I97cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_A45I-LcnEeKeLJDBCBPhPw" name="feature" type="_A45IRrcnEeKeLJDBCBPhPw" isOrdered="true">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I-bcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_A45I-rcnEeKeLJDBCBPhPw" name="eInvoke" visibility="public">
+        <ownedParameter xmi:id="_A45I-7cnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I_LcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_A45I_bcnEeKeLJDBCBPhPw" name="operation" type="_A45JaLcnEeKeLJDBCBPhPw" isOrdered="true">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45I_rcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_A45I_7cnEeKeLJDBCBPhPw" name="arguments" type="_A45JCLcnEeKeLJDBCBPhPw" isOrdered="true">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JALcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <raisedException xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInvocationTargetException"/>
+      </ownedOperation>
+      <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_A45JAbcnEeKeLJDBCBPhPw" name="EEList_EObject">
+        <templateBinding xmi:id="_A45JArcnEeKeLJDBCBPhPw">
+          <parameterSubstitution xmi:id="_A45JA7cnEeKeLJDBCBPhPw" actual="_A45IwbcnEeKeLJDBCBPhPw">
+            <formal xmi:type="uml:ClassifierTemplateParameter" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EEList-_ownedElement.0-_ownedParameter.0"/>
+          </parameterSubstitution>
+          <signature xmi:type="uml:RedefinableTemplateSignature" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EEList-_ownedElement.0"/>
+        </templateBinding>
+      </nestedClassifier>
+      <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_A45JBLcnEeKeLJDBCBPhPw" name="ETreeIterator_EObject">
+        <templateBinding xmi:id="_A45JBbcnEeKeLJDBCBPhPw">
+          <parameterSubstitution xmi:id="_A45JBrcnEeKeLJDBCBPhPw" actual="_A45IwbcnEeKeLJDBCBPhPw">
+            <formal xmi:type="uml:ClassifierTemplateParameter" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#ETreeIterator-_ownedElement.0-_ownedParameter.0"/>
+          </parameterSubstitution>
+          <signature xmi:type="uml:RedefinableTemplateSignature" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#ETreeIterator-_ownedElement.0"/>
+        </templateBinding>
+      </nestedClassifier>
+      <nestedClassifier xmi:type="uml:Class" xmi:id="_A45JB7cnEeKeLJDBCBPhPw" name="Wildcard"/>
+      <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_A45JCLcnEeKeLJDBCBPhPw" name="EEList_Wildcard">
+        <templateBinding xmi:id="_A45JCbcnEeKeLJDBCBPhPw">
+          <parameterSubstitution xmi:id="_A45JCrcnEeKeLJDBCBPhPw" actual="_A45JB7cnEeKeLJDBCBPhPw">
+            <formal xmi:type="uml:ClassifierTemplateParameter" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EEList-_ownedElement.0-_ownedParameter.0"/>
+          </parameterSubstitution>
+          <signature xmi:type="uml:RedefinableTemplateSignature" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EEList-_ownedElement.0"/>
+        </templateBinding>
+      </nestedClassifier>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_A45JC7cnEeKeLJDBCBPhPw" name="EClass">
+      <generalization xmi:id="_A45JDLcnEeKeLJDBCBPhPw" general="_A45IfLcnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_A45JDbcnEeKeLJDBCBPhPw" name="eOperations" type="_A45JaLcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45JgLcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JDrcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JD7cnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45JELcnEeKeLJDBCBPhPw" name="abstract" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JEbcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45JErcnEeKeLJDBCBPhPw" name="interface" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JE7cnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45JFLcnEeKeLJDBCBPhPw" name="eSuperTypes" type="_A45JC7cnEeKeLJDBCBPhPw" isOrdered="true" association="_A45JsbcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JFbcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JFrcnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45JF7cnEeKeLJDBCBPhPw" name="eAllAttributes" type="_A45IQbcnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" isDerived="true" association="_A45Js7cnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JGLcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JGbcnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45JGrcnEeKeLJDBCBPhPw" name="eAllReferences" type="_A45JtbcnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" isDerived="true" association="_A45JyrcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JG7cnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JHLcnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45JHbcnEeKeLJDBCBPhPw" name="eReferences" type="_A45JtbcnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" isDerived="true" association="_A45JzLcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JHrcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JH7cnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45JILcnEeKeLJDBCBPhPw" name="eAttributes" type="_A45IQbcnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" isDerived="true" association="_A45JzrcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JIbcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JIrcnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45JI7cnEeKeLJDBCBPhPw" name="eAllContainments" type="_A45JtbcnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" isDerived="true" association="_A45J0LcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JJLcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JJbcnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45JJrcnEeKeLJDBCBPhPw" name="eAllOperations" type="_A45JaLcnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" isDerived="true" association="_A45J0rcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JJ7cnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JKLcnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45JKbcnEeKeLJDBCBPhPw" name="eAllStructuralFeatures" type="_A45IRrcnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" isDerived="true" association="_A45J1LcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JKrcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JK7cnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45JLLcnEeKeLJDBCBPhPw" name="eAllSuperTypes" type="_A45JC7cnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" isDerived="true" association="_A45J1rcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JLbcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JLrcnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45JL7cnEeKeLJDBCBPhPw" name="eIDAttribute" type="_A45IQbcnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" isDerived="true" association="_A45J2LcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JMLcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45JMbcnEeKeLJDBCBPhPw" name="eStructuralFeatures" type="_A45IRrcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45J2rcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JMrcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JM7cnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45JNLcnEeKeLJDBCBPhPw" name="eGenericSuperTypes" type="_A45JhrcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45J27cnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JNbcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JNrcnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45JN7cnEeKeLJDBCBPhPw" name="eAllGenericSuperTypes" type="_A45JhrcnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" isDerived="true" association="_A45J3bcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JOLcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JObcnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedOperation xmi:id="_A45JOrcnEeKeLJDBCBPhPw" name="isSuperTypeOf" visibility="public">
+        <ownedParameter xmi:id="_A45JO7cnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JPLcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_A45JPbcnEeKeLJDBCBPhPw" name="someClass" type="_A45JC7cnEeKeLJDBCBPhPw" isOrdered="true">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JPrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_A45JP7cnEeKeLJDBCBPhPw" name="getFeatureCount" visibility="public">
+        <ownedParameter xmi:id="_A45JQLcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JQbcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_A45JQrcnEeKeLJDBCBPhPw" name="getEStructuralFeature" visibility="public">
+        <ownedParameter xmi:id="_A45JQ7cnEeKeLJDBCBPhPw" type="_A45IRrcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JRLcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_A45JRbcnEeKeLJDBCBPhPw" name="featureID" isOrdered="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JRrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_A45JR7cnEeKeLJDBCBPhPw" name="getFeatureID" visibility="public">
+        <ownedParameter xmi:id="_A45JSLcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JSbcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_A45JSrcnEeKeLJDBCBPhPw" name="feature" type="_A45IRrcnEeKeLJDBCBPhPw" isOrdered="true">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JS7cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_A45JTLcnEeKeLJDBCBPhPw" name="getEStructuralFeature" visibility="public">
+        <ownedParameter xmi:id="_A45JTbcnEeKeLJDBCBPhPw" type="_A45IRrcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JTrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_A45JT7cnEeKeLJDBCBPhPw" name="featureName" isOrdered="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JULcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_A45JUbcnEeKeLJDBCBPhPw" name="getOperationCount" visibility="public">
+        <ownedParameter xmi:id="_A45JUrcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JU7cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_A45JVLcnEeKeLJDBCBPhPw" name="getEOperation" visibility="public">
+        <ownedParameter xmi:id="_A45JVbcnEeKeLJDBCBPhPw" type="_A45JaLcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JVrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_A45JV7cnEeKeLJDBCBPhPw" name="operationID" isOrdered="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JWLcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_A45JWbcnEeKeLJDBCBPhPw" name="getOperationID" visibility="public">
+        <ownedParameter xmi:id="_A45JWrcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JW7cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_A45JXLcnEeKeLJDBCBPhPw" name="operation" type="_A45JaLcnEeKeLJDBCBPhPw" isOrdered="true">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JXbcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_A45JXrcnEeKeLJDBCBPhPw" name="getOverride" visibility="public">
+        <ownedParameter xmi:id="_A45JX7cnEeKeLJDBCBPhPw" type="_A45JaLcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JYLcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_A45JYbcnEeKeLJDBCBPhPw" name="operation" type="_A45JaLcnEeKeLJDBCBPhPw" isOrdered="true">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JYrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_A45JY7cnEeKeLJDBCBPhPw" name="getFeatureType" visibility="public">
+        <ownedParameter xmi:id="_A45JZLcnEeKeLJDBCBPhPw" type="_A45JhrcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JZbcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_A45JZrcnEeKeLJDBCBPhPw" name="feature" type="_A45IRrcnEeKeLJDBCBPhPw" isOrdered="true">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JZ7cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_A45JaLcnEeKeLJDBCBPhPw" name="EOperation">
+      <generalization xmi:id="_A45JabcnEeKeLJDBCBPhPw" general="_A45IY7cnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_A45JarcnEeKeLJDBCBPhPw" name="eContainingClass" type="_A45JC7cnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" association="_A45JgLcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45Ja7cnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45JbLcnEeKeLJDBCBPhPw" name="eTypeParameters" type="_A45JgbcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45JprcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JbbcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JbrcnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45Jb7cnEeKeLJDBCBPhPw" name="eParameters" type="_A45JqLcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45JrLcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JcLcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JcbcnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45JcrcnEeKeLJDBCBPhPw" name="eExceptions" type="_A45IfLcnEeKeLJDBCBPhPw" isOrdered="true" association="_A45JrbcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45Jc7cnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JdLcnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45JdbcnEeKeLJDBCBPhPw" name="eGenericExceptions" type="_A45JhrcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45Jr7cnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JdrcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45Jd7cnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedOperation xmi:id="_A45JeLcnEeKeLJDBCBPhPw" name="getOperationID" visibility="public">
+        <ownedParameter xmi:id="_A45JebcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JercnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_A45Je7cnEeKeLJDBCBPhPw" name="isOverrideOf" visibility="public">
+        <ownedParameter xmi:id="_A45JfLcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JfbcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_A45JfrcnEeKeLJDBCBPhPw" name="someOperation" type="_A45JaLcnEeKeLJDBCBPhPw" isOrdered="true">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45Jf7cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45JgLcnEeKeLJDBCBPhPw" memberEnd="_A45JDbcnEeKeLJDBCBPhPw _A45JarcnEeKeLJDBCBPhPw"/>
+    <packagedElement xmi:type="uml:Class" xmi:id="_A45JgbcnEeKeLJDBCBPhPw" name="ETypeParameter">
+      <generalization xmi:id="_A45JgrcnEeKeLJDBCBPhPw" general="_A45IeLcnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_A45Jg7cnEeKeLJDBCBPhPw" name="eBounds" type="_A45JhrcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45JpLcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JhLcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45JhbcnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_A45JhrcnEeKeLJDBCBPhPw" name="EGenericType">
+      <ownedAttribute xmi:id="_A45Jh7cnEeKeLJDBCBPhPw" name="eUpperBound" type="_A45JhrcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45JmLcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JiLcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45JibcnEeKeLJDBCBPhPw" name="eTypeArguments" type="_A45JhrcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45JmrcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JircnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45Ji7cnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45JjLcnEeKeLJDBCBPhPw" name="eRawType" type="_A45IfLcnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" isDerived="true" association="_A45JnLcnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_A45JjbcnEeKeLJDBCBPhPw" name="eLowerBound" type="_A45JhrcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45JnrcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JjrcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45Jj7cnEeKeLJDBCBPhPw" name="eTypeParameter" type="_A45JgbcnEeKeLJDBCBPhPw" isOrdered="true" association="_A45JoLcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JkLcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45JkbcnEeKeLJDBCBPhPw" name="eClassifier" type="_A45IfLcnEeKeLJDBCBPhPw" isOrdered="true" association="_A45JorcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JkrcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedOperation xmi:id="_A45Jk7cnEeKeLJDBCBPhPw" name="isInstance" visibility="public">
+        <ownedParameter xmi:id="_A45JlLcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JlbcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_A45JlrcnEeKeLJDBCBPhPw" name="object" isOrdered="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45Jl7cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45JmLcnEeKeLJDBCBPhPw" memberEnd="_A45Jh7cnEeKeLJDBCBPhPw _A45JmbcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45JmbcnEeKeLJDBCBPhPw" type="_A45JhrcnEeKeLJDBCBPhPw" association="_A45JmLcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45JmrcnEeKeLJDBCBPhPw" memberEnd="_A45JibcnEeKeLJDBCBPhPw _A45Jm7cnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45Jm7cnEeKeLJDBCBPhPw" type="_A45JhrcnEeKeLJDBCBPhPw" association="_A45JmrcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45JnLcnEeKeLJDBCBPhPw" memberEnd="_A45JjLcnEeKeLJDBCBPhPw _A45JnbcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45JnbcnEeKeLJDBCBPhPw" type="_A45JhrcnEeKeLJDBCBPhPw" association="_A45JnLcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45JnrcnEeKeLJDBCBPhPw" memberEnd="_A45JjbcnEeKeLJDBCBPhPw _A45Jn7cnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45Jn7cnEeKeLJDBCBPhPw" type="_A45JhrcnEeKeLJDBCBPhPw" association="_A45JnrcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45JoLcnEeKeLJDBCBPhPw" memberEnd="_A45Jj7cnEeKeLJDBCBPhPw _A45JobcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45JobcnEeKeLJDBCBPhPw" type="_A45JhrcnEeKeLJDBCBPhPw" association="_A45JoLcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45JorcnEeKeLJDBCBPhPw" memberEnd="_A45JkbcnEeKeLJDBCBPhPw _A45Jo7cnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45Jo7cnEeKeLJDBCBPhPw" type="_A45JhrcnEeKeLJDBCBPhPw" association="_A45JorcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45JpLcnEeKeLJDBCBPhPw" memberEnd="_A45Jg7cnEeKeLJDBCBPhPw _A45JpbcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45JpbcnEeKeLJDBCBPhPw" type="_A45JgbcnEeKeLJDBCBPhPw" association="_A45JpLcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45JprcnEeKeLJDBCBPhPw" memberEnd="_A45JbLcnEeKeLJDBCBPhPw _A45Jp7cnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45Jp7cnEeKeLJDBCBPhPw" type="_A45JaLcnEeKeLJDBCBPhPw" association="_A45JprcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_A45JqLcnEeKeLJDBCBPhPw" name="EParameter">
+      <generalization xmi:id="_A45JqbcnEeKeLJDBCBPhPw" general="_A45IY7cnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_A45JqrcnEeKeLJDBCBPhPw" name="eOperation" type="_A45JaLcnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" association="_A45JrLcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45Jq7cnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45JrLcnEeKeLJDBCBPhPw" memberEnd="_A45Jb7cnEeKeLJDBCBPhPw _A45JqrcnEeKeLJDBCBPhPw"/>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45JrbcnEeKeLJDBCBPhPw" memberEnd="_A45JcrcnEeKeLJDBCBPhPw _A45JrrcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45JrrcnEeKeLJDBCBPhPw" type="_A45JaLcnEeKeLJDBCBPhPw" association="_A45JrbcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45Jr7cnEeKeLJDBCBPhPw" memberEnd="_A45JdbcnEeKeLJDBCBPhPw _A45JsLcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45JsLcnEeKeLJDBCBPhPw" type="_A45JaLcnEeKeLJDBCBPhPw" association="_A45Jr7cnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45JsbcnEeKeLJDBCBPhPw" memberEnd="_A45JFLcnEeKeLJDBCBPhPw _A45JsrcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45JsrcnEeKeLJDBCBPhPw" type="_A45JC7cnEeKeLJDBCBPhPw" association="_A45JsbcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45Js7cnEeKeLJDBCBPhPw" memberEnd="_A45JF7cnEeKeLJDBCBPhPw _A45JtLcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45JtLcnEeKeLJDBCBPhPw" type="_A45JC7cnEeKeLJDBCBPhPw" association="_A45Js7cnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_A45JtbcnEeKeLJDBCBPhPw" name="EReference">
+      <generalization xmi:id="_A45JtrcnEeKeLJDBCBPhPw" general="_A45IRrcnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_A45Jt7cnEeKeLJDBCBPhPw" name="containment" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JuLcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45JubcnEeKeLJDBCBPhPw" name="container" visibility="public" isOrdered="true" isReadOnly="true" isDerived="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JurcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45Ju7cnEeKeLJDBCBPhPw" name="resolveProxies" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JvLcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_A45JvbcnEeKeLJDBCBPhPw" value="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45JvrcnEeKeLJDBCBPhPw" name="eOpposite" type="_A45JtbcnEeKeLJDBCBPhPw" isOrdered="true" association="_A45JxLcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45Jv7cnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45JwLcnEeKeLJDBCBPhPw" name="eReferenceType" type="_A45JC7cnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" isDerived="true" association="_A45JxrcnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_A45JwbcnEeKeLJDBCBPhPw" name="eKeys" type="_A45IQbcnEeKeLJDBCBPhPw" isOrdered="true" association="_A45JyLcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45JwrcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45Jw7cnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45JxLcnEeKeLJDBCBPhPw" memberEnd="_A45JvrcnEeKeLJDBCBPhPw _A45JxbcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45JxbcnEeKeLJDBCBPhPw" type="_A45JtbcnEeKeLJDBCBPhPw" association="_A45JxLcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45JxrcnEeKeLJDBCBPhPw" memberEnd="_A45JwLcnEeKeLJDBCBPhPw _A45Jx7cnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45Jx7cnEeKeLJDBCBPhPw" type="_A45JtbcnEeKeLJDBCBPhPw" association="_A45JxrcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45JyLcnEeKeLJDBCBPhPw" memberEnd="_A45JwbcnEeKeLJDBCBPhPw _A45JybcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45JybcnEeKeLJDBCBPhPw" type="_A45JtbcnEeKeLJDBCBPhPw" association="_A45JyLcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45JyrcnEeKeLJDBCBPhPw" memberEnd="_A45JGrcnEeKeLJDBCBPhPw _A45Jy7cnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45Jy7cnEeKeLJDBCBPhPw" type="_A45JC7cnEeKeLJDBCBPhPw" association="_A45JyrcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45JzLcnEeKeLJDBCBPhPw" memberEnd="_A45JHbcnEeKeLJDBCBPhPw _A45JzbcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45JzbcnEeKeLJDBCBPhPw" type="_A45JC7cnEeKeLJDBCBPhPw" association="_A45JzLcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45JzrcnEeKeLJDBCBPhPw" memberEnd="_A45JILcnEeKeLJDBCBPhPw _A45Jz7cnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45Jz7cnEeKeLJDBCBPhPw" type="_A45JC7cnEeKeLJDBCBPhPw" association="_A45JzrcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45J0LcnEeKeLJDBCBPhPw" memberEnd="_A45JI7cnEeKeLJDBCBPhPw _A45J0bcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45J0bcnEeKeLJDBCBPhPw" type="_A45JC7cnEeKeLJDBCBPhPw" association="_A45J0LcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45J0rcnEeKeLJDBCBPhPw" memberEnd="_A45JJrcnEeKeLJDBCBPhPw _A45J07cnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45J07cnEeKeLJDBCBPhPw" type="_A45JC7cnEeKeLJDBCBPhPw" association="_A45J0rcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45J1LcnEeKeLJDBCBPhPw" memberEnd="_A45JKbcnEeKeLJDBCBPhPw _A45J1bcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45J1bcnEeKeLJDBCBPhPw" type="_A45JC7cnEeKeLJDBCBPhPw" association="_A45J1LcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45J1rcnEeKeLJDBCBPhPw" memberEnd="_A45JLLcnEeKeLJDBCBPhPw _A45J17cnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45J17cnEeKeLJDBCBPhPw" type="_A45JC7cnEeKeLJDBCBPhPw" association="_A45J1rcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45J2LcnEeKeLJDBCBPhPw" memberEnd="_A45JL7cnEeKeLJDBCBPhPw _A45J2bcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45J2bcnEeKeLJDBCBPhPw" type="_A45JC7cnEeKeLJDBCBPhPw" association="_A45J2LcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45J2rcnEeKeLJDBCBPhPw" memberEnd="_A45JMbcnEeKeLJDBCBPhPw _A45ISLcnEeKeLJDBCBPhPw"/>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45J27cnEeKeLJDBCBPhPw" memberEnd="_A45JNLcnEeKeLJDBCBPhPw _A45J3LcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45J3LcnEeKeLJDBCBPhPw" type="_A45JC7cnEeKeLJDBCBPhPw" association="_A45J27cnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45J3bcnEeKeLJDBCBPhPw" memberEnd="_A45JN7cnEeKeLJDBCBPhPw _A45J3rcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45J3rcnEeKeLJDBCBPhPw" type="_A45JC7cnEeKeLJDBCBPhPw" association="_A45J3bcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_A45J37cnEeKeLJDBCBPhPw" name="EDataType">
+      <generalization xmi:id="_A45J4LcnEeKeLJDBCBPhPw" general="_A45IfLcnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_A45J4bcnEeKeLJDBCBPhPw" name="serializable" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45J4rcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_A45J47cnEeKeLJDBCBPhPw" value="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        </defaultValue>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45J5LcnEeKeLJDBCBPhPw" memberEnd="_A45IrbcnEeKeLJDBCBPhPw _A45InbcnEeKeLJDBCBPhPw"/>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45J5bcnEeKeLJDBCBPhPw" memberEnd="_A45InrcnEeKeLJDBCBPhPw _A45IhrcnEeKeLJDBCBPhPw"/>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45J5rcnEeKeLJDBCBPhPw" memberEnd="_A45IobcnEeKeLJDBCBPhPw _A45IpLcnEeKeLJDBCBPhPw"/>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45J57cnEeKeLJDBCBPhPw" memberEnd="_A45IiLcnEeKeLJDBCBPhPw _A45J6LcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45J6LcnEeKeLJDBCBPhPw" type="_A45IfLcnEeKeLJDBCBPhPw" association="_A45J57cnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45J6bcnEeKeLJDBCBPhPw" memberEnd="_A45IdLcnEeKeLJDBCBPhPw _A45J6rcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45J6rcnEeKeLJDBCBPhPw" type="_A45IY7cnEeKeLJDBCBPhPw" association="_A45J6bcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45J67cnEeKeLJDBCBPhPw" memberEnd="_A45IdrcnEeKeLJDBCBPhPw _A45J7LcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45J7LcnEeKeLJDBCBPhPw" type="_A45IY7cnEeKeLJDBCBPhPw" association="_A45J67cnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45J7bcnEeKeLJDBCBPhPw" memberEnd="_A45IRbcnEeKeLJDBCBPhPw _A45J7rcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45J7rcnEeKeLJDBCBPhPw" type="_A45IQbcnEeKeLJDBCBPhPw" association="_A45J7bcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_A45J77cnEeKeLJDBCBPhPw" name="EAnnotation">
+      <generalization xmi:id="_A45J8LcnEeKeLJDBCBPhPw" general="_A5C5ZrcnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_A45J8bcnEeKeLJDBCBPhPw" name="source" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45J8rcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45J87cnEeKeLJDBCBPhPw" name="details" type="_A45J_rcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45KA7cnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45J9LcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45J9bcnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45J9rcnEeKeLJDBCBPhPw" name="eModelElement" type="_A5C5ZrcnEeKeLJDBCBPhPw" isOrdered="true" association="_A45KBbcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45J97cnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45J-LcnEeKeLJDBCBPhPw" name="contents" type="_A45IwbcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45KBrcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45J-bcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45J-rcnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45J-7cnEeKeLJDBCBPhPw" name="references" type="_A45IwbcnEeKeLJDBCBPhPw" isOrdered="true" association="_A45KCLcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45J_LcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45J_bcnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_A45J_rcnEeKeLJDBCBPhPw" name="EStringToStringMapEntry">
+      <ownedAttribute xmi:id="_A45J_7cnEeKeLJDBCBPhPw" name="key" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45KALcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45KAbcnEeKeLJDBCBPhPw" name="value" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45KArcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45KA7cnEeKeLJDBCBPhPw" memberEnd="_A45J87cnEeKeLJDBCBPhPw _A45KBLcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45KBLcnEeKeLJDBCBPhPw" type="_A45J77cnEeKeLJDBCBPhPw" association="_A45KA7cnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45KBbcnEeKeLJDBCBPhPw" memberEnd="_A5C5Z7cnEeKeLJDBCBPhPw _A45J9rcnEeKeLJDBCBPhPw"/>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45KBrcnEeKeLJDBCBPhPw" memberEnd="_A45J-LcnEeKeLJDBCBPhPw _A45KB7cnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45KB7cnEeKeLJDBCBPhPw" type="_A45J77cnEeKeLJDBCBPhPw" association="_A45KBrcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45KCLcnEeKeLJDBCBPhPw" memberEnd="_A45J-7cnEeKeLJDBCBPhPw _A45KCbcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_A45KCbcnEeKeLJDBCBPhPw" type="_A45J77cnEeKeLJDBCBPhPw" association="_A45KCLcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_A45KCrcnEeKeLJDBCBPhPw" name="EEnum">
+      <generalization xmi:id="_A45KC7cnEeKeLJDBCBPhPw" general="_A45J37cnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_A45KDLcnEeKeLJDBCBPhPw" name="eLiterals" type="_A45KHrcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45KKLcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45KDbcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A45KDrcnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedOperation xmi:id="_A45KD7cnEeKeLJDBCBPhPw" name="getEEnumLiteral" visibility="public">
+        <ownedParameter xmi:id="_A45KELcnEeKeLJDBCBPhPw" type="_A45KHrcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45KEbcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_A45KErcnEeKeLJDBCBPhPw" name="name" isOrdered="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45KE7cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_A45KFLcnEeKeLJDBCBPhPw" name="getEEnumLiteral" visibility="public">
+        <ownedParameter xmi:id="_A45KFbcnEeKeLJDBCBPhPw" type="_A45KHrcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45KFrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_A45KF7cnEeKeLJDBCBPhPw" name="value" isOrdered="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45KGLcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_A45KGbcnEeKeLJDBCBPhPw" name="getEEnumLiteralByLiteral" visibility="public">
+        <ownedParameter xmi:id="_A45KGrcnEeKeLJDBCBPhPw" type="_A45KHrcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45KG7cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_A45KHLcnEeKeLJDBCBPhPw" name="literal" isOrdered="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45KHbcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_A45KHrcnEeKeLJDBCBPhPw" name="EEnumLiteral">
+      <generalization xmi:id="_A45KH7cnEeKeLJDBCBPhPw" general="_A45IeLcnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_A45KILcnEeKeLJDBCBPhPw" name="value" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45KIbcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45KIrcnEeKeLJDBCBPhPw" name="instance" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EEnumerator"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45KI7cnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45KJLcnEeKeLJDBCBPhPw" name="literal" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45KJbcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_A45KJrcnEeKeLJDBCBPhPw" name="eEnum" type="_A45KCrcnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" association="_A45KKLcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A45KJ7cnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_A45KKLcnEeKeLJDBCBPhPw" memberEnd="_A45KDLcnEeKeLJDBCBPhPw _A45KJrcnEeKeLJDBCBPhPw"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A45KKbcnEeKeLJDBCBPhPw" name="EBigDecimal"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A45KKrcnEeKeLJDBCBPhPw" name="EBigInteger"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A45KK7cnEeKeLJDBCBPhPw" name="EBoolean"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A45KLLcnEeKeLJDBCBPhPw" name="EBooleanObject">
+      <generalization xmi:id="_A45KLbcnEeKeLJDBCBPhPw">
+        <general xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+      </generalization>
+    </packagedElement>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A45KLrcnEeKeLJDBCBPhPw" name="EByte"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A45KL7cnEeKeLJDBCBPhPw" name="EByteArray"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A45KMLcnEeKeLJDBCBPhPw" name="EByteObject">
+      <generalization xmi:id="_A45KMbcnEeKeLJDBCBPhPw">
+        <general xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte"/>
+      </generalization>
+    </packagedElement>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A45KMrcnEeKeLJDBCBPhPw" name="EChar"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A45KM7cnEeKeLJDBCBPhPw" name="ECharacterObject">
+      <generalization xmi:id="_A45KNLcnEeKeLJDBCBPhPw">
+        <general xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EChar"/>
+      </generalization>
+    </packagedElement>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A45KNbcnEeKeLJDBCBPhPw" name="EDate"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A45KNrcnEeKeLJDBCBPhPw" name="EDiagnosticChain"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A45KN7cnEeKeLJDBCBPhPw" name="EDouble"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A45KOLcnEeKeLJDBCBPhPw" name="EDoubleObject">
+      <generalization xmi:id="_A45KObcnEeKeLJDBCBPhPw">
+        <general xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
+      </generalization>
+    </packagedElement>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5QLcnEeKeLJDBCBPhPw" name="EEList">
+      <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="_A5C5QbcnEeKeLJDBCBPhPw" parameter="_A5C5QrcnEeKeLJDBCBPhPw">
+        <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_A5C5QrcnEeKeLJDBCBPhPw" parameteredElement="_A5C5Q7cnEeKeLJDBCBPhPw">
+          <ownedParameteredElement xmi:type="uml:Class" xmi:id="_A5C5Q7cnEeKeLJDBCBPhPw" name="E" templateParameter="_A5C5QrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedTemplateSignature>
+    </packagedElement>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5RLcnEeKeLJDBCBPhPw" name="EEnumerator"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5RbcnEeKeLJDBCBPhPw" name="EFeatureMap"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5RrcnEeKeLJDBCBPhPw" name="EFeatureMapEntry"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5R7cnEeKeLJDBCBPhPw" name="EFloat"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5SLcnEeKeLJDBCBPhPw" name="EFloatObject">
+      <generalization xmi:id="_A5C5SbcnEeKeLJDBCBPhPw">
+        <general xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EFloat"/>
+      </generalization>
+    </packagedElement>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5SrcnEeKeLJDBCBPhPw" name="EInt"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5S7cnEeKeLJDBCBPhPw" name="EIntegerObject">
+      <generalization xmi:id="_A5C5TLcnEeKeLJDBCBPhPw">
+        <general xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+      </generalization>
+    </packagedElement>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5TbcnEeKeLJDBCBPhPw" name="EJavaClass">
+      <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="_A5C5TrcnEeKeLJDBCBPhPw" parameter="_A5C5T7cnEeKeLJDBCBPhPw">
+        <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_A5C5T7cnEeKeLJDBCBPhPw" parameteredElement="_A5C5ULcnEeKeLJDBCBPhPw">
+          <ownedParameteredElement xmi:type="uml:Class" xmi:id="_A5C5ULcnEeKeLJDBCBPhPw" name="T" templateParameter="_A5C5T7cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedTemplateSignature>
+    </packagedElement>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5UbcnEeKeLJDBCBPhPw" name="EJavaObject"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5UrcnEeKeLJDBCBPhPw" name="ELong"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5U7cnEeKeLJDBCBPhPw" name="ELongObject">
+      <generalization xmi:id="_A5C5VLcnEeKeLJDBCBPhPw">
+        <general xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#ELong"/>
+      </generalization>
+    </packagedElement>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5VbcnEeKeLJDBCBPhPw" name="EMap">
+      <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="_A5C5VrcnEeKeLJDBCBPhPw" parameter="_A5C5V7cnEeKeLJDBCBPhPw _A5C5WbcnEeKeLJDBCBPhPw">
+        <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_A5C5V7cnEeKeLJDBCBPhPw" parameteredElement="_A5C5WLcnEeKeLJDBCBPhPw">
+          <ownedParameteredElement xmi:type="uml:Class" xmi:id="_A5C5WLcnEeKeLJDBCBPhPw" name="K" templateParameter="_A5C5V7cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_A5C5WbcnEeKeLJDBCBPhPw" parameteredElement="_A5C5WrcnEeKeLJDBCBPhPw">
+          <ownedParameteredElement xmi:type="uml:Class" xmi:id="_A5C5WrcnEeKeLJDBCBPhPw" name="V" templateParameter="_A5C5WbcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedTemplateSignature>
+    </packagedElement>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5W7cnEeKeLJDBCBPhPw" name="EResource"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5XLcnEeKeLJDBCBPhPw" name="EResourceSet"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5XbcnEeKeLJDBCBPhPw" name="EShort"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5XrcnEeKeLJDBCBPhPw" name="EShortObject">
+      <generalization xmi:id="_A5C5X7cnEeKeLJDBCBPhPw">
+        <general xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EShort"/>
+      </generalization>
+    </packagedElement>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5YLcnEeKeLJDBCBPhPw" name="EString"/>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5YbcnEeKeLJDBCBPhPw" name="ETreeIterator">
+      <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="_A5C5YrcnEeKeLJDBCBPhPw" parameter="_A5C5Y7cnEeKeLJDBCBPhPw">
+        <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_A5C5Y7cnEeKeLJDBCBPhPw" parameteredElement="_A5C5ZLcnEeKeLJDBCBPhPw">
+          <ownedParameteredElement xmi:type="uml:Class" xmi:id="_A5C5ZLcnEeKeLJDBCBPhPw" name="E" templateParameter="_A5C5Y7cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedTemplateSignature>
+    </packagedElement>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_A5C5ZbcnEeKeLJDBCBPhPw" name="EInvocationTargetException"/>
+    <packagedElement xmi:type="uml:Class" xmi:id="_A5C5ZrcnEeKeLJDBCBPhPw" name="EModelElement" isAbstract="true">
+      <ownedAttribute xmi:id="_A5C5Z7cnEeKeLJDBCBPhPw" name="eAnnotations" type="_A45J77cnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_A45KBbcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A5C5aLcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A5C5abcnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedOperation xmi:id="_A5C5arcnEeKeLJDBCBPhPw" name="getEAnnotation" visibility="public">
+        <ownedParameter xmi:id="_A5C5a7cnEeKeLJDBCBPhPw" type="_A45J77cnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A5C5bLcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_A5C5bbcnEeKeLJDBCBPhPw" name="source" isOrdered="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A5C5brcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+    </packagedElement>
+    <profileApplication xmi:id="_A5C5b7cnEeKeLJDBCBPhPw">
+      <eAnnotations xmi:id="_A5C5cLcnEeKeLJDBCBPhPw" 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="_A5C5cbcnEeKeLJDBCBPhPw" base_Package="_A45IQLcnEeKeLJDBCBPhPw" nsPrefix="ecore"/>
+  <Ecore:EClass xmi:id="_A5C5crcnEeKeLJDBCBPhPw" base_Class="_A45IQbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5C5c7cnEeKeLJDBCBPhPw" isTransient="true" isVolatile="true" base_Property="_A45IRbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_A5C5dLcnEeKeLJDBCBPhPw" base_Class="_A45IRrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5C5dbcnEeKeLJDBCBPhPw" isTransient="true" base_Property="_A45ISLcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+  <Ecore:EOperation xmi:id="_A5C5drcnEeKeLJDBCBPhPw" base_Operation="_A45IWbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5C5d7cnEeKeLJDBCBPhPw" base_Operation="_A45IXLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EGenericType xmi:id="_A5C5eLcnEeKeLJDBCBPhPw" base_Class="_A45IX7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EGenericType xmi:id="_A5C5ebcnEeKeLJDBCBPhPw" base_DataType="_A45IYLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_A5C5ercnEeKeLJDBCBPhPw" base_Class="_A45IY7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5C5e7cnEeKeLJDBCBPhPw" isVolatile="true" isUnsettable="true" visibility="ReadWrite" base_Property="_A45IdLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5C5fLcnEeKeLJDBCBPhPw" isVolatile="true" isUnsettable="true" visibility="ReadWrite" base_Property="_A45IdrcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+  <Ecore:EClass xmi:id="_A5C5fbcnEeKeLJDBCBPhPw" base_Class="_A45IeLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_A5C5frcnEeKeLJDBCBPhPw" base_Class="_A45IfLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5C5f7cnEeKeLJDBCBPhPw" isTransient="true" base_Property="_A45IhrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5C5gLcnEeKeLJDBCBPhPw" base_Property="_A45IiLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5C5gbcnEeKeLJDBCBPhPw" base_Operation="_A45Ii7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_A5C5grcnEeKeLJDBCBPhPw" base_Parameter="_A45IjrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5C5g7cnEeKeLJDBCBPhPw" base_Operation="_A45IkLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EGenericType xmi:id="_A5C5hLcnEeKeLJDBCBPhPw" base_Class="_A45Ik7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EGenericType xmi:id="_A5C5hbcnEeKeLJDBCBPhPw" base_DataType="_A45IlLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_A5C5hrcnEeKeLJDBCBPhPw" base_Class="_A45Il7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5MDMLcnEeKeLJDBCBPhPw" isTransient="true" base_Property="_A45InbcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+  <Ecore:EReference xmi:id="_A5MDMbcnEeKeLJDBCBPhPw" base_Property="_A45InrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5MDMrcnEeKeLJDBCBPhPw" base_Property="_A45IobcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5MDM7cnEeKeLJDBCBPhPw" isTransient="true" base_Property="_A45IpLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5MDNLcnEeKeLJDBCBPhPw" base_Operation="_A45IprcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_A5MDNbcnEeKeLJDBCBPhPw" base_Parameter="_A45IqbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_A5MDNrcnEeKeLJDBCBPhPw" base_Class="_A45Iq7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5MDN7cnEeKeLJDBCBPhPw" isTransient="true" base_Property="_A45IrbcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+  <Ecore:EOperation xmi:id="_A5MDOLcnEeKeLJDBCBPhPw" base_Operation="_A45IrrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_A5MDObcnEeKeLJDBCBPhPw" base_Parameter="_A45IsbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5MDOrcnEeKeLJDBCBPhPw" base_Operation="_A45Is7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_A5MDO7cnEeKeLJDBCBPhPw" base_Parameter="_A45ItrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_A5MDPLcnEeKeLJDBCBPhPw" base_Parameter="_A45IuLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5MDPbcnEeKeLJDBCBPhPw" base_Operation="_A45IurcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_A5MDPrcnEeKeLJDBCBPhPw" base_Parameter="_A45IvbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_A5MDP7cnEeKeLJDBCBPhPw" base_Parameter="_A45Iv7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_A5MDQLcnEeKeLJDBCBPhPw" base_Class="_A45IwbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5MDQbcnEeKeLJDBCBPhPw" base_Operation="_A45IwrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5MDQrcnEeKeLJDBCBPhPw" base_Operation="_A45IxbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5MDQ7cnEeKeLJDBCBPhPw" base_Operation="_A45IyLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5MDRLcnEeKeLJDBCBPhPw" base_Operation="_A45Iy7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5MDRbcnEeKeLJDBCBPhPw" base_Operation="_A45IzrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5MDRrcnEeKeLJDBCBPhPw" base_Operation="_A45I0bcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5MDR7cnEeKeLJDBCBPhPw" base_Operation="_A45I1LcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5MDSLcnEeKeLJDBCBPhPw" base_Operation="_A45I17cnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5MDSbcnEeKeLJDBCBPhPw" base_Operation="_A45I2rcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5MDSrcnEeKeLJDBCBPhPw" base_Operation="_A45I3bcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_A5MDS7cnEeKeLJDBCBPhPw" base_Parameter="_A45I4LcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5MDTLcnEeKeLJDBCBPhPw" base_Operation="_A45I4rcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_A5MDTbcnEeKeLJDBCBPhPw" base_Parameter="_A45I5bcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_A5MDTrcnEeKeLJDBCBPhPw" base_Parameter="_A45I57cnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5MDT7cnEeKeLJDBCBPhPw" base_Operation="_A45I6bcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_A5MDULcnEeKeLJDBCBPhPw" base_Parameter="_A45I7LcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_A5MDUbcnEeKeLJDBCBPhPw" base_Parameter="_A45I7rcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5MDUrcnEeKeLJDBCBPhPw" base_Operation="_A45I8LcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_A5MDU7cnEeKeLJDBCBPhPw" base_Parameter="_A45I87cnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5MDVLcnEeKeLJDBCBPhPw" base_Operation="_A45I9bcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_A5MDVbcnEeKeLJDBCBPhPw" base_Parameter="_A45I-LcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5MDVrcnEeKeLJDBCBPhPw" base_Operation="_A45I-rcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_A5MDV7cnEeKeLJDBCBPhPw" base_Parameter="_A45I_bcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_A5MDWLcnEeKeLJDBCBPhPw" base_Parameter="_A45I_7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EGenericType xmi:id="_A5MDWbcnEeKeLJDBCBPhPw" base_DataType="_A45JAbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EGenericType xmi:id="_A5MDWrcnEeKeLJDBCBPhPw" base_DataType="_A45JBLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EGenericType xmi:id="_A5MDW7cnEeKeLJDBCBPhPw" base_Class="_A45JB7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EGenericType xmi:id="_A5MDXLcnEeKeLJDBCBPhPw" base_DataType="_A45JCLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_A5MDXbcnEeKeLJDBCBPhPw" base_Class="_A45JC7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5MDXrcnEeKeLJDBCBPhPw" base_Property="_A45JDbcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+  <Ecore:EReference xmi:id="_A5MDX7cnEeKeLJDBCBPhPw" isUnsettable="true" visibility="ReadWrite" base_Property="_A45JFLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5MDYLcnEeKeLJDBCBPhPw" isTransient="true" isVolatile="true" base_Property="_A45JF7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5MDYbcnEeKeLJDBCBPhPw" isTransient="true" isVolatile="true" base_Property="_A45JGrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5MDYrcnEeKeLJDBCBPhPw" isTransient="true" isVolatile="true" base_Property="_A45JHbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5MDY7cnEeKeLJDBCBPhPw" isTransient="true" isVolatile="true" base_Property="_A45JILcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5MDZLcnEeKeLJDBCBPhPw" isTransient="true" isVolatile="true" base_Property="_A45JI7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5MDZbcnEeKeLJDBCBPhPw" isTransient="true" isVolatile="true" base_Property="_A45JJrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5V0MLcnEeKeLJDBCBPhPw" isTransient="true" isVolatile="true" base_Property="_A45JKbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5V0MbcnEeKeLJDBCBPhPw" isTransient="true" isVolatile="true" base_Property="_A45JLLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5V0MrcnEeKeLJDBCBPhPw" isTransient="true" isVolatile="true" base_Property="_A45JL7cnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+  <Ecore:EReference xmi:id="_A5V0M7cnEeKeLJDBCBPhPw" base_Property="_A45JMbcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+  <Ecore:EReference xmi:id="_A5V0NLcnEeKeLJDBCBPhPw" isUnsettable="true" visibility="ReadWrite" base_Property="_A45JNLcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+  <Ecore:EReference xmi:id="_A5V0NbcnEeKeLJDBCBPhPw" isTransient="true" isVolatile="true" base_Property="_A45JN7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5V0NrcnEeKeLJDBCBPhPw" base_Operation="_A45JOrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_A5V0N7cnEeKeLJDBCBPhPw" base_Parameter="_A45JPbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5V0OLcnEeKeLJDBCBPhPw" base_Operation="_A45JP7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5V0ObcnEeKeLJDBCBPhPw" base_Operation="_A45JQrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_A5V0OrcnEeKeLJDBCBPhPw" base_Parameter="_A45JRbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5V0O7cnEeKeLJDBCBPhPw" base_Operation="_A45JR7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_A5V0PLcnEeKeLJDBCBPhPw" base_Parameter="_A45JSrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5V0PbcnEeKeLJDBCBPhPw" base_Operation="_A45JTLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_A5V0PrcnEeKeLJDBCBPhPw" base_Parameter="_A45JT7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5V0P7cnEeKeLJDBCBPhPw" base_Operation="_A45JUbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5V0QLcnEeKeLJDBCBPhPw" base_Operation="_A45JVLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_A5V0QbcnEeKeLJDBCBPhPw" base_Parameter="_A45JV7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5V0QrcnEeKeLJDBCBPhPw" base_Operation="_A45JWbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_A5V0Q7cnEeKeLJDBCBPhPw" base_Parameter="_A45JXLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5V0RLcnEeKeLJDBCBPhPw" base_Operation="_A45JXrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_A5V0RbcnEeKeLJDBCBPhPw" base_Parameter="_A45JYbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5V0RrcnEeKeLJDBCBPhPw" base_Operation="_A45JY7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_A5V0R7cnEeKeLJDBCBPhPw" base_Parameter="_A45JZrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_A5V0SLcnEeKeLJDBCBPhPw" base_Class="_A45JaLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5V0SbcnEeKeLJDBCBPhPw" isTransient="true" base_Property="_A45JarcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+  <Ecore:EReference xmi:id="_A5V0SrcnEeKeLJDBCBPhPw" base_Property="_A45JbLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5V0S7cnEeKeLJDBCBPhPw" base_Property="_A45Jb7cnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+  <Ecore:EReference xmi:id="_A5V0TLcnEeKeLJDBCBPhPw" isUnsettable="true" visibility="ReadWrite" base_Property="_A45JcrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5V0TbcnEeKeLJDBCBPhPw" isUnsettable="true" visibility="ReadWrite" base_Property="_A45JdbcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+  <Ecore:EOperation xmi:id="_A5V0TrcnEeKeLJDBCBPhPw" base_Operation="_A45JeLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5V0T7cnEeKeLJDBCBPhPw" base_Operation="_A45Je7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_A5V0ULcnEeKeLJDBCBPhPw" base_Parameter="_A45JfrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_A5V0UbcnEeKeLJDBCBPhPw" base_Class="_A45JgbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5V0UrcnEeKeLJDBCBPhPw" base_Property="_A45Jg7cnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+  <Ecore:EClass xmi:id="_A5V0U7cnEeKeLJDBCBPhPw" base_Class="_A45JhrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5V0VLcnEeKeLJDBCBPhPw" base_Property="_A45Jh7cnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+  <Ecore:EReference xmi:id="_A5V0VbcnEeKeLJDBCBPhPw" base_Property="_A45JibcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+  <Ecore:EReference xmi:id="_A5V0VrcnEeKeLJDBCBPhPw" isTransient="true" base_Property="_A45JjLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5V0V7cnEeKeLJDBCBPhPw" base_Property="_A45JjbcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+  <Ecore:EReference xmi:id="_A5V0WLcnEeKeLJDBCBPhPw" base_Property="_A45Jj7cnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+  <Ecore:EReference xmi:id="_A5V0WbcnEeKeLJDBCBPhPw" base_Property="_A45JkbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5V0WrcnEeKeLJDBCBPhPw" base_Operation="_A45Jk7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_A5V0W7cnEeKeLJDBCBPhPw" base_Parameter="_A45JlrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_A5V0XLcnEeKeLJDBCBPhPw" base_Class="_A45JqLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5V0XbcnEeKeLJDBCBPhPw" isTransient="true" base_Property="_A45JqrcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+  <Ecore:EClass xmi:id="_A5V0XrcnEeKeLJDBCBPhPw" base_Class="_A45JtbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5V0X7cnEeKeLJDBCBPhPw" base_Property="_A45JvrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5V0YLcnEeKeLJDBCBPhPw" isTransient="true" isVolatile="true" base_Property="_A45JwLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5V0YbcnEeKeLJDBCBPhPw" base_Property="_A45JwbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_A5V0YrcnEeKeLJDBCBPhPw" base_Class="_A45J37cnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_A5V0Y7cnEeKeLJDBCBPhPw" base_Class="_A45J77cnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5V0ZLcnEeKeLJDBCBPhPw" base_Property="_A45J87cnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+  <Ecore:EReference xmi:id="_A5V0ZbcnEeKeLJDBCBPhPw" isTransient="true" base_Property="_A45J9rcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+  <Ecore:EReference xmi:id="_A5V0ZrcnEeKeLJDBCBPhPw" base_Property="_A45J-LcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+  <Ecore:EReference xmi:id="_A5V0Z7cnEeKeLJDBCBPhPw" base_Property="_A45J-7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_A5V0aLcnEeKeLJDBCBPhPw" instanceClassName="java.util.Map$Entry" base_Class="_A45J_rcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_A5V0abcnEeKeLJDBCBPhPw" base_Class="_A45KCrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5V0arcnEeKeLJDBCBPhPw" base_Property="_A45KDLcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+  <Ecore:EOperation xmi:id="_A5V0a7cnEeKeLJDBCBPhPw" base_Operation="_A45KD7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_A5V0bLcnEeKeLJDBCBPhPw" base_Parameter="_A45KErcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5V0bbcnEeKeLJDBCBPhPw" base_Operation="_A45KFLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_A5V0brcnEeKeLJDBCBPhPw" base_Parameter="_A45KF7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_A5V0b7cnEeKeLJDBCBPhPw" base_Operation="_A45KGbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_A5V0cLcnEeKeLJDBCBPhPw" base_Parameter="_A45KHLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_A5V0cbcnEeKeLJDBCBPhPw" base_Class="_A45KHrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5V0crcnEeKeLJDBCBPhPw" isTransient="true" base_Property="_A45KJrcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+  <Ecore:EDataType xmi:id="_A5V0c7cnEeKeLJDBCBPhPw" instanceClassName="java.math.BigDecimal" base_PrimitiveType="_A45KKbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5V0dLcnEeKeLJDBCBPhPw" instanceClassName="java.math.BigInteger" base_PrimitiveType="_A45KKrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5V0dbcnEeKeLJDBCBPhPw" instanceClassName="boolean" base_PrimitiveType="_A45KK7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5V0drcnEeKeLJDBCBPhPw" xmlName="EBoolean:Object" instanceClassName="java.lang.Boolean" base_PrimitiveType="_A45KLLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5V0d7cnEeKeLJDBCBPhPw" instanceClassName="byte" base_PrimitiveType="_A45KLrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5V0eLcnEeKeLJDBCBPhPw" instanceClassName="byte[]" base_PrimitiveType="_A45KL7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5V0ebcnEeKeLJDBCBPhPw" xmlName="EByte:Object" instanceClassName="java.lang.Byte" base_PrimitiveType="_A45KMLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5V0ercnEeKeLJDBCBPhPw" instanceClassName="char" base_PrimitiveType="_A45KMrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5V0e7cnEeKeLJDBCBPhPw" xmlName="EChar:Object" instanceClassName="java.lang.Character" base_PrimitiveType="_A45KM7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5V0fLcnEeKeLJDBCBPhPw" instanceClassName="java.util.Date" base_PrimitiveType="_A45KNbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5V0fbcnEeKeLJDBCBPhPw" instanceClassName="org.eclipse.emf.common.util.DiagnosticChain" base_PrimitiveType="_A45KNrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5V0frcnEeKeLJDBCBPhPw" instanceClassName="double" base_PrimitiveType="_A45KN7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5V0f7cnEeKeLJDBCBPhPw" xmlName="EDouble:Object" instanceClassName="java.lang.Double" base_PrimitiveType="_A45KOLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5V0gLcnEeKeLJDBCBPhPw" instanceClassName="org.eclipse.emf.common.util.EList" base_PrimitiveType="_A5C5QLcnEeKeLJDBCBPhPw"/>
+  <Ecore:ETypeParameter xmi:id="_A5V0gbcnEeKeLJDBCBPhPw" base_TemplateParameter="_A5C5QrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5V0grcnEeKeLJDBCBPhPw" instanceClassName="org.eclipse.emf.common.util.Enumerator" base_PrimitiveType="_A5C5RLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5V0g7cnEeKeLJDBCBPhPw" instanceClassName="org.eclipse.emf.ecore.util.FeatureMap" base_PrimitiveType="_A5C5RbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5V0hLcnEeKeLJDBCBPhPw" instanceClassName="org.eclipse.emf.ecore.util.FeatureMap$Entry" base_PrimitiveType="_A5C5RrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5V0hbcnEeKeLJDBCBPhPw" instanceClassName="float" base_PrimitiveType="_A5C5R7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5V0hrcnEeKeLJDBCBPhPw" xmlName="EFloat:Object" instanceClassName="java.lang.Float" base_PrimitiveType="_A5C5SLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5V0h7cnEeKeLJDBCBPhPw" instanceClassName="int" base_PrimitiveType="_A5C5SrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5V0iLcnEeKeLJDBCBPhPw" xmlName="EInt:Object" instanceClassName="java.lang.Integer" base_PrimitiveType="_A5C5S7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5V0ibcnEeKeLJDBCBPhPw" instanceClassName="java.lang.Class" base_PrimitiveType="_A5C5TbcnEeKeLJDBCBPhPw"/>
+  <Ecore:ETypeParameter xmi:id="_A5V0ircnEeKeLJDBCBPhPw" base_TemplateParameter="_A5C5T7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5V0i7cnEeKeLJDBCBPhPw" instanceClassName="java.lang.Object" base_PrimitiveType="_A5C5UbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5V0jLcnEeKeLJDBCBPhPw" instanceClassName="long" base_PrimitiveType="_A5C5UrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5e-ILcnEeKeLJDBCBPhPw" xmlName="ELong:Object" instanceClassName="java.lang.Long" base_PrimitiveType="_A5C5U7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5e-IbcnEeKeLJDBCBPhPw" instanceClassName="java.util.Map" base_PrimitiveType="_A5C5VbcnEeKeLJDBCBPhPw"/>
+  <Ecore:ETypeParameter xmi:id="_A5e-IrcnEeKeLJDBCBPhPw" base_TemplateParameter="_A5C5V7cnEeKeLJDBCBPhPw"/>
+  <Ecore:ETypeParameter xmi:id="_A5e-I7cnEeKeLJDBCBPhPw" base_TemplateParameter="_A5C5WbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5e-JLcnEeKeLJDBCBPhPw" instanceClassName="org.eclipse.emf.ecore.resource.Resource" base_PrimitiveType="_A5C5W7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5e-JbcnEeKeLJDBCBPhPw" instanceClassName="org.eclipse.emf.ecore.resource.ResourceSet" base_PrimitiveType="_A5C5XLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5e-JrcnEeKeLJDBCBPhPw" instanceClassName="short" base_PrimitiveType="_A5C5XbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5e-J7cnEeKeLJDBCBPhPw" xmlName="EShort:Object" instanceClassName="java.lang.Short" base_PrimitiveType="_A5C5XrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5e-KLcnEeKeLJDBCBPhPw" instanceClassName="java.lang.String" base_PrimitiveType="_A5C5YLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5e-KbcnEeKeLJDBCBPhPw" instanceClassName="org.eclipse.emf.common.util.TreeIterator" base_PrimitiveType="_A5C5YbcnEeKeLJDBCBPhPw"/>
+  <Ecore:ETypeParameter xmi:id="_A5e-KrcnEeKeLJDBCBPhPw" base_TemplateParameter="_A5C5Y7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_A5e-K7cnEeKeLJDBCBPhPw" instanceClassName="java.lang.reflect.InvocationTargetException" base_PrimitiveType="_A5C5ZbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_A5e-LLcnEeKeLJDBCBPhPw" base_Class="_A5C5ZrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_A5e-LbcnEeKeLJDBCBPhPw" base_Property="_A5C5Z7cnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+  <Ecore:EOperation xmi:id="_A5e-LrcnEeKeLJDBCBPhPw" base_Operation="_A5C5arcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_A5e-L7cnEeKeLJDBCBPhPw" base_Parameter="_A5C5bbcnEeKeLJDBCBPhPw"/>
+</xmi:XMI>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/notation.di b/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/notation.di
new file mode 100755
index 0000000..a274d05
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/notation.di
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="ASCII"?>
+<di:SashWindowsMngr xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi">
+  <pageList>
+    <availablePage>
+      <emfPageIdentifier href="notation.notation#_WlS4YLcpEeK8_t7Rpq6ZJA"/>
+    </availablePage>
+  </pageList>
+  <sashModel currentSelection="//@sashModel/@windows.0/@children.0">
+    <windows>
+      <children xsi:type="di:TabFolder">
+        <children>
+          <emfPageIdentifier href="notation.notation#_WlS4YLcpEeK8_t7Rpq6ZJA"/>
+        </children>
+      </children>
+    </windows>
+  </sashModel>
+</di:SashWindowsMngr>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/notation.ecore b/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/notation.ecore
new file mode 100755
index 0000000..4cca7c2
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/notation.ecore
@@ -0,0 +1,444 @@
+<?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="notation"
+    nsURI="http://www.eclipse.org/gmf/runtime/1.0.2/notation" nsPrefix="notation">
+  <eClassifiers xsi:type="ecore:EClass" name="Edge" eSuperTypes="#//View">
+    <eOperations name="createBendpoints" eType="#//Bendpoints">
+      <eParameters name="eClass" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EClass"/>
+    </eOperations>
+    <eOperations name="createSourceAnchor" eType="#//Anchor">
+      <eParameters name="eClass" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EClass"/>
+    </eOperations>
+    <eOperations name="createTargetAnchor" eType="#//Anchor">
+      <eParameters name="eClass" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EClass"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="source" lowerBound="1"
+        eType="#//View" resolveProxies="false" eOpposite="#//View/sourceEdges"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="target" lowerBound="1"
+        eType="#//View" resolveProxies="false" eOpposite="#//View/targetEdges"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="bendpoints" eType="#//Bendpoints"
+        containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="sourceAnchor" eType="#//Anchor"
+        containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="targetAnchor" eType="#//Anchor"
+        containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Node" eSuperTypes="#//View">
+    <eOperations name="createLayoutConstraint" eType="#//LayoutConstraint">
+      <eParameters name="eClass" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EClass"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="layoutConstraint" eType="#//LayoutConstraint"
+        containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Style" abstract="true" interface="true"/>
+  <eClassifiers xsi:type="ecore:EClass" name="FillStyle" eSuperTypes="#//Style">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="fillColor" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+        defaultValueLiteral="16777215"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="transparency" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+        defaultValueLiteral="-1"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="gradient" eType="#//GradientData"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="LineStyle" eSuperTypes="#//Style">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="lineColor" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+        defaultValueLiteral="11579568"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="lineWidth" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"
+        defaultValueLiteral="-1"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="FontStyle" eSuperTypes="#//Style">
+    <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="TitleStyle" eSuperTypes="#//Style">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="showTitle" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+        defaultValueLiteral="false"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="SortingStyle" eSuperTypes="#//Style">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="sorting" eType="#//Sorting"
+        defaultValueLiteral="None"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="sortingKeys" eType="#//SortKeyMap"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="sortedObjects" upperBound="-1"
+        eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EObject"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="DescriptionStyle" eSuperTypes="#//Style">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+        defaultValueLiteral=""/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="LayoutConstraint" abstract="true" interface="true"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Size" eSuperTypes="#//LayoutConstraint">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="width" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+        defaultValueLiteral="-1"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="height" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+        defaultValueLiteral="-1"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Location" eSuperTypes="#//LayoutConstraint">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="x" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+        defaultValueLiteral="0"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="y" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+        defaultValueLiteral="0"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Bounds" eSuperTypes="#//Location #//Size"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Ratio" eSuperTypes="#//LayoutConstraint">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
+        defaultValueLiteral="-1"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Anchor" abstract="true" interface="true"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Bendpoints" abstract="true" interface="true"/>
+  <eClassifiers xsi:type="ecore:EEnum" name="Sorting">
+    <eLiterals name="None"/>
+    <eLiterals name="Manual" value="1"/>
+    <eLiterals name="Automatic" value="2"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="Filtering">
+    <eLiterals name="None"/>
+    <eLiterals name="Manual" value="1"/>
+    <eLiterals name="Automatic" value="2"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="IdentityAnchor" eSuperTypes="#//Anchor">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+        defaultValueLiteral="anchor"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="Routing">
+    <eLiterals name="Manual"/>
+    <eLiterals name="Rectilinear" value="1"/>
+    <eLiterals name="Tree" value="2"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="Smoothness">
+    <eLiterals name="None"/>
+    <eLiterals name="Normal" value="1"/>
+    <eLiterals name="Less" value="2"/>
+    <eLiterals name="More" value="3"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="JumpLinkStatus">
+    <eLiterals name="None"/>
+    <eLiterals name="All" value="1"/>
+    <eLiterals name="Below" value="2"/>
+    <eLiterals name="Above" value="3"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="JumpLinkType">
+    <eLiterals name="Semicircle"/>
+    <eLiterals name="Square" value="1"/>
+    <eLiterals name="Chamfered" value="2"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="RoutingStyle" eSuperTypes="#//RoundedCornersStyle">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="routing" eType="#//Routing"
+        defaultValueLiteral="Manual"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="smoothness" eType="#//Smoothness"
+        defaultValueLiteral="None"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="avoidObstructions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+        defaultValueLiteral="false"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="closestDistance" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+        defaultValueLiteral="false"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="jumpLinkStatus" eType="#//JumpLinkStatus"
+        defaultValueLiteral="None"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="jumpLinkType" eType="#//JumpLinkType"
+        defaultValueLiteral="Semicircle"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="jumpLinksReverse" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+        defaultValueLiteral="false"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="View" abstract="true" eSuperTypes="../../org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement">
+    <eOperations name="getStyle" eType="#//Style">
+      <eParameters name="eClass" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EClass"/>
+    </eOperations>
+    <eOperations name="createChild" eType="#//Node">
+      <eParameters name="eClass" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EClass"/>
+    </eOperations>
+    <eOperations name="createStyle" eType="#//Style">
+      <eParameters name="eClass" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EClass"/>
+    </eOperations>
+    <eOperations name="getNamedStyle" eType="#//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>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="visible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+        defaultValueLiteral="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+        defaultValueLiteral=""/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="mutable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+        transient="true" defaultValueLiteral="false"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="sourceEdges" upperBound="-1"
+        eType="#//Edge" transient="true" resolveProxies="false" eOpposite="#//Edge/source"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="targetEdges" upperBound="-1"
+        eType="#//Edge" transient="true" resolveProxies="false" eOpposite="#//Edge/target"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="persistedChildren" upperBound="-1"
+        eType="#//Node" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="styles" upperBound="-1"
+        eType="#//Style" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="element" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EObject"
+        unsettable="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="diagram" lowerBound="1"
+        eType="#//Diagram" changeable="false" volatile="true" transient="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="transientChildren" upperBound="-1"
+        eType="#//Node" transient="true" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="RelativeBendpoints" eSuperTypes="#//Bendpoints">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="points" eType="#//RelativeBendpointList"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Diagram" eSuperTypes="#//View">
+    <eOperations name="createEdge" eType="#//Edge">
+      <eParameters name="eClass" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EClass"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+        defaultValueLiteral=""/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="measurementUnit" eType="#//MeasurementUnit"
+        defaultValueLiteral="Himetric" unsettable="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="persistedEdges" upperBound="-1"
+        eType="#//Edge" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="TransientEdges" upperBound="-1"
+        eType="#//Edge" transient="true" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Image">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="data" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EByteArray"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="CanonicalStyle" eSuperTypes="#//Style">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="canonical" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+        defaultValueLiteral="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ShapeStyle" eSuperTypes="#//FontStyle #//DescriptionStyle #//FillStyle #//LineStyle #//RoundedCornersStyle"/>
+  <eClassifiers xsi:type="ecore:EClass" name="ConnectorStyle" eSuperTypes="#//RoutingStyle #//LineStyle"/>
+  <eClassifiers xsi:type="ecore:EDataType" name="RelativeBendpointList" instanceClassName="java.util.List"/>
+  <eClassifiers xsi:type="ecore:EClass" name="PageStyle" eSuperTypes="#//Style">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="pageX" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+        defaultValueLiteral="0"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="pageY" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+        defaultValueLiteral="0"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="pageWidth" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+        defaultValueLiteral="100"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="pageHeight" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+        defaultValueLiteral="100"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="DrawerStyle" eSuperTypes="#//Style">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="collapsed" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+        defaultValueLiteral="false"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="GuideStyle" eSuperTypes="#//Style">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="horizontalGuides" upperBound="-1"
+        eType="#//Guide" containment="true" resolveProxies="false"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="verticalGuides" upperBound="-1"
+        eType="#//Guide" containment="true" resolveProxies="false"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Guide">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="position" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
+        defaultValueLiteral="0"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="nodeMap" upperBound="-1"
+        eType="#//NodeEntry" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="NodeEntry" instanceClassName="java.util.Map$Entry">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="#//Alignment"
+        defaultValueLiteral="Center"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="key" lowerBound="1" eType="#//Node"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="Alignment">
+    <eLiterals name="Left"/>
+    <eLiterals name="Right" value="1"/>
+    <eLiterals name="Center" value="2"/>
+    <eLiterals name="Top" value="3"/>
+    <eLiterals name="Bottom" value="4"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="FilteringStyle" eSuperTypes="#//Style">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="filtering" eType="#//Filtering"
+        defaultValueLiteral="None"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="filteringKeys" eType="#//FilterKeyList"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="filteredObjects" upperBound="-1"
+        eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EObject"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="FilterKeyList" instanceClassName="java.util.List"/>
+  <eClassifiers xsi:type="ecore:EDataType" name="SortKeyMap" instanceClassName="java.util.Map"/>
+  <eClassifiers xsi:type="ecore:EEnum" name="SortingDirection">
+    <eLiterals name="Ascending"/>
+    <eLiterals name="Descending" value="1"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="DiagramStyle" eSuperTypes="#//PageStyle #//GuideStyle #//DescriptionStyle"/>
+  <eClassifiers xsi:type="ecore:EClass" name="ImageStyle" eSuperTypes="#//Style">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="antiAlias" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject"
+        defaultValueLiteral="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="maintainAspectRatio" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject"
+        defaultValueLiteral="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="cropBound" lowerBound="1"
+        eType="#//Bounds" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ImageBufferStyle" eSuperTypes="#//ImageStyle">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="imageBuffer" lowerBound="1"
+        eType="#//Image" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="MeasurementUnit">
+    <eLiterals name="Himetric"/>
+    <eLiterals name="Pixel" value="1"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="PropertiesSetStyle" eSuperTypes="#//NamedStyle">
+    <eOperations name="getProperty" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject">
+      <eParameters name="propertyName" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+    </eOperations>
+    <eOperations name="setProperty" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
+      <eParameters name="propertyName" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+      <eParameters name="newValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+    </eOperations>
+    <eOperations name="createProperty" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
+      <eParameters name="propertyName" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+      <eParameters name="instanceType" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EDataType"/>
+      <eParameters name="initialValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+    </eOperations>
+    <eOperations name="removeProperty" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
+      <eParameters name="propertyName" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+    </eOperations>
+    <eOperations name="hasProperty" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
+      <eParameters name="propertyName" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+    </eOperations>
+    <eOperations name="createProperty" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
+      <eParameters name="propertyName" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+      <eParameters name="initialValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="propertiesMap" upperBound="-1"
+        eType="#//StringToPropertyValueMapEntry" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="StringToPropertyValueMapEntry" instanceClassName="java.util.Map$Entry">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="#//PropertyValue"
+        containment="true" resolveProxies="false"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="PropertyValue" eSuperTypes="#//StringObjectConverter">
+    <eOperations name="getValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+    <eOperations name="setValue">
+      <eParameters name="newValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="rawValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceType" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EDataType"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="SingleValueStyle" eSuperTypes="#//DataTypeStyle">
+    <eOperations name="getValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+    <eOperations name="setValue">
+      <eParameters name="newValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="rawValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ListValueStyle" eSuperTypes="#//DataTypeStyle">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="rawValuesList" unique="false"
+        upperBound="-1" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="NamedStyle" eSuperTypes="#//Style">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="StringObjectConverter" abstract="true"
+      interface="true">
+    <eOperations name="getStringFromObject" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString">
+      <eParameters name="objectValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject"/>
+    </eOperations>
+    <eOperations name="getObjectFromString" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EJavaObject">
+      <eParameters name="stringValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+    </eOperations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="DataTypeStyle" eSuperTypes="#//NamedStyle #//StringObjectConverter">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="instanceType" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EDataType"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="IntValueStyle" eSuperTypes="#//NamedStyle">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="intValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="IntListValueStyle" eSuperTypes="#//NamedStyle">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="intListValue" unique="false"
+        upperBound="-1" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="BooleanValueStyle" eSuperTypes="#//NamedStyle">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="booleanValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="DoubleValueStyle" eSuperTypes="#//NamedStyle">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="doubleValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EDouble"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="DoubleListValueStyle" eSuperTypes="#//NamedStyle">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="doubleListValue" unique="false"
+        upperBound="-1" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EDoubleObject"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="StringValueStyle" eSuperTypes="#//NamedStyle">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="stringValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="StringListValueStyle" eSuperTypes="#//NamedStyle">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="stringListValue" unique="false"
+        upperBound="-1" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="EObjectValueStyle" eSuperTypes="#//NamedStyle">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="eObjectValue" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EObject"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="EObjectListValueStyle" eSuperTypes="#//NamedStyle">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="eObjectListValue" upperBound="-1"
+        eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EObject"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ByteArrayValueStyle" eSuperTypes="#//NamedStyle">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="byteArrayValue" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EByteArray"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="BooleanListValueStyle" eSuperTypes="#//NamedStyle">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="booleanListValue" unique="false"
+        upperBound="-1" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBooleanObject"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="HintedDiagramLinkStyle" eSuperTypes="#//DiagramLinkStyle #//Style">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="hint" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="DiagramLinkStyle" eSuperTypes="#//Style">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="diagramLink" eType="#//Diagram"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="MultiDiagramLinkStyle" eSuperTypes="#//Style">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="diagramLinks" upperBound="-1"
+        eType="#//Diagram"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="TextAlignment">
+    <eLiterals name="Left"/>
+    <eLiterals name="Right" value="1"/>
+    <eLiterals name="Center" value="2"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TextStyle" eSuperTypes="#//Style">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="textAlignment" eType="#//TextAlignment"
+        defaultValueLiteral="Left"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="LineType">
+    <eLiterals name="Solid"/>
+    <eLiterals name="Dash" value="1"/>
+    <eLiterals name="Dot" value="2"/>
+    <eLiterals name="DashDot" value="3"/>
+    <eLiterals name="DashDotDot" value="4"/>
+    <eLiterals name="Double" value="5"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="LineTypeStyle" eSuperTypes="#//Style">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="lineType" eType="#//LineType"
+        defaultValueLiteral="Solid"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="ArrowType">
+    <eLiterals name="None"/>
+    <eLiterals name="OpenArrow" value="1"/>
+    <eLiterals name="SolidArrow" value="2"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ArrowStyle" eSuperTypes="#//Style">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="arrowSource" eType="#//ArrowType"
+        defaultValueLiteral="None"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="arrowTarget" eType="#//ArrowType"
+        defaultValueLiteral="None"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Shape" eSuperTypes="#//Node #//ShapeStyle"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Compartment" eSuperTypes="#//BasicCompartment #//CanonicalStyle #//TitleStyle"/>
+  <eClassifiers xsi:type="ecore:EClass" name="ListCompartment" eSuperTypes="#//BasicCompartment #//SortingStyle #//FilteringStyle #//TitleStyle"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Connector" eSuperTypes="#//Edge #//ConnectorStyle"/>
+  <eClassifiers xsi:type="ecore:EClass" name="StandardDiagram" eSuperTypes="#//Diagram #//DiagramStyle"/>
+  <eClassifiers xsi:type="ecore:EClass" name="DecorationNode" eSuperTypes="#//BasicDecorationNode"/>
+  <eClassifiers xsi:type="ecore:EClass" name="BasicDecorationNode" eSuperTypes="#//Node"/>
+  <eClassifiers xsi:type="ecore:EClass" name="BasicCompartment" eSuperTypes="#//DecorationNode #//DrawerStyle"/>
+  <eClassifiers xsi:type="ecore:EClass" name="BasicSemanticCompartment" eSuperTypes="#//BasicDecorationNode #//DrawerStyle"/>
+  <eClassifiers xsi:type="ecore:EClass" name="SemanticListCompartment" eSuperTypes="#//BasicSemanticCompartment #//SortingStyle #//FilteringStyle #//TitleStyle"/>
+  <eClassifiers xsi:type="ecore:EEnum" name="GradientStyle">
+    <eLiterals name="Vertical"/>
+    <eLiterals name="Horizontal" value="1"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="GradientData" instanceClassName="org.eclipse.gmf.runtime.notation.datatype.GradientData"/>
+  <eClassifiers xsi:type="ecore:EClass" name="RoundedCornersStyle" eSuperTypes="#//Style">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="roundedBendpointsRadius"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt" defaultValueLiteral="0"/>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/notation.notation b/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/notation.notation
new file mode 100755
index 0000000..51cac6b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/notation.notation
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xmi:id="_WlS4YLcpEeK8_t7Rpq6ZJA" type="PapyrusUMLClassDiagram" name="Style" measurementUnit="Pixel">
+  <children xmi:type="notation:Shape" xmi:id="_XdKUgLcpEeK8_t7Rpq6ZJA" type="2004" fontName="Segoe UI" lineColor="0">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XdTecLcpEeK8_t7Rpq6ZJA" source="ShadowFigure">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XdTecbcpEeK8_t7Rpq6ZJA" key="ShadowFigure_Value" value="false"/>
+    </eAnnotations>
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XdTecrcpEeK8_t7Rpq6ZJA" source="displayNameLabelIcon">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XdTec7cpEeK8_t7Rpq6ZJA" key="displayNameLabelIcon_value" value="false"/>
+    </eAnnotations>
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XdTedLcpEeK8_t7Rpq6ZJA" source="QualifiedName">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XdTedbcpEeK8_t7Rpq6ZJA" key="QualifiedNameDepth" value="1000"/>
+    </eAnnotations>
+    <children xmi:type="notation:DecorationNode" xmi:id="_XdTedrcpEeK8_t7Rpq6ZJA" type="5011"/>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_XdTed7cpEeK8_t7Rpq6ZJA" type="7006">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_XdTeeLcpEeK8_t7Rpq6ZJA"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_XdTeebcpEeK8_t7Rpq6ZJA"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_XdTeercpEeK8_t7Rpq6ZJA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XdTee7cpEeK8_t7Rpq6ZJA"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_XdTefLcpEeK8_t7Rpq6ZJA" type="7007">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_XdTefbcpEeK8_t7Rpq6ZJA"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_XdTefrcpEeK8_t7Rpq6ZJA"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_XdTef7cpEeK8_t7Rpq6ZJA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XdTegLcpEeK8_t7Rpq6ZJA"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_XdTegbcpEeK8_t7Rpq6ZJA" type="7008">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_XdTegrcpEeK8_t7Rpq6ZJA"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_XdTeg7cpEeK8_t7Rpq6ZJA"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_XdTehLcpEeK8_t7Rpq6ZJA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XdTehbcpEeK8_t7Rpq6ZJA"/>
+    </children>
+    <element xmi:type="uml:Interface" href="notation.uml#_AziHbbcnEeKeLJDBCBPhPw"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XdKUgbcpEeK8_t7Rpq6ZJA" x="336" y="108"/>
+  </children>
+  <children xmi:type="notation:Shape" xmi:id="_ZFAcELcpEeK8_t7Rpq6ZJA" type="2008" fontName="Segoe UI" lineColor="0">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZFJmALcpEeK8_t7Rpq6ZJA" source="ShadowFigure">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZFJmAbcpEeK8_t7Rpq6ZJA" key="ShadowFigure_Value" value="false"/>
+    </eAnnotations>
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZFJmArcpEeK8_t7Rpq6ZJA" source="displayNameLabelIcon">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZFJmA7cpEeK8_t7Rpq6ZJA" key="displayNameLabelIcon_value" value="false"/>
+    </eAnnotations>
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZFJmBLcpEeK8_t7Rpq6ZJA" source="QualifiedName">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZFJmBbcpEeK8_t7Rpq6ZJA" key="QualifiedNameDepth" value="1000"/>
+    </eAnnotations>
+    <children xmi:type="notation:DecorationNode" xmi:id="_ZFJmBrcpEeK8_t7Rpq6ZJA" type="5029"/>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_ZFJmB7cpEeK8_t7Rpq6ZJA" type="7017">
+      <children xmi:type="notation:Shape" xmi:id="_azPfgLcpEeK8_t7Rpq6ZJA" type="3012" fontName="Segoe UI" lineColor="0">
+        <element xmi:type="uml:Property" href="notation.uml#_AziHe7cnEeKeLJDBCBPhPw"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_azPfgbcpEeK8_t7Rpq6ZJA" x="69" y="16"/>
+      </children>
+      <styles xmi:type="notation:TitleStyle" xmi:id="_ZFJmCLcpEeK8_t7Rpq6ZJA"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_ZFJmCbcpEeK8_t7Rpq6ZJA"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_ZFJmCrcpEeK8_t7Rpq6ZJA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZFJmC7cpEeK8_t7Rpq6ZJA"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_ZFJmDLcpEeK8_t7Rpq6ZJA" type="7018">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_ZFJmDbcpEeK8_t7Rpq6ZJA"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_ZFJmDrcpEeK8_t7Rpq6ZJA"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_ZFJmD7cpEeK8_t7Rpq6ZJA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZFJmELcpEeK8_t7Rpq6ZJA"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_ZFJmEbcpEeK8_t7Rpq6ZJA" type="7019">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_ZFJmErcpEeK8_t7Rpq6ZJA"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_ZFJmE7cpEeK8_t7Rpq6ZJA"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_ZFJmFLcpEeK8_t7Rpq6ZJA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZFJmFbcpEeK8_t7Rpq6ZJA"/>
+    </children>
+    <element xmi:type="uml:Class" href="notation.uml#_AziHercnEeKeLJDBCBPhPw"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZFAcEbcpEeK8_t7Rpq6ZJA" x="312" y="408"/>
+  </children>
+  <children xmi:type="notation:Shape" xmi:id="_dpPcQLcpEeK8_t7Rpq6ZJA" type="2008" fontName="Segoe UI" lineColor="0">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dpZNQLcpEeK8_t7Rpq6ZJA" source="ShadowFigure">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dpZNQbcpEeK8_t7Rpq6ZJA" key="ShadowFigure_Value" value="false"/>
+    </eAnnotations>
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dpZNQrcpEeK8_t7Rpq6ZJA" source="displayNameLabelIcon">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dpZNQ7cpEeK8_t7Rpq6ZJA" key="displayNameLabelIcon_value" value="false"/>
+    </eAnnotations>
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dpZNRLcpEeK8_t7Rpq6ZJA" source="QualifiedName">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dpZNRbcpEeK8_t7Rpq6ZJA" key="QualifiedNameDepth" value="1000"/>
+    </eAnnotations>
+    <children xmi:type="notation:DecorationNode" xmi:id="_dpZNRrcpEeK8_t7Rpq6ZJA" type="5029"/>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_dpZNR7cpEeK8_t7Rpq6ZJA" type="7017">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_dpZNSLcpEeK8_t7Rpq6ZJA"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_dpZNSbcpEeK8_t7Rpq6ZJA"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_dpZNSrcpEeK8_t7Rpq6ZJA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dpZNS7cpEeK8_t7Rpq6ZJA"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_dpZNTLcpEeK8_t7Rpq6ZJA" type="7018">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_dpZNTbcpEeK8_t7Rpq6ZJA"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_dpZNTrcpEeK8_t7Rpq6ZJA"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_dpZNT7cpEeK8_t7Rpq6ZJA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dpZNULcpEeK8_t7Rpq6ZJA"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_dpZNUbcpEeK8_t7Rpq6ZJA" type="7019">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_dpZNUrcpEeK8_t7Rpq6ZJA"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_dpZNU7cpEeK8_t7Rpq6ZJA"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_dpZNVLcpEeK8_t7Rpq6ZJA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dpZNVbcpEeK8_t7Rpq6ZJA"/>
+    </children>
+    <element xmi:type="uml:Class" href="notation.uml#_AziHhrcnEeKeLJDBCBPhPw"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dpPcQbcpEeK8_t7Rpq6ZJA" x="720" y="342"/>
+  </children>
+  <children xmi:type="notation:Shape" xmi:id="_gD9yQLcpEeK8_t7Rpq6ZJA" type="2008" fontName="Segoe UI" lineColor="0">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gEHjQLcpEeK8_t7Rpq6ZJA" source="ShadowFigure">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gEHjQbcpEeK8_t7Rpq6ZJA" key="ShadowFigure_Value" value="false"/>
+    </eAnnotations>
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gEHjQrcpEeK8_t7Rpq6ZJA" source="displayNameLabelIcon">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gEHjQ7cpEeK8_t7Rpq6ZJA" key="displayNameLabelIcon_value" value="false"/>
+    </eAnnotations>
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gEHjRLcpEeK8_t7Rpq6ZJA" source="QualifiedName">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gEHjRbcpEeK8_t7Rpq6ZJA" key="QualifiedNameDepth" value="1000"/>
+    </eAnnotations>
+    <children xmi:type="notation:DecorationNode" xmi:id="_gEHjRrcpEeK8_t7Rpq6ZJA" type="5029"/>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_gEHjR7cpEeK8_t7Rpq6ZJA" type="7017">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_gEHjSLcpEeK8_t7Rpq6ZJA"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_gEHjSbcpEeK8_t7Rpq6ZJA"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_gEHjSrcpEeK8_t7Rpq6ZJA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gEHjS7cpEeK8_t7Rpq6ZJA"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_gEHjTLcpEeK8_t7Rpq6ZJA" type="7018">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_gEHjTbcpEeK8_t7Rpq6ZJA"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_gEHjTrcpEeK8_t7Rpq6ZJA"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_gEHjT7cpEeK8_t7Rpq6ZJA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gEHjULcpEeK8_t7Rpq6ZJA"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_gEHjUbcpEeK8_t7Rpq6ZJA" type="7019">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_gEHjUrcpEeK8_t7Rpq6ZJA"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_gEHjU7cpEeK8_t7Rpq6ZJA"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_gEHjVLcpEeK8_t7Rpq6ZJA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gEHjVbcpEeK8_t7Rpq6ZJA"/>
+    </children>
+    <element xmi:type="uml:Class" href="notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gD9yQbcpEeK8_t7Rpq6ZJA" x="708" y="114"/>
+  </children>
+  <styles xmi:type="notation:DiagramStyle" xmi:id="_WlS4YbcpEeK8_t7Rpq6ZJA"/>
+  <element xmi:type="uml:Model" href="notation.uml#_AziHILcnEeKeLJDBCBPhPw"/>
+  <edges xmi:type="notation:Connector" xmi:id="_ZIRygLcpEeK8_t7Rpq6ZJA" type="4003" source="_ZFAcELcpEeK8_t7Rpq6ZJA" target="_XdKUgLcpEeK8_t7Rpq6ZJA" lineColor="0">
+    <children xmi:type="notation:DecorationNode" xmi:id="_ZIRyg7cpEeK8_t7Rpq6ZJA" type="6008">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_ZIRyhLcpEeK8_t7Rpq6ZJA" y="40"/>
+    </children>
+    <children xmi:type="notation:DecorationNode" xmi:id="_ZIRyhbcpEeK8_t7Rpq6ZJA" type="6009">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_ZIRyhrcpEeK8_t7Rpq6ZJA" y="60"/>
+    </children>
+    <styles xmi:type="notation:FontStyle" xmi:id="_ZIRygbcpEeK8_t7Rpq6ZJA" fontName="Segoe UI"/>
+    <element xmi:type="uml:InterfaceRealization" href="notation.uml#_AziHfbcnEeKeLJDBCBPhPw"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ZIRygrcpEeK8_t7Rpq6ZJA" points="[0, 0, -203, -491]$[179, 435, -24, -56]"/>
+  </edges>
+  <edges xmi:type="notation:Connector" xmi:id="_gF5r8LcpEeK8_t7Rpq6ZJA" type="4002" source="_dpPcQLcpEeK8_t7Rpq6ZJA" target="_gD9yQLcpEeK8_t7Rpq6ZJA" lineColor="0">
+    <children xmi:type="notation:DecorationNode" xmi:id="_gF5r87cpEeK8_t7Rpq6ZJA" type="6007">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_gF5r9LcpEeK8_t7Rpq6ZJA" y="40"/>
+    </children>
+    <styles xmi:type="notation:FontStyle" xmi:id="_gF5r8bcpEeK8_t7Rpq6ZJA" fontName="Segoe UI"/>
+    <element xmi:type="uml:Generalization" href="notation.uml#_AziHh7cnEeKeLJDBCBPhPw"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gF5r8rcpEeK8_t7Rpq6ZJA" points="[-50, -15, 552, 155]$[-602, -170, 0, 0]"/>
+  </edges>
+  <edges xmi:type="notation:Connector" xmi:id="_qwC6cLcpEeK8_t7Rpq6ZJA" type="4001" source="_XdKUgLcpEeK8_t7Rpq6ZJA" target="_gD9yQLcpEeK8_t7Rpq6ZJA" lineColor="0">
+    <children xmi:type="notation:DecorationNode" xmi:id="_qwC6c7cpEeK8_t7Rpq6ZJA" type="6001">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_qwC6dLcpEeK8_t7Rpq6ZJA" y="-20"/>
+    </children>
+    <children xmi:type="notation:DecorationNode" xmi:id="_qwC6dbcpEeK8_t7Rpq6ZJA" type="6002">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_qwC6drcpEeK8_t7Rpq6ZJA" y="20"/>
+    </children>
+    <children xmi:type="notation:DecorationNode" xmi:id="_qwC6d7cpEeK8_t7Rpq6ZJA" type="6003">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_qwC6eLcpEeK8_t7Rpq6ZJA" y="-20"/>
+    </children>
+    <children xmi:type="notation:DecorationNode" xmi:id="_qwC6ebcpEeK8_t7Rpq6ZJA" type="6005">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_qwC6ercpEeK8_t7Rpq6ZJA" y="20"/>
+    </children>
+    <children xmi:type="notation:DecorationNode" xmi:id="_qwC6e7cpEeK8_t7Rpq6ZJA" type="6033">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_qwC6fLcpEeK8_t7Rpq6ZJA" y="20"/>
+    </children>
+    <children xmi:type="notation:DecorationNode" xmi:id="_qwC6fbcpEeK8_t7Rpq6ZJA" type="6034">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_qwC6frcpEeK8_t7Rpq6ZJA" y="-20"/>
+    </children>
+    <styles xmi:type="notation:FontStyle" xmi:id="_qwC6cbcpEeK8_t7Rpq6ZJA" fontName="Segoe UI"/>
+    <element xmi:type="uml:Association" href="notation.uml#_AziHgrcnEeKeLJDBCBPhPw"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_qwC6crcpEeK8_t7Rpq6ZJA" points="[50, 0, -322, 0]$[322, 0, -50, 0]"/>
+  </edges>
+</notation:Diagram>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/notation.uml b/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/notation.uml
new file mode 100755
index 0000000..b9721b5
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/model/notation/notation.uml
@@ -0,0 +1,1291 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20110701" xmlns:xmi="http://www.omg.org/spec/XMI/20110701" 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/4.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="_AziHILcnEeKeLJDBCBPhPw" name="notation" URI="http://www.eclipse.org/gmf/runtime/1.0.2/notation">
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziHIbcnEeKeLJDBCBPhPw" name="Edge">
+      <generalization xmi:id="_AziHIrcnEeKeLJDBCBPhPw" general="_AziHOrcnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_AziHI7cnEeKeLJDBCBPhPw" name="source" type="_AziHOrcnEeKeLJDBCBPhPw" isOrdered="true" association="_AziHfrcnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_AziHJLcnEeKeLJDBCBPhPw" name="target" type="_AziHOrcnEeKeLJDBCBPhPw" isOrdered="true" association="_AziHf7cnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_AziHJbcnEeKeLJDBCBPhPw" name="bendpoints" type="_AziHpLcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziHprcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHJrcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziHJ7cnEeKeLJDBCBPhPw" name="sourceAnchor" type="_AziHpbcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziHqLcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHKLcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziHKbcnEeKeLJDBCBPhPw" name="targetAnchor" type="_AziHpbcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziHqrcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHKrcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedOperation xmi:id="_AziHK7cnEeKeLJDBCBPhPw" name="createBendpoints" visibility="public">
+        <ownedParameter xmi:id="_AziHLLcnEeKeLJDBCBPhPw" type="_AziHpLcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHLbcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_AziHLrcnEeKeLJDBCBPhPw" name="eClass" isOrdered="true">
+          <type xmi:type="uml:Class" href="ecore.uml#_A45JC7cnEeKeLJDBCBPhPw"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHL7cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_AziHMLcnEeKeLJDBCBPhPw" name="createSourceAnchor" visibility="public">
+        <ownedParameter xmi:id="_AziHMbcnEeKeLJDBCBPhPw" type="_AziHpbcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHMrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_AziHM7cnEeKeLJDBCBPhPw" name="eClass" isOrdered="true">
+          <type xmi:type="uml:Class" href="ecore.uml#_A45JC7cnEeKeLJDBCBPhPw"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHNLcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_AziHNbcnEeKeLJDBCBPhPw" name="createTargetAnchor" visibility="public">
+        <ownedParameter xmi:id="_AziHNrcnEeKeLJDBCBPhPw" type="_AziHpbcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHN7cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_AziHOLcnEeKeLJDBCBPhPw" name="eClass" isOrdered="true">
+          <type xmi:type="uml:Class" href="ecore.uml#_A45JC7cnEeKeLJDBCBPhPw"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHObcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziHOrcnEeKeLJDBCBPhPw" name="View" isAbstract="true">
+      <generalization xmi:id="_AziHO7cnEeKeLJDBCBPhPw">
+        <general xmi:type="uml:Class" href="ecore.uml#_A5C5ZrcnEeKeLJDBCBPhPw"/>
+      </generalization>
+      <ownedAttribute xmi:id="_AziHPLcnEeKeLJDBCBPhPw" name="visible" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHPbcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_AziHPrcnEeKeLJDBCBPhPw" value="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziHP7cnEeKeLJDBCBPhPw" name="type" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHQLcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_AziHQbcnEeKeLJDBCBPhPw" value="">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziHQrcnEeKeLJDBCBPhPw" name="mutable" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHQ7cnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_AziHRLcnEeKeLJDBCBPhPw">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziHRbcnEeKeLJDBCBPhPw" name="sourceEdges" type="_AziHIbcnEeKeLJDBCBPhPw" isOrdered="true" association="_AziHfrcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHRrcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AziHR7cnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziHSLcnEeKeLJDBCBPhPw" name="targetEdges" type="_AziHIbcnEeKeLJDBCBPhPw" isOrdered="true" association="_AziHf7cnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHSbcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AziHSrcnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziHS7cnEeKeLJDBCBPhPw" name="persistedChildren" type="_AziHbrcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziHgLcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHTLcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AziHTbcnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziHTrcnEeKeLJDBCBPhPw" name="styles" type="_AziHbbcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziHgrcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHT7cnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AziHULcnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziHUbcnEeKeLJDBCBPhPw" name="element" isOrdered="true" association="_AziHhLcnEeKeLJDBCBPhPw">
+        <type xmi:type="uml:Class" href="ecore.uml#_A45IwbcnEeKeLJDBCBPhPw"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHUrcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziHU7cnEeKeLJDBCBPhPw" name="diagram" type="_AziHhrcnEeKeLJDBCBPhPw" isOrdered="true" isReadOnly="true" association="_AziHoLcnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_AziHVLcnEeKeLJDBCBPhPw" name="transientChildren" type="_AziHbrcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziHorcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHVbcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AziHVrcnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedOperation xmi:id="_AziHV7cnEeKeLJDBCBPhPw" name="getStyle" visibility="public">
+        <ownedParameter xmi:id="_AziHWLcnEeKeLJDBCBPhPw" type="_AziHbbcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHWbcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_AziHWrcnEeKeLJDBCBPhPw" name="eClass" isOrdered="true">
+          <type xmi:type="uml:Class" href="ecore.uml#_A45JC7cnEeKeLJDBCBPhPw"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHW7cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_AziHXLcnEeKeLJDBCBPhPw" name="createChild" visibility="public">
+        <ownedParameter xmi:id="_AziHXbcnEeKeLJDBCBPhPw" type="_AziHbrcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHXrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_AziHX7cnEeKeLJDBCBPhPw" name="eClass" isOrdered="true">
+          <type xmi:type="uml:Class" href="ecore.uml#_A45JC7cnEeKeLJDBCBPhPw"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHYLcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_AziHYbcnEeKeLJDBCBPhPw" name="createStyle" visibility="public">
+        <ownedParameter xmi:id="_AziHYrcnEeKeLJDBCBPhPw" type="_AziHbbcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHY7cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_AziHZLcnEeKeLJDBCBPhPw" name="eClass" isOrdered="true">
+          <type xmi:type="uml:Class" href="ecore.uml#_A45JC7cnEeKeLJDBCBPhPw"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHZbcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_AziHZrcnEeKeLJDBCBPhPw" name="getNamedStyle" visibility="public">
+        <ownedParameter xmi:id="_AziHZ7cnEeKeLJDBCBPhPw" type="_AziHercnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHaLcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_AziHabcnEeKeLJDBCBPhPw" name="eClass" isOrdered="true">
+          <type xmi:type="uml:Class" href="ecore.uml#_A45JC7cnEeKeLJDBCBPhPw"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHarcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_AziHa7cnEeKeLJDBCBPhPw" name="name" isOrdered="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHbLcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Interface" xmi:id="_AziHbbcnEeKeLJDBCBPhPw" name="Style"/>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziHbrcnEeKeLJDBCBPhPw" name="Node">
+      <generalization xmi:id="_AziHb7cnEeKeLJDBCBPhPw" general="_AziHOrcnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_AziHcLcnEeKeLJDBCBPhPw" name="layoutConstraint" type="_AziHd7cnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziHeLcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHcbcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedOperation xmi:id="_AziHcrcnEeKeLJDBCBPhPw" name="createLayoutConstraint" visibility="public">
+        <ownedParameter xmi:id="_AziHc7cnEeKeLJDBCBPhPw" type="_AziHd7cnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHdLcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_AziHdbcnEeKeLJDBCBPhPw" name="eClass" isOrdered="true">
+          <type xmi:type="uml:Class" href="ecore.uml#_A45JC7cnEeKeLJDBCBPhPw"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHdrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Interface" xmi:id="_AziHd7cnEeKeLJDBCBPhPw" name="LayoutConstraint"/>
+    <packagedElement xmi:type="uml:Association" xmi:id="_AziHeLcnEeKeLJDBCBPhPw" memberEnd="_AziHcLcnEeKeLJDBCBPhPw _AziHebcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_AziHebcnEeKeLJDBCBPhPw" type="_AziHbrcnEeKeLJDBCBPhPw" association="_AziHeLcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziHercnEeKeLJDBCBPhPw" clientDependency="_AziHfbcnEeKeLJDBCBPhPw" name="NamedStyle">
+      <ownedAttribute xmi:id="_AziHe7cnEeKeLJDBCBPhPw" name="name" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHfLcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <interfaceRealization xmi:id="_AziHfbcnEeKeLJDBCBPhPw" client="_AziHercnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_AziHfrcnEeKeLJDBCBPhPw" memberEnd="_AziHI7cnEeKeLJDBCBPhPw _AziHRbcnEeKeLJDBCBPhPw"/>
+    <packagedElement xmi:type="uml:Association" xmi:id="_AziHf7cnEeKeLJDBCBPhPw" memberEnd="_AziHJLcnEeKeLJDBCBPhPw _AziHSLcnEeKeLJDBCBPhPw"/>
+    <packagedElement xmi:type="uml:Association" xmi:id="_AziHgLcnEeKeLJDBCBPhPw" memberEnd="_AziHS7cnEeKeLJDBCBPhPw _AziHgbcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_AziHgbcnEeKeLJDBCBPhPw" type="_AziHOrcnEeKeLJDBCBPhPw" association="_AziHgLcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_AziHgrcnEeKeLJDBCBPhPw" memberEnd="_AziHTrcnEeKeLJDBCBPhPw _AziHg7cnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_AziHg7cnEeKeLJDBCBPhPw" type="_AziHOrcnEeKeLJDBCBPhPw" association="_AziHgrcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_AziHhLcnEeKeLJDBCBPhPw" memberEnd="_AziHUbcnEeKeLJDBCBPhPw _AziHhbcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_AziHhbcnEeKeLJDBCBPhPw" type="_AziHOrcnEeKeLJDBCBPhPw" association="_AziHhLcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziHhrcnEeKeLJDBCBPhPw" name="Diagram">
+      <generalization xmi:id="_AziHh7cnEeKeLJDBCBPhPw" general="_AziHOrcnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_AziHiLcnEeKeLJDBCBPhPw" name="name" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHibcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_AziHircnEeKeLJDBCBPhPw" value="">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziHi7cnEeKeLJDBCBPhPw" name="measurementUnit" visibility="public" type="_AziHmbcnEeKeLJDBCBPhPw" isOrdered="true">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHjLcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:InstanceValue" xmi:id="_AziHjbcnEeKeLJDBCBPhPw" type="_AziHmbcnEeKeLJDBCBPhPw" instance="_AziHmrcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziHjrcnEeKeLJDBCBPhPw" name="persistedEdges" type="_AziHIbcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziHnLcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHj7cnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AziHkLcnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziHkbcnEeKeLJDBCBPhPw" name="TransientEdges" type="_AziHIbcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziHnrcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHkrcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AziHk7cnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedOperation xmi:id="_AziHlLcnEeKeLJDBCBPhPw" name="createEdge" visibility="public">
+        <ownedParameter xmi:id="_AziHlbcnEeKeLJDBCBPhPw" type="_AziHIbcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHlrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_AziHl7cnEeKeLJDBCBPhPw" name="eClass" isOrdered="true">
+          <type xmi:type="uml:Class" href="ecore.uml#_A45JC7cnEeKeLJDBCBPhPw"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHmLcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Enumeration" xmi:id="_AziHmbcnEeKeLJDBCBPhPw" name="MeasurementUnit">
+      <ownedLiteral xmi:id="_AziHmrcnEeKeLJDBCBPhPw" name="Himetric"/>
+      <ownedLiteral xmi:id="_AziHm7cnEeKeLJDBCBPhPw" name="Pixel"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_AziHnLcnEeKeLJDBCBPhPw" memberEnd="_AziHjrcnEeKeLJDBCBPhPw _AziHnbcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_AziHnbcnEeKeLJDBCBPhPw" type="_AziHhrcnEeKeLJDBCBPhPw" association="_AziHnLcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_AziHnrcnEeKeLJDBCBPhPw" memberEnd="_AziHkbcnEeKeLJDBCBPhPw _AziHn7cnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_AziHn7cnEeKeLJDBCBPhPw" type="_AziHhrcnEeKeLJDBCBPhPw" association="_AziHnrcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_AziHoLcnEeKeLJDBCBPhPw" memberEnd="_AziHU7cnEeKeLJDBCBPhPw _AziHobcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_AziHobcnEeKeLJDBCBPhPw" type="_AziHOrcnEeKeLJDBCBPhPw" association="_AziHoLcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_AziHorcnEeKeLJDBCBPhPw" memberEnd="_AziHVLcnEeKeLJDBCBPhPw _AziHo7cnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_AziHo7cnEeKeLJDBCBPhPw" type="_AziHOrcnEeKeLJDBCBPhPw" association="_AziHorcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Interface" xmi:id="_AziHpLcnEeKeLJDBCBPhPw" name="Bendpoints"/>
+    <packagedElement xmi:type="uml:Interface" xmi:id="_AziHpbcnEeKeLJDBCBPhPw" name="Anchor"/>
+    <packagedElement xmi:type="uml:Association" xmi:id="_AziHprcnEeKeLJDBCBPhPw" memberEnd="_AziHJbcnEeKeLJDBCBPhPw _AziHp7cnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_AziHp7cnEeKeLJDBCBPhPw" type="_AziHIbcnEeKeLJDBCBPhPw" association="_AziHprcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_AziHqLcnEeKeLJDBCBPhPw" memberEnd="_AziHJ7cnEeKeLJDBCBPhPw _AziHqbcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_AziHqbcnEeKeLJDBCBPhPw" type="_AziHIbcnEeKeLJDBCBPhPw" association="_AziHqLcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_AziHqrcnEeKeLJDBCBPhPw" memberEnd="_AziHKbcnEeKeLJDBCBPhPw _AziHq7cnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_AziHq7cnEeKeLJDBCBPhPw" type="_AziHIbcnEeKeLJDBCBPhPw" association="_AziHqrcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziHrLcnEeKeLJDBCBPhPw" clientDependency="_AziHtbcnEeKeLJDBCBPhPw" name="FillStyle">
+      <ownedAttribute xmi:id="_AziHrbcnEeKeLJDBCBPhPw" name="fillColor" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHrrcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziHr7cnEeKeLJDBCBPhPw" value="16777215">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziHsLcnEeKeLJDBCBPhPw" name="transparency" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHsbcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziHsrcnEeKeLJDBCBPhPw" value="-1">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziHs7cnEeKeLJDBCBPhPw" name="gradient" visibility="public" type="_AziHtrcnEeKeLJDBCBPhPw" isOrdered="true">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHtLcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <interfaceRealization xmi:id="_AziHtbcnEeKeLJDBCBPhPw" client="_AziHrLcnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_AziHtrcnEeKeLJDBCBPhPw" name="GradientData"/>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziHt7cnEeKeLJDBCBPhPw" clientDependency="_AziHvrcnEeKeLJDBCBPhPw" name="LineStyle">
+      <ownedAttribute xmi:id="_AziHuLcnEeKeLJDBCBPhPw" name="lineColor" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHubcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziHurcnEeKeLJDBCBPhPw" value="11579568">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziHu7cnEeKeLJDBCBPhPw" name="lineWidth" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHvLcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziHvbcnEeKeLJDBCBPhPw" value="-1">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        </defaultValue>
+      </ownedAttribute>
+      <interfaceRealization xmi:id="_AziHvrcnEeKeLJDBCBPhPw" client="_AziHt7cnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziHv7cnEeKeLJDBCBPhPw" clientDependency="_AziH1bcnEeKeLJDBCBPhPw" name="FontStyle">
+      <ownedAttribute xmi:id="_AziHwLcnEeKeLJDBCBPhPw" name="fontColor" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHwbcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziHwrcnEeKeLJDBCBPhPw">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziHw7cnEeKeLJDBCBPhPw" name="fontName" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHxLcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_AziHxbcnEeKeLJDBCBPhPw" value="Tahoma">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziHxrcnEeKeLJDBCBPhPw" name="fontHeight" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHx7cnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziHyLcnEeKeLJDBCBPhPw" value="9">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziHybcnEeKeLJDBCBPhPw" name="bold" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHyrcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_AziHy7cnEeKeLJDBCBPhPw">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziHzLcnEeKeLJDBCBPhPw" name="italic" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziHzbcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_AziHzrcnEeKeLJDBCBPhPw">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziHz7cnEeKeLJDBCBPhPw" name="underline" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziH0LcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_AziH0bcnEeKeLJDBCBPhPw">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziH0rcnEeKeLJDBCBPhPw" name="strikeThrough" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziH07cnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_AziH1LcnEeKeLJDBCBPhPw">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        </defaultValue>
+      </ownedAttribute>
+      <interfaceRealization xmi:id="_AziH1bcnEeKeLJDBCBPhPw" client="_AziHv7cnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziH1rcnEeKeLJDBCBPhPw" clientDependency="_AziH2rcnEeKeLJDBCBPhPw" name="TitleStyle">
+      <ownedAttribute xmi:id="_AziH17cnEeKeLJDBCBPhPw" name="showTitle" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziH2LcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_AziH2bcnEeKeLJDBCBPhPw">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        </defaultValue>
+      </ownedAttribute>
+      <interfaceRealization xmi:id="_AziH2rcnEeKeLJDBCBPhPw" client="_AziH1rcnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziH27cnEeKeLJDBCBPhPw" clientDependency="_AziH5LcnEeKeLJDBCBPhPw" name="SortingStyle">
+      <ownedAttribute xmi:id="_AziH3LcnEeKeLJDBCBPhPw" name="sorting" visibility="public" type="_AziH5bcnEeKeLJDBCBPhPw" isOrdered="true">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziH3bcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:InstanceValue" xmi:id="_AziH3rcnEeKeLJDBCBPhPw" type="_AziH5bcnEeKeLJDBCBPhPw" instance="_AziH5rcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziH37cnEeKeLJDBCBPhPw" name="sortingKeys" visibility="public" type="_AziH6bcnEeKeLJDBCBPhPw" isOrdered="true">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziH4LcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziH4bcnEeKeLJDBCBPhPw" name="sortedObjects" isOrdered="true" association="_AziH6rcnEeKeLJDBCBPhPw">
+        <type xmi:type="uml:Class" href="ecore.uml#_A45IwbcnEeKeLJDBCBPhPw"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziH4rcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AziH47cnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <interfaceRealization xmi:id="_AziH5LcnEeKeLJDBCBPhPw" client="_AziH27cnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Enumeration" xmi:id="_AziH5bcnEeKeLJDBCBPhPw" name="Sorting">
+      <ownedLiteral xmi:id="_AziH5rcnEeKeLJDBCBPhPw" name="None"/>
+      <ownedLiteral xmi:id="_AziH57cnEeKeLJDBCBPhPw" name="Manual"/>
+      <ownedLiteral xmi:id="_AziH6LcnEeKeLJDBCBPhPw" name="Automatic"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_AziH6bcnEeKeLJDBCBPhPw" name="SortKeyMap"/>
+    <packagedElement xmi:type="uml:Association" xmi:id="_AziH6rcnEeKeLJDBCBPhPw" memberEnd="_AziH4bcnEeKeLJDBCBPhPw _AziH67cnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_AziH67cnEeKeLJDBCBPhPw" type="_AziH27cnEeKeLJDBCBPhPw" association="_AziH6rcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziH7LcnEeKeLJDBCBPhPw" clientDependency="_AziH8LcnEeKeLJDBCBPhPw" name="DescriptionStyle">
+      <ownedAttribute xmi:id="_AziH7bcnEeKeLJDBCBPhPw" 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="_AziH7rcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_AziH77cnEeKeLJDBCBPhPw" value="">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        </defaultValue>
+      </ownedAttribute>
+      <interfaceRealization xmi:id="_AziH8LcnEeKeLJDBCBPhPw" client="_AziH7LcnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziH8bcnEeKeLJDBCBPhPw" clientDependency="_AziH-LcnEeKeLJDBCBPhPw" name="Size">
+      <ownedAttribute xmi:id="_AziH8rcnEeKeLJDBCBPhPw" name="width" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziH87cnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziH9LcnEeKeLJDBCBPhPw" value="-1">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziH9bcnEeKeLJDBCBPhPw" name="height" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziH9rcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziH97cnEeKeLJDBCBPhPw" value="-1">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        </defaultValue>
+      </ownedAttribute>
+      <interfaceRealization xmi:id="_AziH-LcnEeKeLJDBCBPhPw" client="_AziH8bcnEeKeLJDBCBPhPw" supplier="_AziHd7cnEeKeLJDBCBPhPw" contract="_AziHd7cnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziH-bcnEeKeLJDBCBPhPw" clientDependency="_AziIALcnEeKeLJDBCBPhPw" name="Location">
+      <ownedAttribute xmi:id="_AziH-rcnEeKeLJDBCBPhPw" name="x" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziH-7cnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziH_LcnEeKeLJDBCBPhPw">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziH_bcnEeKeLJDBCBPhPw" name="y" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziH_rcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziH_7cnEeKeLJDBCBPhPw">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        </defaultValue>
+      </ownedAttribute>
+      <interfaceRealization xmi:id="_AziIALcnEeKeLJDBCBPhPw" client="_AziH-bcnEeKeLJDBCBPhPw" supplier="_AziHd7cnEeKeLJDBCBPhPw" contract="_AziHd7cnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziIAbcnEeKeLJDBCBPhPw" name="Bounds">
+      <generalization xmi:id="_AziIArcnEeKeLJDBCBPhPw" general="_AziH-bcnEeKeLJDBCBPhPw"/>
+      <generalization xmi:id="_AziIA7cnEeKeLJDBCBPhPw" general="_AziH8bcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziIBLcnEeKeLJDBCBPhPw" clientDependency="_AziICLcnEeKeLJDBCBPhPw" name="Ratio">
+      <ownedAttribute xmi:id="_AziIBbcnEeKeLJDBCBPhPw" name="value" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIBrcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralReal" xmi:id="_AziIB7cnEeKeLJDBCBPhPw" value="-1.0">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
+        </defaultValue>
+      </ownedAttribute>
+      <interfaceRealization xmi:id="_AziICLcnEeKeLJDBCBPhPw" client="_AziIBLcnEeKeLJDBCBPhPw" supplier="_AziHd7cnEeKeLJDBCBPhPw" contract="_AziHd7cnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Enumeration" xmi:id="_AziICbcnEeKeLJDBCBPhPw" name="Filtering">
+      <ownedLiteral xmi:id="_AziICrcnEeKeLJDBCBPhPw" name="None"/>
+      <ownedLiteral xmi:id="_AziIC7cnEeKeLJDBCBPhPw" name="Manual"/>
+      <ownedLiteral xmi:id="_AziIDLcnEeKeLJDBCBPhPw" name="Automatic"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziIDbcnEeKeLJDBCBPhPw" clientDependency="_AziIEbcnEeKeLJDBCBPhPw" name="IdentityAnchor">
+      <ownedAttribute xmi:id="_AziIDrcnEeKeLJDBCBPhPw" name="id" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziID7cnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_AziIELcnEeKeLJDBCBPhPw" value="anchor">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        </defaultValue>
+      </ownedAttribute>
+      <interfaceRealization xmi:id="_AziIEbcnEeKeLJDBCBPhPw" client="_AziIDbcnEeKeLJDBCBPhPw" supplier="_AziHpbcnEeKeLJDBCBPhPw" contract="_AziHpbcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Enumeration" xmi:id="_AziIErcnEeKeLJDBCBPhPw" name="Routing">
+      <ownedLiteral xmi:id="_AziIE7cnEeKeLJDBCBPhPw" name="Manual"/>
+      <ownedLiteral xmi:id="_AziIFLcnEeKeLJDBCBPhPw" name="Rectilinear"/>
+      <ownedLiteral xmi:id="_AziIFbcnEeKeLJDBCBPhPw" name="Tree"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Enumeration" xmi:id="_AziIFrcnEeKeLJDBCBPhPw" name="Smoothness">
+      <ownedLiteral xmi:id="_AziIF7cnEeKeLJDBCBPhPw" name="None"/>
+      <ownedLiteral xmi:id="_AziIGLcnEeKeLJDBCBPhPw" name="Normal"/>
+      <ownedLiteral xmi:id="_AziIGbcnEeKeLJDBCBPhPw" name="Less"/>
+      <ownedLiteral xmi:id="_AziIGrcnEeKeLJDBCBPhPw" name="More"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Enumeration" xmi:id="_AziIG7cnEeKeLJDBCBPhPw" name="JumpLinkStatus">
+      <ownedLiteral xmi:id="_AziIHLcnEeKeLJDBCBPhPw" name="None"/>
+      <ownedLiteral xmi:id="_AziIHbcnEeKeLJDBCBPhPw" name="All"/>
+      <ownedLiteral xmi:id="_AziIHrcnEeKeLJDBCBPhPw" name="Below"/>
+      <ownedLiteral xmi:id="_AziIH7cnEeKeLJDBCBPhPw" name="Above"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Enumeration" xmi:id="_AziIILcnEeKeLJDBCBPhPw" name="JumpLinkType">
+      <ownedLiteral xmi:id="_AziIIbcnEeKeLJDBCBPhPw" name="Semicircle"/>
+      <ownedLiteral xmi:id="_AziIIrcnEeKeLJDBCBPhPw" name="Square"/>
+      <ownedLiteral xmi:id="_AziII7cnEeKeLJDBCBPhPw" name="Chamfered"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziIJLcnEeKeLJDBCBPhPw" name="RoutingStyle">
+      <generalization xmi:id="_AziIJbcnEeKeLJDBCBPhPw" general="_AziIO7cnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_AziIJrcnEeKeLJDBCBPhPw" name="routing" visibility="public" type="_AziIErcnEeKeLJDBCBPhPw" isOrdered="true">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIJ7cnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:InstanceValue" xmi:id="_AziIKLcnEeKeLJDBCBPhPw" type="_AziIErcnEeKeLJDBCBPhPw" instance="_AziIE7cnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziIKbcnEeKeLJDBCBPhPw" name="smoothness" visibility="public" type="_AziIFrcnEeKeLJDBCBPhPw" isOrdered="true">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIKrcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:InstanceValue" xmi:id="_AziIK7cnEeKeLJDBCBPhPw" type="_AziIFrcnEeKeLJDBCBPhPw" instance="_AziIF7cnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziILLcnEeKeLJDBCBPhPw" name="avoidObstructions" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziILbcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_AziILrcnEeKeLJDBCBPhPw">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziIL7cnEeKeLJDBCBPhPw" name="closestDistance" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIMLcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_AziIMbcnEeKeLJDBCBPhPw">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziIMrcnEeKeLJDBCBPhPw" name="jumpLinkStatus" visibility="public" type="_AziIG7cnEeKeLJDBCBPhPw" isOrdered="true">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIM7cnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:InstanceValue" xmi:id="_AziINLcnEeKeLJDBCBPhPw" type="_AziIG7cnEeKeLJDBCBPhPw" instance="_AziIHLcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziINbcnEeKeLJDBCBPhPw" name="jumpLinkType" visibility="public" type="_AziIILcnEeKeLJDBCBPhPw" isOrdered="true">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziINrcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:InstanceValue" xmi:id="_AziIN7cnEeKeLJDBCBPhPw" type="_AziIILcnEeKeLJDBCBPhPw" instance="_AziIIbcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziIOLcnEeKeLJDBCBPhPw" name="jumpLinksReverse" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIObcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_AziIOrcnEeKeLJDBCBPhPw">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        </defaultValue>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziIO7cnEeKeLJDBCBPhPw" clientDependency="_AziIP7cnEeKeLJDBCBPhPw" name="RoundedCornersStyle">
+      <ownedAttribute xmi:id="_AziIPLcnEeKeLJDBCBPhPw" name="roundedBendpointsRadius" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIPbcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziIPrcnEeKeLJDBCBPhPw">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        </defaultValue>
+      </ownedAttribute>
+      <interfaceRealization xmi:id="_AziIP7cnEeKeLJDBCBPhPw" client="_AziIO7cnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziIQLcnEeKeLJDBCBPhPw" clientDependency="_AziIQ7cnEeKeLJDBCBPhPw" name="RelativeBendpoints">
+      <ownedAttribute xmi:id="_AziIQbcnEeKeLJDBCBPhPw" name="points" visibility="public" type="_AziIRLcnEeKeLJDBCBPhPw" isOrdered="true">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIQrcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <interfaceRealization xmi:id="_AziIQ7cnEeKeLJDBCBPhPw" client="_AziIQLcnEeKeLJDBCBPhPw" supplier="_AziHpLcnEeKeLJDBCBPhPw" contract="_AziHpLcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_AziIRLcnEeKeLJDBCBPhPw" name="RelativeBendpointList"/>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziIRbcnEeKeLJDBCBPhPw" name="Image">
+      <ownedAttribute xmi:id="_AziIRrcnEeKeLJDBCBPhPw" name="data" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByteArray"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIR7cnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziISLcnEeKeLJDBCBPhPw" clientDependency="_AziITLcnEeKeLJDBCBPhPw" name="CanonicalStyle">
+      <ownedAttribute xmi:id="_AziISbcnEeKeLJDBCBPhPw" name="canonical" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziISrcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_AziIS7cnEeKeLJDBCBPhPw" value="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        </defaultValue>
+      </ownedAttribute>
+      <interfaceRealization xmi:id="_AziITLcnEeKeLJDBCBPhPw" client="_AziISLcnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziITbcnEeKeLJDBCBPhPw" name="ShapeStyle">
+      <generalization xmi:id="_AziITrcnEeKeLJDBCBPhPw" general="_AziHv7cnEeKeLJDBCBPhPw"/>
+      <generalization xmi:id="_AziIT7cnEeKeLJDBCBPhPw" general="_AziH7LcnEeKeLJDBCBPhPw"/>
+      <generalization xmi:id="_AziIULcnEeKeLJDBCBPhPw" general="_AziHrLcnEeKeLJDBCBPhPw"/>
+      <generalization xmi:id="_AziIUbcnEeKeLJDBCBPhPw" general="_AziHt7cnEeKeLJDBCBPhPw"/>
+      <generalization xmi:id="_AziIUrcnEeKeLJDBCBPhPw" general="_AziIO7cnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziIU7cnEeKeLJDBCBPhPw" name="ConnectorStyle">
+      <generalization xmi:id="_AziIVLcnEeKeLJDBCBPhPw" general="_AziIJLcnEeKeLJDBCBPhPw"/>
+      <generalization xmi:id="_AziIVbcnEeKeLJDBCBPhPw" general="_AziHt7cnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziIVrcnEeKeLJDBCBPhPw" clientDependency="_AziIY7cnEeKeLJDBCBPhPw" name="PageStyle">
+      <ownedAttribute xmi:id="_AziIV7cnEeKeLJDBCBPhPw" name="pageX" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIWLcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziIWbcnEeKeLJDBCBPhPw">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziIWrcnEeKeLJDBCBPhPw" name="pageY" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIW7cnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziIXLcnEeKeLJDBCBPhPw">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziIXbcnEeKeLJDBCBPhPw" name="pageWidth" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIXrcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziIX7cnEeKeLJDBCBPhPw" value="100">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziIYLcnEeKeLJDBCBPhPw" name="pageHeight" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIYbcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziIYrcnEeKeLJDBCBPhPw" value="100">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        </defaultValue>
+      </ownedAttribute>
+      <interfaceRealization xmi:id="_AziIY7cnEeKeLJDBCBPhPw" client="_AziIVrcnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziIZLcnEeKeLJDBCBPhPw" clientDependency="_AziIaLcnEeKeLJDBCBPhPw" name="DrawerStyle">
+      <ownedAttribute xmi:id="_AziIZbcnEeKeLJDBCBPhPw" name="collapsed" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIZrcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_AziIZ7cnEeKeLJDBCBPhPw">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        </defaultValue>
+      </ownedAttribute>
+      <interfaceRealization xmi:id="_AziIaLcnEeKeLJDBCBPhPw" client="_AziIZLcnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziIabcnEeKeLJDBCBPhPw" clientDependency="_AziIcLcnEeKeLJDBCBPhPw" name="GuideStyle">
+      <ownedAttribute xmi:id="_AziIarcnEeKeLJDBCBPhPw" name="horizontalGuides" type="_AziIcbcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziIh7cnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIa7cnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AziIbLcnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziIbbcnEeKeLJDBCBPhPw" name="verticalGuides" type="_AziIcbcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziIibcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIbrcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AziIb7cnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <interfaceRealization xmi:id="_AziIcLcnEeKeLJDBCBPhPw" client="_AziIabcnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziIcbcnEeKeLJDBCBPhPw" name="Guide">
+      <ownedAttribute xmi:id="_AziIcrcnEeKeLJDBCBPhPw" name="position" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIc7cnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_AziIdLcnEeKeLJDBCBPhPw">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziIdbcnEeKeLJDBCBPhPw" name="nodeMap" type="_AziIeLcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziIhbcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIdrcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AziId7cnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziIeLcnEeKeLJDBCBPhPw" name="NodeEntry">
+      <ownedAttribute xmi:id="_AziIebcnEeKeLJDBCBPhPw" name="value" visibility="public" type="_AziIfbcnEeKeLJDBCBPhPw" isOrdered="true">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIercnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:InstanceValue" xmi:id="_AziIe7cnEeKeLJDBCBPhPw" type="_AziIfbcnEeKeLJDBCBPhPw" instance="_AziIgLcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziIfLcnEeKeLJDBCBPhPw" name="key" type="_AziHbrcnEeKeLJDBCBPhPw" isOrdered="true" association="_AziIg7cnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Enumeration" xmi:id="_AziIfbcnEeKeLJDBCBPhPw" name="Alignment">
+      <ownedLiteral xmi:id="_AziIfrcnEeKeLJDBCBPhPw" name="Left"/>
+      <ownedLiteral xmi:id="_AziIf7cnEeKeLJDBCBPhPw" name="Right"/>
+      <ownedLiteral xmi:id="_AziIgLcnEeKeLJDBCBPhPw" name="Center"/>
+      <ownedLiteral xmi:id="_AziIgbcnEeKeLJDBCBPhPw" name="Top"/>
+      <ownedLiteral xmi:id="_AziIgrcnEeKeLJDBCBPhPw" name="Bottom"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_AziIg7cnEeKeLJDBCBPhPw" memberEnd="_AziIfLcnEeKeLJDBCBPhPw _AziIhLcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_AziIhLcnEeKeLJDBCBPhPw" type="_AziIeLcnEeKeLJDBCBPhPw" association="_AziIg7cnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_AziIhbcnEeKeLJDBCBPhPw" memberEnd="_AziIdbcnEeKeLJDBCBPhPw _AziIhrcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_AziIhrcnEeKeLJDBCBPhPw" type="_AziIcbcnEeKeLJDBCBPhPw" association="_AziIhbcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_AziIh7cnEeKeLJDBCBPhPw" memberEnd="_AziIarcnEeKeLJDBCBPhPw _AziIiLcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_AziIiLcnEeKeLJDBCBPhPw" type="_AziIabcnEeKeLJDBCBPhPw" association="_AziIh7cnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_AziIibcnEeKeLJDBCBPhPw" memberEnd="_AziIbbcnEeKeLJDBCBPhPw _AziIircnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_AziIircnEeKeLJDBCBPhPw" type="_AziIabcnEeKeLJDBCBPhPw" association="_AziIibcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziIi7cnEeKeLJDBCBPhPw" clientDependency="_AziIlLcnEeKeLJDBCBPhPw" name="FilteringStyle">
+      <ownedAttribute xmi:id="_AziIjLcnEeKeLJDBCBPhPw" name="filtering" visibility="public" type="_AziICbcnEeKeLJDBCBPhPw" isOrdered="true">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIjbcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:InstanceValue" xmi:id="_AziIjrcnEeKeLJDBCBPhPw" type="_AziICbcnEeKeLJDBCBPhPw" instance="_AziICrcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziIj7cnEeKeLJDBCBPhPw" name="filteringKeys" visibility="public" type="_AziIlbcnEeKeLJDBCBPhPw" isOrdered="true">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIkLcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziIkbcnEeKeLJDBCBPhPw" name="filteredObjects" isOrdered="true" association="_AziIlrcnEeKeLJDBCBPhPw">
+        <type xmi:type="uml:Class" href="ecore.uml#_A45IwbcnEeKeLJDBCBPhPw"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIkrcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AziIk7cnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <interfaceRealization xmi:id="_AziIlLcnEeKeLJDBCBPhPw" client="_AziIi7cnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_AziIlbcnEeKeLJDBCBPhPw" name="FilterKeyList"/>
+    <packagedElement xmi:type="uml:Association" xmi:id="_AziIlrcnEeKeLJDBCBPhPw" memberEnd="_AziIkbcnEeKeLJDBCBPhPw _AziIl7cnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_AziIl7cnEeKeLJDBCBPhPw" type="_AziIi7cnEeKeLJDBCBPhPw" association="_AziIlrcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Enumeration" xmi:id="_AziImLcnEeKeLJDBCBPhPw" name="SortingDirection">
+      <ownedLiteral xmi:id="_AziImbcnEeKeLJDBCBPhPw" name="Ascending"/>
+      <ownedLiteral xmi:id="_AziImrcnEeKeLJDBCBPhPw" name="Descending"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziIm7cnEeKeLJDBCBPhPw" name="DiagramStyle">
+      <generalization xmi:id="_AziInLcnEeKeLJDBCBPhPw" general="_AziIVrcnEeKeLJDBCBPhPw"/>
+      <generalization xmi:id="_AziInbcnEeKeLJDBCBPhPw" general="_AziIabcnEeKeLJDBCBPhPw"/>
+      <generalization xmi:id="_AziInrcnEeKeLJDBCBPhPw" general="_AziH7LcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziIn7cnEeKeLJDBCBPhPw" clientDependency="_AziIp7cnEeKeLJDBCBPhPw" name="ImageStyle">
+      <ownedAttribute xmi:id="_AziIoLcnEeKeLJDBCBPhPw" name="antiAlias" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBooleanObject"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIobcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_AziIorcnEeKeLJDBCBPhPw" value="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBooleanObject"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziIo7cnEeKeLJDBCBPhPw" name="maintainAspectRatio" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBooleanObject"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIpLcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_AziIpbcnEeKeLJDBCBPhPw" value="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBooleanObject"/>
+        </defaultValue>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziIprcnEeKeLJDBCBPhPw" name="cropBound" type="_AziIAbcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziIqLcnEeKeLJDBCBPhPw"/>
+      <interfaceRealization xmi:id="_AziIp7cnEeKeLJDBCBPhPw" client="_AziIn7cnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_AziIqLcnEeKeLJDBCBPhPw" memberEnd="_AziIprcnEeKeLJDBCBPhPw _AziIqbcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_AziIqbcnEeKeLJDBCBPhPw" type="_AziIn7cnEeKeLJDBCBPhPw" association="_AziIqLcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziIqrcnEeKeLJDBCBPhPw" name="ImageBufferStyle">
+      <generalization xmi:id="_AziIq7cnEeKeLJDBCBPhPw" general="_AziIn7cnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_AziIrLcnEeKeLJDBCBPhPw" name="imageBuffer" type="_AziIRbcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziIrbcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_AziIrbcnEeKeLJDBCBPhPw" memberEnd="_AziIrLcnEeKeLJDBCBPhPw _AziIrrcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_AziIrrcnEeKeLJDBCBPhPw" type="_AziIqrcnEeKeLJDBCBPhPw" association="_AziIrbcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziIr7cnEeKeLJDBCBPhPw" name="PropertiesSetStyle">
+      <generalization xmi:id="_AziIsLcnEeKeLJDBCBPhPw" general="_AziHercnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_AziIsbcnEeKeLJDBCBPhPw" name="propertiesMap" type="_AziI2rcnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziI_LcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIsrcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AziIs7cnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <ownedOperation xmi:id="_AziItLcnEeKeLJDBCBPhPw" name="getProperty" visibility="public">
+        <ownedParameter xmi:id="_AziItbcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziItrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_AziIt7cnEeKeLJDBCBPhPw" name="propertyName" isOrdered="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIuLcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_AziIubcnEeKeLJDBCBPhPw" name="setProperty" visibility="public">
+        <ownedParameter xmi:id="_AziIurcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIu7cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_AziIvLcnEeKeLJDBCBPhPw" name="propertyName" isOrdered="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIvbcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_AziIvrcnEeKeLJDBCBPhPw" name="newValue" isOrdered="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIv7cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_AziIwLcnEeKeLJDBCBPhPw" name="createProperty" visibility="public">
+        <ownedParameter xmi:id="_AziIwbcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIwrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_AziIw7cnEeKeLJDBCBPhPw" name="propertyName" isOrdered="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIxLcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_AziIxbcnEeKeLJDBCBPhPw" name="instanceType" isOrdered="true">
+          <type xmi:type="uml:Class" href="ecore.uml#_A45J37cnEeKeLJDBCBPhPw"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIxrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_AziIx7cnEeKeLJDBCBPhPw" name="initialValue" isOrdered="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIyLcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_AziIybcnEeKeLJDBCBPhPw" name="removeProperty" visibility="public">
+        <ownedParameter xmi:id="_AziIyrcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIy7cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_AziIzLcnEeKeLJDBCBPhPw" name="propertyName" isOrdered="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziIzbcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_AziIzrcnEeKeLJDBCBPhPw" name="hasProperty" visibility="public">
+        <ownedParameter xmi:id="_AziIz7cnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI0LcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_AziI0bcnEeKeLJDBCBPhPw" name="propertyName" isOrdered="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI0rcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_AziI07cnEeKeLJDBCBPhPw" name="createProperty" visibility="public">
+        <ownedParameter xmi:id="_AziI1LcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI1bcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_AziI1rcnEeKeLJDBCBPhPw" name="propertyName" isOrdered="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI17cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_AziI2LcnEeKeLJDBCBPhPw" name="initialValue" isOrdered="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI2bcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziI2rcnEeKeLJDBCBPhPw" name="StringToPropertyValueMapEntry">
+      <ownedAttribute xmi:id="_AziI27cnEeKeLJDBCBPhPw" name="key" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI3LcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziI3bcnEeKeLJDBCBPhPw" name="value" type="_AziI37cnEeKeLJDBCBPhPw" isOrdered="true" aggregation="composite" association="_AziI-rcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI3rcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziI37cnEeKeLJDBCBPhPw" clientDependency="_AziI5LcnEeKeLJDBCBPhPw" name="PropertyValue">
+      <ownedAttribute xmi:id="_AziI4LcnEeKeLJDBCBPhPw" name="rawValue" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI4bcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_AziI4rcnEeKeLJDBCBPhPw" name="instanceType" isOrdered="true" association="_AziI-LcnEeKeLJDBCBPhPw">
+        <type xmi:type="uml:Class" href="ecore.uml#_A45J37cnEeKeLJDBCBPhPw"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI47cnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <interfaceRealization xmi:id="_AziI5LcnEeKeLJDBCBPhPw" client="_AziI37cnEeKeLJDBCBPhPw" supplier="_AziI7bcnEeKeLJDBCBPhPw" contract="_AziI7bcnEeKeLJDBCBPhPw"/>
+      <ownedOperation xmi:id="_AziI5bcnEeKeLJDBCBPhPw" name="getValue" visibility="public">
+        <ownedParameter xmi:id="_AziI5rcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI57cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_AziI6LcnEeKeLJDBCBPhPw" name="setValue" visibility="public">
+        <ownedParameter xmi:id="_AziI6bcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI6rcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_AziI67cnEeKeLJDBCBPhPw" name="newValue" isOrdered="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI7LcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Interface" xmi:id="_AziI7bcnEeKeLJDBCBPhPw" name="StringObjectConverter">
+      <ownedOperation xmi:id="_AziI7rcnEeKeLJDBCBPhPw" name="getStringFromObject" visibility="public">
+        <ownedParameter xmi:id="_AziI77cnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI8LcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_AziI8bcnEeKeLJDBCBPhPw" name="objectValue" isOrdered="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI8rcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_AziI87cnEeKeLJDBCBPhPw" name="getObjectFromString" visibility="public">
+        <ownedParameter xmi:id="_AziI9LcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI9bcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_AziI9rcnEeKeLJDBCBPhPw" name="stringValue" isOrdered="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziI97cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_AziI-LcnEeKeLJDBCBPhPw" memberEnd="_AziI4rcnEeKeLJDBCBPhPw _AziI-bcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_AziI-bcnEeKeLJDBCBPhPw" type="_AziI37cnEeKeLJDBCBPhPw" association="_AziI-LcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_AziI-rcnEeKeLJDBCBPhPw" memberEnd="_AziI3bcnEeKeLJDBCBPhPw _AziI-7cnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_AziI-7cnEeKeLJDBCBPhPw" type="_AziI2rcnEeKeLJDBCBPhPw" association="_AziI-rcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_AziI_LcnEeKeLJDBCBPhPw" memberEnd="_AziIsbcnEeKeLJDBCBPhPw _AziI_bcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_AziI_bcnEeKeLJDBCBPhPw" type="_AziIr7cnEeKeLJDBCBPhPw" association="_AziI_LcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_AziI_rcnEeKeLJDBCBPhPw" name="SingleValueStyle">
+      <generalization xmi:id="_AziI_7cnEeKeLJDBCBPhPw" general="_Azr4KLcnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_AziJALcnEeKeLJDBCBPhPw" name="rawValue" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AziJAbcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedOperation xmi:id="_Azr4ILcnEeKeLJDBCBPhPw" name="getValue" visibility="public">
+        <ownedParameter xmi:id="_Azr4IbcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4IrcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_Azr4I7cnEeKeLJDBCBPhPw" name="setValue" visibility="public">
+        <ownedParameter xmi:id="_Azr4JLcnEeKeLJDBCBPhPw" isOrdered="true" direction="return">
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4JbcnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+        <ownedParameter xmi:id="_Azr4JrcnEeKeLJDBCBPhPw" name="newValue" isOrdered="true">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EJavaObject"/>
+          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4J7cnEeKeLJDBCBPhPw"/>
+        </ownedParameter>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Azr4KLcnEeKeLJDBCBPhPw" clientDependency="_Azr4LLcnEeKeLJDBCBPhPw" name="DataTypeStyle">
+      <generalization xmi:id="_Azr4KbcnEeKeLJDBCBPhPw" general="_AziHercnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_Azr4KrcnEeKeLJDBCBPhPw" name="instanceType" isOrdered="true" association="_Azr4LbcnEeKeLJDBCBPhPw">
+        <type xmi:type="uml:Class" href="ecore.uml#_A45J37cnEeKeLJDBCBPhPw"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4K7cnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <interfaceRealization xmi:id="_Azr4LLcnEeKeLJDBCBPhPw" client="_Azr4KLcnEeKeLJDBCBPhPw" supplier="_AziI7bcnEeKeLJDBCBPhPw" contract="_AziI7bcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_Azr4LbcnEeKeLJDBCBPhPw" memberEnd="_Azr4KrcnEeKeLJDBCBPhPw _Azr4LrcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_Azr4LrcnEeKeLJDBCBPhPw" type="_Azr4KLcnEeKeLJDBCBPhPw" association="_Azr4LbcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Azr4L7cnEeKeLJDBCBPhPw" name="ListValueStyle">
+      <generalization xmi:id="_Azr4MLcnEeKeLJDBCBPhPw" general="_Azr4KLcnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_Azr4MbcnEeKeLJDBCBPhPw" name="rawValuesList" visibility="public" isOrdered="true" isUnique="false">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4MrcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Azr4M7cnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Azr4NLcnEeKeLJDBCBPhPw" name="IntValueStyle">
+      <generalization xmi:id="_Azr4NbcnEeKeLJDBCBPhPw" general="_AziHercnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_Azr4NrcnEeKeLJDBCBPhPw" name="intValue" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4N7cnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Azr4OLcnEeKeLJDBCBPhPw" name="IntListValueStyle">
+      <generalization xmi:id="_Azr4ObcnEeKeLJDBCBPhPw" general="_AziHercnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_Azr4OrcnEeKeLJDBCBPhPw" name="intListValue" visibility="public" isOrdered="true" isUnique="false">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EInt"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4O7cnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Azr4PLcnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Azr4PbcnEeKeLJDBCBPhPw" name="BooleanValueStyle">
+      <generalization xmi:id="_Azr4PrcnEeKeLJDBCBPhPw" general="_AziHercnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_Azr4P7cnEeKeLJDBCBPhPw" name="booleanValue" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBoolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4QLcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Azr4QbcnEeKeLJDBCBPhPw" name="DoubleValueStyle">
+      <generalization xmi:id="_Azr4QrcnEeKeLJDBCBPhPw" general="_AziHercnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_Azr4Q7cnEeKeLJDBCBPhPw" name="doubleValue" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDouble"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4RLcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Azr4RbcnEeKeLJDBCBPhPw" name="DoubleListValueStyle">
+      <generalization xmi:id="_Azr4RrcnEeKeLJDBCBPhPw" general="_AziHercnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_Azr4R7cnEeKeLJDBCBPhPw" name="doubleListValue" visibility="public" isOrdered="true" isUnique="false">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDoubleObject"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4SLcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Azr4SbcnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Azr4SrcnEeKeLJDBCBPhPw" name="StringValueStyle">
+      <generalization xmi:id="_Azr4S7cnEeKeLJDBCBPhPw" general="_AziHercnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_Azr4TLcnEeKeLJDBCBPhPw" name="stringValue" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4TbcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Azr4TrcnEeKeLJDBCBPhPw" name="StringListValueStyle">
+      <generalization xmi:id="_Azr4T7cnEeKeLJDBCBPhPw" general="_AziHercnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_Azr4ULcnEeKeLJDBCBPhPw" name="stringListValue" visibility="public" isOrdered="true" isUnique="false">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4UbcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Azr4UrcnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Azr4U7cnEeKeLJDBCBPhPw" name="EObjectValueStyle">
+      <generalization xmi:id="_Azr4VLcnEeKeLJDBCBPhPw" general="_AziHercnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_Azr4VbcnEeKeLJDBCBPhPw" name="eObjectValue" isOrdered="true" association="_Azr4V7cnEeKeLJDBCBPhPw">
+        <type xmi:type="uml:Class" href="ecore.uml#_A45IwbcnEeKeLJDBCBPhPw"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4VrcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_Azr4V7cnEeKeLJDBCBPhPw" memberEnd="_Azr4VbcnEeKeLJDBCBPhPw _Azr4WLcnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_Azr4WLcnEeKeLJDBCBPhPw" type="_Azr4U7cnEeKeLJDBCBPhPw" association="_Azr4V7cnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Azr4WbcnEeKeLJDBCBPhPw" name="EObjectListValueStyle">
+      <generalization xmi:id="_Azr4WrcnEeKeLJDBCBPhPw" general="_AziHercnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_Azr4W7cnEeKeLJDBCBPhPw" name="eObjectListValue" isOrdered="true" association="_Azr4XrcnEeKeLJDBCBPhPw">
+        <type xmi:type="uml:Class" href="ecore.uml#_A45IwbcnEeKeLJDBCBPhPw"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4XLcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Azr4XbcnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_Azr4XrcnEeKeLJDBCBPhPw" memberEnd="_Azr4W7cnEeKeLJDBCBPhPw _Azr4X7cnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_Azr4X7cnEeKeLJDBCBPhPw" type="_Azr4WbcnEeKeLJDBCBPhPw" association="_Azr4XrcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Azr4YLcnEeKeLJDBCBPhPw" name="ByteArrayValueStyle">
+      <generalization xmi:id="_Azr4YbcnEeKeLJDBCBPhPw" general="_AziHercnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_Azr4YrcnEeKeLJDBCBPhPw" name="byteArrayValue" visibility="public" isOrdered="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByteArray"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4Y7cnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Azr4ZLcnEeKeLJDBCBPhPw" name="BooleanListValueStyle">
+      <generalization xmi:id="_Azr4ZbcnEeKeLJDBCBPhPw" general="_AziHercnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_Azr4ZrcnEeKeLJDBCBPhPw" name="booleanListValue" visibility="public" isOrdered="true" isUnique="false">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EBooleanObject"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4Z7cnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Azr4aLcnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Azr4abcnEeKeLJDBCBPhPw" clientDependency="_Azr4bbcnEeKeLJDBCBPhPw" name="HintedDiagramLinkStyle">
+      <generalization xmi:id="_Azr4arcnEeKeLJDBCBPhPw" general="_Azr4brcnEeKeLJDBCBPhPw"/>
+      <ownedAttribute xmi:id="_Azr4a7cnEeKeLJDBCBPhPw" 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="_Azr4bLcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <interfaceRealization xmi:id="_Azr4bbcnEeKeLJDBCBPhPw" client="_Azr4abcnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Azr4brcnEeKeLJDBCBPhPw" clientDependency="_Azr4cbcnEeKeLJDBCBPhPw" name="DiagramLinkStyle">
+      <ownedAttribute xmi:id="_Azr4b7cnEeKeLJDBCBPhPw" name="diagramLink" type="_AziHhrcnEeKeLJDBCBPhPw" isOrdered="true" association="_Azr4crcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4cLcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <interfaceRealization xmi:id="_Azr4cbcnEeKeLJDBCBPhPw" client="_Azr4brcnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_Azr4crcnEeKeLJDBCBPhPw" memberEnd="_Azr4b7cnEeKeLJDBCBPhPw _Azr4c7cnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_Azr4c7cnEeKeLJDBCBPhPw" type="_Azr4brcnEeKeLJDBCBPhPw" association="_Azr4crcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Azr4dLcnEeKeLJDBCBPhPw" clientDependency="_Azr4eLcnEeKeLJDBCBPhPw" name="MultiDiagramLinkStyle">
+      <ownedAttribute xmi:id="_Azr4dbcnEeKeLJDBCBPhPw" name="diagramLinks" type="_AziHhrcnEeKeLJDBCBPhPw" isOrdered="true" association="_Azr4ebcnEeKeLJDBCBPhPw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4drcnEeKeLJDBCBPhPw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Azr4d7cnEeKeLJDBCBPhPw" value="*"/>
+      </ownedAttribute>
+      <interfaceRealization xmi:id="_Azr4eLcnEeKeLJDBCBPhPw" client="_Azr4dLcnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_Azr4ebcnEeKeLJDBCBPhPw" memberEnd="_Azr4dbcnEeKeLJDBCBPhPw _Azr4ercnEeKeLJDBCBPhPw">
+      <ownedEnd xmi:id="_Azr4ercnEeKeLJDBCBPhPw" type="_Azr4dLcnEeKeLJDBCBPhPw" association="_Azr4ebcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Enumeration" xmi:id="_Azr4e7cnEeKeLJDBCBPhPw" name="TextAlignment">
+      <ownedLiteral xmi:id="_Azr4fLcnEeKeLJDBCBPhPw" name="Left"/>
+      <ownedLiteral xmi:id="_Azr4fbcnEeKeLJDBCBPhPw" name="Right"/>
+      <ownedLiteral xmi:id="_Azr4frcnEeKeLJDBCBPhPw" name="Center"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Azr4f7cnEeKeLJDBCBPhPw" clientDependency="_Azr4g7cnEeKeLJDBCBPhPw" name="TextStyle">
+      <ownedAttribute xmi:id="_Azr4gLcnEeKeLJDBCBPhPw" name="textAlignment" visibility="public" type="_Azr4e7cnEeKeLJDBCBPhPw" isOrdered="true">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4gbcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:InstanceValue" xmi:id="_Azr4grcnEeKeLJDBCBPhPw" type="_Azr4e7cnEeKeLJDBCBPhPw" instance="_Azr4fLcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <interfaceRealization xmi:id="_Azr4g7cnEeKeLJDBCBPhPw" client="_Azr4f7cnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Enumeration" xmi:id="_Azr4hLcnEeKeLJDBCBPhPw" name="LineType">
+      <ownedLiteral xmi:id="_Azr4hbcnEeKeLJDBCBPhPw" name="Solid"/>
+      <ownedLiteral xmi:id="_Azr4hrcnEeKeLJDBCBPhPw" name="Dash"/>
+      <ownedLiteral xmi:id="_Azr4h7cnEeKeLJDBCBPhPw" name="Dot"/>
+      <ownedLiteral xmi:id="_Azr4iLcnEeKeLJDBCBPhPw" name="DashDot"/>
+      <ownedLiteral xmi:id="_Azr4ibcnEeKeLJDBCBPhPw" name="DashDotDot"/>
+      <ownedLiteral xmi:id="_Azr4ircnEeKeLJDBCBPhPw" name="Double"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Azr4i7cnEeKeLJDBCBPhPw" clientDependency="_Azr4j7cnEeKeLJDBCBPhPw" name="LineTypeStyle">
+      <ownedAttribute xmi:id="_Azr4jLcnEeKeLJDBCBPhPw" name="lineType" visibility="public" type="_Azr4hLcnEeKeLJDBCBPhPw" isOrdered="true">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4jbcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:InstanceValue" xmi:id="_Azr4jrcnEeKeLJDBCBPhPw" type="_Azr4hLcnEeKeLJDBCBPhPw" instance="_Azr4hbcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <interfaceRealization xmi:id="_Azr4j7cnEeKeLJDBCBPhPw" client="_Azr4i7cnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Enumeration" xmi:id="_Azr4kLcnEeKeLJDBCBPhPw" name="ArrowType">
+      <ownedLiteral xmi:id="_Azr4kbcnEeKeLJDBCBPhPw" name="None"/>
+      <ownedLiteral xmi:id="_Azr4krcnEeKeLJDBCBPhPw" name="OpenArrow"/>
+      <ownedLiteral xmi:id="_Azr4k7cnEeKeLJDBCBPhPw" name="SolidArrow"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Azr4lLcnEeKeLJDBCBPhPw" clientDependency="_Azr4m7cnEeKeLJDBCBPhPw" name="ArrowStyle">
+      <ownedAttribute xmi:id="_Azr4lbcnEeKeLJDBCBPhPw" name="arrowSource" visibility="public" type="_Azr4kLcnEeKeLJDBCBPhPw" isOrdered="true">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4lrcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:InstanceValue" xmi:id="_Azr4l7cnEeKeLJDBCBPhPw" type="_Azr4kLcnEeKeLJDBCBPhPw" instance="_Azr4kbcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_Azr4mLcnEeKeLJDBCBPhPw" name="arrowTarget" visibility="public" type="_Azr4kLcnEeKeLJDBCBPhPw" isOrdered="true">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Azr4mbcnEeKeLJDBCBPhPw"/>
+        <defaultValue xmi:type="uml:InstanceValue" xmi:id="_Azr4mrcnEeKeLJDBCBPhPw" type="_Azr4kLcnEeKeLJDBCBPhPw" instance="_Azr4kbcnEeKeLJDBCBPhPw"/>
+      </ownedAttribute>
+      <interfaceRealization xmi:id="_Azr4m7cnEeKeLJDBCBPhPw" client="_Azr4lLcnEeKeLJDBCBPhPw" supplier="_AziHbbcnEeKeLJDBCBPhPw" contract="_AziHbbcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Azr4nLcnEeKeLJDBCBPhPw" name="Shape">
+      <generalization xmi:id="_Azr4nbcnEeKeLJDBCBPhPw" general="_AziHbrcnEeKeLJDBCBPhPw"/>
+      <generalization xmi:id="_Azr4nrcnEeKeLJDBCBPhPw" general="_AziITbcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Azr4n7cnEeKeLJDBCBPhPw" name="Compartment">
+      <generalization xmi:id="_Azr4oLcnEeKeLJDBCBPhPw" general="_Azr4o7cnEeKeLJDBCBPhPw"/>
+      <generalization xmi:id="_Azr4obcnEeKeLJDBCBPhPw" general="_AziISLcnEeKeLJDBCBPhPw"/>
+      <generalization xmi:id="_Azr4orcnEeKeLJDBCBPhPw" general="_AziH1rcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Azr4o7cnEeKeLJDBCBPhPw" name="BasicCompartment">
+      <generalization xmi:id="_Azr4pLcnEeKeLJDBCBPhPw" general="_Azr4prcnEeKeLJDBCBPhPw"/>
+      <generalization xmi:id="_Azr4pbcnEeKeLJDBCBPhPw" general="_AziIZLcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Azr4prcnEeKeLJDBCBPhPw" name="DecorationNode">
+      <generalization xmi:id="_Azr4p7cnEeKeLJDBCBPhPw" general="_Azr4qLcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Azr4qLcnEeKeLJDBCBPhPw" name="BasicDecorationNode">
+      <generalization xmi:id="_Azr4qbcnEeKeLJDBCBPhPw" general="_AziHbrcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Azr4qrcnEeKeLJDBCBPhPw" name="ListCompartment">
+      <generalization xmi:id="_Azr4q7cnEeKeLJDBCBPhPw" general="_Azr4o7cnEeKeLJDBCBPhPw"/>
+      <generalization xmi:id="_Azr4rLcnEeKeLJDBCBPhPw" general="_AziH27cnEeKeLJDBCBPhPw"/>
+      <generalization xmi:id="_Azr4rbcnEeKeLJDBCBPhPw" general="_AziIi7cnEeKeLJDBCBPhPw"/>
+      <generalization xmi:id="_Azr4rrcnEeKeLJDBCBPhPw" general="_AziH1rcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Azr4r7cnEeKeLJDBCBPhPw" name="Connector">
+      <generalization xmi:id="_Azr4sLcnEeKeLJDBCBPhPw" general="_AziHIbcnEeKeLJDBCBPhPw"/>
+      <generalization xmi:id="_Azr4sbcnEeKeLJDBCBPhPw" general="_AziIU7cnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Azr4srcnEeKeLJDBCBPhPw" name="StandardDiagram">
+      <generalization xmi:id="_Azr4s7cnEeKeLJDBCBPhPw" general="_AziHhrcnEeKeLJDBCBPhPw"/>
+      <generalization xmi:id="_Azr4tLcnEeKeLJDBCBPhPw" general="_AziIm7cnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Azr4tbcnEeKeLJDBCBPhPw" name="BasicSemanticCompartment">
+      <generalization xmi:id="_Azr4trcnEeKeLJDBCBPhPw" general="_Azr4qLcnEeKeLJDBCBPhPw"/>
+      <generalization xmi:id="_Azr4t7cnEeKeLJDBCBPhPw" general="_AziIZLcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Azr4uLcnEeKeLJDBCBPhPw" name="SemanticListCompartment">
+      <generalization xmi:id="_Azr4ubcnEeKeLJDBCBPhPw" general="_Azr4tbcnEeKeLJDBCBPhPw"/>
+      <generalization xmi:id="_Azr4urcnEeKeLJDBCBPhPw" general="_AziH27cnEeKeLJDBCBPhPw"/>
+      <generalization xmi:id="_Azr4u7cnEeKeLJDBCBPhPw" general="_AziIi7cnEeKeLJDBCBPhPw"/>
+      <generalization xmi:id="_Azr4vLcnEeKeLJDBCBPhPw" general="_AziH1rcnEeKeLJDBCBPhPw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Enumeration" xmi:id="_Azr4vbcnEeKeLJDBCBPhPw" name="GradientStyle">
+      <ownedLiteral xmi:id="_Azr4vrcnEeKeLJDBCBPhPw" name="Vertical"/>
+      <ownedLiteral xmi:id="_Azr4v7cnEeKeLJDBCBPhPw" name="Horizontal"/>
+    </packagedElement>
+    <profileApplication xmi:id="_Azr4wLcnEeKeLJDBCBPhPw">
+      <eAnnotations xmi:id="_Azr4wbcnEeKeLJDBCBPhPw" 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="_Azr4wrcnEeKeLJDBCBPhPw" base_Package="_AziHILcnEeKeLJDBCBPhPw" nsPrefix="notation"/>
+  <Ecore:EClass xmi:id="_Azr4w7cnEeKeLJDBCBPhPw" base_Class="_AziHIbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_Azr4xLcnEeKeLJDBCBPhPw" base_Property="_AziHI7cnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+  <Ecore:EReference xmi:id="_Azr4xbcnEeKeLJDBCBPhPw" base_Property="_AziHJLcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+  <Ecore:EReference xmi:id="_Azr4xrcnEeKeLJDBCBPhPw" base_Property="_AziHJbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_Azr4x7cnEeKeLJDBCBPhPw" base_Property="_AziHJ7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_Azr4yLcnEeKeLJDBCBPhPw" base_Property="_AziHKbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_Azr4ybcnEeKeLJDBCBPhPw" base_Operation="_AziHK7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_Azr4yrcnEeKeLJDBCBPhPw" base_Parameter="_AziHLrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_Azr4y7cnEeKeLJDBCBPhPw" base_Operation="_AziHMLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_Azr4zLcnEeKeLJDBCBPhPw" base_Parameter="_AziHM7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_Azr4zbcnEeKeLJDBCBPhPw" base_Operation="_AziHNbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_Azr4zrcnEeKeLJDBCBPhPw" base_Parameter="_AziHOLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Azr4z7cnEeKeLJDBCBPhPw" base_Class="_AziHOrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_Azr40LcnEeKeLJDBCBPhPw" isTransient="true" base_Property="_AziHRbcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+  <Ecore:EReference xmi:id="_Azr40bcnEeKeLJDBCBPhPw" isTransient="true" base_Property="_AziHSLcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+  <Ecore:EReference xmi:id="_Azr40rcnEeKeLJDBCBPhPw" base_Property="_AziHS7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_Azr407cnEeKeLJDBCBPhPw" base_Property="_AziHTrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_Azr41LcnEeKeLJDBCBPhPw" isUnsettable="true" base_Property="_AziHUbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_Azr41bcnEeKeLJDBCBPhPw" isTransient="true" isVolatile="true" base_Property="_AziHU7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_Azr41rcnEeKeLJDBCBPhPw" isTransient="true" base_Property="_AziHVLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_Azr417cnEeKeLJDBCBPhPw" base_Operation="_AziHV7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_Azr42LcnEeKeLJDBCBPhPw" base_Parameter="_AziHWrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_Azr42bcnEeKeLJDBCBPhPw" base_Operation="_AziHXLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_Azr42rcnEeKeLJDBCBPhPw" base_Parameter="_AziHX7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_Azr427cnEeKeLJDBCBPhPw" base_Operation="_AziHYbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_Azr43LcnEeKeLJDBCBPhPw" base_Parameter="_AziHZLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_Azr43bcnEeKeLJDBCBPhPw" base_Operation="_AziHZrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_Azr43rcnEeKeLJDBCBPhPw" base_Parameter="_AziHabcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_Azr437cnEeKeLJDBCBPhPw" base_Parameter="_AziHa7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Azr44LcnEeKeLJDBCBPhPw" base_Interface="_AziHbbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Azr44bcnEeKeLJDBCBPhPw" base_Class="_AziHbrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_Azr44rcnEeKeLJDBCBPhPw" base_Property="_AziHcLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_Azr447cnEeKeLJDBCBPhPw" base_Operation="_AziHcrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_Azr45LcnEeKeLJDBCBPhPw" base_Parameter="_AziHdbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Azr45bcnEeKeLJDBCBPhPw" base_Interface="_AziHd7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Azr45rcnEeKeLJDBCBPhPw" base_Class="_AziHercnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Azr457cnEeKeLJDBCBPhPw" base_Class="_AziHhrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_Azr46LcnEeKeLJDBCBPhPw" base_Property="_AziHjrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_Azr46bcnEeKeLJDBCBPhPw" isTransient="true" base_Property="_AziHkbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_Azr46rcnEeKeLJDBCBPhPw" base_Operation="_AziHlLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_Azr467cnEeKeLJDBCBPhPw" base_Parameter="_AziHl7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EEnum xmi:id="_Azr47LcnEeKeLJDBCBPhPw" base_Enumeration="_AziHmbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EEnumLiteral xmi:id="_Azr47bcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziHmrcnEeKeLJDBCBPhPw" literal="Himetric"/>
+  <Ecore:EEnumLiteral xmi:id="_Azr47rcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziHm7cnEeKeLJDBCBPhPw" literal="Pixel"/>
+  <Ecore:EClass xmi:id="_Azr477cnEeKeLJDBCBPhPw" base_Interface="_AziHpLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Azr48LcnEeKeLJDBCBPhPw" base_Interface="_AziHpbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Azr48bcnEeKeLJDBCBPhPw" base_Class="_AziHrLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_Azr48rcnEeKeLJDBCBPhPw" instanceClassName="org.eclipse.gmf.runtime.notation.datatype.GradientData" base_PrimitiveType="_AziHtrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Azr487cnEeKeLJDBCBPhPw" base_Class="_AziHt7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Azr49LcnEeKeLJDBCBPhPw" base_Class="_AziHv7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Azr49bcnEeKeLJDBCBPhPw" base_Class="_AziH1rcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Azr49rcnEeKeLJDBCBPhPw" base_Class="_AziH27cnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_Azr497cnEeKeLJDBCBPhPw" base_Property="_AziH4bcnEeKeLJDBCBPhPw"/>
+  <Ecore:EEnum xmi:id="_Azr4-LcnEeKeLJDBCBPhPw" base_Enumeration="_AziH5bcnEeKeLJDBCBPhPw"/>
+  <Ecore:EEnumLiteral xmi:id="_Azr4-bcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziH5rcnEeKeLJDBCBPhPw" literal="None"/>
+  <Ecore:EEnumLiteral xmi:id="_Azr4-rcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziH57cnEeKeLJDBCBPhPw" literal="Manual"/>
+  <Ecore:EEnumLiteral xmi:id="_Azr4-7cnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziH6LcnEeKeLJDBCBPhPw" literal="Automatic"/>
+  <Ecore:EDataType xmi:id="_Azr4_LcnEeKeLJDBCBPhPw" instanceClassName="java.util.Map" base_PrimitiveType="_AziH6bcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Azr4_bcnEeKeLJDBCBPhPw" base_Class="_AziH7LcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Azr4_rcnEeKeLJDBCBPhPw" base_Class="_AziH8bcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Azr4_7cnEeKeLJDBCBPhPw" base_Class="_AziH-bcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Azr5ALcnEeKeLJDBCBPhPw" base_Class="_AziIAbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Azr5AbcnEeKeLJDBCBPhPw" base_Class="_AziIBLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EEnum xmi:id="_Azr5ArcnEeKeLJDBCBPhPw" base_Enumeration="_AziICbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EEnumLiteral xmi:id="_Azr5A7cnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziICrcnEeKeLJDBCBPhPw" literal="None"/>
+  <Ecore:EEnumLiteral xmi:id="_Azr5BLcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIC7cnEeKeLJDBCBPhPw" literal="Manual"/>
+  <Ecore:EEnumLiteral xmi:id="_Azr5BbcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIDLcnEeKeLJDBCBPhPw" literal="Automatic"/>
+  <Ecore:EClass xmi:id="_Azr5BrcnEeKeLJDBCBPhPw" base_Class="_AziIDbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EEnum xmi:id="_Azr5B7cnEeKeLJDBCBPhPw" base_Enumeration="_AziIErcnEeKeLJDBCBPhPw"/>
+  <Ecore:EEnumLiteral xmi:id="_Azr5CLcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIE7cnEeKeLJDBCBPhPw" literal="Manual"/>
+  <Ecore:EEnumLiteral xmi:id="_Azr5CbcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIFLcnEeKeLJDBCBPhPw" literal="Rectilinear"/>
+  <Ecore:EEnumLiteral xmi:id="_Azr5CrcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIFbcnEeKeLJDBCBPhPw" literal="Tree"/>
+  <Ecore:EEnum xmi:id="_Azr5C7cnEeKeLJDBCBPhPw" base_Enumeration="_AziIFrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EEnumLiteral xmi:id="_Azr5DLcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIF7cnEeKeLJDBCBPhPw" literal="None"/>
+  <Ecore:EEnumLiteral xmi:id="_Azr5DbcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIGLcnEeKeLJDBCBPhPw" literal="Normal"/>
+  <Ecore:EEnumLiteral xmi:id="_Azr5DrcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIGbcnEeKeLJDBCBPhPw" literal="Less"/>
+  <Ecore:EEnumLiteral xmi:id="_Azr5D7cnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIGrcnEeKeLJDBCBPhPw" literal="More"/>
+  <Ecore:EEnum xmi:id="_Azr5ELcnEeKeLJDBCBPhPw" base_Enumeration="_AziIG7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EEnumLiteral xmi:id="_Azr5EbcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIHLcnEeKeLJDBCBPhPw" literal="None"/>
+  <Ecore:EEnumLiteral xmi:id="_Azr5ErcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIHbcnEeKeLJDBCBPhPw" literal="All"/>
+  <Ecore:EEnumLiteral xmi:id="_Azr5E7cnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIHrcnEeKeLJDBCBPhPw" literal="Below"/>
+  <Ecore:EEnumLiteral xmi:id="_Azr5FLcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIH7cnEeKeLJDBCBPhPw" literal="Above"/>
+  <Ecore:EEnum xmi:id="_Azr5FbcnEeKeLJDBCBPhPw" base_Enumeration="_AziIILcnEeKeLJDBCBPhPw"/>
+  <Ecore:EEnumLiteral xmi:id="_Azr5FrcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIIbcnEeKeLJDBCBPhPw" literal="Semicircle"/>
+  <Ecore:EEnumLiteral xmi:id="_Azr5F7cnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIIrcnEeKeLJDBCBPhPw" literal="Square"/>
+  <Ecore:EEnumLiteral xmi:id="_Azr5GLcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziII7cnEeKeLJDBCBPhPw" literal="Chamfered"/>
+  <Ecore:EClass xmi:id="_Azr5GbcnEeKeLJDBCBPhPw" base_Class="_AziIJLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1pILcnEeKeLJDBCBPhPw" base_Class="_AziIO7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1pIbcnEeKeLJDBCBPhPw" base_Class="_AziIQLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_Az1pIrcnEeKeLJDBCBPhPw" instanceClassName="java.util.List" base_PrimitiveType="_AziIRLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1pI7cnEeKeLJDBCBPhPw" base_Class="_AziIRbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1pJLcnEeKeLJDBCBPhPw" base_Class="_AziISLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1pJbcnEeKeLJDBCBPhPw" base_Class="_AziITbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1pJrcnEeKeLJDBCBPhPw" base_Class="_AziIU7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1pJ7cnEeKeLJDBCBPhPw" base_Class="_AziIVrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1pKLcnEeKeLJDBCBPhPw" base_Class="_AziIZLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1pKbcnEeKeLJDBCBPhPw" base_Class="_AziIabcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_Az1pKrcnEeKeLJDBCBPhPw" base_Property="_AziIarcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+  <Ecore:EReference xmi:id="_Az1pK7cnEeKeLJDBCBPhPw" base_Property="_AziIbbcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+  <Ecore:EClass xmi:id="_Az1pLLcnEeKeLJDBCBPhPw" base_Class="_AziIcbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_Az1pLbcnEeKeLJDBCBPhPw" base_Property="_AziIdbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1pLrcnEeKeLJDBCBPhPw" instanceClassName="java.util.Map$Entry" base_Class="_AziIeLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_Az1pL7cnEeKeLJDBCBPhPw" base_Property="_AziIfLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EEnum xmi:id="_Az1pMLcnEeKeLJDBCBPhPw" base_Enumeration="_AziIfbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EEnumLiteral xmi:id="_Az1pMbcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIfrcnEeKeLJDBCBPhPw" literal="Left"/>
+  <Ecore:EEnumLiteral xmi:id="_Az1pMrcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIf7cnEeKeLJDBCBPhPw" literal="Right"/>
+  <Ecore:EEnumLiteral xmi:id="_Az1pM7cnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIgLcnEeKeLJDBCBPhPw" literal="Center"/>
+  <Ecore:EEnumLiteral xmi:id="_Az1pNLcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIgbcnEeKeLJDBCBPhPw" literal="Top"/>
+  <Ecore:EEnumLiteral xmi:id="_Az1pNbcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziIgrcnEeKeLJDBCBPhPw" literal="Bottom"/>
+  <Ecore:EClass xmi:id="_Az1pNrcnEeKeLJDBCBPhPw" base_Class="_AziIi7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_Az1pN7cnEeKeLJDBCBPhPw" base_Property="_AziIkbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EDataType xmi:id="_Az1pOLcnEeKeLJDBCBPhPw" instanceClassName="java.util.List" base_PrimitiveType="_AziIlbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EEnum xmi:id="_Az1pObcnEeKeLJDBCBPhPw" base_Enumeration="_AziImLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EEnumLiteral xmi:id="_Az1pOrcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziImbcnEeKeLJDBCBPhPw" literal="Ascending"/>
+  <Ecore:EEnumLiteral xmi:id="_Az1pO7cnEeKeLJDBCBPhPw" base_EnumerationLiteral="_AziImrcnEeKeLJDBCBPhPw" literal="Descending"/>
+  <Ecore:EClass xmi:id="_Az1pPLcnEeKeLJDBCBPhPw" base_Class="_AziIm7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1pPbcnEeKeLJDBCBPhPw" base_Class="_AziIn7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_Az1pPrcnEeKeLJDBCBPhPw" base_Property="_AziIprcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1pP7cnEeKeLJDBCBPhPw" base_Class="_AziIqrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_Az1pQLcnEeKeLJDBCBPhPw" base_Property="_AziIrLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1pQbcnEeKeLJDBCBPhPw" base_Class="_AziIr7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_Az1pQrcnEeKeLJDBCBPhPw" base_Property="_AziIsbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_Az1pQ7cnEeKeLJDBCBPhPw" base_Operation="_AziItLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_Az1pRLcnEeKeLJDBCBPhPw" base_Parameter="_AziIt7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_Az1pRbcnEeKeLJDBCBPhPw" base_Operation="_AziIubcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_Az1pRrcnEeKeLJDBCBPhPw" base_Parameter="_AziIvLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_Az1pR7cnEeKeLJDBCBPhPw" base_Parameter="_AziIvrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_Az1pSLcnEeKeLJDBCBPhPw" base_Operation="_AziIwLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_Az1pSbcnEeKeLJDBCBPhPw" base_Parameter="_AziIw7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_Az1pSrcnEeKeLJDBCBPhPw" base_Parameter="_AziIxbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_Az1pS7cnEeKeLJDBCBPhPw" base_Parameter="_AziIx7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_Az1pTLcnEeKeLJDBCBPhPw" base_Operation="_AziIybcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_Az1pTbcnEeKeLJDBCBPhPw" base_Parameter="_AziIzLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_Az1pTrcnEeKeLJDBCBPhPw" base_Operation="_AziIzrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_Az1pT7cnEeKeLJDBCBPhPw" base_Parameter="_AziI0bcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_Az1pULcnEeKeLJDBCBPhPw" base_Operation="_AziI07cnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_Az1pUbcnEeKeLJDBCBPhPw" base_Parameter="_AziI1rcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_Az1pUrcnEeKeLJDBCBPhPw" base_Parameter="_AziI2LcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1pU7cnEeKeLJDBCBPhPw" instanceClassName="java.util.Map$Entry" base_Class="_AziI2rcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_Az1pVLcnEeKeLJDBCBPhPw" base_Property="_AziI3bcnEeKeLJDBCBPhPw" isResolveProxies="false"/>
+  <Ecore:EClass xmi:id="_Az1pVbcnEeKeLJDBCBPhPw" base_Class="_AziI37cnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_Az1pVrcnEeKeLJDBCBPhPw" base_Property="_AziI4rcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_Az1pV7cnEeKeLJDBCBPhPw" base_Operation="_AziI5bcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_Az1pWLcnEeKeLJDBCBPhPw" base_Operation="_AziI6LcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_Az1pWbcnEeKeLJDBCBPhPw" base_Parameter="_AziI67cnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1pWrcnEeKeLJDBCBPhPw" base_Interface="_AziI7bcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_Az1pW7cnEeKeLJDBCBPhPw" base_Operation="_AziI7rcnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_Az1pXLcnEeKeLJDBCBPhPw" base_Parameter="_AziI8bcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_Az1pXbcnEeKeLJDBCBPhPw" base_Operation="_AziI87cnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_Az1pXrcnEeKeLJDBCBPhPw" base_Parameter="_AziI9rcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1pX7cnEeKeLJDBCBPhPw" base_Class="_AziI_rcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_Az1pYLcnEeKeLJDBCBPhPw" base_Operation="_Azr4ILcnEeKeLJDBCBPhPw"/>
+  <Ecore:EOperation xmi:id="_Az1pYbcnEeKeLJDBCBPhPw" base_Operation="_Azr4I7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EParameter xmi:id="_Az1pYrcnEeKeLJDBCBPhPw" base_Parameter="_Azr4JrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1pY7cnEeKeLJDBCBPhPw" base_Class="_Azr4KLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_Az1pZLcnEeKeLJDBCBPhPw" base_Property="_Azr4KrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1pZbcnEeKeLJDBCBPhPw" base_Class="_Azr4L7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1pZrcnEeKeLJDBCBPhPw" base_Class="_Azr4NLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1pZ7cnEeKeLJDBCBPhPw" base_Class="_Azr4OLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1paLcnEeKeLJDBCBPhPw" base_Class="_Azr4PbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1pabcnEeKeLJDBCBPhPw" base_Class="_Azr4QbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1parcnEeKeLJDBCBPhPw" base_Class="_Azr4RbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1pa7cnEeKeLJDBCBPhPw" base_Class="_Azr4SrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1pbLcnEeKeLJDBCBPhPw" base_Class="_Azr4TrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1pbbcnEeKeLJDBCBPhPw" base_Class="_Azr4U7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_Az1pbrcnEeKeLJDBCBPhPw" base_Property="_Azr4VbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1pb7cnEeKeLJDBCBPhPw" base_Class="_Azr4WbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_Az1pcLcnEeKeLJDBCBPhPw" base_Property="_Azr4W7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1pcbcnEeKeLJDBCBPhPw" base_Class="_Azr4YLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1pcrcnEeKeLJDBCBPhPw" base_Class="_Azr4ZLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1pc7cnEeKeLJDBCBPhPw" base_Class="_Azr4abcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1pdLcnEeKeLJDBCBPhPw" base_Class="_Azr4brcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_Az1pdbcnEeKeLJDBCBPhPw" base_Property="_Azr4b7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az1pdrcnEeKeLJDBCBPhPw" base_Class="_Azr4dLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EReference xmi:id="_Az1pd7cnEeKeLJDBCBPhPw" base_Property="_Azr4dbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EEnum xmi:id="_Az1peLcnEeKeLJDBCBPhPw" base_Enumeration="_Azr4e7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EEnumLiteral xmi:id="_Az1pebcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_Azr4fLcnEeKeLJDBCBPhPw" literal="Left"/>
+  <Ecore:EEnumLiteral xmi:id="_Az1percnEeKeLJDBCBPhPw" base_EnumerationLiteral="_Azr4fbcnEeKeLJDBCBPhPw" literal="Right"/>
+  <Ecore:EEnumLiteral xmi:id="_Az1pe7cnEeKeLJDBCBPhPw" base_EnumerationLiteral="_Azr4frcnEeKeLJDBCBPhPw" literal="Center"/>
+  <Ecore:EClass xmi:id="_Az1pfLcnEeKeLJDBCBPhPw" base_Class="_Azr4f7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EEnum xmi:id="_Az1pfbcnEeKeLJDBCBPhPw" base_Enumeration="_Azr4hLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EEnumLiteral xmi:id="_Az-zELcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_Azr4hbcnEeKeLJDBCBPhPw" literal="Solid"/>
+  <Ecore:EEnumLiteral xmi:id="_Az-zEbcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_Azr4hrcnEeKeLJDBCBPhPw" literal="Dash"/>
+  <Ecore:EEnumLiteral xmi:id="_Az-zErcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_Azr4h7cnEeKeLJDBCBPhPw" literal="Dot"/>
+  <Ecore:EEnumLiteral xmi:id="_Az-zE7cnEeKeLJDBCBPhPw" base_EnumerationLiteral="_Azr4iLcnEeKeLJDBCBPhPw" literal="DashDot"/>
+  <Ecore:EEnumLiteral xmi:id="_Az-zFLcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_Azr4ibcnEeKeLJDBCBPhPw" literal="DashDotDot"/>
+  <Ecore:EEnumLiteral xmi:id="_Az-zFbcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_Azr4ircnEeKeLJDBCBPhPw" literal="Double"/>
+  <Ecore:EClass xmi:id="_Az-zFrcnEeKeLJDBCBPhPw" base_Class="_Azr4i7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EEnum xmi:id="_Az-zF7cnEeKeLJDBCBPhPw" base_Enumeration="_Azr4kLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EEnumLiteral xmi:id="_Az-zGLcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_Azr4kbcnEeKeLJDBCBPhPw" literal="None"/>
+  <Ecore:EEnumLiteral xmi:id="_Az-zGbcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_Azr4krcnEeKeLJDBCBPhPw" literal="OpenArrow"/>
+  <Ecore:EEnumLiteral xmi:id="_Az-zGrcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_Azr4k7cnEeKeLJDBCBPhPw" literal="SolidArrow"/>
+  <Ecore:EClass xmi:id="_Az-zG7cnEeKeLJDBCBPhPw" base_Class="_Azr4lLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az-zHLcnEeKeLJDBCBPhPw" base_Class="_Azr4nLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az-zHbcnEeKeLJDBCBPhPw" base_Class="_Azr4n7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az-zHrcnEeKeLJDBCBPhPw" base_Class="_Azr4o7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az-zH7cnEeKeLJDBCBPhPw" base_Class="_Azr4prcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az-zILcnEeKeLJDBCBPhPw" base_Class="_Azr4qLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az-zIbcnEeKeLJDBCBPhPw" base_Class="_Azr4qrcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az-zIrcnEeKeLJDBCBPhPw" base_Class="_Azr4r7cnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az-zI7cnEeKeLJDBCBPhPw" base_Class="_Azr4srcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az-zJLcnEeKeLJDBCBPhPw" base_Class="_Azr4tbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EClass xmi:id="_Az-zJbcnEeKeLJDBCBPhPw" base_Class="_Azr4uLcnEeKeLJDBCBPhPw"/>
+  <Ecore:EEnum xmi:id="_Az-zJrcnEeKeLJDBCBPhPw" base_Enumeration="_Azr4vbcnEeKeLJDBCBPhPw"/>
+  <Ecore:EEnumLiteral xmi:id="_Az-zJ7cnEeKeLJDBCBPhPw" base_EnumerationLiteral="_Azr4vrcnEeKeLJDBCBPhPw" literal="Vertical"/>
+  <Ecore:EEnumLiteral xmi:id="_Az-zKLcnEeKeLJDBCBPhPw" base_EnumerationLiteral="_Azr4v7cnEeKeLJDBCBPhPw" literal="Horizontal"/>
+</xmi:XMI>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/plugin.properties b/layers/org.eclipse.papyrus.layers.stackmodel/plugin.properties
new file mode 100755
index 0000000..52b764e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/plugin.properties
@@ -0,0 +1,12 @@
+#################################################################################
+# 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 v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#     Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+##################################################################################
+pluginName=Layers Stacks Model (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/plugin.xml b/layers/org.eclipse.papyrus.layers.stackmodel/plugin.xml
new file mode 100755
index 0000000..9c4e347
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/plugin.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated layers -->
+      <package
+            uri="org.eclipse.papyrus.layers.0.10"
+            class="org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage"
+            genModel="model/layers.genmodel"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated layersconfig -->
+      <package
+            uri="org.eclipse.papyrus.layersconfig.0.10"
+            class="org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage"
+            genModel="model/layersconfig.genmodel"/>
+   </extension>
+
+</plugin>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/pom.xml b/layers/org.eclipse.papyrus.layers.stackmodel/pom.xml
new file mode 100755
index 0000000..5601ef5
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/pom.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.papyrus</groupId>
+		<artifactId>org.eclipse.papyrus.layers.parent</artifactId>
+		<version>1.2.0-SNAPSHOT</version>
+	</parent>
+	<artifactId>org.eclipse.papyrus.layers.stackmodel</artifactId>
+	<packaging>eclipse-plugin</packaging>
+</project>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/ClassnameKind.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/ClassnameKind.java
new file mode 100755
index 0000000..0bad52f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/ClassnameKind.java
@@ -0,0 +1,297 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Classname Kind</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getClassnameKind()
+ * @model
+ * @generated
+ */
+public enum ClassnameKind implements Enumerator {
+	/**
+	 * The '<em><b>UNDEFINED</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #UNDEFINED_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	UNDEFINED(0, "UNDEFINED", "UNDEFINED"),
+
+	/**
+	 * The '<em><b>EMF CLASSNAME</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #EMF_CLASSNAME_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	EMF_CLASSNAME(1, "EMF_CLASSNAME", "EMF_CLASSNAME"),
+
+	/**
+	 * The '<em><b>POJO CLASSNAME</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #POJO_CLASSNAME_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	POJO_CLASSNAME(2, "POJO_CLASSNAME", "POJO_CLASSNAME"),
+
+	/**
+	 * The '<em><b>NOT FOUND</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #NOT_FOUND_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NOT_FOUND(3, "NOT_FOUND", "NOT_FOUND");
+
+	/**
+	 * The '<em><b>UNDEFINED</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>UNDEFINED</b></em>' literal object isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #UNDEFINED
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int UNDEFINED_VALUE = 0;
+
+	/**
+	 * The '<em><b>EMF CLASSNAME</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>EMF CLASSNAME</b></em>' literal object isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #EMF_CLASSNAME
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int EMF_CLASSNAME_VALUE = 1;
+
+	/**
+	 * The '<em><b>POJO CLASSNAME</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>POJO CLASSNAME</b></em>' literal object isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #POJO_CLASSNAME
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int POJO_CLASSNAME_VALUE = 2;
+
+	/**
+	 * The '<em><b>NOT FOUND</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>NOT FOUND</b></em>' literal object isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #NOT_FOUND
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NOT_FOUND_VALUE = 3;
+
+	/**
+	 * An array of all the '<em><b>Classname Kind</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private static final ClassnameKind[] VALUES_ARRAY =
+			new ClassnameKind[] {
+					UNDEFINED,
+					EMF_CLASSNAME,
+					POJO_CLASSNAME,
+					NOT_FOUND,
+			};
+
+	/**
+	 * A public read-only list of all the '<em><b>Classname Kind</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static final List<ClassnameKind> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Classname Kind</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static ClassnameKind get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			ClassnameKind result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Classname Kind</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static ClassnameKind getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			ClassnameKind result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Classname Kind</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static ClassnameKind get(int value) {
+		switch (value) {
+		case UNDEFINED_VALUE:
+			return UNDEFINED;
+		case EMF_CLASSNAME_VALUE:
+			return EMF_CLASSNAME;
+		case POJO_CLASSNAME_VALUE:
+			return POJO_CLASSNAME;
+		case NOT_FOUND_VALUE:
+			return NOT_FOUND;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private ClassnameKind(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} // ClassnameKind
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/Folder.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/Folder.java
new file mode 100755
index 0000000..43a9eb3
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/Folder.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Folder</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.Folder#getFolderElements <em>Folder Elements</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getFolder()
+ * @model
+ * @generated
+ */
+public interface Folder extends FolderElement {
+	/**
+	 * Returns the value of the '<em><b>Folder Elements</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.layers.configmodel.layersconfig.FolderElement}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Folder Elements</em>' containment reference list isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Folder Elements</em>' containment reference list.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getFolder_FolderElements()
+	 * @model containment="true" ordered="false"
+	 * @generated
+	 */
+	EList<FolderElement> getFolderElements();
+
+} // Folder
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/FolderElement.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/FolderElement.java
new file mode 100755
index 0000000..b1112c9
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/FolderElement.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Folder Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.FolderElement#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getFolderElement()
+ * @model abstract="true"
+ * @generated
+ */
+public interface FolderElement extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getFolderElement_Name()
+	 * @model dataType="org.eclipse.papyrus.layers.configmodel.layersconfig.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.FolderElement#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+} // FolderElement
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/InstanciableElement.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/InstanciableElement.java
new file mode 100755
index 0000000..a34fd9d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/InstanciableElement.java
@@ -0,0 +1,182 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig;
+
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Instanciable Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getClassname <em>Classname</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getBundleID <em>Bundle ID</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getDisplayName <em>Display Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getIconPath <em>Icon Path</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getClassnameKind <em>Classname Kind</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getInstanciableElement()
+ * @model abstract="true"
+ * @generated
+ */
+public interface InstanciableElement extends FolderElement {
+	/**
+	 * Returns the value of the '<em><b>Classname</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Classname</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Classname</em>' attribute.
+	 * @see #setClassname(String)
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getInstanciableElement_Classname()
+	 * @model dataType="org.eclipse.papyrus.layers.configmodel.layersconfig.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getClassname();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getClassname <em>Classname</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Classname</em>' attribute.
+	 * @see #getClassname()
+	 * @generated
+	 */
+	void setClassname(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Bundle ID</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Bundle ID</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Bundle ID</em>' attribute.
+	 * @see #setBundleID(String)
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getInstanciableElement_BundleID()
+	 * @model dataType="org.eclipse.papyrus.layers.configmodel.layersconfig.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getBundleID();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getBundleID <em>Bundle ID</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Bundle ID</em>' attribute.
+	 * @see #getBundleID()
+	 * @generated
+	 */
+	void setBundleID(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Display Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Display Name</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Display Name</em>' attribute.
+	 * @see #setDisplayName(String)
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getInstanciableElement_DisplayName()
+	 * @model dataType="org.eclipse.papyrus.layers.configmodel.layersconfig.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getDisplayName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getDisplayName <em>Display Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Display Name</em>' attribute.
+	 * @see #getDisplayName()
+	 * @generated
+	 */
+	void setDisplayName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Icon Path</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Icon Path</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Icon Path</em>' attribute.
+	 * @see #setIconPath(String)
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getInstanciableElement_IconPath()
+	 * @model dataType="org.eclipse.papyrus.layers.configmodel.layersconfig.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getIconPath();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getIconPath <em>Icon Path</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Icon Path</em>' attribute.
+	 * @see #getIconPath()
+	 * @generated
+	 */
+	void setIconPath(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Classname Kind</b></em>' attribute.
+	 * The default value is <code>"UNDEFINED"</code>.
+	 * The literals are from the enumeration {@link org.eclipse.papyrus.layers.configmodel.layersconfig.ClassnameKind}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Classname Kind</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Classname Kind</em>' attribute.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.ClassnameKind
+	 * @see #setClassnameKind(ClassnameKind)
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getInstanciableElement_ClassnameKind()
+	 * @model default="UNDEFINED" required="true" ordered="false"
+	 * @generated
+	 */
+	ClassnameKind getClassnameKind();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getClassnameKind <em>Classname Kind</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Classname Kind</em>' attribute.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.ClassnameKind
+	 * @see #getClassnameKind()
+	 * @generated
+	 */
+	void setClassnameKind(ClassnameKind value);
+
+} // InstanciableElement
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayerOperatorConfig.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayerOperatorConfig.java
new file mode 100755
index 0000000..d1d199d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayerOperatorConfig.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig;
+
+import org.eclipse.papyrus.layers.stackmodel.InstanciationException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer Operator Config</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getLayerOperatorConfig()
+ * @model
+ * @generated
+ */
+public interface LayerOperatorConfig extends InstanciableElement {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model dataType="org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorDescriptor" required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciationException"
+	 * @generated
+	 */
+	LayerOperatorDescriptor createLayersOperatorDescriptor() throws InstanciationException;
+} // LayerOperatorConfig
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayerOperatorMultipleBinding.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayerOperatorMultipleBinding.java
new file mode 100755
index 0000000..f29b175
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayerOperatorMultipleBinding.java
@@ -0,0 +1,81 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer Operator Multiple Binding</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding#getLayerOperatorConfig <em>Layer Operator Config</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding#getBindings <em>Bindings</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getLayerOperatorMultipleBinding()
+ * @model
+ * @generated
+ */
+public interface LayerOperatorMultipleBinding extends FolderElement {
+	/**
+	 * Returns the value of the '<em><b>Layer Operator Config</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Layer Operator Config</em>' reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Layer Operator Config</em>' reference.
+	 * @see #setLayerOperatorConfig(LayerOperatorConfig)
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getLayerOperatorMultipleBinding_LayerOperatorConfig()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	LayerOperatorConfig getLayerOperatorConfig();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding#getLayerOperatorConfig <em>Layer Operator Config</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Layer Operator Config</em>' reference.
+	 * @see #getLayerOperatorConfig()
+	 * @generated
+	 */
+	void setLayerOperatorConfig(LayerOperatorConfig value);
+
+	/**
+	 * Returns the value of the '<em><b>Bindings</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding}.
+	 * It is bidirectional and its opposite is '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getOwner <em>Owner</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Bindings</em>' containment reference list isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Bindings</em>' containment reference list.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getLayerOperatorMultipleBinding_Bindings()
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getOwner
+	 * @model opposite="owner" containment="true" ordered="false"
+	 * @generated
+	 */
+	EList<OperatorBinding> getBindings();
+
+} // LayerOperatorMultipleBinding
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayerOperatorToOperatorBinding.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayerOperatorToOperatorBinding.java
new file mode 100755
index 0000000..7090433
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayerOperatorToOperatorBinding.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer Operator To Operator Binding</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorToOperatorBinding#getOperators <em>Operators</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorToOperatorBinding#getLayerOperator <em>Layer Operator</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getLayerOperatorToOperatorBinding()
+ * @model
+ * @generated
+ */
+public interface LayerOperatorToOperatorBinding extends FolderElement, LayersOperatorBinding {
+	/**
+	 * Returns the value of the '<em><b>Operators</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Operators</em>' reference list isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Operators</em>' reference.
+	 * @see #setOperators(OperatorConfig)
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getLayerOperatorToOperatorBinding_Operators()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	OperatorConfig getOperators();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorToOperatorBinding#getOperators <em>Operators</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Operators</em>' reference.
+	 * @see #getOperators()
+	 * @generated
+	 */
+	void setOperators(OperatorConfig value);
+
+	/**
+	 * Returns the value of the '<em><b>Layer Operator</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Layer Operator</em>' reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Layer Operator</em>' reference.
+	 * @see #setLayerOperator(LayerOperatorConfig)
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getLayerOperatorToOperatorBinding_LayerOperator()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	LayerOperatorConfig getLayerOperator();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorToOperatorBinding#getLayerOperator <em>Layer Operator</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Layer Operator</em>' reference.
+	 * @see #getLayerOperator()
+	 * @generated
+	 */
+	void setLayerOperator(LayerOperatorConfig value);
+
+} // LayerOperatorToOperatorBinding
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayersOperatorBinding.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayersOperatorBinding.java
new file mode 100755
index 0000000..e7fc004
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayersOperatorBinding.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layers Operator Binding</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getLayersOperatorBinding()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface LayersOperatorBinding extends EObject {
+} // LayersOperatorBinding
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayersconfigFactory.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayersconfigFactory.java
new file mode 100755
index 0000000..0af774f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayersconfigFactory.java
@@ -0,0 +1,116 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage
+ * @generated
+ */
+public interface LayersconfigFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	LayersconfigFactory eINSTANCE = org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Folder</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Folder</em>'.
+	 * @generated
+	 */
+	Folder createFolder();
+
+	/**
+	 * Returns a new object of class '<em>Layer Operator Config</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Layer Operator Config</em>'.
+	 * @generated
+	 */
+	LayerOperatorConfig createLayerOperatorConfig();
+
+	/**
+	 * Returns a new object of class '<em>Operator Config</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Operator Config</em>'.
+	 * @generated
+	 */
+	OperatorConfig createOperatorConfig();
+
+	/**
+	 * Returns a new object of class '<em>Property Id</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Property Id</em>'.
+	 * @generated
+	 */
+	PropertyId createPropertyId();
+
+	/**
+	 * Returns a new object of class '<em>Type Config</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Type Config</em>'.
+	 * @generated
+	 */
+	TypeConfig createTypeConfig();
+
+	/**
+	 * Returns a new object of class '<em>Layer Operator Multiple Binding</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Layer Operator Multiple Binding</em>'.
+	 * @generated
+	 */
+	LayerOperatorMultipleBinding createLayerOperatorMultipleBinding();
+
+	/**
+	 * Returns a new object of class '<em>Operator Binding</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Operator Binding</em>'.
+	 * @generated
+	 */
+	OperatorBinding createOperatorBinding();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	LayersconfigPackage getLayersconfigPackage();
+
+} // LayersconfigFactory
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayersconfigPackage.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayersconfigPackage.java
new file mode 100755
index 0000000..a44d191
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/LayersconfigPackage.java
@@ -0,0 +1,1417 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface LayersconfigPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	String eNAME = "layersconfig";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	String eNS_URI = "org.eclipse.papyrus.layersconfig.0.10";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	String eNS_PREFIX = "layersconfig";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	LayersconfigPackage eINSTANCE = org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.FolderElementImpl <em>Folder Element</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.FolderElementImpl
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getFolderElement()
+	 * @generated
+	 */
+	int FOLDER_ELEMENT = 1;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FOLDER_ELEMENT__NAME = 0;
+
+	/**
+	 * The number of structural features of the '<em>Folder Element</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FOLDER_ELEMENT_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Folder Element</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FOLDER_ELEMENT_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.FolderImpl <em>Folder</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.FolderImpl
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getFolder()
+	 * @generated
+	 */
+	int FOLDER = 0;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FOLDER__NAME = FOLDER_ELEMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Folder Elements</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FOLDER__FOLDER_ELEMENTS = FOLDER_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Folder</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FOLDER_FEATURE_COUNT = FOLDER_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Folder</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FOLDER_OPERATION_COUNT = FOLDER_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.InstanciableElementImpl <em>Instanciable Element</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.InstanciableElementImpl
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getInstanciableElement()
+	 * @generated
+	 */
+	int INSTANCIABLE_ELEMENT = 3;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCIABLE_ELEMENT__NAME = FOLDER_ELEMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Classname</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCIABLE_ELEMENT__CLASSNAME = FOLDER_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Bundle ID</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCIABLE_ELEMENT__BUNDLE_ID = FOLDER_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Display Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCIABLE_ELEMENT__DISPLAY_NAME = FOLDER_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Icon Path</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCIABLE_ELEMENT__ICON_PATH = FOLDER_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Classname Kind</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCIABLE_ELEMENT__CLASSNAME_KIND = FOLDER_ELEMENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of structural features of the '<em>Instanciable Element</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCIABLE_ELEMENT_FEATURE_COUNT = FOLDER_ELEMENT_FEATURE_COUNT + 5;
+
+	/**
+	 * The number of operations of the '<em>Instanciable Element</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCIABLE_ELEMENT_OPERATION_COUNT = FOLDER_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayerOperatorConfigImpl <em>Layer Operator Config</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayerOperatorConfigImpl
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getLayerOperatorConfig()
+	 * @generated
+	 */
+	int LAYER_OPERATOR_CONFIG = 2;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_CONFIG__NAME = INSTANCIABLE_ELEMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Classname</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_CONFIG__CLASSNAME = INSTANCIABLE_ELEMENT__CLASSNAME;
+
+	/**
+	 * The feature id for the '<em><b>Bundle ID</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_CONFIG__BUNDLE_ID = INSTANCIABLE_ELEMENT__BUNDLE_ID;
+
+	/**
+	 * The feature id for the '<em><b>Display Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_CONFIG__DISPLAY_NAME = INSTANCIABLE_ELEMENT__DISPLAY_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Icon Path</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_CONFIG__ICON_PATH = INSTANCIABLE_ELEMENT__ICON_PATH;
+
+	/**
+	 * The feature id for the '<em><b>Classname Kind</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_CONFIG__CLASSNAME_KIND = INSTANCIABLE_ELEMENT__CLASSNAME_KIND;
+
+	/**
+	 * The number of structural features of the '<em>Layer Operator Config</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_CONFIG_FEATURE_COUNT = INSTANCIABLE_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Create Layers Operator Descriptor</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_CONFIG___CREATE_LAYERS_OPERATOR_DESCRIPTOR = INSTANCIABLE_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Layer Operator Config</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_CONFIG_OPERATION_COUNT = INSTANCIABLE_ELEMENT_OPERATION_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorConfigImpl <em>Operator Config</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorConfigImpl
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getOperatorConfig()
+	 * @generated
+	 */
+	int OPERATOR_CONFIG = 4;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int OPERATOR_CONFIG__NAME = INSTANCIABLE_ELEMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Classname</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int OPERATOR_CONFIG__CLASSNAME = INSTANCIABLE_ELEMENT__CLASSNAME;
+
+	/**
+	 * The feature id for the '<em><b>Bundle ID</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int OPERATOR_CONFIG__BUNDLE_ID = INSTANCIABLE_ELEMENT__BUNDLE_ID;
+
+	/**
+	 * The feature id for the '<em><b>Display Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int OPERATOR_CONFIG__DISPLAY_NAME = INSTANCIABLE_ELEMENT__DISPLAY_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Icon Path</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int OPERATOR_CONFIG__ICON_PATH = INSTANCIABLE_ELEMENT__ICON_PATH;
+
+	/**
+	 * The feature id for the '<em><b>Classname Kind</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int OPERATOR_CONFIG__CLASSNAME_KIND = INSTANCIABLE_ELEMENT__CLASSNAME_KIND;
+
+	/**
+	 * The number of structural features of the '<em>Operator Config</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int OPERATOR_CONFIG_FEATURE_COUNT = INSTANCIABLE_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Create Operator Descriptor</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int OPERATOR_CONFIG___CREATE_OPERATOR_DESCRIPTOR = INSTANCIABLE_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Operator Config</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int OPERATOR_CONFIG_OPERATION_COUNT = INSTANCIABLE_ELEMENT_OPERATION_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.PropertyIdImpl <em>Property Id</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.PropertyIdImpl
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getPropertyId()
+	 * @generated
+	 */
+	int PROPERTY_ID = 5;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_ID__NAME = FOLDER_ELEMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_ID__TYPE = FOLDER_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Property Id</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_ID_FEATURE_COUNT = FOLDER_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Property Id</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_ID_OPERATION_COUNT = FOLDER_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.TypeConfigImpl <em>Type Config</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.TypeConfigImpl
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getTypeConfig()
+	 * @generated
+	 */
+	int TYPE_CONFIG = 6;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TYPE_CONFIG__NAME = FOLDER_ELEMENT__NAME;
+
+	/**
+	 * The number of structural features of the '<em>Type Config</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TYPE_CONFIG_FEATURE_COUNT = FOLDER_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Type Config</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TYPE_CONFIG_OPERATION_COUNT = FOLDER_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayerOperatorMultipleBindingImpl <em>Layer Operator Multiple Binding</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayerOperatorMultipleBindingImpl
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getLayerOperatorMultipleBinding()
+	 * @generated
+	 */
+	int LAYER_OPERATOR_MULTIPLE_BINDING = 7;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_MULTIPLE_BINDING__NAME = FOLDER_ELEMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Layer Operator Config</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_MULTIPLE_BINDING__LAYER_OPERATOR_CONFIG = FOLDER_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Bindings</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_MULTIPLE_BINDING__BINDINGS = FOLDER_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Layer Operator Multiple Binding</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_MULTIPLE_BINDING_FEATURE_COUNT = FOLDER_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Layer Operator Multiple Binding</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_MULTIPLE_BINDING_OPERATION_COUNT = FOLDER_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorBindingImpl <em>Operator Binding</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorBindingImpl
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getOperatorBinding()
+	 * @generated
+	 */
+	int OPERATOR_BINDING = 8;
+
+	/**
+	 * The feature id for the '<em><b>Operator</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int OPERATOR_BINDING__OPERATOR = 0;
+
+	/**
+	 * The feature id for the '<em><b>Layer Operator Config</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int OPERATOR_BINDING__LAYER_OPERATOR_CONFIG = 1;
+
+	/**
+	 * The feature id for the '<em><b>Property Id</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int OPERATOR_BINDING__PROPERTY_ID = 2;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int OPERATOR_BINDING__OWNER = 3;
+
+	/**
+	 * The number of structural features of the '<em>Operator Binding</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int OPERATOR_BINDING_FEATURE_COUNT = 4;
+
+	/**
+	 * The number of operations of the '<em>Operator Binding</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int OPERATOR_BINDING_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.ClassnameKind <em>Classname Kind</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.ClassnameKind
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getClassnameKind()
+	 * @generated
+	 */
+	int CLASSNAME_KIND = 9;
+
+	/**
+	 * The meta object id for the '<em>String</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see java.lang.String
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getString()
+	 * @generated
+	 */
+	int STRING = 10;
+
+
+	/**
+	 * The meta object id for the '<em>Instanciation Exception</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.InstanciationException
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getInstanciationException()
+	 * @generated
+	 */
+	int INSTANCIATION_EXCEPTION = 11;
+
+	/**
+	 * The meta object id for the '<em>Layer Operator Descriptor</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getLayerOperatorDescriptor()
+	 * @generated
+	 */
+	int LAYER_OPERATOR_DESCRIPTOR = 12;
+
+
+	/**
+	 * The meta object id for the '<em>Property Operator</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getPropertyOperator()
+	 * @generated
+	 */
+	int PROPERTY_OPERATOR = 13;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.Folder <em>Folder</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Folder</em>'.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.Folder
+	 * @generated
+	 */
+	EClass getFolder();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.Folder#getFolderElements <em>Folder Elements</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference list '<em>Folder Elements</em>'.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.Folder#getFolderElements()
+	 * @see #getFolder()
+	 * @generated
+	 */
+	EReference getFolder_FolderElements();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.FolderElement <em>Folder Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Folder Element</em>'.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.FolderElement
+	 * @generated
+	 */
+	EClass getFolderElement();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.FolderElement#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.FolderElement#getName()
+	 * @see #getFolderElement()
+	 * @generated
+	 */
+	EAttribute getFolderElement_Name();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig <em>Layer Operator Config</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Layer Operator Config</em>'.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig
+	 * @generated
+	 */
+	EClass getLayerOperatorConfig();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig#createLayersOperatorDescriptor() <em>Create Layers Operator Descriptor</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Create Layers Operator Descriptor</em>' operation.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig#createLayersOperatorDescriptor()
+	 * @generated
+	 */
+	EOperation getLayerOperatorConfig__CreateLayersOperatorDescriptor();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement <em>Instanciable Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Instanciable Element</em>'.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement
+	 * @generated
+	 */
+	EClass getInstanciableElement();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getClassname <em>Classname</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Classname</em>'.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getClassname()
+	 * @see #getInstanciableElement()
+	 * @generated
+	 */
+	EAttribute getInstanciableElement_Classname();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getBundleID <em>Bundle ID</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Bundle ID</em>'.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getBundleID()
+	 * @see #getInstanciableElement()
+	 * @generated
+	 */
+	EAttribute getInstanciableElement_BundleID();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getDisplayName <em>Display Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Display Name</em>'.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getDisplayName()
+	 * @see #getInstanciableElement()
+	 * @generated
+	 */
+	EAttribute getInstanciableElement_DisplayName();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getIconPath <em>Icon Path</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Icon Path</em>'.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getIconPath()
+	 * @see #getInstanciableElement()
+	 * @generated
+	 */
+	EAttribute getInstanciableElement_IconPath();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getClassnameKind <em>Classname Kind</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Classname Kind</em>'.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement#getClassnameKind()
+	 * @see #getInstanciableElement()
+	 * @generated
+	 */
+	EAttribute getInstanciableElement_ClassnameKind();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig <em>Operator Config</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Operator Config</em>'.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig
+	 * @generated
+	 */
+	EClass getOperatorConfig();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig#createOperatorDescriptor() <em>Create Operator Descriptor</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Create Operator Descriptor</em>' operation.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig#createOperatorDescriptor()
+	 * @generated
+	 */
+	EOperation getOperatorConfig__CreateOperatorDescriptor();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId <em>Property Id</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Property Id</em>'.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId
+	 * @generated
+	 */
+	EClass getPropertyId();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId#getType <em>Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the reference '<em>Type</em>'.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId#getType()
+	 * @see #getPropertyId()
+	 * @generated
+	 */
+	EReference getPropertyId_Type();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig <em>Type Config</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Type Config</em>'.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig
+	 * @generated
+	 */
+	EClass getTypeConfig();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding <em>Layer Operator Multiple Binding</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Layer Operator Multiple Binding</em>'.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding
+	 * @generated
+	 */
+	EClass getLayerOperatorMultipleBinding();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding#getLayerOperatorConfig <em>Layer Operator Config</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the reference '<em>Layer Operator Config</em>'.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding#getLayerOperatorConfig()
+	 * @see #getLayerOperatorMultipleBinding()
+	 * @generated
+	 */
+	EReference getLayerOperatorMultipleBinding_LayerOperatorConfig();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding#getBindings <em>Bindings</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference list '<em>Bindings</em>'.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding#getBindings()
+	 * @see #getLayerOperatorMultipleBinding()
+	 * @generated
+	 */
+	EReference getLayerOperatorMultipleBinding_Bindings();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding <em>Operator Binding</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Operator Binding</em>'.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding
+	 * @generated
+	 */
+	EClass getOperatorBinding();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getOperator <em>Operator</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the reference '<em>Operator</em>'.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getOperator()
+	 * @see #getOperatorBinding()
+	 * @generated
+	 */
+	EReference getOperatorBinding_Operator();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getLayerOperatorConfig <em>Layer Operator Config</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the reference '<em>Layer Operator Config</em>'.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getLayerOperatorConfig()
+	 * @see #getOperatorBinding()
+	 * @generated
+	 */
+	EReference getOperatorBinding_LayerOperatorConfig();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getPropertyId <em>Property Id</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the reference '<em>Property Id</em>'.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getPropertyId()
+	 * @see #getOperatorBinding()
+	 * @generated
+	 */
+	EReference getOperatorBinding_PropertyId();
+
+	/**
+	 * Returns the meta object for the container reference '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getOwner <em>Owner</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the container reference '<em>Owner</em>'.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getOwner()
+	 * @see #getOperatorBinding()
+	 * @generated
+	 */
+	EReference getOperatorBinding_Owner();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.ClassnameKind <em>Classname Kind</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for enum '<em>Classname Kind</em>'.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.ClassnameKind
+	 * @generated
+	 */
+	EEnum getClassnameKind();
+
+	/**
+	 * Returns the meta object for data type '{@link java.lang.String <em>String</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for data type '<em>String</em>'.
+	 * @see java.lang.String
+	 * @model instanceClass="java.lang.String"
+	 * @generated
+	 */
+	EDataType getString();
+
+	/**
+	 * Returns the meta object for data type '{@link org.eclipse.papyrus.layers.stackmodel.InstanciationException <em>Instanciation Exception</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for data type '<em>Instanciation Exception</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.InstanciationException
+	 * @model instanceClass="org.eclipse.papyrus.layers.stackmodel.InstanciationException"
+	 * @generated
+	 */
+	EDataType getInstanciationException();
+
+	/**
+	 * Returns the meta object for data type '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor <em>Layer Operator Descriptor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for data type '<em>Layer Operator Descriptor</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor
+	 * @model instanceClass="org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor"
+	 * @generated
+	 */
+	EDataType getLayerOperatorDescriptor();
+
+	/**
+	 * Returns the meta object for data type '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator <em>Property Operator</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for data type '<em>Property Operator</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator
+	 * @model instanceClass="org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator"
+	 * @generated
+	 */
+	EDataType getPropertyOperator();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	LayersconfigFactory getLayersconfigFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 * <li>each class,</li>
+	 * <li>each feature of each class,</li>
+	 * <li>each operation of each class,</li>
+	 * <li>each enum,</li>
+	 * <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.FolderImpl <em>Folder</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.FolderImpl
+		 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getFolder()
+		 * @generated
+		 */
+		EClass FOLDER = eINSTANCE.getFolder();
+
+		/**
+		 * The meta object literal for the '<em><b>Folder Elements</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference FOLDER__FOLDER_ELEMENTS = eINSTANCE.getFolder_FolderElements();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.FolderElementImpl <em>Folder Element</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.FolderElementImpl
+		 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getFolderElement()
+		 * @generated
+		 */
+		EClass FOLDER_ELEMENT = eINSTANCE.getFolderElement();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute FOLDER_ELEMENT__NAME = eINSTANCE.getFolderElement_Name();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayerOperatorConfigImpl <em>Layer Operator Config</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayerOperatorConfigImpl
+		 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getLayerOperatorConfig()
+		 * @generated
+		 */
+		EClass LAYER_OPERATOR_CONFIG = eINSTANCE.getLayerOperatorConfig();
+
+		/**
+		 * The meta object literal for the '<em><b>Create Layers Operator Descriptor</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYER_OPERATOR_CONFIG___CREATE_LAYERS_OPERATOR_DESCRIPTOR = eINSTANCE.getLayerOperatorConfig__CreateLayersOperatorDescriptor();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.InstanciableElementImpl <em>Instanciable Element</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.InstanciableElementImpl
+		 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getInstanciableElement()
+		 * @generated
+		 */
+		EClass INSTANCIABLE_ELEMENT = eINSTANCE.getInstanciableElement();
+
+		/**
+		 * The meta object literal for the '<em><b>Classname</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute INSTANCIABLE_ELEMENT__CLASSNAME = eINSTANCE.getInstanciableElement_Classname();
+
+		/**
+		 * The meta object literal for the '<em><b>Bundle ID</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute INSTANCIABLE_ELEMENT__BUNDLE_ID = eINSTANCE.getInstanciableElement_BundleID();
+
+		/**
+		 * The meta object literal for the '<em><b>Display Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute INSTANCIABLE_ELEMENT__DISPLAY_NAME = eINSTANCE.getInstanciableElement_DisplayName();
+
+		/**
+		 * The meta object literal for the '<em><b>Icon Path</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute INSTANCIABLE_ELEMENT__ICON_PATH = eINSTANCE.getInstanciableElement_IconPath();
+
+		/**
+		 * The meta object literal for the '<em><b>Classname Kind</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute INSTANCIABLE_ELEMENT__CLASSNAME_KIND = eINSTANCE.getInstanciableElement_ClassnameKind();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorConfigImpl <em>Operator Config</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorConfigImpl
+		 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getOperatorConfig()
+		 * @generated
+		 */
+		EClass OPERATOR_CONFIG = eINSTANCE.getOperatorConfig();
+
+		/**
+		 * The meta object literal for the '<em><b>Create Operator Descriptor</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation OPERATOR_CONFIG___CREATE_OPERATOR_DESCRIPTOR = eINSTANCE.getOperatorConfig__CreateOperatorDescriptor();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.PropertyIdImpl <em>Property Id</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.PropertyIdImpl
+		 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getPropertyId()
+		 * @generated
+		 */
+		EClass PROPERTY_ID = eINSTANCE.getPropertyId();
+
+		/**
+		 * The meta object literal for the '<em><b>Type</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference PROPERTY_ID__TYPE = eINSTANCE.getPropertyId_Type();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.TypeConfigImpl <em>Type Config</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.TypeConfigImpl
+		 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getTypeConfig()
+		 * @generated
+		 */
+		EClass TYPE_CONFIG = eINSTANCE.getTypeConfig();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayerOperatorMultipleBindingImpl <em>Layer Operator Multiple Binding</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayerOperatorMultipleBindingImpl
+		 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getLayerOperatorMultipleBinding()
+		 * @generated
+		 */
+		EClass LAYER_OPERATOR_MULTIPLE_BINDING = eINSTANCE.getLayerOperatorMultipleBinding();
+
+		/**
+		 * The meta object literal for the '<em><b>Layer Operator Config</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference LAYER_OPERATOR_MULTIPLE_BINDING__LAYER_OPERATOR_CONFIG = eINSTANCE.getLayerOperatorMultipleBinding_LayerOperatorConfig();
+
+		/**
+		 * The meta object literal for the '<em><b>Bindings</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference LAYER_OPERATOR_MULTIPLE_BINDING__BINDINGS = eINSTANCE.getLayerOperatorMultipleBinding_Bindings();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorBindingImpl <em>Operator Binding</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorBindingImpl
+		 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getOperatorBinding()
+		 * @generated
+		 */
+		EClass OPERATOR_BINDING = eINSTANCE.getOperatorBinding();
+
+		/**
+		 * The meta object literal for the '<em><b>Operator</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference OPERATOR_BINDING__OPERATOR = eINSTANCE.getOperatorBinding_Operator();
+
+		/**
+		 * The meta object literal for the '<em><b>Layer Operator Config</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference OPERATOR_BINDING__LAYER_OPERATOR_CONFIG = eINSTANCE.getOperatorBinding_LayerOperatorConfig();
+
+		/**
+		 * The meta object literal for the '<em><b>Property Id</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference OPERATOR_BINDING__PROPERTY_ID = eINSTANCE.getOperatorBinding_PropertyId();
+
+		/**
+		 * The meta object literal for the '<em><b>Owner</b></em>' container reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference OPERATOR_BINDING__OWNER = eINSTANCE.getOperatorBinding_Owner();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.ClassnameKind <em>Classname Kind</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.ClassnameKind
+		 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getClassnameKind()
+		 * @generated
+		 */
+		EEnum CLASSNAME_KIND = eINSTANCE.getClassnameKind();
+
+		/**
+		 * The meta object literal for the '<em>String</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see java.lang.String
+		 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getString()
+		 * @generated
+		 */
+		EDataType STRING = eINSTANCE.getString();
+
+		/**
+		 * The meta object literal for the '<em>Instanciation Exception</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.InstanciationException
+		 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getInstanciationException()
+		 * @generated
+		 */
+		EDataType INSTANCIATION_EXCEPTION = eINSTANCE.getInstanciationException();
+
+		/**
+		 * The meta object literal for the '<em>Layer Operator Descriptor</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor
+		 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getLayerOperatorDescriptor()
+		 * @generated
+		 */
+		EDataType LAYER_OPERATOR_DESCRIPTOR = eINSTANCE.getLayerOperatorDescriptor();
+
+		/**
+		 * The meta object literal for the '<em>Property Operator</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator
+		 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayersconfigPackageImpl#getPropertyOperator()
+		 * @generated
+		 */
+		EDataType PROPERTY_OPERATOR = eINSTANCE.getPropertyOperator();
+
+	}
+
+} // LayersconfigPackage
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/OperatorBinding.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/OperatorBinding.java
new file mode 100755
index 0000000..60f3c1c
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/OperatorBinding.java
@@ -0,0 +1,138 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Operator Binding</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getOperator <em>Operator</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getLayerOperatorConfig <em>Layer Operator Config</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getPropertyId <em>Property Id</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getOwner <em>Owner</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getOperatorBinding()
+ * @model
+ * @generated
+ */
+public interface OperatorBinding extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Operator</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Operator</em>' reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Operator</em>' reference.
+	 * @see #setOperator(OperatorConfig)
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getOperatorBinding_Operator()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	OperatorConfig getOperator();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getOperator <em>Operator</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Operator</em>' reference.
+	 * @see #getOperator()
+	 * @generated
+	 */
+	void setOperator(OperatorConfig value);
+
+	/**
+	 * Returns the value of the '<em><b>Layer Operator Config</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Layer Operator Config</em>' reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Layer Operator Config</em>' reference.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getOperatorBinding_LayerOperatorConfig()
+	 * @model required="true" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
+	 * @generated
+	 */
+	LayerOperatorConfig getLayerOperatorConfig();
+
+	/**
+	 * Returns the value of the '<em><b>Property Id</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Property Id</em>' reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Property Id</em>' reference.
+	 * @see #setPropertyId(PropertyId)
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getOperatorBinding_PropertyId()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	PropertyId getPropertyId();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getPropertyId <em>Property Id</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Property Id</em>' reference.
+	 * @see #getPropertyId()
+	 * @generated
+	 */
+	void setPropertyId(PropertyId value);
+
+	/**
+	 * Returns the value of the '<em><b>Owner</b></em>' container reference.
+	 * It is bidirectional and its opposite is '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding#getBindings <em>Bindings</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Owner</em>' container reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Owner</em>' container reference.
+	 * @see #setOwner(LayerOperatorMultipleBinding)
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getOperatorBinding_Owner()
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding#getBindings
+	 * @model opposite="bindings" required="true" transient="false" ordered="false"
+	 * @generated
+	 */
+	LayerOperatorMultipleBinding getOwner();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding#getOwner <em>Owner</em>}' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Owner</em>' container reference.
+	 * @see #getOwner()
+	 * @generated
+	 */
+	void setOwner(LayerOperatorMultipleBinding value);
+
+} // OperatorBinding
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/OperatorConfig.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/OperatorConfig.java
new file mode 100755
index 0000000..62d71cf
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/OperatorConfig.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig;
+
+import org.eclipse.papyrus.layers.stackmodel.InstanciationException;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Operator Config</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getOperatorConfig()
+ * @model
+ * @generated
+ */
+public interface OperatorConfig extends InstanciableElement {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model dataType="org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyOperator" required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciationException"
+	 * @generated
+	 */
+	PropertyOperator createOperatorDescriptor() throws InstanciationException;
+
+} // OperatorConfig
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/PropertyId.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/PropertyId.java
new file mode 100755
index 0000000..50cae3f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/PropertyId.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Id</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getPropertyId()
+ * @model
+ * @generated
+ */
+public interface PropertyId extends FolderElement {
+
+	/**
+	 * Returns the value of the '<em><b>Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Type</em>' reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Type</em>' reference.
+	 * @see #setType(TypeConfig)
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getPropertyId_Type()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	TypeConfig getType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId#getType <em>Type</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Type</em>' reference.
+	 * @see #getType()
+	 * @generated
+	 */
+	void setType(TypeConfig value);
+} // PropertyId
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/SimpleBinding.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/SimpleBinding.java
new file mode 100755
index 0000000..2c07e3b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/SimpleBinding.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Simple Binding</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.SimpleBinding#getOperators <em>Operators</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.SimpleBinding#getLayerOperatorMultipleBinding <em>Layer Operator Multiple Binding</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getSimpleBinding()
+ * @model
+ * @generated
+ */
+public interface SimpleBinding extends LayersOperatorBinding {
+	/**
+	 * Returns the value of the '<em><b>Operators</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Operators</em>' reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Operators</em>' reference.
+	 * @see #setOperators(OperatorConfig)
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getSimpleBinding_Operators()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	OperatorConfig getOperators();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.SimpleBinding#getOperators <em>Operators</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Operators</em>' reference.
+	 * @see #getOperators()
+	 * @generated
+	 */
+	void setOperators(OperatorConfig value);
+
+	/**
+	 * Returns the value of the '<em><b>Layer Operator Multiple Binding</b></em>' container reference.
+	 * It is bidirectional and its opposite is '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding#getBindings <em>Bindings</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Layer Operator Multiple Binding</em>' container reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Layer Operator Multiple Binding</em>' container reference.
+	 * @see #setLayerOperatorMultipleBinding(LayerOperatorMultipleBinding)
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getSimpleBinding_LayerOperatorMultipleBinding()
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding#getBindings
+	 * @model opposite="bindings" required="true" transient="false" ordered="false"
+	 * @generated
+	 */
+	LayerOperatorMultipleBinding getLayerOperatorMultipleBinding();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.SimpleBinding#getLayerOperatorMultipleBinding <em>Layer Operator Multiple Binding</em>}' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Layer Operator Multiple Binding</em>' container reference.
+	 * @see #getLayerOperatorMultipleBinding()
+	 * @generated
+	 */
+	void setLayerOperatorMultipleBinding(LayerOperatorMultipleBinding value);
+
+} // SimpleBinding
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/TypeConfig.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/TypeConfig.java
new file mode 100755
index 0000000..736bc1b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/TypeConfig.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Type Config</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#getTypeConfig()
+ * @model
+ * @generated
+ */
+public interface TypeConfig extends FolderElement {
+} // TypeConfig
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/FolderElementImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/FolderElementImpl.java
new file mode 100755
index 0000000..2c5a5c0
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/FolderElementImpl.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.FolderElement;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Folder Element</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.FolderElementImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class FolderElementImpl extends MinimalEObjectImpl.Container implements FolderElement {
+	/**
+	 * 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 cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected FolderElementImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersconfigPackage.Literals.FOLDER_ELEMENT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersconfigPackage.FOLDER_ELEMENT__NAME, oldName, name));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case LayersconfigPackage.FOLDER_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 LayersconfigPackage.FOLDER_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 LayersconfigPackage.FOLDER_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 LayersconfigPackage.FOLDER_ELEMENT__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} // FolderElementImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/FolderImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/FolderImpl.java
new file mode 100755
index 0000000..f01f31b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/FolderImpl.java
@@ -0,0 +1,166 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.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.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.Folder;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.FolderElement;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Folder</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.FolderImpl#getFolderElements <em>Folder Elements</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FolderImpl extends FolderElementImpl implements Folder {
+	/**
+	 * The cached value of the '{@link #getFolderElements() <em>Folder Elements</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getFolderElements()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<FolderElement> folderElements;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected FolderImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersconfigPackage.Literals.FOLDER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EList<FolderElement> getFolderElements() {
+		if (folderElements == null) {
+			folderElements = new EObjectContainmentEList<FolderElement>(FolderElement.class, this, LayersconfigPackage.FOLDER__FOLDER_ELEMENTS);
+		}
+		return folderElements;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case LayersconfigPackage.FOLDER__FOLDER_ELEMENTS:
+			return ((InternalEList<?>) getFolderElements()).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 LayersconfigPackage.FOLDER__FOLDER_ELEMENTS:
+			return getFolderElements();
+		}
+		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 LayersconfigPackage.FOLDER__FOLDER_ELEMENTS:
+			getFolderElements().clear();
+			getFolderElements().addAll((Collection<? extends FolderElement>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersconfigPackage.FOLDER__FOLDER_ELEMENTS:
+			getFolderElements().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersconfigPackage.FOLDER__FOLDER_ELEMENTS:
+			return folderElements != null && !folderElements.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} // FolderImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/InstanciableElementImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/InstanciableElementImpl.java
new file mode 100755
index 0000000..d401f92
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/InstanciableElementImpl.java
@@ -0,0 +1,430 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.ClassnameKind;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Instanciable Element</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.InstanciableElementImpl#getClassname <em>Classname</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.InstanciableElementImpl#getBundleID <em>Bundle ID</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.InstanciableElementImpl#getDisplayName <em>Display Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.InstanciableElementImpl#getIconPath <em>Icon Path</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.InstanciableElementImpl#getClassnameKind <em>Classname Kind</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class InstanciableElementImpl extends FolderElementImpl implements InstanciableElement {
+	/**
+	 * The default value of the '{@link #getClassname() <em>Classname</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getClassname()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String CLASSNAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getClassname() <em>Classname</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getClassname()
+	 * @generated
+	 * @ordered
+	 */
+	protected String classname = CLASSNAME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getBundleID() <em>Bundle ID</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getBundleID()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String BUNDLE_ID_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getBundleID() <em>Bundle ID</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getBundleID()
+	 * @generated
+	 * @ordered
+	 */
+	protected String bundleID = BUNDLE_ID_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDisplayName() <em>Display Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getDisplayName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DISPLAY_NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getDisplayName() <em>Display Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getDisplayName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String displayName = DISPLAY_NAME_EDEFAULT;
+
+	/**
+	 * 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 cached value of the '{@link #getIconPath() <em>Icon Path</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getIconPath()
+	 * @generated
+	 * @ordered
+	 */
+	protected String iconPath = ICON_PATH_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getClassnameKind() <em>Classname Kind</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getClassnameKind()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final ClassnameKind CLASSNAME_KIND_EDEFAULT = ClassnameKind.UNDEFINED;
+
+	/**
+	 * The cached value of the '{@link #getClassnameKind() <em>Classname Kind</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getClassnameKind()
+	 * @generated
+	 * @ordered
+	 */
+	protected ClassnameKind classnameKind = CLASSNAME_KIND_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected InstanciableElementImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersconfigPackage.Literals.INSTANCIABLE_ELEMENT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getClassname() {
+		return classname;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setClassname(String newClassname) {
+		String oldClassname = classname;
+		classname = newClassname;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersconfigPackage.INSTANCIABLE_ELEMENT__CLASSNAME, oldClassname, classname));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getBundleID() {
+		return bundleID;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setBundleID(String newBundleID) {
+		String oldBundleID = bundleID;
+		bundleID = newBundleID;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersconfigPackage.INSTANCIABLE_ELEMENT__BUNDLE_ID, oldBundleID, bundleID));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getDisplayName() {
+		return displayName;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setDisplayName(String newDisplayName) {
+		String oldDisplayName = displayName;
+		displayName = newDisplayName;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersconfigPackage.INSTANCIABLE_ELEMENT__DISPLAY_NAME, oldDisplayName, displayName));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getIconPath() {
+		return iconPath;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setIconPath(String newIconPath) {
+		String oldIconPath = iconPath;
+		iconPath = newIconPath;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersconfigPackage.INSTANCIABLE_ELEMENT__ICON_PATH, oldIconPath, iconPath));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ClassnameKind getClassnameKind() {
+		return classnameKind;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setClassnameKind(ClassnameKind newClassnameKind) {
+		ClassnameKind oldClassnameKind = classnameKind;
+		classnameKind = newClassnameKind == null ? CLASSNAME_KIND_EDEFAULT : newClassnameKind;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersconfigPackage.INSTANCIABLE_ELEMENT__CLASSNAME_KIND, oldClassnameKind, classnameKind));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case LayersconfigPackage.INSTANCIABLE_ELEMENT__CLASSNAME:
+			return getClassname();
+		case LayersconfigPackage.INSTANCIABLE_ELEMENT__BUNDLE_ID:
+			return getBundleID();
+		case LayersconfigPackage.INSTANCIABLE_ELEMENT__DISPLAY_NAME:
+			return getDisplayName();
+		case LayersconfigPackage.INSTANCIABLE_ELEMENT__ICON_PATH:
+			return getIconPath();
+		case LayersconfigPackage.INSTANCIABLE_ELEMENT__CLASSNAME_KIND:
+			return getClassnameKind();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case LayersconfigPackage.INSTANCIABLE_ELEMENT__CLASSNAME:
+			setClassname((String) newValue);
+			return;
+		case LayersconfigPackage.INSTANCIABLE_ELEMENT__BUNDLE_ID:
+			setBundleID((String) newValue);
+			return;
+		case LayersconfigPackage.INSTANCIABLE_ELEMENT__DISPLAY_NAME:
+			setDisplayName((String) newValue);
+			return;
+		case LayersconfigPackage.INSTANCIABLE_ELEMENT__ICON_PATH:
+			setIconPath((String) newValue);
+			return;
+		case LayersconfigPackage.INSTANCIABLE_ELEMENT__CLASSNAME_KIND:
+			setClassnameKind((ClassnameKind) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersconfigPackage.INSTANCIABLE_ELEMENT__CLASSNAME:
+			setClassname(CLASSNAME_EDEFAULT);
+			return;
+		case LayersconfigPackage.INSTANCIABLE_ELEMENT__BUNDLE_ID:
+			setBundleID(BUNDLE_ID_EDEFAULT);
+			return;
+		case LayersconfigPackage.INSTANCIABLE_ELEMENT__DISPLAY_NAME:
+			setDisplayName(DISPLAY_NAME_EDEFAULT);
+			return;
+		case LayersconfigPackage.INSTANCIABLE_ELEMENT__ICON_PATH:
+			setIconPath(ICON_PATH_EDEFAULT);
+			return;
+		case LayersconfigPackage.INSTANCIABLE_ELEMENT__CLASSNAME_KIND:
+			setClassnameKind(CLASSNAME_KIND_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersconfigPackage.INSTANCIABLE_ELEMENT__CLASSNAME:
+			return CLASSNAME_EDEFAULT == null ? classname != null : !CLASSNAME_EDEFAULT.equals(classname);
+		case LayersconfigPackage.INSTANCIABLE_ELEMENT__BUNDLE_ID:
+			return BUNDLE_ID_EDEFAULT == null ? bundleID != null : !BUNDLE_ID_EDEFAULT.equals(bundleID);
+		case LayersconfigPackage.INSTANCIABLE_ELEMENT__DISPLAY_NAME:
+			return DISPLAY_NAME_EDEFAULT == null ? displayName != null : !DISPLAY_NAME_EDEFAULT.equals(displayName);
+		case LayersconfigPackage.INSTANCIABLE_ELEMENT__ICON_PATH:
+			return ICON_PATH_EDEFAULT == null ? iconPath != null : !ICON_PATH_EDEFAULT.equals(iconPath);
+		case LayersconfigPackage.INSTANCIABLE_ELEMENT__CLASSNAME_KIND:
+			return classnameKind != CLASSNAME_KIND_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (classname: ");
+		result.append(classname);
+		result.append(", bundleID: ");
+		result.append(bundleID);
+		result.append(", displayName: ");
+		result.append(displayName);
+		result.append(", iconPath: ");
+		result.append(iconPath);
+		result.append(", classnameKind: ");
+		result.append(classnameKind);
+		result.append(')');
+		return result.toString();
+	}
+
+} // InstanciableElementImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayerOperatorConfigImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayerOperatorConfigImpl.java
new file mode 100755
index 0000000..27a10b7
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayerOperatorConfigImpl.java
@@ -0,0 +1,102 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+import org.eclipse.papyrus.layers.stackmodel.InstanciationException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Layer Operator Config</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class LayerOperatorConfigImpl extends InstanciableElementImpl implements LayerOperatorConfig {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerOperatorConfigImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersconfigPackage.Literals.LAYER_OPERATOR_CONFIG;
+	}
+
+	/**
+	 * Create the requested descriptor
+	 *
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.impl.InstanciableElementImpl#createLayersOperatorDescriptor()
+	 *
+	 * @return
+	 * @throws NotFoundException
+	 * @generated NOT
+	 */
+	@Override
+	public LayerOperatorDescriptor createLayersOperatorDescriptor() throws InstanciationException {
+
+		// Create instance of layer
+		EClassifier classifier = LayersPackage.eINSTANCE.getEClassifier(getClassname());
+		if (classifier == null) {
+			throw new InstanciationException("Can't create LayerOperatorDescriptor for name '" + getClassname() + "'");
+		}
+		LayerOperatorDescriptor res = (LayerOperatorDescriptor) LayersFactory.eINSTANCE.create((EClass) classifier);
+
+		// Set values
+		res.setName(getName());
+
+		return res;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+		case LayersconfigPackage.LAYER_OPERATOR_CONFIG___CREATE_LAYERS_OPERATOR_DESCRIPTOR:
+			try {
+				return createLayersOperatorDescriptor();
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+} // LayerOperatorConfigImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayerOperatorMultipleBindingImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayerOperatorMultipleBindingImpl.java
new file mode 100755
index 0000000..399f681
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayerOperatorMultipleBindingImpl.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Layer Operator Multiple Binding</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayerOperatorMultipleBindingImpl#getLayerOperatorConfig <em>Layer Operator Config</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayerOperatorMultipleBindingImpl#getBindings <em>Bindings</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LayerOperatorMultipleBindingImpl extends FolderElementImpl implements LayerOperatorMultipleBinding {
+	/**
+	 * The cached value of the '{@link #getLayerOperatorConfig() <em>Layer Operator Config</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getLayerOperatorConfig()
+	 * @generated
+	 * @ordered
+	 */
+	protected LayerOperatorConfig layerOperatorConfig;
+
+	/**
+	 * The cached value of the '{@link #getBindings() <em>Bindings</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getBindings()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<OperatorBinding> bindings;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerOperatorMultipleBindingImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersconfigPackage.Literals.LAYER_OPERATOR_MULTIPLE_BINDING;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayerOperatorConfig getLayerOperatorConfig() {
+		if (layerOperatorConfig != null && layerOperatorConfig.eIsProxy()) {
+			InternalEObject oldLayerOperatorConfig = (InternalEObject) layerOperatorConfig;
+			layerOperatorConfig = (LayerOperatorConfig) eResolveProxy(oldLayerOperatorConfig);
+			if (layerOperatorConfig != oldLayerOperatorConfig) {
+				if (eNotificationRequired()) {
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__LAYER_OPERATOR_CONFIG, oldLayerOperatorConfig, layerOperatorConfig));
+				}
+			}
+		}
+		return layerOperatorConfig;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayerOperatorConfig basicGetLayerOperatorConfig() {
+		return layerOperatorConfig;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setLayerOperatorConfig(LayerOperatorConfig newLayerOperatorConfig) {
+		LayerOperatorConfig oldLayerOperatorConfig = layerOperatorConfig;
+		layerOperatorConfig = newLayerOperatorConfig;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__LAYER_OPERATOR_CONFIG, oldLayerOperatorConfig, layerOperatorConfig));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EList<OperatorBinding> getBindings() {
+		if (bindings == null) {
+			bindings = new EObjectContainmentWithInverseEList<OperatorBinding>(OperatorBinding.class, this, LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__BINDINGS, LayersconfigPackage.OPERATOR_BINDING__OWNER);
+		}
+		return bindings;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__BINDINGS:
+			return ((InternalEList<InternalEObject>) (InternalEList<?>) getBindings()).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 LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__BINDINGS:
+			return ((InternalEList<?>) getBindings()).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 LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__LAYER_OPERATOR_CONFIG:
+			if (resolve) {
+				return getLayerOperatorConfig();
+			}
+			return basicGetLayerOperatorConfig();
+		case LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__BINDINGS:
+			return getBindings();
+		}
+		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 LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__LAYER_OPERATOR_CONFIG:
+			setLayerOperatorConfig((LayerOperatorConfig) newValue);
+			return;
+		case LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__BINDINGS:
+			getBindings().clear();
+			getBindings().addAll((Collection<? extends OperatorBinding>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__LAYER_OPERATOR_CONFIG:
+			setLayerOperatorConfig((LayerOperatorConfig) null);
+			return;
+		case LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__BINDINGS:
+			getBindings().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__LAYER_OPERATOR_CONFIG:
+			return layerOperatorConfig != null;
+		case LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__BINDINGS:
+			return bindings != null && !bindings.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} // LayerOperatorMultipleBindingImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayersconfigFactoryImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayersconfigFactoryImpl.java
new file mode 100755
index 0000000..5306cab
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayersconfigFactoryImpl.java
@@ -0,0 +1,360 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.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.layers.configmodel.layersconfig.ClassnameKind;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.Folder;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigFactory;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig;
+import org.eclipse.papyrus.layers.stackmodel.InstanciationException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayersconfigFactoryImpl extends EFactoryImpl implements LayersconfigFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static LayersconfigFactory init() {
+		try {
+			LayersconfigFactory theLayersconfigFactory = (LayersconfigFactory) EPackage.Registry.INSTANCE.getEFactory(LayersconfigPackage.eNS_URI);
+			if (theLayersconfigFactory != null) {
+				return theLayersconfigFactory;
+			}
+		} catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new LayersconfigFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayersconfigFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+		case LayersconfigPackage.FOLDER:
+			return createFolder();
+		case LayersconfigPackage.LAYER_OPERATOR_CONFIG:
+			return createLayerOperatorConfig();
+		case LayersconfigPackage.OPERATOR_CONFIG:
+			return createOperatorConfig();
+		case LayersconfigPackage.PROPERTY_ID:
+			return createPropertyId();
+		case LayersconfigPackage.TYPE_CONFIG:
+			return createTypeConfig();
+		case LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING:
+			return createLayerOperatorMultipleBinding();
+		case LayersconfigPackage.OPERATOR_BINDING:
+			return createOperatorBinding();
+		default:
+			throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object createFromString(EDataType eDataType, String initialValue) {
+		switch (eDataType.getClassifierID()) {
+		case LayersconfigPackage.CLASSNAME_KIND:
+			return createClassnameKindFromString(eDataType, initialValue);
+		case LayersconfigPackage.STRING:
+			return createStringFromString(eDataType, initialValue);
+		case LayersconfigPackage.INSTANCIATION_EXCEPTION:
+			return createInstanciationExceptionFromString(eDataType, initialValue);
+		case LayersconfigPackage.LAYER_OPERATOR_DESCRIPTOR:
+			return createLayerOperatorDescriptorFromString(eDataType, initialValue);
+		case LayersconfigPackage.PROPERTY_OPERATOR:
+			return createPropertyOperatorFromString(eDataType, initialValue);
+		default:
+			throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String convertToString(EDataType eDataType, Object instanceValue) {
+		switch (eDataType.getClassifierID()) {
+		case LayersconfigPackage.CLASSNAME_KIND:
+			return convertClassnameKindToString(eDataType, instanceValue);
+		case LayersconfigPackage.STRING:
+			return convertStringToString(eDataType, instanceValue);
+		case LayersconfigPackage.INSTANCIATION_EXCEPTION:
+			return convertInstanciationExceptionToString(eDataType, instanceValue);
+		case LayersconfigPackage.LAYER_OPERATOR_DESCRIPTOR:
+			return convertLayerOperatorDescriptorToString(eDataType, instanceValue);
+		case LayersconfigPackage.PROPERTY_OPERATOR:
+			return convertPropertyOperatorToString(eDataType, instanceValue);
+		default:
+			throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Folder createFolder() {
+		FolderImpl folder = new FolderImpl();
+		return folder;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayerOperatorConfig createLayerOperatorConfig() {
+		LayerOperatorConfigImpl layerOperatorConfig = new LayerOperatorConfigImpl();
+		return layerOperatorConfig;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public OperatorConfig createOperatorConfig() {
+		OperatorConfigImpl operatorConfig = new OperatorConfigImpl();
+		return operatorConfig;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public PropertyId createPropertyId() {
+		PropertyIdImpl propertyId = new PropertyIdImpl();
+		return propertyId;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public TypeConfig createTypeConfig() {
+		TypeConfigImpl typeConfig = new TypeConfigImpl();
+		return typeConfig;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayerOperatorMultipleBinding createLayerOperatorMultipleBinding() {
+		LayerOperatorMultipleBindingImpl layerOperatorMultipleBinding = new LayerOperatorMultipleBindingImpl();
+		return layerOperatorMultipleBinding;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public OperatorBinding createOperatorBinding() {
+		OperatorBindingImpl operatorBinding = new OperatorBindingImpl();
+		return operatorBinding;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public ClassnameKind createClassnameKindFromString(EDataType eDataType, String initialValue) {
+		ClassnameKind result = ClassnameKind.get(initialValue);
+		if (result == null) {
+			throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		}
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public String convertClassnameKindToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public String createStringFromString(EDataType eDataType, String initialValue) {
+		return (String) super.createFromString(eDataType, initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public String convertStringToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(eDataType, instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public InstanciationException createInstanciationExceptionFromString(EDataType eDataType, String initialValue) {
+		return (InstanciationException) super.createFromString(eDataType, initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public String convertInstanciationExceptionToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(eDataType, instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayerOperatorDescriptor createLayerOperatorDescriptorFromString(EDataType eDataType, String initialValue) {
+		return (LayerOperatorDescriptor) super.createFromString(eDataType, initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public String convertLayerOperatorDescriptorToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(eDataType, instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public PropertyOperator createPropertyOperatorFromString(EDataType eDataType, String initialValue) {
+		return (PropertyOperator) super.createFromString(eDataType, initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public String convertPropertyOperatorToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(eDataType, instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayersconfigPackage getLayersconfigPackage() {
+		return (LayersconfigPackage) getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static LayersconfigPackage getPackage() {
+		return LayersconfigPackage.eINSTANCE;
+	}
+
+} // LayersconfigFactoryImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayersconfigPackageImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayersconfigPackageImpl.java
new file mode 100755
index 0000000..976cf9b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayersconfigPackageImpl.java
@@ -0,0 +1,729 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.ClassnameKind;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.Folder;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.FolderElement;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigFactory;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig;
+import org.eclipse.papyrus.layers.stackmodel.InstanciationException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayersconfigPackageImpl extends EPackageImpl implements LayersconfigPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass folderEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass folderElementEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass layerOperatorConfigEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass instanciableElementEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass operatorConfigEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass propertyIdEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass typeConfigEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass layerOperatorMultipleBindingEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass operatorBindingEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EEnum classnameKindEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EDataType stringEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EDataType instanciationExceptionEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EDataType layerOperatorDescriptorEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EDataType propertyOperatorEDataType = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>
+	 * Note: the correct way to create the package is via the static factory method {@link #init init()}, which also performs initialization of the package, or returns the registered package, if one already exists. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private LayersconfigPackageImpl() {
+		super(eNS_URI, LayersconfigFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>
+	 * This method is used to initialize {@link LayersconfigPackage#eINSTANCE} when that field is accessed. Clients should not invoke it directly. Instead, they should simply access that field to obtain the package. <!-- begin-user-doc --> <!-- end-user-doc
+	 * -->
+	 *
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static LayersconfigPackage init() {
+		if (isInited) {
+			return (LayersconfigPackage) EPackage.Registry.INSTANCE.getEPackage(LayersconfigPackage.eNS_URI);
+		}
+
+		// Obtain or create and register package
+		LayersconfigPackageImpl theLayersconfigPackage = (LayersconfigPackageImpl) (EPackage.Registry.INSTANCE.get(eNS_URI) instanceof LayersconfigPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new LayersconfigPackageImpl());
+
+		isInited = true;
+
+		// Create package meta-data objects
+		theLayersconfigPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theLayersconfigPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theLayersconfigPackage.freeze();
+
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(LayersconfigPackage.eNS_URI, theLayersconfigPackage);
+		return theLayersconfigPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getFolder() {
+		return folderEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getFolder_FolderElements() {
+		return (EReference) folderEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getFolderElement() {
+		return folderElementEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getFolderElement_Name() {
+		return (EAttribute) folderElementEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getLayerOperatorConfig() {
+		return layerOperatorConfigEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayerOperatorConfig__CreateLayersOperatorDescriptor() {
+		return layerOperatorConfigEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getInstanciableElement() {
+		return instanciableElementEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getInstanciableElement_Classname() {
+		return (EAttribute) instanciableElementEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getInstanciableElement_BundleID() {
+		return (EAttribute) instanciableElementEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getInstanciableElement_DisplayName() {
+		return (EAttribute) instanciableElementEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getInstanciableElement_IconPath() {
+		return (EAttribute) instanciableElementEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getInstanciableElement_ClassnameKind() {
+		return (EAttribute) instanciableElementEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getOperatorConfig() {
+		return operatorConfigEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getOperatorConfig__CreateOperatorDescriptor() {
+		return operatorConfigEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getPropertyId() {
+		return propertyIdEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getPropertyId_Type() {
+		return (EReference) propertyIdEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getTypeConfig() {
+		return typeConfigEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getLayerOperatorMultipleBinding() {
+		return layerOperatorMultipleBindingEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getLayerOperatorMultipleBinding_LayerOperatorConfig() {
+		return (EReference) layerOperatorMultipleBindingEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getLayerOperatorMultipleBinding_Bindings() {
+		return (EReference) layerOperatorMultipleBindingEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getOperatorBinding() {
+		return operatorBindingEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getOperatorBinding_Operator() {
+		return (EReference) operatorBindingEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getOperatorBinding_LayerOperatorConfig() {
+		return (EReference) operatorBindingEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getOperatorBinding_PropertyId() {
+		return (EReference) operatorBindingEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getOperatorBinding_Owner() {
+		return (EReference) operatorBindingEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EEnum getClassnameKind() {
+		return classnameKindEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EDataType getString() {
+		return stringEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EDataType getInstanciationException() {
+		return instanciationExceptionEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EDataType getLayerOperatorDescriptor() {
+		return layerOperatorDescriptorEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EDataType getPropertyOperator() {
+		return propertyOperatorEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayersconfigFactory getLayersconfigFactory() {
+		return (LayersconfigFactory) getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package. This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) {
+			return;
+		}
+		isCreated = true;
+
+		// Create classes and their features
+		folderEClass = createEClass(FOLDER);
+		createEReference(folderEClass, FOLDER__FOLDER_ELEMENTS);
+
+		folderElementEClass = createEClass(FOLDER_ELEMENT);
+		createEAttribute(folderElementEClass, FOLDER_ELEMENT__NAME);
+
+		layerOperatorConfigEClass = createEClass(LAYER_OPERATOR_CONFIG);
+		createEOperation(layerOperatorConfigEClass, LAYER_OPERATOR_CONFIG___CREATE_LAYERS_OPERATOR_DESCRIPTOR);
+
+		instanciableElementEClass = createEClass(INSTANCIABLE_ELEMENT);
+		createEAttribute(instanciableElementEClass, INSTANCIABLE_ELEMENT__CLASSNAME);
+		createEAttribute(instanciableElementEClass, INSTANCIABLE_ELEMENT__BUNDLE_ID);
+		createEAttribute(instanciableElementEClass, INSTANCIABLE_ELEMENT__DISPLAY_NAME);
+		createEAttribute(instanciableElementEClass, INSTANCIABLE_ELEMENT__ICON_PATH);
+		createEAttribute(instanciableElementEClass, INSTANCIABLE_ELEMENT__CLASSNAME_KIND);
+
+		operatorConfigEClass = createEClass(OPERATOR_CONFIG);
+		createEOperation(operatorConfigEClass, OPERATOR_CONFIG___CREATE_OPERATOR_DESCRIPTOR);
+
+		propertyIdEClass = createEClass(PROPERTY_ID);
+		createEReference(propertyIdEClass, PROPERTY_ID__TYPE);
+
+		typeConfigEClass = createEClass(TYPE_CONFIG);
+
+		layerOperatorMultipleBindingEClass = createEClass(LAYER_OPERATOR_MULTIPLE_BINDING);
+		createEReference(layerOperatorMultipleBindingEClass, LAYER_OPERATOR_MULTIPLE_BINDING__LAYER_OPERATOR_CONFIG);
+		createEReference(layerOperatorMultipleBindingEClass, LAYER_OPERATOR_MULTIPLE_BINDING__BINDINGS);
+
+		operatorBindingEClass = createEClass(OPERATOR_BINDING);
+		createEReference(operatorBindingEClass, OPERATOR_BINDING__OPERATOR);
+		createEReference(operatorBindingEClass, OPERATOR_BINDING__LAYER_OPERATOR_CONFIG);
+		createEReference(operatorBindingEClass, OPERATOR_BINDING__PROPERTY_ID);
+		createEReference(operatorBindingEClass, OPERATOR_BINDING__OWNER);
+
+		// Create enums
+		classnameKindEEnum = createEEnum(CLASSNAME_KIND);
+
+		// Create data types
+		stringEDataType = createEDataType(STRING);
+		instanciationExceptionEDataType = createEDataType(INSTANCIATION_EXCEPTION);
+		layerOperatorDescriptorEDataType = createEDataType(LAYER_OPERATOR_DESCRIPTOR);
+		propertyOperatorEDataType = createEDataType(PROPERTY_OPERATOR);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model. This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) {
+			return;
+		}
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		folderEClass.getESuperTypes().add(this.getFolderElement());
+		layerOperatorConfigEClass.getESuperTypes().add(this.getInstanciableElement());
+		instanciableElementEClass.getESuperTypes().add(this.getFolderElement());
+		operatorConfigEClass.getESuperTypes().add(this.getInstanciableElement());
+		propertyIdEClass.getESuperTypes().add(this.getFolderElement());
+		typeConfigEClass.getESuperTypes().add(this.getFolderElement());
+		layerOperatorMultipleBindingEClass.getESuperTypes().add(this.getFolderElement());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(folderEClass, Folder.class, "Folder", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getFolder_FolderElements(), this.getFolderElement(), null, "folderElements", null, 0, -1, Folder.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(folderElementEClass, FolderElement.class, "FolderElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getFolderElement_Name(), this.getString(), "name", null, 1, 1, FolderElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(layerOperatorConfigEClass, LayerOperatorConfig.class, "LayerOperatorConfig", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		EOperation op = initEOperation(getLayerOperatorConfig__CreateLayersOperatorDescriptor(), this.getLayerOperatorDescriptor(), "createLayersOperatorDescriptor", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getInstanciationException());
+
+		initEClass(instanciableElementEClass, InstanciableElement.class, "InstanciableElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getInstanciableElement_Classname(), this.getString(), "classname", null, 1, 1, InstanciableElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getInstanciableElement_BundleID(), this.getString(), "bundleID", null, 1, 1, InstanciableElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getInstanciableElement_DisplayName(), this.getString(), "displayName", null, 1, 1, InstanciableElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getInstanciableElement_IconPath(), this.getString(), "iconPath", null, 1, 1, InstanciableElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getInstanciableElement_ClassnameKind(), this.getClassnameKind(), "classnameKind", "UNDEFINED", 1, 1, InstanciableElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(operatorConfigEClass, OperatorConfig.class, "OperatorConfig", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		op = initEOperation(getOperatorConfig__CreateOperatorDescriptor(), this.getPropertyOperator(), "createOperatorDescriptor", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getInstanciationException());
+
+		initEClass(propertyIdEClass, PropertyId.class, "PropertyId", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getPropertyId_Type(), this.getTypeConfig(), null, "type", null, 1, 1, PropertyId.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(typeConfigEClass, TypeConfig.class, "TypeConfig", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(layerOperatorMultipleBindingEClass, LayerOperatorMultipleBinding.class, "LayerOperatorMultipleBinding", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLayerOperatorMultipleBinding_LayerOperatorConfig(), this.getLayerOperatorConfig(), null, "layerOperatorConfig", null, 1, 1, LayerOperatorMultipleBinding.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+				IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getLayerOperatorMultipleBinding_Bindings(), this.getOperatorBinding(), this.getOperatorBinding_Owner(), "bindings", null, 0, -1, LayerOperatorMultipleBinding.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(operatorBindingEClass, OperatorBinding.class, "OperatorBinding", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getOperatorBinding_Operator(), this.getOperatorConfig(), null, "operator", null, 1, 1, OperatorBinding.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED,
+				!IS_ORDERED);
+		initEReference(getOperatorBinding_LayerOperatorConfig(), this.getLayerOperatorConfig(), null, "layerOperatorConfig", null, 1, 1, OperatorBinding.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
+				IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
+		initEReference(getOperatorBinding_PropertyId(), this.getPropertyId(), null, "propertyId", null, 1, 1, OperatorBinding.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED,
+				!IS_ORDERED);
+		initEReference(getOperatorBinding_Owner(), this.getLayerOperatorMultipleBinding(), this.getLayerOperatorMultipleBinding_Bindings(), "owner", null, 1, 1, OperatorBinding.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		// Initialize enums and add enum literals
+		initEEnum(classnameKindEEnum, ClassnameKind.class, "ClassnameKind");
+		addEEnumLiteral(classnameKindEEnum, ClassnameKind.UNDEFINED);
+		addEEnumLiteral(classnameKindEEnum, ClassnameKind.EMF_CLASSNAME);
+		addEEnumLiteral(classnameKindEEnum, ClassnameKind.POJO_CLASSNAME);
+		addEEnumLiteral(classnameKindEEnum, ClassnameKind.NOT_FOUND);
+
+		// Initialize data types
+		initEDataType(stringEDataType, String.class, "String", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+		initEDataType(instanciationExceptionEDataType, InstanciationException.class, "InstanciationException", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+		initEDataType(layerOperatorDescriptorEDataType, LayerOperatorDescriptor.class, "LayerOperatorDescriptor", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+		initEDataType(propertyOperatorEDataType, PropertyOperator.class, "PropertyOperator", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+
+		// Create resource
+		createResource(eNS_URI);
+	}
+
+} // LayersconfigPackageImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/OperatorBindingImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/OperatorBindingImpl.java
new file mode 100755
index 0000000..80c7c9f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/OperatorBindingImpl.java
@@ -0,0 +1,399 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Operator Binding</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorBindingImpl#getOperator <em>Operator</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorBindingImpl#getLayerOperatorConfig <em>Layer Operator Config</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorBindingImpl#getPropertyId <em>Property Id</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorBindingImpl#getOwner <em>Owner</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class OperatorBindingImpl extends MinimalEObjectImpl.Container implements OperatorBinding {
+	/**
+	 * The cached value of the '{@link #getOperator() <em>Operator</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getOperator()
+	 * @generated
+	 * @ordered
+	 */
+	protected OperatorConfig operator;
+
+	/**
+	 * The cached value of the '{@link #getPropertyId() <em>Property Id</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getPropertyId()
+	 * @generated
+	 * @ordered
+	 */
+	protected PropertyId propertyId;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected OperatorBindingImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersconfigPackage.Literals.OPERATOR_BINDING;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public OperatorConfig getOperator() {
+		if (operator != null && operator.eIsProxy()) {
+			InternalEObject oldOperator = (InternalEObject) operator;
+			operator = (OperatorConfig) eResolveProxy(oldOperator);
+			if (operator != oldOperator) {
+				if (eNotificationRequired()) {
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, LayersconfigPackage.OPERATOR_BINDING__OPERATOR, oldOperator, operator));
+				}
+			}
+		}
+		return operator;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public OperatorConfig basicGetOperator() {
+		return operator;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setOperator(OperatorConfig newOperator) {
+		OperatorConfig oldOperator = operator;
+		operator = newOperator;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersconfigPackage.OPERATOR_BINDING__OPERATOR, oldOperator, operator));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayerOperatorConfig getLayerOperatorConfig() {
+		LayerOperatorConfig layerOperatorConfig = basicGetLayerOperatorConfig();
+		return layerOperatorConfig != null && layerOperatorConfig.eIsProxy() ? (LayerOperatorConfig) eResolveProxy((InternalEObject) layerOperatorConfig) : layerOperatorConfig;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	public LayerOperatorConfig basicGetLayerOperatorConfig() {
+		//
+		return getOwner().getLayerOperatorConfig();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public PropertyId getPropertyId() {
+		if (propertyId != null && propertyId.eIsProxy()) {
+			InternalEObject oldPropertyId = (InternalEObject) propertyId;
+			propertyId = (PropertyId) eResolveProxy(oldPropertyId);
+			if (propertyId != oldPropertyId) {
+				if (eNotificationRequired()) {
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, LayersconfigPackage.OPERATOR_BINDING__PROPERTY_ID, oldPropertyId, propertyId));
+				}
+			}
+		}
+		return propertyId;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public PropertyId basicGetPropertyId() {
+		return propertyId;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setPropertyId(PropertyId newPropertyId) {
+		PropertyId oldPropertyId = propertyId;
+		propertyId = newPropertyId;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersconfigPackage.OPERATOR_BINDING__PROPERTY_ID, oldPropertyId, propertyId));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayerOperatorMultipleBinding getOwner() {
+		if (eContainerFeatureID() != LayersconfigPackage.OPERATOR_BINDING__OWNER) {
+			return null;
+		}
+		return (LayerOperatorMultipleBinding) eInternalContainer();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public NotificationChain basicSetOwner(LayerOperatorMultipleBinding newOwner, NotificationChain msgs) {
+		msgs = eBasicSetContainer((InternalEObject) newOwner, LayersconfigPackage.OPERATOR_BINDING__OWNER, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setOwner(LayerOperatorMultipleBinding newOwner) {
+		if (newOwner != eInternalContainer() || (eContainerFeatureID() != LayersconfigPackage.OPERATOR_BINDING__OWNER && newOwner != null)) {
+			if (EcoreUtil.isAncestor(this, newOwner)) {
+				throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
+			}
+			NotificationChain msgs = null;
+			if (eInternalContainer() != null) {
+				msgs = eBasicRemoveFromContainer(msgs);
+			}
+			if (newOwner != null) {
+				msgs = ((InternalEObject) newOwner).eInverseAdd(this, LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__BINDINGS, LayerOperatorMultipleBinding.class, msgs);
+			}
+			msgs = basicSetOwner(newOwner, msgs);
+			if (msgs != null) {
+				msgs.dispatch();
+			}
+		}
+		else if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersconfigPackage.OPERATOR_BINDING__OWNER, newOwner, newOwner));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case LayersconfigPackage.OPERATOR_BINDING__OWNER:
+			if (eInternalContainer() != null) {
+				msgs = eBasicRemoveFromContainer(msgs);
+			}
+			return basicSetOwner((LayerOperatorMultipleBinding) 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 LayersconfigPackage.OPERATOR_BINDING__OWNER:
+			return basicSetOwner(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+		switch (eContainerFeatureID()) {
+		case LayersconfigPackage.OPERATOR_BINDING__OWNER:
+			return eInternalContainer().eInverseRemove(this, LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING__BINDINGS, LayerOperatorMultipleBinding.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 LayersconfigPackage.OPERATOR_BINDING__OPERATOR:
+			if (resolve) {
+				return getOperator();
+			}
+			return basicGetOperator();
+		case LayersconfigPackage.OPERATOR_BINDING__LAYER_OPERATOR_CONFIG:
+			if (resolve) {
+				return getLayerOperatorConfig();
+			}
+			return basicGetLayerOperatorConfig();
+		case LayersconfigPackage.OPERATOR_BINDING__PROPERTY_ID:
+			if (resolve) {
+				return getPropertyId();
+			}
+			return basicGetPropertyId();
+		case LayersconfigPackage.OPERATOR_BINDING__OWNER:
+			return getOwner();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case LayersconfigPackage.OPERATOR_BINDING__OPERATOR:
+			setOperator((OperatorConfig) newValue);
+			return;
+		case LayersconfigPackage.OPERATOR_BINDING__PROPERTY_ID:
+			setPropertyId((PropertyId) newValue);
+			return;
+		case LayersconfigPackage.OPERATOR_BINDING__OWNER:
+			setOwner((LayerOperatorMultipleBinding) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersconfigPackage.OPERATOR_BINDING__OPERATOR:
+			setOperator((OperatorConfig) null);
+			return;
+		case LayersconfigPackage.OPERATOR_BINDING__PROPERTY_ID:
+			setPropertyId((PropertyId) null);
+			return;
+		case LayersconfigPackage.OPERATOR_BINDING__OWNER:
+			setOwner((LayerOperatorMultipleBinding) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersconfigPackage.OPERATOR_BINDING__OPERATOR:
+			return operator != null;
+		case LayersconfigPackage.OPERATOR_BINDING__LAYER_OPERATOR_CONFIG:
+			return basicGetLayerOperatorConfig() != null;
+		case LayersconfigPackage.OPERATOR_BINDING__PROPERTY_ID:
+			return propertyId != null;
+		case LayersconfigPackage.OPERATOR_BINDING__OWNER:
+			return getOwner() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} // OperatorBindingImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/OperatorConfigImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/OperatorConfigImpl.java
new file mode 100755
index 0000000..7eb856c
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/OperatorConfigImpl.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.ClassnameKind;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig;
+import org.eclipse.papyrus.layers.stackmodel.InstanciationException;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.ServiceException;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Operator Config</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class OperatorConfigImpl extends InstanciableElementImpl implements OperatorConfig {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected OperatorConfigImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersconfigPackage.Literals.OPERATOR_CONFIG;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public PropertyOperator createOperatorDescriptor() throws InstanciationException {
+
+		switch (getClassnameKind()) {
+		case UNDEFINED:
+			// Try to find the exact type of classname
+			PropertyOperator res;
+
+			// Try as EMF instance
+			try {
+				res = createEmfInstance();
+				setClassnameKind(ClassnameKind.EMF_CLASSNAME);
+				return res;
+			} catch (InstanciationException e) {
+				// Not an EMF name. Try other solutions.
+			} catch (ClassCastException e) {
+				// specified class name is of wrong type
+				setClassnameKind(ClassnameKind.NOT_FOUND);
+				throw new InstanciationException("Can't create PropertyOperator for name '" + getClassname() + "'. Bad EMF type.");
+			}
+
+			// Try as java pojo
+			try {
+				res = createPojoInstance();
+				setClassnameKind(ClassnameKind.POJO_CLASSNAME);
+				return res;
+			} catch (InstanciationException e) {
+				setClassnameKind(ClassnameKind.NOT_FOUND);
+				throw e;
+			}
+
+
+		case EMF_CLASSNAME:
+			return createEmfInstance();
+
+		case POJO_CLASSNAME:
+			// Try to load a java class
+			return createPojoInstance();
+
+
+		case NOT_FOUND:
+			// We already are in error. Do nothing
+
+			break;
+
+		default:
+			break;
+		}
+
+		throw new InstanciationException("Can't create PropertyOperator for name '" + getClassname() + "'.");
+
+	}
+
+	/**
+	 * @return
+	 * @throws InstanciationException
+	 */
+	protected PropertyOperator createPojoInstance() throws InstanciationException {
+		try {
+			Class<?> opClass = loadClass();
+			CustomPropertyOperator operator = LayersFactory.eINSTANCE.createCustomPropertyOperator();
+			operator.setOperatorInstance((CustomPropertyOperatorsInstance) opClass.newInstance());
+			operator.setName(getName());
+
+			return operator;
+		} catch (Exception e) {
+			setClassnameKind(ClassnameKind.NOT_FOUND);
+			throw new InstanciationException("Can't create PropertyOperator for name '" + getClassname() + "'. " + e.getMessage());
+		}
+	}
+
+	/**
+	 * Create an EMF instance from the classname.
+	 *
+	 * @return
+	 * @throws InstanciationException
+	 */
+	protected PropertyOperator createEmfInstance() throws InstanciationException {
+		// Try to load an EMF type
+		EClassifier classifier = LayersPackage.eINSTANCE.getEClassifier(getClassname());
+		if (classifier == null) {
+			throw new InstanciationException("Can't create PropertyOperator for name '" + getClassname() + "'. Bad classname.");
+		}
+		PropertyOperator res;
+		try {
+			res = (PropertyOperator) LayersFactory.eINSTANCE.create((EClass) classifier);
+		} catch (ClassCastException e) {
+			// specified class name is of
+			throw new InstanciationException("Can't create PropertyOperator for name '" + getClassname() + "'. Bad type.");
+		}
+		return res;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+		case LayersconfigPackage.OPERATOR_CONFIG___CREATE_OPERATOR_DESCRIPTOR:
+			try {
+				return createOperatorDescriptor();
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+	/**
+	 * Load the Class object. Try from current ClassLoader, then try using the
+	 * plugin referenced in the serviceDescriptor.PluginId
+	 *
+	 * @return
+	 * @throws ServiceException
+	 */
+	private Class<?> loadClass() throws LayersException {
+		String classname = getClassname();
+		Class<?> classDesc;
+		try {
+			classDesc = Class.forName(classname);
+		} catch (ClassNotFoundException e1) {
+			// Try using bundle
+			try {
+				String bundleID = getBundleID();
+				Bundle bundle = Platform.getBundle(bundleID);
+				classDesc = bundle.loadClass(classname);
+			} catch (ClassNotFoundException e2) {
+				throw new LayersException("Can't find class for the name '" + classname + "'.", e2);
+			} catch (NullPointerException e) {
+				throw new LayersException("Can't find bundle '" + getBundleID()
+						+ "' for class for the name '" + classname + "'.", e);
+			}
+		}
+
+		return classDesc;
+	}
+
+
+
+} // OperatorConfigImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/PropertyIdImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/PropertyIdImpl.java
new file mode 100755
index 0000000..9bfc326
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/PropertyIdImpl.java
@@ -0,0 +1,179 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Id</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.PropertyIdImpl#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyIdImpl extends FolderElementImpl implements PropertyId {
+	/**
+	 * The cached value of the '{@link #getType() <em>Type</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected TypeConfig type;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected PropertyIdImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersconfigPackage.Literals.PROPERTY_ID;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public TypeConfig getType() {
+		if (type != null && type.eIsProxy()) {
+			InternalEObject oldType = (InternalEObject) type;
+			type = (TypeConfig) eResolveProxy(oldType);
+			if (type != oldType) {
+				if (eNotificationRequired()) {
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, LayersconfigPackage.PROPERTY_ID__TYPE, oldType, type));
+				}
+			}
+		}
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public TypeConfig basicGetType() {
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setType(TypeConfig newType) {
+		TypeConfig oldType = type;
+		type = newType;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersconfigPackage.PROPERTY_ID__TYPE, oldType, type));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case LayersconfigPackage.PROPERTY_ID__TYPE:
+			if (resolve) {
+				return getType();
+			}
+			return basicGetType();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case LayersconfigPackage.PROPERTY_ID__TYPE:
+			setType((TypeConfig) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersconfigPackage.PROPERTY_ID__TYPE:
+			setType((TypeConfig) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersconfigPackage.PROPERTY_ID__TYPE:
+			return type != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} // PropertyIdImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/TypeConfigImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/TypeConfigImpl.java
new file mode 100755
index 0000000..390a4b2
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/TypeConfigImpl.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Type Config</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class TypeConfigImpl extends FolderElementImpl implements TypeConfig {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected TypeConfigImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersconfigPackage.Literals.TYPE_CONFIG;
+	}
+
+} // TypeConfigImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/util/LayersconfigAdapterFactory.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/util/LayersconfigAdapterFactory.java
new file mode 100755
index 0000000..c395574
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/util/LayersconfigAdapterFactory.java
@@ -0,0 +1,306 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.Folder;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.FolderElement;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage
+ * @generated
+ */
+public class LayersconfigAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected static LayersconfigPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayersconfigAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = LayersconfigPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject) object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayersconfigSwitch<Adapter> modelSwitch =
+			new LayersconfigSwitch<Adapter>() {
+				@Override
+				public Adapter caseFolder(Folder object) {
+					return createFolderAdapter();
+				}
+
+				@Override
+				public Adapter caseFolderElement(FolderElement object) {
+					return createFolderElementAdapter();
+				}
+
+				@Override
+				public Adapter caseLayerOperatorConfig(LayerOperatorConfig object) {
+					return createLayerOperatorConfigAdapter();
+				}
+
+				@Override
+				public Adapter caseInstanciableElement(InstanciableElement object) {
+					return createInstanciableElementAdapter();
+				}
+
+				@Override
+				public Adapter caseOperatorConfig(OperatorConfig object) {
+					return createOperatorConfigAdapter();
+				}
+
+				@Override
+				public Adapter casePropertyId(PropertyId object) {
+					return createPropertyIdAdapter();
+				}
+
+				@Override
+				public Adapter caseTypeConfig(TypeConfig object) {
+					return createTypeConfigAdapter();
+				}
+
+				@Override
+				public Adapter caseLayerOperatorMultipleBinding(LayerOperatorMultipleBinding object) {
+					return createLayerOperatorMultipleBindingAdapter();
+				}
+
+				@Override
+				public Adapter caseOperatorBinding(OperatorBinding object) {
+					return createOperatorBindingAdapter();
+				}
+
+				@Override
+				public Adapter defaultCase(EObject object) {
+					return createEObjectAdapter();
+				}
+			};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param target
+	 *            the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject) target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.Folder <em>Folder</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.Folder
+	 * @generated
+	 */
+	public Adapter createFolderAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.FolderElement <em>Folder Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.FolderElement
+	 * @generated
+	 */
+	public Adapter createFolderElementAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig <em>Layer Operator Config</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig
+	 * @generated
+	 */
+	public Adapter createLayerOperatorConfigAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement <em>Instanciable Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement
+	 * @generated
+	 */
+	public Adapter createInstanciableElementAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig <em>Operator Config</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig
+	 * @generated
+	 */
+	public Adapter createOperatorConfigAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId <em>Property Id</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId
+	 * @generated
+	 */
+	public Adapter createPropertyIdAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig <em>Type Config</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig
+	 * @generated
+	 */
+	public Adapter createTypeConfigAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding <em>Layer Operator Multiple Binding</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding
+	 * @generated
+	 */
+	public Adapter createLayerOperatorMultipleBindingAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding <em>Operator Binding</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding
+	 * @generated
+	 */
+	public Adapter createOperatorBindingAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} // LayersconfigAdapterFactory
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/util/LayersconfigSwitch.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/util/LayersconfigSwitch.java
new file mode 100755
index 0000000..40cc0b3
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/configmodel/layersconfig/util/LayersconfigSwitch.java
@@ -0,0 +1,365 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.configmodel.layersconfig.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.Folder;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.FolderElement;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.InstanciableElement;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)} to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigPackage
+ * @generated
+ */
+public class LayersconfigSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected static LayersconfigPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayersconfigSwitch() {
+		if (modelPackage == null) {
+			modelPackage = LayersconfigPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @parameter ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+		case LayersconfigPackage.FOLDER: {
+			Folder folder = (Folder) theEObject;
+			T result = caseFolder(folder);
+			if (result == null) {
+				result = caseFolderElement(folder);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersconfigPackage.FOLDER_ELEMENT: {
+			FolderElement folderElement = (FolderElement) theEObject;
+			T result = caseFolderElement(folderElement);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersconfigPackage.LAYER_OPERATOR_CONFIG: {
+			LayerOperatorConfig layerOperatorConfig = (LayerOperatorConfig) theEObject;
+			T result = caseLayerOperatorConfig(layerOperatorConfig);
+			if (result == null) {
+				result = caseInstanciableElement(layerOperatorConfig);
+			}
+			if (result == null) {
+				result = caseFolderElement(layerOperatorConfig);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersconfigPackage.INSTANCIABLE_ELEMENT: {
+			InstanciableElement instanciableElement = (InstanciableElement) theEObject;
+			T result = caseInstanciableElement(instanciableElement);
+			if (result == null) {
+				result = caseFolderElement(instanciableElement);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersconfigPackage.OPERATOR_CONFIG: {
+			OperatorConfig operatorConfig = (OperatorConfig) theEObject;
+			T result = caseOperatorConfig(operatorConfig);
+			if (result == null) {
+				result = caseInstanciableElement(operatorConfig);
+			}
+			if (result == null) {
+				result = caseFolderElement(operatorConfig);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersconfigPackage.PROPERTY_ID: {
+			PropertyId propertyId = (PropertyId) theEObject;
+			T result = casePropertyId(propertyId);
+			if (result == null) {
+				result = caseFolderElement(propertyId);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersconfigPackage.TYPE_CONFIG: {
+			TypeConfig typeConfig = (TypeConfig) theEObject;
+			T result = caseTypeConfig(typeConfig);
+			if (result == null) {
+				result = caseFolderElement(typeConfig);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersconfigPackage.LAYER_OPERATOR_MULTIPLE_BINDING: {
+			LayerOperatorMultipleBinding layerOperatorMultipleBinding = (LayerOperatorMultipleBinding) theEObject;
+			T result = caseLayerOperatorMultipleBinding(layerOperatorMultipleBinding);
+			if (result == null) {
+				result = caseFolderElement(layerOperatorMultipleBinding);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersconfigPackage.OPERATOR_BINDING: {
+			OperatorBinding operatorBinding = (OperatorBinding) theEObject;
+			T result = caseOperatorBinding(operatorBinding);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		default:
+			return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Folder</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Folder</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFolder(Folder object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Folder Element</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Folder Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFolderElement(FolderElement object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Layer Operator Config</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Layer Operator Config</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLayerOperatorConfig(LayerOperatorConfig object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Instanciable Element</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Instanciable Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseInstanciableElement(InstanciableElement object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Operator Config</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Operator Config</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseOperatorConfig(OperatorConfig object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property Id</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Property Id</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePropertyId(PropertyId object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Type Config</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Type Config</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTypeConfig(TypeConfig object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Layer Operator Multiple Binding</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Layer Operator Multiple Binding</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLayerOperatorMultipleBinding(LayerOperatorMultipleBinding object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Operator Binding</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Operator Binding</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseOperatorBinding(OperatorBinding object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} // LayersconfigSwitch
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/Activator.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/Activator.java
new file mode 100755
index 0000000..6d327a8
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/Activator.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel;
+
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.papyrus.infra.core.log.LogHelper;
+import org.osgi.framework.BundleContext;
+
+public class Activator extends Plugin {
+
+	private static BundleContext context;
+
+	/** Logging helper */
+	public static LogHelper log;
+
+	static BundleContext getContext() {
+		return context;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 *
+	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+	 */
+	@Override
+	public void start(BundleContext bundleContext) throws Exception {
+		Activator.context = bundleContext;
+		// register the login helper
+		log = new LogHelper(this);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 *
+	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+	 */
+	@Override
+	public void stop(BundleContext bundleContext) throws Exception {
+		Activator.context = null;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/BadStateException.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/BadStateException.java
new file mode 100755
index 0000000..e716ba4
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/BadStateException.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class BadStateException extends LayersException {
+
+	/**
+	 *
+	 */
+	private static final long serialVersionUID = -5674451388263111557L;
+
+	/**
+	 * Constructor.
+	 *
+	 */
+	public BadStateException() {
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * Constructor.
+	 *
+	 * @param message
+	 */
+	public BadStateException(String message) {
+		super(message);
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * Constructor.
+	 *
+	 * @param cause
+	 */
+	public BadStateException(Throwable cause) {
+		super(cause);
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * Constructor.
+	 *
+	 * @param message
+	 * @param cause
+	 */
+	public BadStateException(String message, Throwable cause) {
+		super(message, cause);
+		// TODO Auto-generated constructor stub
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/InstanciationException.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/InstanciationException.java
new file mode 100755
index 0000000..708e250
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/InstanciationException.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel;
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class InstanciationException extends LayersException {
+
+	/**
+	 *
+	 */
+	private static final long serialVersionUID = 2070317356365033045L;
+
+	/**
+	 * Constructor.
+	 *
+	 */
+	public InstanciationException() {
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * Constructor.
+	 *
+	 * @param message
+	 */
+	public InstanciationException(String message) {
+		super(message);
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * Constructor.
+	 *
+	 * @param cause
+	 */
+	public InstanciationException(Throwable cause) {
+		super(cause);
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * Constructor.
+	 *
+	 * @param message
+	 * @param cause
+	 */
+	public InstanciationException(String message, Throwable cause) {
+		super(message, cause);
+		// TODO Auto-generated constructor stub
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/LayersException.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/LayersException.java
new file mode 100755
index 0000000..c8ba265
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/LayersException.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel;
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class LayersException extends Exception {
+
+	/**
+	 *
+	 */
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * Constructor.
+	 *
+	 */
+	public LayersException() {
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * Constructor.
+	 *
+	 * @param message
+	 */
+	public LayersException(String message) {
+		super(message);
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * Constructor.
+	 *
+	 * @param cause
+	 */
+	public LayersException(Throwable cause) {
+		super(cause);
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * Constructor.
+	 *
+	 * @param message
+	 * @param cause
+	 */
+	public LayersException(String message, Throwable cause) {
+		super(message, cause);
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * Constructor.
+	 *
+	 * @param message
+	 * @param cause
+	 * @param enableSuppression
+	 * @param writableStackTrace
+	 */
+	// public LayersException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+	// super(message, cause, enableSuppression, writableStackTrace);
+	// // TODO Auto-generated constructor stub
+	// }
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/NotFoundException.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/NotFoundException.java
new file mode 100755
index 0000000..33cf657
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/NotFoundException.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel;
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class NotFoundException extends LayersException {
+
+	/**
+	 *
+	 */
+	private static final long serialVersionUID = 2070317356365033045L;
+
+	/**
+	 * Constructor.
+	 *
+	 */
+	public NotFoundException() {
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * Constructor.
+	 *
+	 * @param message
+	 */
+	public NotFoundException(String message) {
+		super(message);
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * Constructor.
+	 *
+	 * @param cause
+	 */
+	public NotFoundException(Throwable cause) {
+		super(cause);
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * Constructor.
+	 *
+	 * @param message
+	 * @param cause
+	 */
+	public NotFoundException(String message, Throwable cause) {
+		super(message, cause);
+		// TODO Auto-generated constructor stub
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/PropertyValueFactory.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/PropertyValueFactory.java
new file mode 100755
index 0000000..b872e30
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/PropertyValueFactory.java
@@ -0,0 +1,117 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.osgi.framework.Bundle;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class PropertyValueFactory {
+
+	/**
+	 * Constructor.
+	 *
+	 */
+	public PropertyValueFactory() {
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * Create an instance of the specified class, located in the specified plugin.
+	 *
+	 * @param pluginId
+	 * @param classname
+	 * @return
+	 * @throws ClassNotFoundException
+	 * @throws IllegalAccessException
+	 * @throws InstantiationException
+	 */
+	public Object newInstance(String pluginId, String classname) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
+
+
+		Class<?> classType = loadClass(pluginId, classname);
+
+		return classType.newInstance();
+	}
+
+	/**
+	 * Load requested class from the current classloader. If not found, try to get it from the
+	 * specified plugin.
+	 *
+	 * @param declaringID
+	 * @param className
+	 * @return
+	 * @throws ClassNotFoundException
+	 */
+	public Class<?> loadClass(String declaringID, String className) throws ClassNotFoundException {
+		Class<?> factoryClass;
+		try {
+			factoryClass = Class.forName(className);
+		} catch (ClassNotFoundException e) {
+			// try another way
+			try {
+				Bundle bundle = Platform.getBundle(declaringID);
+				factoryClass = bundle.loadClass(className);
+			} catch (ClassNotFoundException e1) {
+				throw new ClassNotFoundException("Can't find class " + className
+						+ "in plugin " + declaringID
+						, e1);
+			} catch (NullPointerException e1) {
+				throw new ClassNotFoundException("Can't find plugin " + declaringID, e1);
+			}
+		}
+		return factoryClass;
+
+	}
+
+	/**
+	 * Create an instance of the specified model concept.
+	 *
+	 * @param nsURI
+	 * @param propertyName
+	 * @return
+	 * @throws ClassNotFoundException
+	 * @throws InstantiationException
+	 * @throws IllegalAccessException
+	 */
+	public EObject newEClassInstance(String nsURI, String propertyName) throws ClassNotFoundException {
+
+
+
+		EPackage modelPackage = EPackage.Registry.INSTANCE.getEPackage(nsURI);
+		if (modelPackage == null) {
+			throw new ClassNotFoundException("Can't get EPAckage for model '" + nsURI + "'");
+		}
+
+		EClass classifier = (EClass) modelPackage.getEClassifier(propertyName);
+		if (classifier == null) {
+			throw new ClassNotFoundException("Can't get classifier '" + propertyName + "' in model '" + nsURI + "'");
+		}
+
+		return modelPackage.getEFactoryInstance().create(classifier);
+	}
+
+	public Object getEObjectPropertyValue(EObject eObject, String propertyName) {
+		return eObject.eGet(eObject.eClass().getEStructuralFeature(propertyName));
+	}
+
+	public void setEObjectPropertyValue(EObject eObject, String propertyName, Object value) {
+		eObject.eSet(eObject.eClass().getEStructuralFeature(propertyName), value);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/command/ComputePropertyValueCommand.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/command/ComputePropertyValueCommand.java
new file mode 100755
index 0000000..dfd0980
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/command/ComputePropertyValueCommand.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.command;
+
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+
+/**
+ * This command is used to compute a property value in {@link LayersStack}.
+ * The effective computation is done when the {@link #getValue()} method is called.
+ *
+ *
+ * @author cedric dumoulin
+ *
+ */
+public interface ComputePropertyValueCommand {
+
+
+	/**
+	 * Execute the command and return the computed value.
+	 * Compute the value of the Property, and return it.
+	 *
+	 * @return The computed value of the Property.
+	 * @throws LayersException
+	 *             If something goes wrong
+	 */
+	public TypeInstance getCmdValue() throws LayersException;
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ExpressionMatcher.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ExpressionMatcher.java
new file mode 100755
index 0000000..f5be321
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ExpressionMatcher.java
@@ -0,0 +1,416 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.exprmatcher;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.query.conditions.eobjects.EObjectCondition;
+import org.eclipse.emf.query.ocl.conditions.BooleanOCLCondition;
+import org.eclipse.emf.query.statements.FROM;
+import org.eclipse.emf.query.statements.IQueryResult;
+import org.eclipse.emf.query.statements.SELECT;
+import org.eclipse.emf.query.statements.WHERE;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.ocl.ParserException;
+import org.eclipse.ocl.ecore.OCL;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.util.Collections3;
+import org.eclipse.papyrus.layers.stackmodel.util.ObservableListView;
+
+/**
+ * This class evaluate its associated expression against the associated models.
+ * It provide a list of elements matching the expression in the model.
+ * The list of matching elements is synchronized by the matcher. The list can be provided at construction
+ * time. The ExpressinMatcher takes care to minimize the number of write to the underlying list of matching elements.
+ * Usually, there is two writes (see {@link Collections3#resetListTo(Collection, Collection)}. <br>
+ * It is possible to be inform of changes in the underlying list by wrapping it in an {@link ObservableListView}.
+ *
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class ExpressionMatcher implements IValueChangedEventListener {
+
+	protected String expression = "";
+
+	/**
+	 * List of element matching the expression.
+	 * This class maintains the list.
+	 */
+	protected List<View> matchingElements;
+
+	/**
+	 * List of element used as starting point for search.
+	 */
+	protected List<EObject> searchRoots;
+
+	/**
+	 * OCL Condition computed from the expr.
+	 */
+	protected EObjectCondition condition;
+	protected OCL ocl;
+
+
+	/**
+	 *
+	 * Constructor.
+	 *
+	 */
+	public ExpressionMatcher() {
+		this.expression = "";
+		this.searchRoots = Collections.emptyList();
+		// init matchingElements
+		matchingElements = new ArrayList<View>();
+	}
+
+	/**
+	 *
+	 * Constructor.
+	 *
+	 * @param searchRoots
+	 * @throws LayersException
+	 */
+	public ExpressionMatcher(List<View> matchingElementsList) {
+		this.expression = "";
+		this.searchRoots = Collections.emptyList();
+		// init matchingElements
+		matchingElements = matchingElementsList;
+	}
+
+	/**
+	 *
+	 * Constructor.
+	 *
+	 * @param searchRoots
+	 * @throws LayersException
+	 */
+	// public ExpressionMatcher(List<EObject> searchRoots) {
+	// this.expression = "";
+	// setSearchRoots(searchRoots);
+	// // init matchingElements
+	// matchingElements = new ObservableListView<View>(new ArrayList<View>());
+	// }
+
+	/**
+	 *
+	 * Constructor.
+	 *
+	 * @param searchRoot
+	 * @throws LayersException
+	 */
+	public ExpressionMatcher(EObject searchRoot) {
+		this.expression = "";
+		setSearchRoots(Collections.singletonList(searchRoot));
+		// init matchingElements
+		matchingElements = new ArrayList<View>();
+	}
+
+	/**
+	 * Constructor.
+	 *
+	 * @param expression
+	 * @param searchRoots
+	 * @throws LayersException
+	 *             If the Condition can't be computed from the expression.
+	 */
+	public ExpressionMatcher(String expression, List<EObject> searchRoots) throws LayersException {
+		this.searchRoots = searchRoots;
+		matchingElements = new ArrayList<View>();
+
+		// compute expr
+		setExpression(expression);
+	}
+
+	/**
+	 * Constructor.
+	 *
+	 * @param expression
+	 * @param searchRoots
+	 * @throws LayersException
+	 *             If the Condition can't be computed from the expression.
+	 */
+	public ExpressionMatcher(String expression, List<View> matchingElementsList, List<EObject> searchRoots) throws LayersException {
+		this.searchRoots = searchRoots;
+		matchingElements = matchingElementsList;
+
+		// compute expr
+		setExpression(expression);
+	}
+
+	/**
+	 * Constructor.
+	 *
+	 * @param expression
+	 * @param searchRoots
+	 * @throws LayersException
+	 *             If the Condition can't be computed from the expression.
+	 */
+	public ExpressionMatcher(String expression, EObject searchRoot) throws LayersException {
+		this(expression, Collections.singletonList(searchRoot));
+	}
+
+	/**
+	 * Constructor.
+	 *
+	 * @param expression
+	 * @param searchRoots
+	 * @throws LayersException
+	 *             If the Condition can't be computed from the expression.
+	 */
+	public ExpressionMatcher(String expression, List<View> matchingElementsList, EObject searchRoot) throws LayersException {
+		this(expression, matchingElementsList, Collections.singletonList(searchRoot));
+	}
+
+	/**
+	 * Compute the condition from the expr.
+	 */
+	private void computeCondition() throws LayersException {
+		// silently fails if the expr is not set.
+		if (getExpression() == null || getExpression().length() == 0) {
+			return;
+		}
+
+		if (ocl == null) {
+			ocl = OCL.newInstance();
+		}
+		// Create the condition
+		try {
+			// If the 3rd args is null, this is a context free condition.
+
+			condition = new BooleanOCLCondition<EClassifier, EClass, EObject>(
+					ocl.getEnvironment(),
+					// "self.oclIsKindOf(Shape)",
+					// "self.oclIsKindOf(Shape) and self.oclAsType(Shape).visible = true",
+					// "self.oclAsType(Shape).visible = true",
+					getExpression(),
+					NotationPackage.Literals.VIEW
+					// null
+					);
+		} catch (ParserException e) {
+			// TODO Auto-generated catch block
+			condition = null;
+			throw new LayersException("Can't parse expression : " + e.getMessage(), e);
+		}
+
+	}
+
+	/**
+	 * Recompute the matching elements.
+	 * This lead to firing Events (added and removed)
+	 */
+	public void refreshMatchingElements() {
+
+
+		if (condition == null) {
+			// If the condition is not set, the list should be empty
+			if (!getMatchingElements().isEmpty()) {
+				resetMatchingElements(Collections.EMPTY_LIST);
+			}
+			return;
+		}
+
+		// Create the OCL statement
+		SELECT statement = new SELECT(SELECT.UNBOUNDED, false,
+				new FROM(getSearchRoots()), new WHERE(condition),
+				new NullProgressMonitor());
+
+		// Execute the OCL statement
+		IQueryResult results = statement.execute();
+
+		/**
+		 * Reset the matching elements with the new result.
+		 */
+		resetMatchingElements(results);
+	}
+
+	/**
+	 * Reset the {@link #matchingElements} and let it contain the specified collection.
+	 * This fire added and removed events.
+	 *
+	 * @param results
+	 */
+	@SuppressWarnings("unchecked")
+	private void resetMatchingElements(Collection<?> newElements) {
+
+		Collections3.resetListTo(matchingElements, (Collection<View>) newElements);
+		// matchingElements.resetTo((Collection<View>)newElements);
+
+		// // Compute views to add
+		// // This are views in the newElements, but not in the actual list of matchingElement
+		// // viewsToAdd = results - getViews()
+		// List<View> viewsToAdd = new ArrayList<View>();
+		// for( Object o : newElements ) {
+		// View v = (View)o;
+		// if( !getMatchingElements().contains(v)) {
+		// viewsToAdd.add(v);
+		// }
+		// }
+		//
+		// // Compute views to remove
+		// // Their is two ways to compute it:
+		// // - viewsToremove = diagramViews - results
+		// // - or viewsToremove = getViews() - result
+		// // Use the cheaper one.
+		// // The computed viewsToRemove list contains also views that are not in the layer,
+		// // But this is cheaper than checking for the existence.
+		//
+		// // List<View> viewsToRemove = new ArrayList<View>();
+		// // for( View v : (views.size()<getViews().size()?views:getViews()) ) {
+		// // if( !results.contains(v)) {
+		// // viewsToRemove.add(v);
+		// // }
+		// // }
+		//
+		// // Do operations
+		// getMatchingElements().retainAll(newElements);
+		// // getViews().removeAll(viewsToRemove);
+		// getMatchingElements().addAll(viewsToAdd);
+
+	}
+
+	/**
+	 * @return the expression
+	 */
+	public String getExpression() {
+		return expression;
+	}
+
+
+	/**
+	 * @param expression
+	 *            the expression to set
+	 * @throws LayersException
+	 *             If the Condition can't be computed from the expression.
+	 */
+	public void setExpression(String expression) throws LayersException {
+
+		if (expression == null || expression.length() == 0) {
+			// standardize noop expr
+			expression = "";
+		}
+		if (expression.equals(this.expression)) {
+			return;
+		}
+
+		this.expression = expression;
+
+		computeCondition();
+		refreshMatchingElements();
+	}
+
+
+	/**
+	 * @return the matchingElements
+	 */
+	public List<View> getMatchingElements() {
+		return matchingElements;
+	}
+
+
+	/**
+	 * @return the searchRoots
+	 */
+	public List<EObject> getSearchRoots() {
+		return searchRoots;
+	}
+
+	/**
+	 *
+	 * @param searchRoots
+	 */
+	public void setSearchRoots(List<EObject> searchRoots) {
+
+		// Remove any existing observers
+		removeSearchRootsObservers();
+
+		if (searchRoots == null) {
+			searchRoots = Collections.emptyList();
+		}
+		this.searchRoots = searchRoots;
+		// add observers on roots changes
+		addSearchRootsObservers();
+
+		// Do not refresh. Let user do it.
+	}
+
+	/**
+	 *
+	 * @param searchRoots
+	 */
+	public void setSearchRoots(EObject searchRoot) {
+		if (searchRoot == null) {
+			// Remove any existing observers
+			removeSearchRootsObservers();
+			searchRoots = Collections.emptyList();
+			return;
+		}
+
+		setSearchRoots(Collections.singletonList(searchRoot));
+	}
+
+	/**
+	 * Observes all searchRoots for changes. If a change occurs, refresh the matching elements.
+	 *
+	 */
+	protected void addSearchRootsObservers() {
+
+		if (searchRoots == null) {
+			return;
+		}
+
+
+		for (EObject root : searchRoots) {
+			ValueChangedEventNotifier notifier = ValueChangedEventNotifierFactory.instance.adapt(root);
+			notifier.addEventListener(this);
+		}
+	}
+
+	/**
+	 * Observes all searchRoots for changes. If a change occurs, refresh the matching elements.
+	 *
+	 */
+	protected void removeSearchRootsObservers() {
+
+		if (searchRoots == null) {
+			return;
+		}
+
+		for (EObject root : searchRoots) {
+			ValueChangedEventNotifier notifier = ValueChangedEventNotifierFactory.instance.adapt(root);
+			notifier.removeEventListener(this);
+		}
+	}
+
+	/**
+	 * Called when a value change in one of the elements of the observed roots.
+	 *
+	 * @param msg
+	 */
+	@Override
+	public void valueChanged(Notification msg) {
+		refreshMatchingElements();
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/IValueChangedEventListener.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/IValueChangedEventListener.java
new file mode 100755
index 0000000..0ed38df
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/IValueChangedEventListener.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.exprmatcher;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EObject;
+
+
+/**
+ * Class implementing this interface can listen to event from EObject.
+ * This class is used by {@link ExpressionMatcher} to be informed when it need to be refreshed.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public interface IValueChangedEventListener {
+
+	/**
+	 * Called by events when a property is changed in a {@link EObject}
+	 *
+	 * @param msg
+	 */
+	public void valueChanged(Notification msg);
+
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ValueChangedEventNotifier.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ValueChangedEventNotifier.java
new file mode 100755
index 0000000..66ea181
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ValueChangedEventNotifier.java
@@ -0,0 +1,340 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.exprmatcher;
+
+import static org.eclipse.papyrus.layers.stackmodel.Activator.log;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.notifier.LayersTreeEventNotifier;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.UMLPackage;
+
+
+/**
+ * An EMF {@link Adapter} listening on uml::NamedElement properties changes.
+ *
+ * This class listen to a {@link NamedElement} and send following events to listeners:
+ * <ul>
+ * <li>valueChanged</li>
+ * </ul>
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class ValueChangedEventNotifier extends EContentAdapter {
+
+	boolean isDisposed = false;
+
+	/**
+	 * List of listener to notify.
+	 */
+	protected List<IValueChangedEventListener> listeners = new ArrayList<IValueChangedEventListener>();
+
+	/**
+	 * Something happen on the tree of object
+	 *
+	 * @see org.eclipse.emf.ecore.util.EContentAdapter#notifyChanged(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param msg
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+
+		// Self atttach
+		super.notifyChanged(notification);
+
+		// Take into account the domain hierarchy found from the notation.
+
+		// Now, filter
+		if (isDiagramRootView(notification)) {
+			fireValueChangedEvent(notification);
+		}
+		else if (isUmlDomainElementChanged(notification)) {
+			fireValueChangedEvent(notification);
+		}
+
+
+		// // We are only interested in NamedElement (from newValue if set, or oldValue if removed)
+		// Object newValue = notification.getNewValue();
+		// if( ! (newValue instanceof NamedElement || notification.getOldValue() instanceof NamedElement ) ) {
+		// return;
+		// }
+		// // Check diagram modification
+		// // There is 4 sources: View::persistedChildren and View::transientChildren
+		// // Diagram::persistedChildren and Diagram::transientChildren
+		// Object feature = notification.getFeature();
+		// if( feature == UMLPackage.eINSTANCE.getNamedElement()
+		// || feature == NotationPackage.eINSTANCE.getView_TransientChildren()
+		// || feature == NotationPackage.eINSTANCE.getDiagram_PersistedEdges()
+		// || feature == NotationPackage.eINSTANCE.getDiagram_TransientEdges() ) {
+		// // LayerOperator::layers || LayersStack::layers
+		// // check the event type.
+		// switch(notification.getEventType()) {
+		// case Notification.SET:
+		//
+		// break;
+		// case Notification.ADD:
+		// // A view is added
+		// fireValueChangedEvent(notification);
+		// break;
+		// case Notification.REMOVE:
+		// // A layer is removed
+		// fireDiagramViewRemovedEvent(notification);
+		// break;
+		// }
+		// }
+
+	};
+
+	/**
+	 * Return true if the notification indicates a change in a uml element.
+	 *
+	 * @param notification
+	 * @return
+	 */
+	private boolean isUmlDomainElementChanged(Notification notification) {
+		// Notifier should be the diagram
+		if (!(notification.getNotifier() instanceof NamedElement)) {
+			return false;
+		}
+
+		Object feature = notification.getFeature();
+
+		if (feature == UMLPackage.eINSTANCE.getNamedElement_Name()) {
+			// check the event type.
+			switch (notification.getEventType()) {
+			case Notification.SET:
+			case Notification.ADD:
+			case Notification.REMOVE:
+
+				return true;
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * Return true if the notification indicates that a Diagram root view is modifified.
+	 *
+	 * @param notification
+	 * @return
+	 */
+	private boolean isDiagramRootView(Notification notification) {
+
+		// Notifier should be the diagram
+		if (!(notification.getNotifier() instanceof Diagram)) {
+			return false;
+		}
+
+		Object feature = notification.getFeature();
+
+		if (feature == NotationPackage.eINSTANCE.getView_PersistedChildren()
+				|| feature == NotationPackage.eINSTANCE.getView_TransientChildren()
+				|| feature == NotationPackage.eINSTANCE.getDiagram_PersistedEdges()
+				|| feature == NotationPackage.eINSTANCE.getDiagram_TransientEdges()) {
+			// LayerOperator::layers || LayersStack::layers
+			// check the event type.
+			switch (notification.getEventType()) {
+			case Notification.SET:
+			case Notification.ADD:
+			case Notification.REMOVE:
+
+				return true;
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * This Adapter is for {@link LayersTreeEventNotifier}.
+	 *
+	 * @see org.eclipse.emf.common.notify.impl.AdapterImpl#isAdapterForType(java.lang.Object)
+	 *
+	 * @param type
+	 * @return
+	 */
+	@Override
+	public boolean isAdapterForType(Object type) {
+		return type == ValueChangedEventNotifier.class;
+	}
+
+	/**
+	 * Constructor.
+	 *
+	 * @param layersModel
+	 */
+	public ValueChangedEventNotifier() {
+	}
+
+	/**
+	 * Dispose the synchronizer
+	 */
+	public void dispose() {
+
+		if (isDisposed()) {
+			return;
+		}
+
+		isDisposed = true;
+		listeners.clear();
+	}
+
+	/**
+	 * Return true if the object is disposed.
+	 *
+	 * @return
+	 */
+	public boolean isDisposed() {
+		return isDisposed == true;
+	}
+
+	/**
+	 * Add the specified listener to the list of listener.
+	 * Do not add it if the listener is already in the list.
+	 *
+	 * @param listener
+	 */
+	public void addEventListener(IValueChangedEventListener listener) {
+
+		if (listener == null) {
+			return;
+		}
+
+		// Check if exist
+		if (listeners.contains(listener)) {
+			return;
+		}
+
+		listeners.add(listener);
+	}
+
+	/**
+	 * Remove the specified listener from the list of listeners.
+	 *
+	 * @param listener
+	 */
+	public void removeEventListener(IValueChangedEventListener listener) {
+
+		listeners.remove(listener);
+	}
+
+	/**
+	 * Called by events when a {@link LayersStack} is added to the {@link LayersStackApplication}
+	 *
+	 * @param msg
+	 */
+	protected void fireValueChangedEvent(Notification msg) {
+		for (IValueChangedEventListener listener : listeners) {
+			listener.valueChanged(msg);
+		}
+	}
+
+	/**
+	 * Handle View::element hierarchy in the self adapt mechanism.
+	 * Handles a notification by calling {@link #handleContainment handleContainment} for any containment-based notification.
+	 */
+	@Override
+	protected void selfAdapt(Notification notification)
+	{
+		if (log.isDebugEnabled()) {
+			log.debug(this.getClass().getSimpleName() + ".selfAdapt(" + notification + ")");
+		}
+
+		if (notification.getFeature() == NotationPackage.eINSTANCE.getView_Element())
+		{
+			handleContainment(notification);
+		}
+		else {
+			super.selfAdapt(notification);
+		}
+	}
+
+	/**
+	 * Handle View::element hierarchy in the self adapt mechanism.
+	 *
+	 * @see org.eclipse.emf.ecore.util.EContentAdapter#setTarget(org.eclipse.emf.ecore.EObject)
+	 *
+	 * @param target
+	 */
+	@Override
+	protected void setTarget(EObject target) {
+		if (log.isDebugEnabled()) {
+			log.debug(this.getClass().getSimpleName() + ".setTarget(" + target + ")");
+		}
+
+		// Handle the View::element tree
+		if (target instanceof View) {
+			EObject extraTarget = ((View) target).getElement();
+			if (extraTarget != null) {
+				log.info(this.getClass().getSimpleName() + ".setExtraTarget(" + extraTarget + ")");
+				// copied from org.eclipse.emf.ecore.util.EContentAdapter.setTarget(EObject)
+				// basicSetTarget(target);
+				// Add the extra object
+				addAdapter(extraTarget);
+				// Add the content of the extra object
+				// for (Iterator<? extends Notifier> i = resolve() ?
+				// extraTarget.eContents().iterator() :
+				// ((InternalEList<? extends Notifier>)extraTarget.eContents()).basicIterator();
+				// i.hasNext(); )
+				// {
+				// Notifier notifier = i.next();
+				// addAdapter(notifier);
+				// }
+
+			}
+		}
+	}
+
+	/**
+	 * Handle View::element hierarchy in the self adapt mechanism.
+	 *
+	 * @see org.eclipse.emf.ecore.util.EContentAdapter#unsetTarget(org.eclipse.emf.ecore.EObject)
+	 *
+	 * @param target
+	 */
+	@Override
+	protected void unsetTarget(EObject target) {
+		// TODO Auto-generated method stub
+		super.unsetTarget(target);
+		// Handle the View::element tree
+		if (target instanceof View) {
+			EObject extraTarget = ((View) target).getElement();
+			if (extraTarget != null) {
+				// copied from org.eclipse.emf.ecore.util.EContentAdapter.setTarget(EObject)
+				// basicSetTarget(target);
+				// Remove the extra object
+				removeAdapter(extraTarget);
+				// Remove contents of the extra object
+				// for (Iterator<? extends Notifier> i = resolve() ?
+				// extraTarget.eContents().iterator() :
+				// ((InternalEList<? extends Notifier>)extraTarget.eContents()).basicIterator();
+				// i.hasNext(); )
+				// {
+				// Notifier notifier = i.next();
+				// removeAdapter(notifier);
+				// }
+
+			}
+		}
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ValueChangedEventNotifierFactory.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ValueChangedEventNotifierFactory.java
new file mode 100755
index 0000000..c27f29e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ValueChangedEventNotifierFactory.java
@@ -0,0 +1,70 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.exprmatcher;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+
+/**
+ * Factory used to create a {@link ValueChangedEventNotifier}.
+ * The factory ensures that there is only one Notifier for a given {@link LayersStack}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class ValueChangedEventNotifierFactory extends AdapterFactoryImpl {
+
+	/**
+	 * Global factory.
+	 */
+	static public ValueChangedEventNotifierFactory instance = new ValueChangedEventNotifierFactory();
+
+	/**
+	 * Convenience method.
+	 *
+	 * @param target
+	 * @return
+	 */
+	public ValueChangedEventNotifier adapt(Notifier target) {
+		return (ValueChangedEventNotifier) adapt(target, ValueChangedEventNotifier.class);
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#createAdapter(org.eclipse.emf.common.notify.Notifier)
+	 *
+	 * @param target
+	 * @return
+	 */
+	@Override
+	protected Adapter createAdapter(Notifier target) {
+		return new ValueChangedEventNotifier();
+	}
+
+	/**
+	 * This Factory is for {@link ValueChangedEventNotifier}.
+	 *
+	 * @see org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#isFactoryForType(java.lang.Object)
+	 *
+	 * @param type
+	 * @return
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return type == ValueChangedEventNotifier.class;
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/AbstractLayer.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/AbstractLayer.java
new file mode 100755
index 0000000..490c0ea
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/AbstractLayer.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Abstract Layer</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyValues <em>Property Values</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyValueMap <em>Property Value Map</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getLayerDescriptor <em>Layer Descriptor</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getViews <em>Views</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getAttachedProperties <em>Attached Properties</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getAbstractLayer()
+ * @model abstract="true"
+ * @generated
+ */
+public interface AbstractLayer extends LayerExpression {
+	/**
+	 * Returns the value of the '<em><b>Property Values</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Property Values</em>' reference list isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Property Values</em>' reference list.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getAbstractLayer_PropertyValues()
+	 * @model
+	 * @generated
+	 */
+	EList<TypeInstance> getPropertyValues();
+
+	/**
+	 * Returns the value of the '<em><b>Property Value Map</b></em>' map.
+	 * The key is of type {@link java.lang.String},
+	 * and the value is of type {@link org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance},
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Property Value Map</em>' map isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Property Value Map</em>' map.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getAbstractLayer_PropertyValueMap()
+	 * @model mapType="org.eclipse.papyrus.layers.stackmodel.layers.StringToTypeInstanceMap<org.eclipse.papyrus.layers.stackmodel.layers.String, org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance>" ordered="false"
+	 * @generated
+	 */
+	EMap<String, TypeInstance> getPropertyValueMap();
+
+	/**
+	 * Returns the value of the '<em><b>Layer Descriptor</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Layer Descriptor</em>' reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Layer Descriptor</em>' reference.
+	 * @see #setLayerDescriptor(LayerDescriptor)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getAbstractLayer_LayerDescriptor()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	LayerDescriptor getLayerDescriptor();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getLayerDescriptor <em>Layer Descriptor</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Layer Descriptor</em>' reference.
+	 * @see #getLayerDescriptor()
+	 * @generated
+	 */
+	void setLayerDescriptor(LayerDescriptor value);
+
+	/**
+	 * Returns the value of the '<em><b>Views</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.gmf.runtime.notation.View}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Views</em>' reference list isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Views</em>' reference list.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getAbstractLayer_Views()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	EList<View> getViews();
+
+	/**
+	 * Returns the value of the '<em><b>Attached Properties</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.layers.stackmodel.layers.Property}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Attached Properties</em>' reference list isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Attached Properties</em>' reference list.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getAbstractLayer_AttachedProperties()
+	 * @model transient="true" volatile="true" derived="true" ordered="false"
+	 * @generated
+	 */
+	EList<Property> getAttachedProperties();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException" propertyRequired="true" propertyOrdered="false"
+	 * @generated
+	 */
+	TypeInstance addPropertyInstance(Property property) throws LayersException;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model propertyRequired="true" propertyOrdered="false"
+	 * @generated
+	 */
+	void removePropertyInstance(Property property);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException" propertyRequired="true" propertyOrdered="false"
+	 * @generated
+	 */
+	TypeInstance getPropertyInstance(Property property) throws LayersException;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException" propertyDataType="org.eclipse.papyrus.layers.stackmodel.layers.String" propertyRequired="true" propertyOrdered="false"
+	 * @generated
+	 */
+	TypeInstance getPropertyInstance(String property) throws LayersException;
+
+} // AbstractLayer
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/AbstractLayerOperator.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/AbstractLayerOperator.java
new file mode 100755
index 0000000..a5600f8
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/AbstractLayerOperator.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Abstract Layer Operator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#getLayerOperatorDescriptor <em>Layer Operator Descriptor</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#getLayerOperatorDescriptorName <em>Layer Operator Descriptor Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getAbstractLayerOperator()
+ * @model abstract="true"
+ * @generated
+ */
+public interface AbstractLayerOperator extends LayerOperator {
+
+	/**
+	 * Returns the value of the '<em><b>Layer Operator Descriptor</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Layer Operator Descriptor</em>' reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Layer Operator Descriptor</em>' reference.
+	 * @see #setLayerOperatorDescriptor(LayerOperatorDescriptor)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getAbstractLayerOperator_LayerOperatorDescriptor()
+	 * @model required="true" transient="true" ordered="false"
+	 * @generated
+	 */
+	LayerOperatorDescriptor getLayerOperatorDescriptor();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#getLayerOperatorDescriptor <em>Layer Operator Descriptor</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Layer Operator Descriptor</em>' reference.
+	 * @see #getLayerOperatorDescriptor()
+	 * @generated
+	 */
+	void setLayerOperatorDescriptor(LayerOperatorDescriptor value);
+
+	/**
+	 * Returns the value of the '<em><b>Layer Operator Descriptor Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Layer Operator Descriptor Name</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Layer Operator Descriptor Name</em>' attribute.
+	 * @see #setLayerOperatorDescriptorName(String)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getAbstractLayerOperator_LayerOperatorDescriptorName()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getLayerOperatorDescriptorName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#getLayerOperatorDescriptorName <em>Layer Operator Descriptor Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Layer Operator Descriptor Name</em>' attribute.
+	 * @see #getLayerOperatorDescriptorName()
+	 * @generated
+	 */
+	void setLayerOperatorDescriptorName(String value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model kind="operation" dataType="org.eclipse.papyrus.layers.stackmodel.layers.boolean" required="true" ordered="false"
+	 * @generated
+	 */
+	boolean isDescriptorSet();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model
+	 * @generated
+	 */
+	void resetDescriptor();
+} // AbstractLayerOperator
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/AllViewsDerivedLayer.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/AllViewsDerivedLayer.java
new file mode 100755
index 0000000..302f3a0
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/AllViewsDerivedLayer.java
@@ -0,0 +1,17 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>All Views Derived Layer</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getAllViewsDerivedLayer()
+ * @model
+ * @generated
+ */
+public interface AllViewsDerivedLayer extends AbstractLayer {
+} // AllViewsDerivedLayer
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/AndStackedLayerOperatorDescriptor.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/AndStackedLayerOperatorDescriptor.java
new file mode 100755
index 0000000..a7436d8
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/AndStackedLayerOperatorDescriptor.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>And Stacked Layer Operator Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getAndStackedLayerOperatorDescriptor()
+ * @model
+ * @generated
+ */
+public interface AndStackedLayerOperatorDescriptor extends StackedLayerOperatorDescriptor {
+} // AndStackedLayerOperatorDescriptor
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/ApplicationDependantElement.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/ApplicationDependantElement.java
new file mode 100755
index 0000000..a5aded0
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/ApplicationDependantElement.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Application Dependant Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.ApplicationDependantElement#getApplication <em>Application</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getApplicationDependantElement()
+ * @model abstract="true"
+ * @generated
+ */
+public interface ApplicationDependantElement extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Application</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Application</em>' reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Application</em>' reference.
+	 * @see #setApplication(LayersStackApplication)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getApplicationDependantElement_Application()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	LayersStackApplication getApplication();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.ApplicationDependantElement#getApplication <em>Application</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Application</em>' reference.
+	 * @see #getApplication()
+	 * @generated
+	 */
+	void setApplication(LayersStackApplication value);
+
+} // ApplicationDependantElement
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/BooleanInstance.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/BooleanInstance.java
new file mode 100755
index 0000000..4b4c674
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/BooleanInstance.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Boolean Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance#isValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getBooleanInstance()
+ * @model
+ * @generated
+ */
+public interface BooleanInstance extends TypeInstance {
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Value</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Value</em>' attribute.
+	 * @see #setValue(boolean)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getBooleanInstance_Value()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.boolean" required="true" ordered="false"
+	 * @generated
+	 */
+	boolean isValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance#isValue <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Value</em>' attribute.
+	 * @see #isValue()
+	 * @generated
+	 */
+	void setValue(boolean value);
+
+} // BooleanInstance
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/BooleanPropertyValue.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/BooleanPropertyValue.java
new file mode 100755
index 0000000..c23bd94
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/BooleanPropertyValue.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Boolean Property Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanPropertyValue#isValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getBooleanPropertyValue()
+ * @model
+ * @generated
+ */
+public interface BooleanPropertyValue extends TypeInstance {
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Value</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Value</em>' attribute.
+	 * @see #setValue(boolean)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getBooleanPropertyValue_Value()
+	 * @model unique="false" dataType="org.eclipse.papyrus.layers.stackmodel.layers.boolean" required="true" ordered="false"
+	 * @generated
+	 */
+	boolean isValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanPropertyValue#isValue <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Value</em>' attribute.
+	 * @see #isValue()
+	 * @generated
+	 */
+	void setValue(boolean value);
+
+} // BooleanPropertyValue
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/BooleanType.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/BooleanType.java
new file mode 100755
index 0000000..db9988f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/BooleanType.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Boolean Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getBooleanType()
+ * @model
+ * @generated
+ */
+public interface BooleanType extends Type {
+} // BooleanType
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/BooleanValue.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/BooleanValue.java
new file mode 100755
index 0000000..34fefaa
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/BooleanValue.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Boolean Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanValue#isValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getBooleanValue()
+ * @model
+ * @generated
+ */
+public interface BooleanValue extends TypeInstance {
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Value</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Value</em>' attribute.
+	 * @see #setValue(boolean)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getBooleanValue_Value()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.boolean" required="true" ordered="false"
+	 * @generated
+	 */
+	boolean isValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanValue#isValue <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Value</em>' attribute.
+	 * @see #isValue()
+	 * @generated
+	 */
+	void setValue(boolean value);
+
+} // BooleanValue
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Color.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Color.java
new file mode 100755
index 0000000..30ed594
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Color.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Color</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getColor()
+ * @model
+ * @generated
+ */
+public interface Color extends Type {
+} // Color
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/ColorInstance.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/ColorInstance.java
new file mode 100755
index 0000000..418b5a8
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/ColorInstance.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Color Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getColorInstance()
+ * @model
+ * @generated
+ */
+public interface ColorInstance extends TypeInstance {
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Value</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Value</em>' attribute.
+	 * @see #setValue(int)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getColorInstance_Value()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.int" required="true" ordered="false"
+	 * @generated
+	 */
+	int getValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance#getValue <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Value</em>' attribute.
+	 * @see #getValue()
+	 * @generated
+	 */
+	void setValue(int value);
+
+} // ColorInstance
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/CustomLayerOperator.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/CustomLayerOperator.java
new file mode 100755
index 0000000..2ed93f3
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/CustomLayerOperator.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Custom Layer Operator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getCustomLayerOperator()
+ * @model
+ * @generated
+ */
+public interface CustomLayerOperator extends LayerOperator {
+} // CustomLayerOperator
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/CustomPropertyOperator.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/CustomPropertyOperator.java
new file mode 100755
index 0000000..5ce15b5
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/CustomPropertyOperator.java
@@ -0,0 +1,131 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Custom Property Operator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#getClassname <em>Classname</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#getOperatorInstance <em>Operator Instance</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#getClassBundleID <em>Class Bundle ID</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getCustomPropertyOperator()
+ * @model
+ * @generated
+ */
+public interface CustomPropertyOperator extends PropertyOperator {
+	/**
+	 * Returns the value of the '<em><b>Classname</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Classname</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Classname</em>' attribute.
+	 * @see #setClassname(String)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getCustomPropertyOperator_Classname()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getClassname();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#getClassname <em>Classname</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Classname</em>' attribute.
+	 * @see #getClassname()
+	 * @generated
+	 */
+	void setClassname(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Operator Instance</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Operator Instance</em>' reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Operator Instance</em>' attribute.
+	 * @see #setOperatorInstance(CustomPropertyOperatorsInstance)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getCustomPropertyOperator_OperatorInstance()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOpertorInstance" required="true" ordered="false"
+	 * @generated
+	 */
+	CustomPropertyOperatorsInstance getOperatorInstance();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#getOperatorInstance <em>Operator Instance</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Operator Instance</em>' attribute.
+	 * @see #getOperatorInstance()
+	 * @generated
+	 */
+	void setOperatorInstance(CustomPropertyOperatorsInstance value);
+
+	/**
+	 * Returns the value of the '<em><b>Class Bundle ID</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Class Bundle ID</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Class Bundle ID</em>' attribute.
+	 * @see #setClassBundleID(String)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getCustomPropertyOperator_ClassBundleID()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getClassBundleID();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#getClassBundleID <em>Class Bundle ID</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Class Bundle ID</em>' attribute.
+	 * @see #getClassBundleID()
+	 * @generated
+	 */
+	void setClassBundleID(String value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException"
+	 * @generated
+	 */
+	void resetOperatorInstance() throws LayersException;
+
+} // CustomPropertyOperator
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/CustomType.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/CustomType.java
new file mode 100755
index 0000000..5bb9612
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/CustomType.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Custom Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomType#getClassifier <em>Classifier</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getCustomType()
+ * @model
+ * @generated
+ */
+public interface CustomType extends Type {
+	/**
+	 * Returns the value of the '<em><b>Classifier</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Classifier</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Classifier</em>' attribute.
+	 * @see #setClassifier(String)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getCustomType_Classifier()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getClassifier();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomType#getClassifier <em>Classifier</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Classifier</em>' attribute.
+	 * @see #getClassifier()
+	 * @generated
+	 */
+	void setClassifier(String value);
+
+} // CustomType
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/DefaultPropertyOperator.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/DefaultPropertyOperator.java
new file mode 100755
index 0000000..9e29fee
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/DefaultPropertyOperator.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Default Property Operator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getDefaultPropertyOperator()
+ * @model
+ * @generated
+ */
+public interface DefaultPropertyOperator extends PropertyOperator {
+} // DefaultPropertyOperator
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/EventLevel.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/EventLevel.java
new file mode 100755
index 0000000..2c8dcd0
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/EventLevel.java
@@ -0,0 +1,229 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Event Level</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getEventLevel()
+ * @model
+ * @generated
+ */
+public enum EventLevel implements Enumerator {
+	/**
+	 * The '<em><b>Level1</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #LEVEL1_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	LEVEL1(0, "level1", "level1"),
+
+	/**
+	 * The '<em><b>All Levels</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #ALL_LEVELS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	ALL_LEVELS(-1, "allLevels", "allLevels");
+
+	/**
+	 * The '<em><b>Level1</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Level1</b></em>' literal object isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #LEVEL1
+	 * @model name="level1"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LEVEL1_VALUE = 0;
+
+	/**
+	 * The '<em><b>All Levels</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>All Levels</b></em>' literal object isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #ALL_LEVELS
+	 * @model name="allLevels"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ALL_LEVELS_VALUE = -1;
+
+	/**
+	 * An array of all the '<em><b>Event Level</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private static final EventLevel[] VALUES_ARRAY =
+			new EventLevel[] {
+					LEVEL1,
+					ALL_LEVELS,
+			};
+
+	/**
+	 * A public read-only list of all the '<em><b>Event Level</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static final List<EventLevel> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Event Level</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static EventLevel get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			EventLevel result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Event Level</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static EventLevel getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			EventLevel result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Event Level</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static EventLevel get(int value) {
+		switch (value) {
+		case LEVEL1_VALUE:
+			return LEVEL1;
+		case ALL_LEVELS_VALUE:
+			return ALL_LEVELS;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EventLevel(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} // EventLevel
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Fill.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Fill.java
new file mode 100755
index 0000000..b27d851
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Fill.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Fill</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFill()
+ * @model
+ * @generated
+ */
+public interface Fill extends Type {
+} // Fill
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FillInstance.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FillInstance.java
new file mode 100755
index 0000000..74dfa73
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FillInstance.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Fill Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.FillInstance#getTransparency <em>Transparency</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.FillInstance#getFillColor <em>Fill Color</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFillInstance()
+ * @model
+ * @generated
+ */
+public interface FillInstance extends TypeInstance {
+	/**
+	 * Returns the value of the '<em><b>Transparency</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Transparency</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Transparency</em>' attribute.
+	 * @see #setTransparency(int)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFillInstance_Transparency()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.int" required="true" ordered="false"
+	 * @generated
+	 */
+	int getTransparency();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.FillInstance#getTransparency <em>Transparency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Transparency</em>' attribute.
+	 * @see #getTransparency()
+	 * @generated
+	 */
+	void setTransparency(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Fill Color</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Fill Color</em>' containment reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Fill Color</em>' containment reference.
+	 * @see #setFillColor(ColorInstance)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFillInstance_FillColor()
+	 * @model containment="true" required="true" ordered="false"
+	 * @generated
+	 */
+	ColorInstance getFillColor();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.FillInstance#getFillColor <em>Fill Color</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Fill Color</em>' containment reference.
+	 * @see #getFillColor()
+	 * @generated
+	 */
+	void setFillColor(ColorInstance value);
+
+} // FillInstance
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FillPropertySetter.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FillPropertySetter.java
new file mode 100755
index 0000000..948118d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FillPropertySetter.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Fill Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFillPropertySetter()
+ * @model
+ * @generated
+ */
+public interface FillPropertySetter extends PropertySetter {
+} // FillPropertySetter
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Folder.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Folder.java
new file mode 100755
index 0000000..1492e4a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Folder.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Folder</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Folder#getElements <em>Elements</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Folder#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFolder()
+ * @model
+ * @generated
+ */
+public interface Folder extends FolderElement {
+	/**
+	 * Returns the value of the '<em><b>Elements</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.layers.stackmodel.layers.FolderElement}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Elements</em>' containment reference list isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Elements</em>' containment reference list.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFolder_Elements()
+	 * @model containment="true" ordered="false"
+	 * @generated
+	 */
+	EList<FolderElement> getElements();
+
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFolder_Name()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Folder#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+} // Folder
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FolderElement.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FolderElement.java
new file mode 100755
index 0000000..56d53a1
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FolderElement.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Folder Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFolderElement()
+ * @model abstract="true"
+ * @generated
+ */
+public interface FolderElement extends EObject {
+} // FolderElement
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FontInstance.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FontInstance.java
new file mode 100755
index 0000000..7affbc5
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FontInstance.java
@@ -0,0 +1,152 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Font Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#getFontColor <em>Font Color</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#getFontName <em>Font Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#getFontHeigh <em>Font Heigh</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#isBold <em>Bold</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFontInstance()
+ * @model
+ * @generated
+ */
+public interface FontInstance extends TypeInstance {
+	/**
+	 * Returns the value of the '<em><b>Font Color</b></em>' attribute.
+	 * The default value is <code>"15053796"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Font Color</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Font Color</em>' attribute.
+	 * @see #setFontColor(int)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFontInstance_FontColor()
+	 * @model default="15053796" dataType="org.eclipse.papyrus.layers.stackmodel.layers.int" required="true" ordered="false"
+	 * @generated
+	 */
+	int getFontColor();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#getFontColor <em>Font Color</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Font Color</em>' attribute.
+	 * @see #getFontColor()
+	 * @generated
+	 */
+	void setFontColor(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Font Name</b></em>' attribute.
+	 * The default value is <code>"Segoe UI"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Font Name</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Font Name</em>' attribute.
+	 * @see #setFontName(String)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFontInstance_FontName()
+	 * @model default="Segoe UI" dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getFontName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#getFontName <em>Font Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Font Name</em>' attribute.
+	 * @see #getFontName()
+	 * @generated
+	 */
+	void setFontName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Font Heigh</b></em>' attribute.
+	 * The default value is <code>"9"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Font Heigh</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Font Heigh</em>' attribute.
+	 * @see #setFontHeigh(int)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFontInstance_FontHeigh()
+	 * @model default="9" dataType="org.eclipse.papyrus.layers.stackmodel.layers.int" required="true" ordered="false"
+	 * @generated
+	 */
+	int getFontHeigh();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#getFontHeigh <em>Font Heigh</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Font Heigh</em>' attribute.
+	 * @see #getFontHeigh()
+	 * @generated
+	 */
+	void setFontHeigh(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Bold</b></em>' attribute.
+	 * The default value is <code>"true"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Bold</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Bold</em>' attribute.
+	 * @see #setBold(boolean)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFontInstance_Bold()
+	 * @model default="true" dataType="org.eclipse.papyrus.layers.stackmodel.layers.boolean" required="true" ordered="false"
+	 * @generated
+	 */
+	boolean isBold();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#isBold <em>Bold</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Bold</em>' attribute.
+	 * @see #isBold()
+	 * @generated
+	 */
+	void setBold(boolean value);
+
+} // FontInstance
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FontPropertySetter.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FontPropertySetter.java
new file mode 100755
index 0000000..20e224f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FontPropertySetter.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Font Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFontPropertySetter()
+ * @model
+ * @generated
+ */
+public interface FontPropertySetter extends PropertySetter {
+} // FontPropertySetter
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FontType.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FontType.java
new file mode 100755
index 0000000..0e66bfd
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/FontType.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Font Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getFontType()
+ * @model
+ * @generated
+ */
+public interface FontType extends Type {
+} // FontType
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IntInstance.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IntInstance.java
new file mode 100755
index 0000000..38310a9
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IntInstance.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Int Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.IntInstance#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getIntInstance()
+ * @model
+ * @generated
+ */
+public interface IntInstance extends TypeInstance {
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Value</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Value</em>' attribute.
+	 * @see #setValue(int)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getIntInstance_Value()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.int" required="true" ordered="false"
+	 * @generated
+	 */
+	int getValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.IntInstance#getValue <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Value</em>' attribute.
+	 * @see #getValue()
+	 * @generated
+	 */
+	void setValue(int value);
+
+} // IntInstance
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IntPropertyValue.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IntPropertyValue.java
new file mode 100755
index 0000000..4c367e7
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IntPropertyValue.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Int Property Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.IntPropertyValue#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getIntPropertyValue()
+ * @model
+ * @generated
+ */
+public interface IntPropertyValue extends TypeInstance {
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Value</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Value</em>' attribute.
+	 * @see #setValue(int)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getIntPropertyValue_Value()
+	 * @model unique="false" dataType="org.eclipse.papyrus.layers.stackmodel.layers.int" required="true" ordered="false"
+	 * @generated
+	 */
+	int getValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.IntPropertyValue#getValue <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Value</em>' attribute.
+	 * @see #getValue()
+	 * @generated
+	 */
+	void setValue(int value);
+
+} // IntPropertyValue
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IntType.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IntType.java
new file mode 100755
index 0000000..306b32f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IntType.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Int Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getIntType()
+ * @model
+ * @generated
+ */
+public interface IntType extends Type {
+} // IntType
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IntValue.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IntValue.java
new file mode 100755
index 0000000..378385e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IntValue.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Int Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.IntValue#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getIntValue()
+ * @model
+ * @generated
+ */
+public interface IntValue extends TypeInstance {
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Value</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Value</em>' attribute.
+	 * @see #setValue(int)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getIntValue_Value()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.int" required="true" ordered="false"
+	 * @generated
+	 */
+	int getValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.IntValue#getValue <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Value</em>' attribute.
+	 * @see #getValue()
+	 * @generated
+	 */
+	void setValue(int value);
+
+} // IntValue
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IsAbstractUmlSetter.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IsAbstractUmlSetter.java
new file mode 100755
index 0000000..c9a7ebb
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IsAbstractUmlSetter.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>is Abstract Uml Setter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getIsAbstractUmlSetter()
+ * @model
+ * @generated
+ */
+public interface IsAbstractUmlSetter extends PropertySetter {
+} // IsAbstractUmlSetter
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IsValidPropertySetter.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IsValidPropertySetter.java
new file mode 100755
index 0000000..3a05c71
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IsValidPropertySetter.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Is Valid Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getIsValidPropertySetter()
+ * @model
+ * @generated
+ */
+public interface IsValidPropertySetter extends PropertySetter {
+} // IsValidPropertySetter
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IsVisiblePropertySetter.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IsVisiblePropertySetter.java
new file mode 100755
index 0000000..45c7242
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/IsVisiblePropertySetter.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Is Visible Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getIsVisiblePropertySetter()
+ * @model
+ * @generated
+ */
+public interface IsVisiblePropertySetter extends PropertySetter {
+} // IsVisiblePropertySetter
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Layer.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Layer.java
new file mode 100755
index 0000000..1e9351a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Layer.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayer()
+ * @model
+ * @generated
+ */
+public interface Layer extends AbstractLayer {
+
+} // Layer
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerApplicationFactory.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerApplicationFactory.java
new file mode 100755
index 0000000..be09761
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerApplicationFactory.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer Application Factory</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory#getApplication <em>Application</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerApplicationFactory()
+ * @model
+ * @generated
+ */
+public interface LayerApplicationFactory extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Application</b></em>' container reference.
+	 * It is bidirectional and its opposite is '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getFactory <em>Factory</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Application</em>' container reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Application</em>' container reference.
+	 * @see #setApplication(LayersStackApplication)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerApplicationFactory_Application()
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getFactory
+	 * @model opposite="factory" ordered="false"
+	 * @generated
+	 */
+	LayersStackApplication getApplication();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory#getApplication <em>Application</em>}' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Application</em>' container reference.
+	 * @see #getApplication()
+	 * @generated
+	 */
+	void setApplication(LayersStackApplication value);
+
+} // LayerApplicationFactory
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerDescriptor.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerDescriptor.java
new file mode 100755
index 0000000..a6c0128
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerDescriptor.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor#getPropertyRegistry <em>Property Registry</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerDescriptor()
+ * @model
+ * @generated
+ */
+public interface LayerDescriptor extends EObject {
+
+	/**
+	 * Returns the value of the '<em><b>Property Registry</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Property Registry</em>' reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Property Registry</em>' reference.
+	 * @see #setPropertyRegistry(PropertyRegistry)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerDescriptor_PropertyRegistry()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	PropertyRegistry getPropertyRegistry();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor#getPropertyRegistry <em>Property Registry</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Property Registry</em>' reference.
+	 * @see #getPropertyRegistry()
+	 * @generated
+	 */
+	void setPropertyRegistry(PropertyRegistry value);
+} // LayerDescriptor
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerDescriptorRegistry.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerDescriptorRegistry.java
new file mode 100755
index 0000000..dd6031a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerDescriptorRegistry.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer Descriptor Registry</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry#getLayerDescriptors <em>Layer Descriptors</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerDescriptorRegistry()
+ * @model
+ * @generated
+ */
+public interface LayerDescriptorRegistry extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Layer Descriptors</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Layer Descriptors</em>' containment reference list isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Layer Descriptors</em>' containment reference list.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerDescriptorRegistry_LayerDescriptors()
+	 * @model containment="true" ordered="false"
+	 * @generated
+	 */
+	EList<LayerDescriptor> getLayerDescriptors();
+
+} // LayerDescriptorRegistry
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerExpression.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerExpression.java
new file mode 100755
index 0000000..39a889a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerExpression.java
@@ -0,0 +1,376 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import java.util.List;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getDescription <em>Description</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#isLayerEnabledInternal <em>Is Layer Enabled Internal</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#isLayerEnabled <em>Is Layer Enabled</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#isBranchEnabled <em>Is Branch Enabled</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getOwningLayersStack <em>Owning Layers Stack</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getState <em>State</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerExpression()
+ * @model abstract="true"
+ * @generated
+ */
+public interface LayerExpression extends ApplicationDependantElement {
+
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerExpression_Name()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Description</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Description</em>' attribute.
+	 * @see #setDescription(String)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerExpression_Description()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getDescription();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getDescription <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Description</em>' attribute.
+	 * @see #getDescription()
+	 * @generated
+	 */
+	void setDescription(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Is Layer Enabled Internal</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Is Layer Enabled Internal</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Is Layer Enabled Internal</em>' attribute.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerExpression_IsLayerEnabledInternal()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.boolean" required="true" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
+	 * @generated
+	 */
+	boolean isLayerEnabledInternal();
+
+	/**
+	 * Returns the value of the '<em><b>Is Layer Enabled</b></em>' attribute.
+	 * The default value is <code>"true"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Is Layer Enabled</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Is Layer Enabled</em>' attribute.
+	 * @see #setIsLayerEnabled(boolean)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerExpression_IsLayerEnabled()
+	 * @model default="true" dataType="org.eclipse.papyrus.layers.stackmodel.layers.boolean" required="true" ordered="false"
+	 * @generated
+	 */
+	boolean isLayerEnabled();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#isLayerEnabled <em>Is Layer Enabled</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Is Layer Enabled</em>' attribute.
+	 * @see #isLayerEnabled()
+	 * @generated
+	 */
+	void setIsLayerEnabled(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Is Branch Enabled</b></em>' attribute.
+	 * The default value is <code>"true"</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * Is the branch from this node to the root enabled ?
+	 * A branch is enabled if all node of the branch are enabled.
+	 * In other world, if an ancestor node is disable, the branch is disabled.
+	 * Setting the value of this node set the value of the subnodes.
+	 * <!-- end-model-doc -->
+	 *
+	 * @return the value of the '<em>Is Branch Enabled</em>' attribute.
+	 * @see #setIsBranchEnabled(boolean)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerExpression_IsBranchEnabled()
+	 * @model default="true" dataType="org.eclipse.papyrus.layers.stackmodel.layers.boolean" required="true" transient="true" ordered="false"
+	 * @generated
+	 */
+	boolean isBranchEnabled();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#isBranchEnabled <em>Is Branch Enabled</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Is Branch Enabled</em>' attribute.
+	 * @see #isBranchEnabled()
+	 * @generated
+	 */
+	void setIsBranchEnabled(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Owning Layers Stack</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Owning Layers Stack</em>' reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Owning Layers Stack</em>' reference.
+	 * @see #setOwningLayersStack(LayersStack)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerExpression_OwningLayersStack()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	LayersStack getOwningLayersStack();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getOwningLayersStack <em>Owning Layers Stack</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Owning Layers Stack</em>' reference.
+	 * @see #getOwningLayersStack()
+	 * @generated
+	 */
+	void setOwningLayersStack(LayersStack value);
+
+	/**
+	 * Returns the value of the '<em><b>State</b></em>' attribute.
+	 * The default value is <code>"detached"</code>.
+	 * The literals are from the enumeration {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerState}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>State</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>State</em>' attribute.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerState
+	 * @see #setState(LayerState)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerExpression_State()
+	 * @model default="detached" unique="false" required="true" ordered="false"
+	 * @generated
+	 */
+	LayerState getState();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getState <em>State</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>State</em>' attribute.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerState
+	 * @see #getState()
+	 * @generated
+	 */
+	void setState(LayerState value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.ComputePropertyValueCommand" required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException" viewRequired="true" viewOrdered="false"
+	 *        propertyRequired="true" propertyOrdered="false"
+	 * @generated
+	 */
+	ComputePropertyValueCommand getComputePropertyValueCommand(View view, Property property) throws LayersException;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.ComputePropertyValueCommand" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException" viewMany="true" propertyRequired="true" propertyOrdered="false"
+	 * @generated
+	 */
+	EList<ComputePropertyValueCommand> getViewsComputePropertyValueCommand(EList<View> view, Property property) throws LayersException;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.ComputePropertyValueCommand" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException" viewRequired="true" viewOrdered="false" propertyRequired="true" propertyMany="true"
+	 * @generated
+	 */
+	EList<ComputePropertyValueCommand> getPropertiesComputePropertyValueCommand(View view, EList<Property> property) throws LayersException;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * Method called to specify that this Layer should be initialized for the specified LayerStack.
+	 * Init this Layer for the specified LayersStack.
+	 * This method is called by the LayersStack when it detect that tha layer is attached to it.
+	 *
+	 * <!-- end-model-doc -->
+	 *
+	 * @model owningLayersStackRequired="true" owningLayersStackOrdered="false"
+	 * @generated
+	 */
+	void attachToLayersStack(LayersStack owningLayersStack);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * A checked version of getOwningLayersStack.
+	 *
+	 * <!-- end-model-doc -->
+	 *
+	 * @model kind="operation" required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.NotFoundException"
+	 * @generated
+	 */
+	LayersStack getLayersStack() throws NotFoundException;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * This method is called by the class immediately after entering in attached state.
+	 * The methodcan be used to start the layer behaviors.
+	 * <!-- end-model-doc -->
+	 *
+	 * @model exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException"
+	 * @generated
+	 */
+	void enterAttachedState() throws LayersException;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * Try to attach this Layer. If successful, the state go to "attached". Otherwise, an exception is thrown.
+	 * A Layer can be attached if its required attributes are set.
+	 * Required attributes:
+	 * <ul>
+	 * <li>application</li>
+	 * <li>owningLayerStack</li>
+	 * <li>parent container</li>
+	 * <li></li>
+	 * </ul>
+	 * Just after enterring in "attached" state, the enterAttachedState() method is called.
+	 * If this Layer is successfully attached, then attach subLayers.
+	 * <!-- end-model-doc -->
+	 *
+	 * @model exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException"
+	 * @generated
+	 */
+	void attach() throws LayersException;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * Detach the Layer. The state go to "detached".
+	 * Associated behavior are stopped.
+	 * <!-- end-model-doc -->
+	 *
+	 * @model exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException"
+	 * @generated
+	 */
+	void detach() throws LayersException;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * This method is called just before this Layer leave the attached state.
+	 *
+	 * <!-- end-model-doc -->
+	 *
+	 * @model
+	 * @generated
+	 */
+	void exitAttachedState();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @throws LayersException
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.ComputePropertyValueCommand" viewMany="true" propertyRequired="true" propertyOrdered="false"
+	 * @generated NOT
+	 */
+	EList<ComputePropertyValueCommand> getViewsComputePropertyValueCommand(List<View> view, Property property) throws LayersException;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @throws LayersException
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.ComputePropertyValueCommand" viewRequired="true" viewOrdered="false" propertyRequired="true" propertyMany="true"
+	 * @generated NOT
+	 */
+	EList<ComputePropertyValueCommand> getPropertiesComputePropertyValueCommand(View view, List<Property> property) throws LayersException;
+} // LayerExpression
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerNamedStyle.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerNamedStyle.java
new file mode 100755
index 0000000..31bc01a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerNamedStyle.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.gmf.runtime.notation.NamedStyle;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer Named Style</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle#getLayersStack <em>Layers Stack</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerNamedStyle()
+ * @model
+ * @generated
+ */
+public interface LayerNamedStyle extends NamedStyle {
+	/**
+	 * Returns the value of the '<em><b>Layers Stack</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Layers Stack</em>' containment reference list isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Layers Stack</em>' containment reference list.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerNamedStyle_LayersStack()
+	 * @model containment="true" ordered="false"
+	 * @generated
+	 */
+	EList<LayersStack> getLayersStack();
+
+} // LayerNamedStyle
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerOperator.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerOperator.java
new file mode 100755
index 0000000..30208d8
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerOperator.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.common.util.EList;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer Operator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator#getLayers <em>Layers</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerOperator()
+ * @model abstract="true"
+ * @generated
+ */
+public interface LayerOperator extends LayerExpression, LayersContainer {
+
+	/**
+	 * Returns the value of the '<em><b>Layers</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Layers</em>' containment reference list isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Layers</em>' containment reference list.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerOperator_Layers()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<LayerExpression> getLayers();
+} // LayerOperator
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerOperatorDescriptor.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerOperatorDescriptor.java
new file mode 100755
index 0000000..a58b1dc
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerOperatorDescriptor.java
@@ -0,0 +1,117 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer Operator Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#getPropertyOperators <em>Property Operators</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerOperatorDescriptor()
+ * @model
+ * @generated
+ */
+public interface LayerOperatorDescriptor extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Property Operators</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Property Operators</em>' reference list isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Property Operators</em>' reference list.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerOperatorDescriptor_PropertyOperators()
+	 * @model transient="true"
+	 * @generated
+	 */
+	EList<PropertyOperator> getPropertyOperators();
+
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerOperatorDescriptor_Name()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.NotFoundException" propertyRequired="true" propertyOrdered="false"
+	 * @generated
+	 */
+	PropertyOperator getPropertyOperator(Property property) throws NotFoundException;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model propertyRequired="true" propertyOrdered="false" operatorRequired="true" operatorOrdered="false"
+	 * @generated
+	 */
+	void setPropertyOperator(Property property, PropertyOperator operator);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	AbstractLayerOperator createLayerOperator();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model sizeDataType="org.eclipse.papyrus.layers.stackmodel.layers.int" sizeRequired="true" sizeOrdered="false" defaultPropertyOperatorRequired="true" defaultPropertyOperatorOrdered="false"
+	 * @generated
+	 */
+	void setPropertyCollectionSize(int size, DefaultPropertyOperator defaultPropertyOperator);
+
+} // LayerOperatorDescriptor
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerOperatorDescriptorRegistry.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerOperatorDescriptorRegistry.java
new file mode 100755
index 0000000..62aa80e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerOperatorDescriptorRegistry.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer Operator Descriptor Registry</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getDescriptors <em>Descriptors</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getPropertyOperators <em>Property Operators</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getPropertyCollectionSize <em>Property Collection Size</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getDefaultOperator <em>Default Operator</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerOperatorDescriptorRegistry()
+ * @model
+ * @generated
+ */
+public interface LayerOperatorDescriptorRegistry extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Descriptors</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Descriptors</em>' containment reference list isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Descriptors</em>' containment reference list.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerOperatorDescriptorRegistry_Descriptors()
+	 * @model containment="true" transient="true" ordered="false"
+	 * @generated
+	 */
+	EList<LayerOperatorDescriptor> getDescriptors();
+
+	/**
+	 * Returns the value of the '<em><b>Property Operators</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Property Operators</em>' containment reference list isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Property Operators</em>' containment reference list.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerOperatorDescriptorRegistry_PropertyOperators()
+	 * @model containment="true" transient="true"
+	 * @generated
+	 */
+	EList<PropertyOperator> getPropertyOperators();
+
+	/**
+	 * Returns the value of the '<em><b>Property Collection Size</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Property Collection Size</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Property Collection Size</em>' attribute.
+	 * @see #setPropertyCollectionSize(int)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerOperatorDescriptorRegistry_PropertyCollectionSize()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.int" required="true" ordered="false"
+	 * @generated
+	 */
+	int getPropertyCollectionSize();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getPropertyCollectionSize <em>Property Collection Size</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Property Collection Size</em>' attribute.
+	 * @see #getPropertyCollectionSize()
+	 * @generated
+	 */
+	void setPropertyCollectionSize(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Default Operator</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Default Operator</em>' reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Default Operator</em>' reference.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerOperatorDescriptorRegistry_DefaultOperator()
+	 * @model required="true" transient="true" changeable="false" ordered="false"
+	 * @generated
+	 */
+	DefaultPropertyOperator getDefaultOperator();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model descriptorRequired="true" descriptorOrdered="false"
+	 * @generated
+	 */
+	void addLayerOperatorDescriptor(LayerOperatorDescriptor descriptor);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.NotFoundException" nameDataType="org.eclipse.papyrus.layers.stackmodel.layers.String" nameRequired="true" nameOrdered="false"
+	 * @generated
+	 */
+	LayerOperatorDescriptor getLayerOperatorDescriptor(String name) throws NotFoundException;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model operatorRequired="true" operatorOrdered="false"
+	 * @generated
+	 */
+	void addPropertyOperator(PropertyOperator operator);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.NotFoundException" nameDataType="org.eclipse.papyrus.layers.stackmodel.layers.String" nameRequired="true" nameOrdered="false"
+	 * @generated
+	 */
+	PropertyOperator getPropertyOperator(String name) throws NotFoundException;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model exceptions="org.eclipse.papyrus.layers.stackmodel.layers.NotFoundException" propertyRequired="true" propertyOrdered="false" operatorNameDataType="org.eclipse.papyrus.layers.stackmodel.layers.String" operatorNameRequired="true"
+	 *        operatorNameOrdered="false" layerDescriptorNameDataType="org.eclipse.papyrus.layers.stackmodel.layers.String" layerDescriptorNameRequired="true" layerDescriptorNameOrdered="false"
+	 * @generated
+	 */
+	void attachOperatorToDescriptor(Property property, String operatorName, String layerDescriptorName) throws NotFoundException;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException" layerOperatorIDDataType="org.eclipse.papyrus.layers.stackmodel.layers.String" layerOperatorIDRequired="true" layerOperatorIDOrdered="false"
+	 * @generated
+	 */
+	AbstractLayerOperator createLayerOperator(String layerOperatorID) throws LayersException;
+
+} // LayerOperatorDescriptorRegistry
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerStackDescriptorRegistry.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerStackDescriptorRegistry.java
new file mode 100755
index 0000000..761b090
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerStackDescriptorRegistry.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer Stack Descriptor Registry</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerStackDescriptorRegistry()
+ * @model
+ * @generated
+ */
+public interface LayerStackDescriptorRegistry extends EObject {
+} // LayerStackDescriptorRegistry
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerState.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerState.java
new file mode 100755
index 0000000..50a3f18
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayerState.java
@@ -0,0 +1,229 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Layer State</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayerState()
+ * @model
+ * @generated
+ */
+public enum LayerState implements Enumerator {
+	/**
+	 * The '<em><b>Detached</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #DETACHED_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DETACHED(0, "detached", "detached"),
+
+	/**
+	 * The '<em><b>Attached</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #ATTACHED_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	ATTACHED(1, "attached", "attached");
+
+	/**
+	 * The '<em><b>Detached</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Detached</b></em>' literal object isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #DETACHED
+	 * @model name="detached"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DETACHED_VALUE = 0;
+
+	/**
+	 * The '<em><b>Attached</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Attached</b></em>' literal object isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #ATTACHED
+	 * @model name="attached"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ATTACHED_VALUE = 1;
+
+	/**
+	 * An array of all the '<em><b>Layer State</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private static final LayerState[] VALUES_ARRAY =
+			new LayerState[] {
+					DETACHED,
+					ATTACHED,
+			};
+
+	/**
+	 * A public read-only list of all the '<em><b>Layer State</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static final List<LayerState> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Layer State</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static LayerState get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			LayerState result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Layer State</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static LayerState getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			LayerState result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Layer State</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static LayerState get(int value) {
+		switch (value) {
+		case DETACHED_VALUE:
+			return DETACHED;
+		case ATTACHED_VALUE:
+			return ATTACHED;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private LayerState(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+
+} // LayerState
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersContainer.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersContainer.java
new file mode 100755
index 0000000..1078ca6
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersContainer.java
@@ -0,0 +1,32 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Container</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Layers implementing this interface can contains others layers.
+ * The interface provide one method allowing to add a LayerExpression to the container.
+ * <!-- end-model-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayersContainer()
+ * @model interface="true" abstract="true"
+ * @generated
+ */
+public interface LayersContainer extends EObject {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model layerRequired="true" layerOrdered="false"
+	 * @generated
+	 */
+	void addLayer(LayerExpression layer);
+
+} // LayersContainer
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersFactory.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersFactory.java
new file mode 100755
index 0000000..aa751a3
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersFactory.java
@@ -0,0 +1,586 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage
+ * @generated
+ */
+public interface LayersFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	LayersFactory eINSTANCE = org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Layer Named Style</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Layer Named Style</em>'.
+	 * @generated
+	 */
+	LayerNamedStyle createLayerNamedStyle();
+
+	/**
+	 * Returns a new object of class '<em>Stack</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Stack</em>'.
+	 * @generated
+	 */
+	LayersStack createLayersStack();
+
+	/**
+	 * Returns a new object of class '<em>Layer</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Layer</em>'.
+	 * @generated
+	 */
+	Layer createLayer();
+
+	/**
+	 * Returns a new object of class '<em>Color</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Color</em>'.
+	 * @generated
+	 */
+	Color createColor();
+
+	/**
+	 * Returns a new object of class '<em>Color Instance</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Color Instance</em>'.
+	 * @generated
+	 */
+	ColorInstance createColorInstance();
+
+	/**
+	 * Returns a new object of class '<em>Fill Instance</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Fill Instance</em>'.
+	 * @generated
+	 */
+	FillInstance createFillInstance();
+
+	/**
+	 * Returns a new object of class '<em>Fill</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Fill</em>'.
+	 * @generated
+	 */
+	Fill createFill();
+
+	/**
+	 * Returns a new object of class '<em>Fill Property Setter</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Fill Property Setter</em>'.
+	 * @generated
+	 */
+	FillPropertySetter createFillPropertySetter();
+
+	/**
+	 * Returns a new object of class '<em>Is Valid Property Setter</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Is Valid Property Setter</em>'.
+	 * @generated
+	 */
+	IsValidPropertySetter createIsValidPropertySetter();
+
+	/**
+	 * Returns a new object of class '<em>Null Property Setter</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Null Property Setter</em>'.
+	 * @generated
+	 */
+	NullPropertySetter createNullPropertySetter();
+
+	/**
+	 * Returns a new object of class '<em>Line Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Line Type</em>'.
+	 * @generated
+	 */
+	LineType createLineType();
+
+	/**
+	 * Returns a new object of class '<em>Line Instance</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Line Instance</em>'.
+	 * @generated
+	 */
+	LineInstance createLineInstance();
+
+	/**
+	 * Returns a new object of class '<em>Line Property Setter</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Line Property Setter</em>'.
+	 * @generated
+	 */
+	LinePropertySetter createLinePropertySetter();
+
+	/**
+	 * Returns a new object of class '<em>Font Property Setter</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Font Property Setter</em>'.
+	 * @generated
+	 */
+	FontPropertySetter createFontPropertySetter();
+
+	/**
+	 * Returns a new object of class '<em>Font Instance</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Font Instance</em>'.
+	 * @generated
+	 */
+	FontInstance createFontInstance();
+
+	/**
+	 * Returns a new object of class '<em>Font Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Font Type</em>'.
+	 * @generated
+	 */
+	FontType createFontType();
+
+	/**
+	 * Returns a new object of class '<em>Is Visible Property Setter</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Is Visible Property Setter</em>'.
+	 * @generated
+	 */
+	IsVisiblePropertySetter createIsVisiblePropertySetter();
+
+	/**
+	 * Returns a new object of class '<em>Layer Operator Descriptor Registry</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Layer Operator Descriptor Registry</em>'.
+	 * @generated
+	 */
+	LayerOperatorDescriptorRegistry createLayerOperatorDescriptorRegistry();
+
+	/**
+	 * Returns a new object of class '<em>Top Layer Operator Descriptor</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Top Layer Operator Descriptor</em>'.
+	 * @generated
+	 */
+	TopLayerOperatorDescriptor createTopLayerOperatorDescriptor();
+
+	/**
+	 * Returns a new object of class '<em>Stacked Layer Operator Descriptor</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Stacked Layer Operator Descriptor</em>'.
+	 * @generated
+	 */
+	StackedLayerOperatorDescriptor createStackedLayerOperatorDescriptor();
+
+	/**
+	 * Returns a new object of class '<em>Custom Property Operator</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Custom Property Operator</em>'.
+	 * @generated
+	 */
+	CustomPropertyOperator createCustomPropertyOperator();
+
+	/**
+	 * Returns a new object of class '<em>And Stacked Layer Operator Descriptor</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>And Stacked Layer Operator Descriptor</em>'.
+	 * @generated
+	 */
+	AndStackedLayerOperatorDescriptor createAndStackedLayerOperatorDescriptor();
+
+	/**
+	 * Returns a new object of class '<em>Or Stacked Layer Operator Descriptor</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Or Stacked Layer Operator Descriptor</em>'.
+	 * @generated
+	 */
+	OrStackedLayerOperatorDescriptor createOrStackedLayerOperatorDescriptor();
+
+	/**
+	 * Returns a new object of class '<em>Is Abstract Uml Setter</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Is Abstract Uml Setter</em>'.
+	 * @generated
+	 */
+	IsAbstractUmlSetter createIsAbstractUmlSetter();
+
+	/**
+	 * Returns a new object of class '<em>All Views Derived Layer</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>All Views Derived Layer</em>'.
+	 * @generated
+	 */
+	AllViewsDerivedLayer createAllViewsDerivedLayer();
+
+	/**
+	 * Returns a new object of class '<em>Layer Descriptor</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Layer Descriptor</em>'.
+	 * @generated
+	 */
+	LayerDescriptor createLayerDescriptor();
+
+	/**
+	 * Returns a new object of class '<em>Layer Application Factory</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Layer Application Factory</em>'.
+	 * @generated
+	 */
+	LayerApplicationFactory createLayerApplicationFactory();
+
+	/**
+	 * Returns a new object of class '<em>Property Setter Registry</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Property Setter Registry</em>'.
+	 * @generated
+	 */
+	PropertySetterRegistry createPropertySetterRegistry();
+
+	/**
+	 * Returns a new object of class '<em>Property</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Property</em>'.
+	 * @generated
+	 */
+	Property createProperty();
+
+	/**
+	 * Returns a new object of class '<em>Metamodel</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Metamodel</em>'.
+	 * @generated
+	 */
+	Metamodel createMetamodel();
+
+	/**
+	 * Returns a new object of class '<em>Folder</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Folder</em>'.
+	 * @generated
+	 */
+	Folder createFolder();
+
+	/**
+	 * Returns a new object of class '<em>Int Instance</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Int Instance</em>'.
+	 * @generated
+	 */
+	IntInstance createIntInstance();
+
+	/**
+	 * Returns a new object of class '<em>Boolean Instance</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Boolean Instance</em>'.
+	 * @generated
+	 */
+	BooleanInstance createBooleanInstance();
+
+	/**
+	 * Returns a new object of class '<em>String Instance</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>String Instance</em>'.
+	 * @generated
+	 */
+	StringInstance createStringInstance();
+
+	/**
+	 * Returns a new object of class '<em>Int Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Int Type</em>'.
+	 * @generated
+	 */
+	IntType createIntType();
+
+	/**
+	 * Returns a new object of class '<em>Boolean Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Boolean Type</em>'.
+	 * @generated
+	 */
+	BooleanType createBooleanType();
+
+	/**
+	 * Returns a new object of class '<em>String Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>String Type</em>'.
+	 * @generated
+	 */
+	StringType createStringType();
+
+	/**
+	 * Returns a new object of class '<em>Custom Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Custom Type</em>'.
+	 * @generated
+	 */
+	CustomType createCustomType();
+
+	/**
+	 * Returns a new object of class '<em>Layer Operator Descriptor</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Layer Operator Descriptor</em>'.
+	 * @generated
+	 */
+	LayerOperatorDescriptor createLayerOperatorDescriptor();
+
+	/**
+	 * Returns a new object of class '<em>Property Operator</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Property Operator</em>'.
+	 * @generated
+	 */
+	PropertyOperator createPropertyOperator();
+
+	/**
+	 * Returns a new object of class '<em>Default Property Operator</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Default Property Operator</em>'.
+	 * @generated
+	 */
+	DefaultPropertyOperator createDefaultPropertyOperator();
+
+	/**
+	 * Returns a new object of class '<em>Stack Application</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Stack Application</em>'.
+	 * @generated
+	 */
+	LayersStackApplication createLayersStackApplication();
+
+	/**
+	 * Returns a new object of class '<em>Layer Stack Descriptor Registry</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Layer Stack Descriptor Registry</em>'.
+	 * @generated
+	 */
+	LayerStackDescriptorRegistry createLayerStackDescriptorRegistry();
+
+	/**
+	 * Returns a new object of class '<em>Property Registry</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Property Registry</em>'.
+	 * @generated
+	 */
+	PropertyRegistry createPropertyRegistry();
+
+	/**
+	 * Returns a new object of class '<em>Property Index</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Property Index</em>'.
+	 * @generated
+	 */
+	PropertyIndex createPropertyIndex();
+
+	/**
+	 * Returns a new object of class '<em>Simple Layer Descriptor</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Simple Layer Descriptor</em>'.
+	 * @generated
+	 */
+	SimpleLayerDescriptor createSimpleLayerDescriptor();
+
+	/**
+	 * Returns a new object of class '<em>Reg Exp Layer Descriptor</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Reg Exp Layer Descriptor</em>'.
+	 * @generated
+	 */
+	RegExpLayerDescriptor createRegExpLayerDescriptor();
+
+	/**
+	 * Returns a new object of class '<em>Null Instance</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Null Instance</em>'.
+	 * @generated
+	 */
+	NullInstance createNullInstance();
+
+	/**
+	 * Returns a new object of class '<em>Reg Exp Layer</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Reg Exp Layer</em>'.
+	 * @generated
+	 */
+	RegExpLayer createRegExpLayer();
+
+	/**
+	 * Returns a new object of class '<em>Type Registry</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Type Registry</em>'.
+	 * @generated
+	 */
+	TypeRegistry createTypeRegistry();
+
+	/**
+	 * Returns a new object of class '<em>Layer Descriptor Registry</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Layer Descriptor Registry</em>'.
+	 * @generated
+	 */
+	LayerDescriptorRegistry createLayerDescriptorRegistry();
+
+	/**
+	 * Returns a new object of class '<em>Top Layer Operator</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Top Layer Operator</em>'.
+	 * @generated
+	 */
+	TopLayerOperator createTopLayerOperator();
+
+	/**
+	 * Returns a new object of class '<em>Stacked Layer Operator</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Stacked Layer Operator</em>'.
+	 * @generated
+	 */
+	StackedLayerOperator createStackedLayerOperator();
+
+	/**
+	 * Returns a new object of class '<em>Custom Layer Operator</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Custom Layer Operator</em>'.
+	 * @generated
+	 */
+	CustomLayerOperator createCustomLayerOperator();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	LayersPackage getLayersPackage();
+
+} // LayersFactory
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersFactoryForStack.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersFactoryForStack.java
new file mode 100755
index 0000000..690225f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersFactoryForStack.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage
+ * @generated
+ */
+public interface LayersFactoryForStack {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	LayersFactoryForStack eINSTANCE = org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Stack</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Stack</em>'.
+	 * @generated
+	 */
+	LayersStack createLayersStack();
+
+	/**
+	 * Returns a new object of class '<em>Layer</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Layer</em>'.
+	 * @generated NOT
+	 */
+	public Layer createLayer(LayersContainer parent, LayersStack owningStack, LayersStackApplication application)
+			throws LayersException;
+
+
+	/**
+	 * Returns a new object of class '<em>Reg Exp Layer</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Reg Exp Layer</em>'.
+	 * @throws LayersException
+	 * @generated
+	 */
+	public RegExpLayer createRegExpLayer(LayersContainer parent, LayersStack owningStack, LayersStackApplication application) throws LayersException;
+
+	/**
+	 * Returns a new object of class '<em>Top Layer Operator</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Top Layer Operator</em>'.
+	 * @generated
+	 */
+	public TopLayerOperator createTopLayerOperator(LayersContainer parent, LayersStack owningStack, LayersStackApplication application) throws LayersException;
+
+	/**
+	 * Returns a new object of class '<em>Stacked Layer Operator</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return a new object of class '<em>Stacked Layer Operator</em>'.
+	 * @generated
+	 */
+	public StackedLayerOperator createStackedLayerOperator(LayersContainer parent, LayersStack owningStack, LayersStackApplication application) throws LayersException;
+
+	/**
+	 * Standard initialization of a newly created layer.
+	 *
+	 * @param layer
+	 * @param parentLayer
+	 * @param owningStack
+	 * @param application
+	 * @return
+	 * @throws LayersException
+	 */
+	public LayerExpression initLayer(LayerExpression layer, LayersContainer parentLayer, LayersStack owningStack, LayersStackApplication application) throws LayersException;
+
+	/**
+	 * Create a LayerOperator by its ID.
+	 * IDs are those used when the LayerOperator is registered in application'registry.
+	 *
+	 * @param layerOperatorID
+	 * @param parent
+	 * @param owningStack
+	 * @param application
+	 * @return
+	 * @throws LayersException
+	 */
+	public AbstractLayerOperator createLayerOperator(String layerOperatorID, LayersContainer parent, LayersStack owningStack, LayersStackApplication application) throws LayersException;
+
+
+} // LayersFactory
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersPackage.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersPackage.java
new file mode 100755
index 0000000..07adf8b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersPackage.java
@@ -0,0 +1,12171 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * Start the LayesStack.
+ * This method should be called after the LayersStack creation. It is not called from the constructor, because
+ * the initialisation can differ if the LayersStack is created by the user or by EMF after a reloading.
+ *
+ * <!-- end-model-doc -->
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface LayersPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	String eNAME = "layers";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	String eNS_URI = "org.eclipse.papyrus.layers.0.10";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	String eNS_PREFIX = "org.eclipse.papyrus.layers.stackmodel.layers";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	LayersPackage eINSTANCE = org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerNamedStyleImpl <em>Layer Named Style</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerNamedStyleImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerNamedStyle()
+	 * @generated
+	 */
+	int LAYER_NAMED_STYLE = 0;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_NAMED_STYLE__NAME = NotationPackage.NAMED_STYLE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Layers Stack</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_NAMED_STYLE__LAYERS_STACK = NotationPackage.NAMED_STYLE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Layer Named Style</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_NAMED_STYLE_FEATURE_COUNT = NotationPackage.NAMED_STYLE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Layer Named Style</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 * @ordered
+	 */
+	int LAYER_NAMED_STYLE_OPERATION_COUNT = /* NotationPackage.NAMED_STYLE_OPERATION_COUNT + */0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer <em>Container</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayersContainer()
+	 * @generated
+	 */
+	int LAYERS_CONTAINER = 26;
+
+	/**
+	 * The number of structural features of the '<em>Container</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_CONTAINER_FEATURE_COUNT = 0;
+
+	/**
+	 * The operation id for the '<em>Add Layer</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_CONTAINER___ADD_LAYER__LAYEREXPRESSION = 0;
+
+	/**
+	 * The number of operations of the '<em>Container</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_CONTAINER_OPERATION_COUNT = 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackImpl <em>Stack</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayersStack()
+	 * @generated
+	 */
+	int LAYERS_STACK = 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl <em>Layer Expression</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerExpression()
+	 * @generated
+	 */
+	int LAYER_EXPRESSION = 2;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl <em>Layer</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayer()
+	 * @generated
+	 */
+	int LAYER = 47;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeInstanceImpl <em>Type Instance</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeInstanceImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getTypeInstance()
+	 * @generated
+	 */
+	int TYPE_INSTANCE = 11;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToTypeInstanceMapImpl <em>String To Type Instance Map</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToTypeInstanceMapImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStringToTypeInstanceMap()
+	 * @generated
+	 */
+	int STRING_TO_TYPE_INSTANCE_MAP = 29;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerDescriptorImpl <em>Layer Descriptor</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerDescriptorImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerDescriptor()
+	 * @generated
+	 */
+	int LAYER_DESCRIPTOR = 16;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FolderElementImpl <em>Folder Element</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FolderElementImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFolderElement()
+	 * @generated
+	 */
+	int FOLDER_ELEMENT = 5;
+
+	/**
+	 * The feature id for the '<em><b>Layers</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK__LAYERS = LAYERS_CONTAINER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK__NAME = LAYERS_CONTAINER_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK__DESCRIPTION = LAYERS_CONTAINER_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Diagram</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK__DIAGRAM = LAYERS_CONTAINER_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>State</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK__STATE = LAYERS_CONTAINER_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of structural features of the '<em>Stack</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK_FEATURE_COUNT = LAYERS_CONTAINER_FEATURE_COUNT + 5;
+
+	/**
+	 * The operation id for the '<em>Add Layer</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK___ADD_LAYER__LAYEREXPRESSION = LAYERS_CONTAINER___ADD_LAYER__LAYEREXPRESSION;
+
+	/**
+	 * The operation id for the '<em>Get Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY = LAYERS_CONTAINER_OPERATION_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Get Properties Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST = LAYERS_CONTAINER_OPERATION_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>Get Views Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY = LAYERS_CONTAINER_OPERATION_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>Start After Creation</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK___START_AFTER_CREATION = LAYERS_CONTAINER_OPERATION_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>Attach Layers</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK___ATTACH_LAYERS = LAYERS_CONTAINER_OPERATION_COUNT + 4;
+
+	/**
+	 * The operation id for the '<em>Attach</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK___ATTACH = LAYERS_CONTAINER_OPERATION_COUNT + 5;
+
+	/**
+	 * The operation id for the '<em>Detach</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK___DETACH = LAYERS_CONTAINER_OPERATION_COUNT + 6;
+
+	/**
+	 * The operation id for the '<em>Enter Attached State</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK___ENTER_ATTACHED_STATE = LAYERS_CONTAINER_OPERATION_COUNT + 7;
+
+	/**
+	 * The operation id for the '<em>Exit Attached State</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK___EXIT_ATTACHED_STATE = LAYERS_CONTAINER_OPERATION_COUNT + 8;
+
+	/**
+	 * The number of operations of the '<em>Stack</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK_OPERATION_COUNT = LAYERS_CONTAINER_OPERATION_COUNT + 9;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.ApplicationDependantElementImpl <em>Application Dependant Element</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.ApplicationDependantElementImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getApplicationDependantElement()
+	 * @generated
+	 */
+	int APPLICATION_DEPENDANT_ELEMENT = 3;
+
+	/**
+	 * The feature id for the '<em><b>Application</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int APPLICATION_DEPENDANT_ELEMENT__APPLICATION = 0;
+
+	/**
+	 * The number of structural features of the '<em>Application Dependant Element</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int APPLICATION_DEPENDANT_ELEMENT_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Application Dependant Element</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int APPLICATION_DEPENDANT_ELEMENT_OPERATION_COUNT = 0;
+
+	/**
+	 * The feature id for the '<em><b>Application</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_EXPRESSION__APPLICATION = APPLICATION_DEPENDANT_ELEMENT__APPLICATION;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_EXPRESSION__NAME = APPLICATION_DEPENDANT_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_EXPRESSION__DESCRIPTION = APPLICATION_DEPENDANT_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Is Layer Enabled Internal</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_EXPRESSION__IS_LAYER_ENABLED_INTERNAL = APPLICATION_DEPENDANT_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Is Layer Enabled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_EXPRESSION__IS_LAYER_ENABLED = APPLICATION_DEPENDANT_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Is Branch Enabled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_EXPRESSION__IS_BRANCH_ENABLED = APPLICATION_DEPENDANT_ELEMENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Owning Layers Stack</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_EXPRESSION__OWNING_LAYERS_STACK = APPLICATION_DEPENDANT_ELEMENT_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>State</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_EXPRESSION__STATE = APPLICATION_DEPENDANT_ELEMENT_FEATURE_COUNT + 6;
+
+	/**
+	 * The number of structural features of the '<em>Layer Expression</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_EXPRESSION_FEATURE_COUNT = APPLICATION_DEPENDANT_ELEMENT_FEATURE_COUNT + 7;
+
+	/**
+	 * The operation id for the '<em>Get Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_EXPRESSION___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY = APPLICATION_DEPENDANT_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Get Views Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_EXPRESSION___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY = APPLICATION_DEPENDANT_ELEMENT_OPERATION_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>Get Properties Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_EXPRESSION___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST = APPLICATION_DEPENDANT_ELEMENT_OPERATION_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>Attach To Layers Stack</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_EXPRESSION___ATTACH_TO_LAYERS_STACK__LAYERSSTACK = APPLICATION_DEPENDANT_ELEMENT_OPERATION_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>Get Layers Stack</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_EXPRESSION___GET_LAYERS_STACK = APPLICATION_DEPENDANT_ELEMENT_OPERATION_COUNT + 4;
+
+	/**
+	 * The operation id for the '<em>Enter Attached State</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_EXPRESSION___ENTER_ATTACHED_STATE = APPLICATION_DEPENDANT_ELEMENT_OPERATION_COUNT + 5;
+
+	/**
+	 * The operation id for the '<em>Attach</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_EXPRESSION___ATTACH = APPLICATION_DEPENDANT_ELEMENT_OPERATION_COUNT + 6;
+
+	/**
+	 * The operation id for the '<em>Detach</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_EXPRESSION___DETACH = APPLICATION_DEPENDANT_ELEMENT_OPERATION_COUNT + 7;
+
+	/**
+	 * The operation id for the '<em>Exit Attached State</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_EXPRESSION___EXIT_ATTACHED_STATE = APPLICATION_DEPENDANT_ELEMENT_OPERATION_COUNT + 8;
+
+	/**
+	 * The number of operations of the '<em>Layer Expression</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_EXPRESSION_OPERATION_COUNT = APPLICATION_DEPENDANT_ELEMENT_OPERATION_COUNT + 9;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerApplicationFactoryImpl <em>Layer Application Factory</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerApplicationFactoryImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerApplicationFactory()
+	 * @generated
+	 */
+	int LAYER_APPLICATION_FACTORY = 17;
+
+	/**
+	 * The number of structural features of the '<em>Folder Element</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FOLDER_ELEMENT_FEATURE_COUNT = 0;
+
+	/**
+	 * The number of operations of the '<em>Folder Element</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FOLDER_ELEMENT_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyImpl <em>Property</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getProperty()
+	 * @generated
+	 */
+	int PROPERTY = 8;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeImpl <em>Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getType()
+	 * @generated
+	 */
+	int TYPE = 9;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.MetamodelImpl <em>Metamodel</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.MetamodelImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getMetamodel()
+	 * @generated
+	 */
+	int METAMODEL = 10;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FolderImpl <em>Folder</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FolderImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFolder()
+	 * @generated
+	 */
+	int FOLDER = 30;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.IntInstanceImpl <em>Int Instance</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.IntInstanceImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getIntInstance()
+	 * @generated
+	 */
+	int INT_INSTANCE = 31;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.BooleanInstanceImpl <em>Boolean Instance</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.BooleanInstanceImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getBooleanInstance()
+	 * @generated
+	 */
+	int BOOLEAN_INSTANCE = 32;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringInstanceImpl <em>String Instance</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StringInstanceImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStringInstance()
+	 * @generated
+	 */
+	int STRING_INSTANCE = 33;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.IntTypeImpl <em>Int Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.IntTypeImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getIntType()
+	 * @generated
+	 */
+	int INT_TYPE = 34;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.BooleanTypeImpl <em>Boolean Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.BooleanTypeImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getBooleanType()
+	 * @generated
+	 */
+	int BOOLEAN_TYPE = 35;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringTypeImpl <em>String Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StringTypeImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStringType()
+	 * @generated
+	 */
+	int STRING_TYPE = 36;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomTypeImpl <em>Custom Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomTypeImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getCustomType()
+	 * @generated
+	 */
+	int CUSTOM_TYPE = 37;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl <em>Stack Application</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayersStackApplication()
+	 * @generated
+	 */
+	int LAYERS_STACK_APPLICATION = 4;
+
+	/**
+	 * The feature id for the '<em><b>Layers Stacks</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK_APPLICATION__LAYERS_STACKS = FOLDER_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Layer Stack Registry</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK_APPLICATION__LAYER_STACK_REGISTRY = FOLDER_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Property Registry</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK_APPLICATION__PROPERTY_REGISTRY = FOLDER_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Layer Descriptor Registry</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK_APPLICATION__LAYER_DESCRIPTOR_REGISTRY = FOLDER_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Factory</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK_APPLICATION__FACTORY = FOLDER_ELEMENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Property Setter Registry</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY = FOLDER_ELEMENT_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Layer Operator Descriptor Registry</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK_APPLICATION__LAYER_OPERATOR_DESCRIPTOR_REGISTRY = FOLDER_ELEMENT_FEATURE_COUNT + 6;
+
+	/**
+	 * The number of structural features of the '<em>Stack Application</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK_APPLICATION_FEATURE_COUNT = FOLDER_ELEMENT_FEATURE_COUNT + 7;
+
+	/**
+	 * The operation id for the '<em>Get Layers Stack For</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK_APPLICATION___GET_LAYERS_STACK_FOR__DIAGRAM = FOLDER_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Remove Layers Stack For</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK_APPLICATION___REMOVE_LAYERS_STACK_FOR__DIAGRAM = FOLDER_ELEMENT_OPERATION_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>Is Layers Stack Attached For</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK_APPLICATION___IS_LAYERS_STACK_ATTACHED_FOR__DIAGRAM = FOLDER_ELEMENT_OPERATION_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>Create Layers Stack For</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK_APPLICATION___CREATE_LAYERS_STACK_FOR__DIAGRAM = FOLDER_ELEMENT_OPERATION_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>Lookup Layers Stack For</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK_APPLICATION___LOOKUP_LAYERS_STACK_FOR__DIAGRAM = FOLDER_ELEMENT_OPERATION_COUNT + 4;
+
+	/**
+	 * The number of operations of the '<em>Stack Application</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYERS_STACK_APPLICATION_OPERATION_COUNT = FOLDER_ELEMENT_OPERATION_COUNT + 5;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerStackDescriptorRegistryImpl <em>Layer Stack Descriptor Registry</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerStackDescriptorRegistryImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerStackDescriptorRegistry()
+	 * @generated
+	 */
+	int LAYER_STACK_DESCRIPTOR_REGISTRY = 6;
+
+	/**
+	 * The number of structural features of the '<em>Layer Stack Descriptor Registry</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_STACK_DESCRIPTOR_REGISTRY_FEATURE_COUNT = 0;
+
+	/**
+	 * The number of operations of the '<em>Layer Stack Descriptor Registry</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_STACK_DESCRIPTOR_REGISTRY_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyRegistryImpl <em>Property Registry</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyRegistryImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getPropertyRegistry()
+	 * @generated
+	 */
+	int PROPERTY_REGISTRY = 7;
+
+	/**
+	 * The feature id for the '<em><b>Properties</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_REGISTRY__PROPERTIES = 0;
+
+	/**
+	 * The feature id for the '<em><b>Type Registry</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_REGISTRY__TYPE_REGISTRY = 1;
+
+	/**
+	 * The feature id for the '<em><b>Properties Count</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_REGISTRY__PROPERTIES_COUNT = 2;
+
+	/**
+	 * The number of structural features of the '<em>Property Registry</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_REGISTRY_FEATURE_COUNT = 3;
+
+	/**
+	 * The operation id for the '<em>Get Property Index</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_REGISTRY___GET_PROPERTY_INDEX__STRING = 0;
+
+	/**
+	 * The operation id for the '<em>Get Property</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_REGISTRY___GET_PROPERTY__STRING = 1;
+
+	/**
+	 * The operation id for the '<em>Add Property</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_REGISTRY___ADD_PROPERTY__PROPERTY = 2;
+
+	/**
+	 * The number of operations of the '<em>Property Registry</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_REGISTRY_OPERATION_COUNT = 3;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY__TYPE = FOLDER_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Default Value</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY__DEFAULT_VALUE = FOLDER_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY__NAME = FOLDER_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY__DESCRIPTION = FOLDER_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Index</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY__INDEX = FOLDER_ELEMENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of structural features of the '<em>Property</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_FEATURE_COUNT = FOLDER_ELEMENT_FEATURE_COUNT + 5;
+
+	/**
+	 * The operation id for the '<em>Create Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY___CREATE_INSTANCE = FOLDER_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Property</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_OPERATION_COUNT = FOLDER_ELEMENT_OPERATION_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Metamodel</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TYPE__METAMODEL = FOLDER_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TYPE__NAME = FOLDER_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TYPE__DESCRIPTION = FOLDER_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TYPE_FEATURE_COUNT = FOLDER_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>Create Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TYPE___CREATE_INSTANCE = FOLDER_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TYPE_OPERATION_COUNT = FOLDER_ELEMENT_OPERATION_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int METAMODEL__NAME = FOLDER_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int METAMODEL__DESCRIPTION = FOLDER_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Nsuri</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int METAMODEL__NSURI = FOLDER_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Plugin ID</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int METAMODEL__PLUGIN_ID = FOLDER_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>EPackage Instance Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int METAMODEL__EPACKAGE_INSTANCE_NAME = FOLDER_ELEMENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Is Type Valid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int METAMODEL__IS_TYPE_VALID = FOLDER_ELEMENT_FEATURE_COUNT + 5;
+
+	/**
+	 * The number of structural features of the '<em>Metamodel</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int METAMODEL_FEATURE_COUNT = FOLDER_ELEMENT_FEATURE_COUNT + 6;
+
+	/**
+	 * The operation id for the '<em>Get EPackage</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int METAMODEL___GET_EPACKAGE = FOLDER_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Metamodel</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int METAMODEL_OPERATION_COUNT = FOLDER_ELEMENT_OPERATION_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand <em>Compute Property Value Command Itf</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getComputePropertyValueCommandItf()
+	 * @generated
+	 */
+	int COMPUTE_PROPERTY_VALUE_COMMAND_ITF = 12;
+
+	/**
+	 * The number of structural features of the '<em>Compute Property Value Command Itf</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int COMPUTE_PROPERTY_VALUE_COMMAND_ITF_FEATURE_COUNT = 0;
+
+	/**
+	 * The operation id for the '<em>Get Cmd Value</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int COMPUTE_PROPERTY_VALUE_COMMAND_ITF___GET_CMD_VALUE = 0;
+
+	/**
+	 * The number of operations of the '<em>Compute Property Value Command Itf</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int COMPUTE_PROPERTY_VALUE_COMMAND_ITF_OPERATION_COUNT = 1;
+
+	/**
+	 * The number of structural features of the '<em>Type Instance</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TYPE_INSTANCE_FEATURE_COUNT = COMPUTE_PROPERTY_VALUE_COMMAND_ITF_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Get Cmd Value</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TYPE_INSTANCE___GET_CMD_VALUE = COMPUTE_PROPERTY_VALUE_COMMAND_ITF___GET_CMD_VALUE;
+
+	/**
+	 * The operation id for the '<em>Set Value From String</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TYPE_INSTANCE___SET_VALUE_FROM_STRING__STRING = COMPUTE_PROPERTY_VALUE_COMMAND_ITF_OPERATION_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Set Value From Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TYPE_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE = COMPUTE_PROPERTY_VALUE_COMMAND_ITF_OPERATION_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Type Instance</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TYPE_INSTANCE_OPERATION_COUNT = COMPUTE_PROPERTY_VALUE_COMMAND_ITF_OPERATION_COUNT + 2;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToPropertyIndexMapImpl <em>String To Property Index Map</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToPropertyIndexMapImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStringToPropertyIndexMap()
+	 * @generated
+	 */
+	int STRING_TO_PROPERTY_INDEX_MAP = 42;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyIndexImpl <em>Property Index</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyIndexImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getPropertyIndex()
+	 * @generated
+	 */
+	int PROPERTY_INDEX = 41;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeRegistryImpl <em>Type Registry</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeRegistryImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getTypeRegistry()
+	 * @generated
+	 */
+	int TYPE_REGISTRY = 13;
+
+	/**
+	 * The feature id for the '<em><b>Types</b></em>' map.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TYPE_REGISTRY__TYPES = 0;
+
+	/**
+	 * The number of structural features of the '<em>Type Registry</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TYPE_REGISTRY_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Type Registry</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TYPE_REGISTRY_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToTypeMapImpl <em>String To Type Map</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToTypeMapImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStringToTypeMap()
+	 * @generated
+	 */
+	int STRING_TO_TYPE_MAP = 14;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_TO_TYPE_MAP__VALUE = 0;
+
+	/**
+	 * The feature id for the '<em><b>Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_TO_TYPE_MAP__KEY = 1;
+
+	/**
+	 * The number of structural features of the '<em>String To Type Map</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_TO_TYPE_MAP_FEATURE_COUNT = 2;
+
+	/**
+	 * The number of operations of the '<em>String To Type Map</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_TO_TYPE_MAP_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerDescriptorRegistryImpl <em>Layer Descriptor Registry</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerDescriptorRegistryImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerDescriptorRegistry()
+	 * @generated
+	 */
+	int LAYER_DESCRIPTOR_REGISTRY = 15;
+
+	/**
+	 * The feature id for the '<em><b>Layer Descriptors</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_DESCRIPTOR_REGISTRY__LAYER_DESCRIPTORS = 0;
+
+	/**
+	 * The number of structural features of the '<em>Layer Descriptor Registry</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_DESCRIPTOR_REGISTRY_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Layer Descriptor Registry</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_DESCRIPTOR_REGISTRY_OPERATION_COUNT = 0;
+
+	/**
+	 * The feature id for the '<em><b>Property Registry</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_DESCRIPTOR__PROPERTY_REGISTRY = 0;
+
+	/**
+	 * The number of structural features of the '<em>Layer Descriptor</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_DESCRIPTOR_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Layer Descriptor</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_DESCRIPTOR_OPERATION_COUNT = 0;
+
+	/**
+	 * The feature id for the '<em><b>Application</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_APPLICATION_FACTORY__APPLICATION = 0;
+
+	/**
+	 * The number of structural features of the '<em>Layer Application Factory</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_APPLICATION_FACTORY_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Layer Application Factory</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_APPLICATION_FACTORY_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterRegistryImpl <em>Property Setter Registry</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterRegistryImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getPropertySetterRegistry()
+	 * @generated
+	 */
+	int PROPERTY_SETTER_REGISTRY = 18;
+
+	/**
+	 * The feature id for the '<em><b>Property Setters</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS = 0;
+
+	/**
+	 * The feature id for the '<em><b>Setter Map</b></em>' map.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_SETTER_REGISTRY__SETTER_MAP = 1;
+
+	/**
+	 * The feature id for the '<em><b>Application</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_SETTER_REGISTRY__APPLICATION = 2;
+
+	/**
+	 * The number of structural features of the '<em>Property Setter Registry</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_SETTER_REGISTRY_FEATURE_COUNT = 3;
+
+	/**
+	 * The operation id for the '<em>Get Property Setter</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_SETTER_REGISTRY___GET_PROPERTY_SETTER__PROPERTY = 0;
+
+	/**
+	 * The operation id for the '<em>Get Property Setter</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_SETTER_REGISTRY___GET_PROPERTY_SETTER__STRING = 1;
+
+	/**
+	 * The operation id for the '<em>Add Property Setter</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_SETTER_REGISTRY___ADD_PROPERTY_SETTER__PROPERTYSETTER = 2;
+
+	/**
+	 * The number of operations of the '<em>Property Setter Registry</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_SETTER_REGISTRY_OPERATION_COUNT = 3;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterImpl <em>Property Setter</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getPropertySetter()
+	 * @generated
+	 */
+	int PROPERTY_SETTER = 19;
+
+	/**
+	 * The feature id for the '<em><b>Property</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_SETTER__PROPERTY = 0;
+
+	/**
+	 * The feature id for the '<em><b>Property Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_SETTER__PROPERTY_NAME = 1;
+
+	/**
+	 * The number of structural features of the '<em>Property Setter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_SETTER_FEATURE_COUNT = 2;
+
+	/**
+	 * The operation id for the '<em>Set Value</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE = 0;
+
+	/**
+	 * The number of operations of the '<em>Property Setter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_SETTER_OPERATION_COUNT = 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToPropertySetterImpl <em>String To Property Setter</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToPropertySetterImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStringToPropertySetter()
+	 * @generated
+	 */
+	int STRING_TO_PROPERTY_SETTER = 20;
+
+	/**
+	 * The feature id for the '<em><b>Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_TO_PROPERTY_SETTER__KEY = 0;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_TO_PROPERTY_SETTER__VALUE = 1;
+
+	/**
+	 * The number of structural features of the '<em>String To Property Setter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_TO_PROPERTY_SETTER_FEATURE_COUNT = 2;
+
+	/**
+	 * The number of operations of the '<em>String To Property Setter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_TO_PROPERTY_SETTER_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerImpl <em>Abstract Layer</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getAbstractLayer()
+	 * @generated
+	 */
+	int ABSTRACT_LAYER = 28;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorImpl <em>Layer Operator</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerOperator()
+	 * @generated
+	 */
+	int LAYER_OPERATOR = 25;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerOperatorImpl <em>Abstract Layer Operator</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerOperatorImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getAbstractLayerOperator()
+	 * @generated
+	 */
+	int ABSTRACT_LAYER_OPERATOR = 24;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl <em>Layer Operator Descriptor</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerOperatorDescriptor()
+	 * @generated
+	 */
+	int LAYER_OPERATOR_DESCRIPTOR = 22;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyOperatorImpl <em>Property Operator</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyOperatorImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getPropertyOperator()
+	 * @generated
+	 */
+	int PROPERTY_OPERATOR = 23;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.DefaultPropertyOperatorImpl <em>Default Property Operator</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.DefaultPropertyOperatorImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getDefaultPropertyOperator()
+	 * @generated
+	 */
+	int DEFAULT_PROPERTY_OPERATOR = 27;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TopLayerOperatorImpl <em>Top Layer Operator</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.TopLayerOperatorImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getTopLayerOperator()
+	 * @generated
+	 */
+	int TOP_LAYER_OPERATOR = 38;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StackedLayerOperatorImpl <em>Stacked Layer Operator</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StackedLayerOperatorImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStackedLayerOperator()
+	 * @generated
+	 */
+	int STACKED_LAYER_OPERATOR = 39;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomLayerOperatorImpl <em>Custom Layer Operator</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomLayerOperatorImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getCustomLayerOperator()
+	 * @generated
+	 */
+	int CUSTOM_LAYER_OPERATOR = 40;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.SimpleLayerDescriptorImpl <em>Simple Layer Descriptor</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.SimpleLayerDescriptorImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getSimpleLayerDescriptor()
+	 * @generated
+	 */
+	int SIMPLE_LAYER_DESCRIPTOR = 43;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerDescriptorImpl <em>Reg Exp Layer Descriptor</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerDescriptorImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getRegExpLayerDescriptor()
+	 * @generated
+	 */
+	int REG_EXP_LAYER_DESCRIPTOR = 44;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.NullInstanceImpl <em>Null Instance</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.NullInstanceImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getNullInstance()
+	 * @generated
+	 */
+	int NULL_INSTANCE = 45;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerImpl <em>Reg Exp Layer</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getRegExpLayer()
+	 * @generated
+	 */
+	int REG_EXP_LAYER = 46;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.ColorImpl <em>Color</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.ColorImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getColor()
+	 * @generated
+	 */
+	int COLOR = 48;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.ColorInstanceImpl <em>Color Instance</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.ColorInstanceImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getColorInstance()
+	 * @generated
+	 */
+	int COLOR_INSTANCE = 49;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FillInstanceImpl <em>Fill Instance</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FillInstanceImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFillInstance()
+	 * @generated
+	 */
+	int FILL_INSTANCE = 50;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FillImpl <em>Fill</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FillImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFill()
+	 * @generated
+	 */
+	int FILL = 51;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FillPropertySetterImpl <em>Fill Property Setter</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FillPropertySetterImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFillPropertySetter()
+	 * @generated
+	 */
+	int FILL_PROPERTY_SETTER = 52;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.IsValidPropertySetterImpl <em>Is Valid Property Setter</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.IsValidPropertySetterImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getIsValidPropertySetter()
+	 * @generated
+	 */
+	int IS_VALID_PROPERTY_SETTER = 53;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.NullPropertySetterImpl <em>Null Property Setter</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.NullPropertySetterImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getNullPropertySetter()
+	 * @generated
+	 */
+	int NULL_PROPERTY_SETTER = 54;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LineTypeImpl <em>Line Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LineTypeImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLineType()
+	 * @generated
+	 */
+	int LINE_TYPE = 55;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LineInstanceImpl <em>Line Instance</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LineInstanceImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLineInstance()
+	 * @generated
+	 */
+	int LINE_INSTANCE = 56;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LinePropertySetterImpl <em>Line Property Setter</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LinePropertySetterImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLinePropertySetter()
+	 * @generated
+	 */
+	int LINE_PROPERTY_SETTER = 57;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FontPropertySetterImpl <em>Font Property Setter</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FontPropertySetterImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFontPropertySetter()
+	 * @generated
+	 */
+	int FONT_PROPERTY_SETTER = 58;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FontInstanceImpl <em>Font Instance</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FontInstanceImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFontInstance()
+	 * @generated
+	 */
+	int FONT_INSTANCE = 59;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FontTypeImpl <em>Font Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FontTypeImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFontType()
+	 * @generated
+	 */
+	int FONT_TYPE = 60;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.IsVisiblePropertySetterImpl <em>Is Visible Property Setter</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.IsVisiblePropertySetterImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getIsVisiblePropertySetter()
+	 * @generated
+	 */
+	int IS_VISIBLE_PROPERTY_SETTER = 61;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl <em>Layer Operator Descriptor Registry</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerOperatorDescriptorRegistry()
+	 * @generated
+	 */
+	int LAYER_OPERATOR_DESCRIPTOR_REGISTRY = 21;
+
+	/**
+	 * The feature id for the '<em><b>Descriptors</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS = 0;
+
+	/**
+	 * The feature id for the '<em><b>Property Operators</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_OPERATORS = 1;
+
+	/**
+	 * The feature id for the '<em><b>Property Collection Size</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_COLLECTION_SIZE = 2;
+
+	/**
+	 * The feature id for the '<em><b>Default Operator</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DEFAULT_OPERATOR = 3;
+
+	/**
+	 * The number of structural features of the '<em>Layer Operator Descriptor Registry</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_DESCRIPTOR_REGISTRY_FEATURE_COUNT = 4;
+
+	/**
+	 * The operation id for the '<em>Add Layer Operator Descriptor</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_DESCRIPTOR_REGISTRY___ADD_LAYER_OPERATOR_DESCRIPTOR__LAYEROPERATORDESCRIPTOR = 0;
+
+	/**
+	 * The operation id for the '<em>Get Layer Operator Descriptor</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_DESCRIPTOR_REGISTRY___GET_LAYER_OPERATOR_DESCRIPTOR__STRING = 1;
+
+	/**
+	 * The operation id for the '<em>Add Property Operator</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_DESCRIPTOR_REGISTRY___ADD_PROPERTY_OPERATOR__PROPERTYOPERATOR = 2;
+
+	/**
+	 * The operation id for the '<em>Get Property Operator</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_DESCRIPTOR_REGISTRY___GET_PROPERTY_OPERATOR__STRING = 3;
+
+	/**
+	 * The operation id for the '<em>Attach Operator To Descriptor</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_DESCRIPTOR_REGISTRY___ATTACH_OPERATOR_TO_DESCRIPTOR__PROPERTY_STRING_STRING = 4;
+
+	/**
+	 * The operation id for the '<em>Create Layer Operator</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_DESCRIPTOR_REGISTRY___CREATE_LAYER_OPERATOR__STRING = 5;
+
+	/**
+	 * The number of operations of the '<em>Layer Operator Descriptor Registry</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_DESCRIPTOR_REGISTRY_OPERATION_COUNT = 6;
+
+	/**
+	 * The feature id for the '<em><b>Property Operators</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS = 0;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_DESCRIPTOR__NAME = 1;
+
+	/**
+	 * The number of structural features of the '<em>Layer Operator Descriptor</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_DESCRIPTOR_FEATURE_COUNT = 2;
+
+	/**
+	 * The operation id for the '<em>Get Property Operator</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_DESCRIPTOR___GET_PROPERTY_OPERATOR__PROPERTY = 0;
+
+	/**
+	 * The operation id for the '<em>Set Property Operator</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_OPERATOR__PROPERTY_PROPERTYOPERATOR = 1;
+
+	/**
+	 * The operation id for the '<em>Create Layer Operator</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_DESCRIPTOR___CREATE_LAYER_OPERATOR = 2;
+
+	/**
+	 * The operation id for the '<em>Set Property Collection Size</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_COLLECTION_SIZE__INT_DEFAULTPROPERTYOPERATOR = 3;
+
+	/**
+	 * The number of operations of the '<em>Layer Operator Descriptor</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_DESCRIPTOR_OPERATION_COUNT = 4;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_OPERATOR__NAME = 0;
+
+	/**
+	 * The number of structural features of the '<em>Property Operator</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_OPERATOR_FEATURE_COUNT = 1;
+
+	/**
+	 * The operation id for the '<em>Get Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST = 0;
+
+	/**
+	 * The number of operations of the '<em>Property Operator</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_OPERATOR_OPERATION_COUNT = 1;
+
+	/**
+	 * The feature id for the '<em><b>Application</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR__APPLICATION = LAYER_EXPRESSION__APPLICATION;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR__NAME = LAYER_EXPRESSION__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR__DESCRIPTION = LAYER_EXPRESSION__DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Is Layer Enabled Internal</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR__IS_LAYER_ENABLED_INTERNAL = LAYER_EXPRESSION__IS_LAYER_ENABLED_INTERNAL;
+
+	/**
+	 * The feature id for the '<em><b>Is Layer Enabled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR__IS_LAYER_ENABLED = LAYER_EXPRESSION__IS_LAYER_ENABLED;
+
+	/**
+	 * The feature id for the '<em><b>Is Branch Enabled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR__IS_BRANCH_ENABLED = LAYER_EXPRESSION__IS_BRANCH_ENABLED;
+
+	/**
+	 * The feature id for the '<em><b>Owning Layers Stack</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR__OWNING_LAYERS_STACK = LAYER_EXPRESSION__OWNING_LAYERS_STACK;
+
+	/**
+	 * The feature id for the '<em><b>State</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR__STATE = LAYER_EXPRESSION__STATE;
+
+	/**
+	 * The feature id for the '<em><b>Layers</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR__LAYERS = LAYER_EXPRESSION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Layer Operator</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_FEATURE_COUNT = LAYER_EXPRESSION_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>Get Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY = LAYER_EXPRESSION___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Get Views Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY = LAYER_EXPRESSION___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Get Properties Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST = LAYER_EXPRESSION___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST;
+
+	/**
+	 * The operation id for the '<em>Attach To Layers Stack</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR___ATTACH_TO_LAYERS_STACK__LAYERSSTACK = LAYER_EXPRESSION___ATTACH_TO_LAYERS_STACK__LAYERSSTACK;
+
+	/**
+	 * The operation id for the '<em>Get Layers Stack</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR___GET_LAYERS_STACK = LAYER_EXPRESSION___GET_LAYERS_STACK;
+
+	/**
+	 * The operation id for the '<em>Enter Attached State</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR___ENTER_ATTACHED_STATE = LAYER_EXPRESSION___ENTER_ATTACHED_STATE;
+
+	/**
+	 * The operation id for the '<em>Attach</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR___ATTACH = LAYER_EXPRESSION___ATTACH;
+
+	/**
+	 * The operation id for the '<em>Detach</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR___DETACH = LAYER_EXPRESSION___DETACH;
+
+	/**
+	 * The operation id for the '<em>Exit Attached State</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR___EXIT_ATTACHED_STATE = LAYER_EXPRESSION___EXIT_ATTACHED_STATE;
+
+	/**
+	 * The operation id for the '<em>Add Layer</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR___ADD_LAYER__LAYEREXPRESSION = LAYER_EXPRESSION_OPERATION_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Layer Operator</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATOR_OPERATION_COUNT = LAYER_EXPRESSION_OPERATION_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Application</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER_OPERATOR__APPLICATION = LAYER_OPERATOR__APPLICATION;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER_OPERATOR__NAME = LAYER_OPERATOR__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER_OPERATOR__DESCRIPTION = LAYER_OPERATOR__DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Is Layer Enabled Internal</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER_OPERATOR__IS_LAYER_ENABLED_INTERNAL = LAYER_OPERATOR__IS_LAYER_ENABLED_INTERNAL;
+
+	/**
+	 * The feature id for the '<em><b>Is Layer Enabled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER_OPERATOR__IS_LAYER_ENABLED = LAYER_OPERATOR__IS_LAYER_ENABLED;
+
+	/**
+	 * The feature id for the '<em><b>Is Branch Enabled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER_OPERATOR__IS_BRANCH_ENABLED = LAYER_OPERATOR__IS_BRANCH_ENABLED;
+
+	/**
+	 * The feature id for the '<em><b>Owning Layers Stack</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER_OPERATOR__OWNING_LAYERS_STACK = LAYER_OPERATOR__OWNING_LAYERS_STACK;
+
+	/**
+	 * The feature id for the '<em><b>State</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER_OPERATOR__STATE = LAYER_OPERATOR__STATE;
+
+	/**
+	 * The feature id for the '<em><b>Layers</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER_OPERATOR__LAYERS = LAYER_OPERATOR__LAYERS;
+
+	/**
+	 * The feature id for the '<em><b>Layer Operator Descriptor</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR = LAYER_OPERATOR_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Layer Operator Descriptor Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR_NAME = LAYER_OPERATOR_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Abstract Layer Operator</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER_OPERATOR_FEATURE_COUNT = LAYER_OPERATOR_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>Get Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY = LAYER_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Get Views Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER_OPERATOR___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY = LAYER_OPERATOR___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Get Properties Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER_OPERATOR___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST = LAYER_OPERATOR___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST;
+
+	/**
+	 * The operation id for the '<em>Attach To Layers Stack</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER_OPERATOR___ATTACH_TO_LAYERS_STACK__LAYERSSTACK = LAYER_OPERATOR___ATTACH_TO_LAYERS_STACK__LAYERSSTACK;
+
+	/**
+	 * The operation id for the '<em>Get Layers Stack</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER_OPERATOR___GET_LAYERS_STACK = LAYER_OPERATOR___GET_LAYERS_STACK;
+
+	/**
+	 * The operation id for the '<em>Enter Attached State</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER_OPERATOR___ENTER_ATTACHED_STATE = LAYER_OPERATOR___ENTER_ATTACHED_STATE;
+
+	/**
+	 * The operation id for the '<em>Attach</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER_OPERATOR___ATTACH = LAYER_OPERATOR___ATTACH;
+
+	/**
+	 * The operation id for the '<em>Detach</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER_OPERATOR___DETACH = LAYER_OPERATOR___DETACH;
+
+	/**
+	 * The operation id for the '<em>Exit Attached State</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER_OPERATOR___EXIT_ATTACHED_STATE = LAYER_OPERATOR___EXIT_ATTACHED_STATE;
+
+	/**
+	 * The operation id for the '<em>Add Layer</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER_OPERATOR___ADD_LAYER__LAYEREXPRESSION = LAYER_OPERATOR___ADD_LAYER__LAYEREXPRESSION;
+
+	/**
+	 * The operation id for the '<em>Is Descriptor Set</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER_OPERATOR___IS_DESCRIPTOR_SET = LAYER_OPERATOR_OPERATION_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Reset Descriptor</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER_OPERATOR___RESET_DESCRIPTOR = LAYER_OPERATOR_OPERATION_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Abstract Layer Operator</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER_OPERATOR_OPERATION_COUNT = LAYER_OPERATOR_OPERATION_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int DEFAULT_PROPERTY_OPERATOR__NAME = PROPERTY_OPERATOR__NAME;
+
+	/**
+	 * The number of structural features of the '<em>Default Property Operator</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int DEFAULT_PROPERTY_OPERATOR_FEATURE_COUNT = PROPERTY_OPERATOR_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Get Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int DEFAULT_PROPERTY_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST = PROPERTY_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST;
+
+	/**
+	 * The number of operations of the '<em>Default Property Operator</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int DEFAULT_PROPERTY_OPERATOR_OPERATION_COUNT = PROPERTY_OPERATOR_OPERATION_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Application</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER__APPLICATION = LAYER_EXPRESSION__APPLICATION;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER__NAME = LAYER_EXPRESSION__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER__DESCRIPTION = LAYER_EXPRESSION__DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Is Layer Enabled Internal</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER__IS_LAYER_ENABLED_INTERNAL = LAYER_EXPRESSION__IS_LAYER_ENABLED_INTERNAL;
+
+	/**
+	 * The feature id for the '<em><b>Is Layer Enabled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER__IS_LAYER_ENABLED = LAYER_EXPRESSION__IS_LAYER_ENABLED;
+
+	/**
+	 * The feature id for the '<em><b>Is Branch Enabled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER__IS_BRANCH_ENABLED = LAYER_EXPRESSION__IS_BRANCH_ENABLED;
+
+	/**
+	 * The feature id for the '<em><b>Owning Layers Stack</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER__OWNING_LAYERS_STACK = LAYER_EXPRESSION__OWNING_LAYERS_STACK;
+
+	/**
+	 * The feature id for the '<em><b>State</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER__STATE = LAYER_EXPRESSION__STATE;
+
+	/**
+	 * The feature id for the '<em><b>Property Values</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER__PROPERTY_VALUES = LAYER_EXPRESSION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Property Value Map</b></em>' map.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER__PROPERTY_VALUE_MAP = LAYER_EXPRESSION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Layer Descriptor</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER__LAYER_DESCRIPTOR = LAYER_EXPRESSION_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Views</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER__VIEWS = LAYER_EXPRESSION_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Attached Properties</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER__ATTACHED_PROPERTIES = LAYER_EXPRESSION_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of structural features of the '<em>Abstract Layer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER_FEATURE_COUNT = LAYER_EXPRESSION_FEATURE_COUNT + 5;
+
+	/**
+	 * The operation id for the '<em>Get Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY = LAYER_EXPRESSION___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Get Views Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY = LAYER_EXPRESSION___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Get Properties Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST = LAYER_EXPRESSION___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST;
+
+	/**
+	 * The operation id for the '<em>Attach To Layers Stack</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER___ATTACH_TO_LAYERS_STACK__LAYERSSTACK = LAYER_EXPRESSION___ATTACH_TO_LAYERS_STACK__LAYERSSTACK;
+
+	/**
+	 * The operation id for the '<em>Get Layers Stack</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER___GET_LAYERS_STACK = LAYER_EXPRESSION___GET_LAYERS_STACK;
+
+	/**
+	 * The operation id for the '<em>Enter Attached State</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER___ENTER_ATTACHED_STATE = LAYER_EXPRESSION___ENTER_ATTACHED_STATE;
+
+	/**
+	 * The operation id for the '<em>Attach</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER___ATTACH = LAYER_EXPRESSION___ATTACH;
+
+	/**
+	 * The operation id for the '<em>Detach</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER___DETACH = LAYER_EXPRESSION___DETACH;
+
+	/**
+	 * The operation id for the '<em>Exit Attached State</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER___EXIT_ATTACHED_STATE = LAYER_EXPRESSION___EXIT_ATTACHED_STATE;
+
+	/**
+	 * The operation id for the '<em>Add Property Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER___ADD_PROPERTY_INSTANCE__PROPERTY = LAYER_EXPRESSION_OPERATION_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Remove Property Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER___REMOVE_PROPERTY_INSTANCE__PROPERTY = LAYER_EXPRESSION_OPERATION_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>Get Property Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER___GET_PROPERTY_INSTANCE__PROPERTY = LAYER_EXPRESSION_OPERATION_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>Get Property Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER___GET_PROPERTY_INSTANCE__STRING = LAYER_EXPRESSION_OPERATION_COUNT + 3;
+
+	/**
+	 * The number of operations of the '<em>Abstract Layer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ABSTRACT_LAYER_OPERATION_COUNT = LAYER_EXPRESSION_OPERATION_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_TO_TYPE_INSTANCE_MAP__KEY = 0;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_TO_TYPE_INSTANCE_MAP__VALUE = 1;
+
+	/**
+	 * The number of structural features of the '<em>String To Type Instance Map</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_TO_TYPE_INSTANCE_MAP_FEATURE_COUNT = 2;
+
+	/**
+	 * The number of operations of the '<em>String To Type Instance Map</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_TO_TYPE_INSTANCE_MAP_OPERATION_COUNT = 0;
+
+	/**
+	 * The feature id for the '<em><b>Elements</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FOLDER__ELEMENTS = FOLDER_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FOLDER__NAME = FOLDER_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Folder</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FOLDER_FEATURE_COUNT = FOLDER_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Folder</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FOLDER_OPERATION_COUNT = FOLDER_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INT_INSTANCE__VALUE = TYPE_INSTANCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Int Instance</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INT_INSTANCE_FEATURE_COUNT = TYPE_INSTANCE_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>Get Cmd Value</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INT_INSTANCE___GET_CMD_VALUE = TYPE_INSTANCE___GET_CMD_VALUE;
+
+	/**
+	 * The operation id for the '<em>Set Value From String</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INT_INSTANCE___SET_VALUE_FROM_STRING__STRING = TYPE_INSTANCE___SET_VALUE_FROM_STRING__STRING;
+
+	/**
+	 * The operation id for the '<em>Set Value From Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INT_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE = TYPE_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE;
+
+	/**
+	 * The number of operations of the '<em>Int Instance</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INT_INSTANCE_OPERATION_COUNT = TYPE_INSTANCE_OPERATION_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_INSTANCE__VALUE = TYPE_INSTANCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Boolean Instance</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_INSTANCE_FEATURE_COUNT = TYPE_INSTANCE_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>Get Cmd Value</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_INSTANCE___GET_CMD_VALUE = TYPE_INSTANCE___GET_CMD_VALUE;
+
+	/**
+	 * The operation id for the '<em>Set Value From String</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_INSTANCE___SET_VALUE_FROM_STRING__STRING = TYPE_INSTANCE___SET_VALUE_FROM_STRING__STRING;
+
+	/**
+	 * The operation id for the '<em>Set Value From Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE = TYPE_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE;
+
+	/**
+	 * The number of operations of the '<em>Boolean Instance</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_INSTANCE_OPERATION_COUNT = TYPE_INSTANCE_OPERATION_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_INSTANCE__VALUE = TYPE_INSTANCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>String Instance</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_INSTANCE_FEATURE_COUNT = TYPE_INSTANCE_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>Get Cmd Value</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_INSTANCE___GET_CMD_VALUE = TYPE_INSTANCE___GET_CMD_VALUE;
+
+	/**
+	 * The operation id for the '<em>Set Value From String</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_INSTANCE___SET_VALUE_FROM_STRING__STRING = TYPE_INSTANCE___SET_VALUE_FROM_STRING__STRING;
+
+	/**
+	 * The operation id for the '<em>Set Value From Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE = TYPE_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE;
+
+	/**
+	 * The number of operations of the '<em>String Instance</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_INSTANCE_OPERATION_COUNT = TYPE_INSTANCE_OPERATION_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Metamodel</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INT_TYPE__METAMODEL = TYPE__METAMODEL;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INT_TYPE__NAME = TYPE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INT_TYPE__DESCRIPTION = TYPE__DESCRIPTION;
+
+	/**
+	 * The number of structural features of the '<em>Int Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INT_TYPE_FEATURE_COUNT = TYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Create Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INT_TYPE___CREATE_INSTANCE = TYPE___CREATE_INSTANCE;
+
+	/**
+	 * The number of operations of the '<em>Int Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int INT_TYPE_OPERATION_COUNT = TYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Metamodel</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_TYPE__METAMODEL = TYPE__METAMODEL;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_TYPE__NAME = TYPE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_TYPE__DESCRIPTION = TYPE__DESCRIPTION;
+
+	/**
+	 * The number of structural features of the '<em>Boolean Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_TYPE_FEATURE_COUNT = TYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Create Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_TYPE___CREATE_INSTANCE = TYPE___CREATE_INSTANCE;
+
+	/**
+	 * The number of operations of the '<em>Boolean Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int BOOLEAN_TYPE_OPERATION_COUNT = TYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Metamodel</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_TYPE__METAMODEL = TYPE__METAMODEL;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_TYPE__NAME = TYPE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_TYPE__DESCRIPTION = TYPE__DESCRIPTION;
+
+	/**
+	 * The number of structural features of the '<em>String Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_TYPE_FEATURE_COUNT = TYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Create Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_TYPE___CREATE_INSTANCE = TYPE___CREATE_INSTANCE;
+
+	/**
+	 * The number of operations of the '<em>String Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_TYPE_OPERATION_COUNT = TYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Metamodel</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_TYPE__METAMODEL = TYPE__METAMODEL;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_TYPE__NAME = TYPE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_TYPE__DESCRIPTION = TYPE__DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Classifier</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_TYPE__CLASSIFIER = TYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Custom Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_TYPE_FEATURE_COUNT = TYPE_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>Create Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_TYPE___CREATE_INSTANCE = TYPE___CREATE_INSTANCE;
+
+	/**
+	 * The number of operations of the '<em>Custom Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_TYPE_OPERATION_COUNT = TYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Application</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR__APPLICATION = ABSTRACT_LAYER_OPERATOR__APPLICATION;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR__NAME = ABSTRACT_LAYER_OPERATOR__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR__DESCRIPTION = ABSTRACT_LAYER_OPERATOR__DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Is Layer Enabled Internal</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR__IS_LAYER_ENABLED_INTERNAL = ABSTRACT_LAYER_OPERATOR__IS_LAYER_ENABLED_INTERNAL;
+
+	/**
+	 * The feature id for the '<em><b>Is Layer Enabled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR__IS_LAYER_ENABLED = ABSTRACT_LAYER_OPERATOR__IS_LAYER_ENABLED;
+
+	/**
+	 * The feature id for the '<em><b>Is Branch Enabled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR__IS_BRANCH_ENABLED = ABSTRACT_LAYER_OPERATOR__IS_BRANCH_ENABLED;
+
+	/**
+	 * The feature id for the '<em><b>Owning Layers Stack</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR__OWNING_LAYERS_STACK = ABSTRACT_LAYER_OPERATOR__OWNING_LAYERS_STACK;
+
+	/**
+	 * The feature id for the '<em><b>State</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR__STATE = ABSTRACT_LAYER_OPERATOR__STATE;
+
+	/**
+	 * The feature id for the '<em><b>Layers</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR__LAYERS = ABSTRACT_LAYER_OPERATOR__LAYERS;
+
+	/**
+	 * The feature id for the '<em><b>Layer Operator Descriptor</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR = ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR;
+
+	/**
+	 * The feature id for the '<em><b>Layer Operator Descriptor Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR_NAME = ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR_NAME;
+
+	/**
+	 * The number of structural features of the '<em>Top Layer Operator</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR_FEATURE_COUNT = ABSTRACT_LAYER_OPERATOR_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Get Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY = ABSTRACT_LAYER_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Get Views Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY = ABSTRACT_LAYER_OPERATOR___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Get Properties Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST = ABSTRACT_LAYER_OPERATOR___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST;
+
+	/**
+	 * The operation id for the '<em>Attach To Layers Stack</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR___ATTACH_TO_LAYERS_STACK__LAYERSSTACK = ABSTRACT_LAYER_OPERATOR___ATTACH_TO_LAYERS_STACK__LAYERSSTACK;
+
+	/**
+	 * The operation id for the '<em>Get Layers Stack</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR___GET_LAYERS_STACK = ABSTRACT_LAYER_OPERATOR___GET_LAYERS_STACK;
+
+	/**
+	 * The operation id for the '<em>Enter Attached State</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR___ENTER_ATTACHED_STATE = ABSTRACT_LAYER_OPERATOR___ENTER_ATTACHED_STATE;
+
+	/**
+	 * The operation id for the '<em>Attach</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR___ATTACH = ABSTRACT_LAYER_OPERATOR___ATTACH;
+
+	/**
+	 * The operation id for the '<em>Detach</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR___DETACH = ABSTRACT_LAYER_OPERATOR___DETACH;
+
+	/**
+	 * The operation id for the '<em>Exit Attached State</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR___EXIT_ATTACHED_STATE = ABSTRACT_LAYER_OPERATOR___EXIT_ATTACHED_STATE;
+
+	/**
+	 * The operation id for the '<em>Add Layer</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR___ADD_LAYER__LAYEREXPRESSION = ABSTRACT_LAYER_OPERATOR___ADD_LAYER__LAYEREXPRESSION;
+
+	/**
+	 * The operation id for the '<em>Is Descriptor Set</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR___IS_DESCRIPTOR_SET = ABSTRACT_LAYER_OPERATOR___IS_DESCRIPTOR_SET;
+
+	/**
+	 * The operation id for the '<em>Reset Descriptor</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR___RESET_DESCRIPTOR = ABSTRACT_LAYER_OPERATOR___RESET_DESCRIPTOR;
+
+	/**
+	 * The number of operations of the '<em>Top Layer Operator</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR_OPERATION_COUNT = ABSTRACT_LAYER_OPERATOR_OPERATION_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Application</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR__APPLICATION = ABSTRACT_LAYER_OPERATOR__APPLICATION;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR__NAME = ABSTRACT_LAYER_OPERATOR__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR__DESCRIPTION = ABSTRACT_LAYER_OPERATOR__DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Is Layer Enabled Internal</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR__IS_LAYER_ENABLED_INTERNAL = ABSTRACT_LAYER_OPERATOR__IS_LAYER_ENABLED_INTERNAL;
+
+	/**
+	 * The feature id for the '<em><b>Is Layer Enabled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR__IS_LAYER_ENABLED = ABSTRACT_LAYER_OPERATOR__IS_LAYER_ENABLED;
+
+	/**
+	 * The feature id for the '<em><b>Is Branch Enabled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR__IS_BRANCH_ENABLED = ABSTRACT_LAYER_OPERATOR__IS_BRANCH_ENABLED;
+
+	/**
+	 * The feature id for the '<em><b>Owning Layers Stack</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR__OWNING_LAYERS_STACK = ABSTRACT_LAYER_OPERATOR__OWNING_LAYERS_STACK;
+
+	/**
+	 * The feature id for the '<em><b>State</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR__STATE = ABSTRACT_LAYER_OPERATOR__STATE;
+
+	/**
+	 * The feature id for the '<em><b>Layers</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR__LAYERS = ABSTRACT_LAYER_OPERATOR__LAYERS;
+
+	/**
+	 * The feature id for the '<em><b>Layer Operator Descriptor</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR = ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR;
+
+	/**
+	 * The feature id for the '<em><b>Layer Operator Descriptor Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR_NAME = ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR_NAME;
+
+	/**
+	 * The number of structural features of the '<em>Stacked Layer Operator</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR_FEATURE_COUNT = ABSTRACT_LAYER_OPERATOR_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Get Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY = ABSTRACT_LAYER_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Get Views Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY = ABSTRACT_LAYER_OPERATOR___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Get Properties Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST = ABSTRACT_LAYER_OPERATOR___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST;
+
+	/**
+	 * The operation id for the '<em>Attach To Layers Stack</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR___ATTACH_TO_LAYERS_STACK__LAYERSSTACK = ABSTRACT_LAYER_OPERATOR___ATTACH_TO_LAYERS_STACK__LAYERSSTACK;
+
+	/**
+	 * The operation id for the '<em>Get Layers Stack</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR___GET_LAYERS_STACK = ABSTRACT_LAYER_OPERATOR___GET_LAYERS_STACK;
+
+	/**
+	 * The operation id for the '<em>Enter Attached State</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR___ENTER_ATTACHED_STATE = ABSTRACT_LAYER_OPERATOR___ENTER_ATTACHED_STATE;
+
+	/**
+	 * The operation id for the '<em>Attach</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR___ATTACH = ABSTRACT_LAYER_OPERATOR___ATTACH;
+
+	/**
+	 * The operation id for the '<em>Detach</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR___DETACH = ABSTRACT_LAYER_OPERATOR___DETACH;
+
+	/**
+	 * The operation id for the '<em>Exit Attached State</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR___EXIT_ATTACHED_STATE = ABSTRACT_LAYER_OPERATOR___EXIT_ATTACHED_STATE;
+
+	/**
+	 * The operation id for the '<em>Add Layer</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR___ADD_LAYER__LAYEREXPRESSION = ABSTRACT_LAYER_OPERATOR___ADD_LAYER__LAYEREXPRESSION;
+
+	/**
+	 * The operation id for the '<em>Is Descriptor Set</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR___IS_DESCRIPTOR_SET = ABSTRACT_LAYER_OPERATOR___IS_DESCRIPTOR_SET;
+
+	/**
+	 * The operation id for the '<em>Reset Descriptor</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR___RESET_DESCRIPTOR = ABSTRACT_LAYER_OPERATOR___RESET_DESCRIPTOR;
+
+	/**
+	 * The number of operations of the '<em>Stacked Layer Operator</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR_OPERATION_COUNT = ABSTRACT_LAYER_OPERATOR_OPERATION_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Application</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_LAYER_OPERATOR__APPLICATION = LAYER_OPERATOR__APPLICATION;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_LAYER_OPERATOR__NAME = LAYER_OPERATOR__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_LAYER_OPERATOR__DESCRIPTION = LAYER_OPERATOR__DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Is Layer Enabled Internal</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_LAYER_OPERATOR__IS_LAYER_ENABLED_INTERNAL = LAYER_OPERATOR__IS_LAYER_ENABLED_INTERNAL;
+
+	/**
+	 * The feature id for the '<em><b>Is Layer Enabled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_LAYER_OPERATOR__IS_LAYER_ENABLED = LAYER_OPERATOR__IS_LAYER_ENABLED;
+
+	/**
+	 * The feature id for the '<em><b>Is Branch Enabled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_LAYER_OPERATOR__IS_BRANCH_ENABLED = LAYER_OPERATOR__IS_BRANCH_ENABLED;
+
+	/**
+	 * The feature id for the '<em><b>Owning Layers Stack</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_LAYER_OPERATOR__OWNING_LAYERS_STACK = LAYER_OPERATOR__OWNING_LAYERS_STACK;
+
+	/**
+	 * The feature id for the '<em><b>State</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_LAYER_OPERATOR__STATE = LAYER_OPERATOR__STATE;
+
+	/**
+	 * The feature id for the '<em><b>Layers</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_LAYER_OPERATOR__LAYERS = LAYER_OPERATOR__LAYERS;
+
+	/**
+	 * The number of structural features of the '<em>Custom Layer Operator</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_LAYER_OPERATOR_FEATURE_COUNT = LAYER_OPERATOR_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Get Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_LAYER_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY = LAYER_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Get Views Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_LAYER_OPERATOR___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY = LAYER_OPERATOR___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Get Properties Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_LAYER_OPERATOR___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST = LAYER_OPERATOR___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST;
+
+	/**
+	 * The operation id for the '<em>Attach To Layers Stack</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_LAYER_OPERATOR___ATTACH_TO_LAYERS_STACK__LAYERSSTACK = LAYER_OPERATOR___ATTACH_TO_LAYERS_STACK__LAYERSSTACK;
+
+	/**
+	 * The operation id for the '<em>Get Layers Stack</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_LAYER_OPERATOR___GET_LAYERS_STACK = LAYER_OPERATOR___GET_LAYERS_STACK;
+
+	/**
+	 * The operation id for the '<em>Enter Attached State</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_LAYER_OPERATOR___ENTER_ATTACHED_STATE = LAYER_OPERATOR___ENTER_ATTACHED_STATE;
+
+	/**
+	 * The operation id for the '<em>Attach</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_LAYER_OPERATOR___ATTACH = LAYER_OPERATOR___ATTACH;
+
+	/**
+	 * The operation id for the '<em>Detach</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_LAYER_OPERATOR___DETACH = LAYER_OPERATOR___DETACH;
+
+	/**
+	 * The operation id for the '<em>Exit Attached State</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_LAYER_OPERATOR___EXIT_ATTACHED_STATE = LAYER_OPERATOR___EXIT_ATTACHED_STATE;
+
+	/**
+	 * The operation id for the '<em>Add Layer</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_LAYER_OPERATOR___ADD_LAYER__LAYEREXPRESSION = LAYER_OPERATOR___ADD_LAYER__LAYEREXPRESSION;
+
+	/**
+	 * The number of operations of the '<em>Custom Layer Operator</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_LAYER_OPERATOR_OPERATION_COUNT = LAYER_OPERATOR_OPERATION_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Property</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_INDEX__PROPERTY = 0;
+
+	/**
+	 * The feature id for the '<em><b>Index</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_INDEX__INDEX = 1;
+
+	/**
+	 * The number of structural features of the '<em>Property Index</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_INDEX_FEATURE_COUNT = 2;
+
+	/**
+	 * The number of operations of the '<em>Property Index</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int PROPERTY_INDEX_OPERATION_COUNT = 0;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_TO_PROPERTY_INDEX_MAP__VALUE = 0;
+
+	/**
+	 * The feature id for the '<em><b>Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_TO_PROPERTY_INDEX_MAP__KEY = 1;
+
+	/**
+	 * The number of structural features of the '<em>String To Property Index Map</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_TO_PROPERTY_INDEX_MAP_FEATURE_COUNT = 2;
+
+	/**
+	 * The number of operations of the '<em>String To Property Index Map</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_TO_PROPERTY_INDEX_MAP_OPERATION_COUNT = 0;
+
+	/**
+	 * The feature id for the '<em><b>Property Registry</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int SIMPLE_LAYER_DESCRIPTOR__PROPERTY_REGISTRY = LAYER_DESCRIPTOR__PROPERTY_REGISTRY;
+
+	/**
+	 * The number of structural features of the '<em>Simple Layer Descriptor</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int SIMPLE_LAYER_DESCRIPTOR_FEATURE_COUNT = LAYER_DESCRIPTOR_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Simple Layer Descriptor</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int SIMPLE_LAYER_DESCRIPTOR_OPERATION_COUNT = LAYER_DESCRIPTOR_OPERATION_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Property Registry</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER_DESCRIPTOR__PROPERTY_REGISTRY = LAYER_DESCRIPTOR__PROPERTY_REGISTRY;
+
+	/**
+	 * The number of structural features of the '<em>Reg Exp Layer Descriptor</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER_DESCRIPTOR_FEATURE_COUNT = LAYER_DESCRIPTOR_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Reg Exp Layer Descriptor</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER_DESCRIPTOR_OPERATION_COUNT = LAYER_DESCRIPTOR_OPERATION_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Null Instance</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int NULL_INSTANCE_FEATURE_COUNT = TYPE_INSTANCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Get Cmd Value</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int NULL_INSTANCE___GET_CMD_VALUE = TYPE_INSTANCE___GET_CMD_VALUE;
+
+	/**
+	 * The operation id for the '<em>Set Value From String</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int NULL_INSTANCE___SET_VALUE_FROM_STRING__STRING = TYPE_INSTANCE___SET_VALUE_FROM_STRING__STRING;
+
+	/**
+	 * The operation id for the '<em>Set Value From Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int NULL_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE = TYPE_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE;
+
+	/**
+	 * The operation id for the '<em>Get Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int NULL_INSTANCE___GET_INSTANCE = TYPE_INSTANCE_OPERATION_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Null Instance</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int NULL_INSTANCE_OPERATION_COUNT = TYPE_INSTANCE_OPERATION_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Application</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER__APPLICATION = ABSTRACT_LAYER__APPLICATION;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER__NAME = ABSTRACT_LAYER__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER__DESCRIPTION = ABSTRACT_LAYER__DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Is Layer Enabled Internal</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER__IS_LAYER_ENABLED_INTERNAL = ABSTRACT_LAYER__IS_LAYER_ENABLED_INTERNAL;
+
+	/**
+	 * The feature id for the '<em><b>Is Layer Enabled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER__IS_LAYER_ENABLED = ABSTRACT_LAYER__IS_LAYER_ENABLED;
+
+	/**
+	 * The feature id for the '<em><b>Is Branch Enabled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER__IS_BRANCH_ENABLED = ABSTRACT_LAYER__IS_BRANCH_ENABLED;
+
+	/**
+	 * The feature id for the '<em><b>Owning Layers Stack</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER__OWNING_LAYERS_STACK = ABSTRACT_LAYER__OWNING_LAYERS_STACK;
+
+	/**
+	 * The feature id for the '<em><b>State</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER__STATE = ABSTRACT_LAYER__STATE;
+
+	/**
+	 * The feature id for the '<em><b>Property Values</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER__PROPERTY_VALUES = ABSTRACT_LAYER__PROPERTY_VALUES;
+
+	/**
+	 * The feature id for the '<em><b>Property Value Map</b></em>' map.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER__PROPERTY_VALUE_MAP = ABSTRACT_LAYER__PROPERTY_VALUE_MAP;
+
+	/**
+	 * The feature id for the '<em><b>Layer Descriptor</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER__LAYER_DESCRIPTOR = ABSTRACT_LAYER__LAYER_DESCRIPTOR;
+
+	/**
+	 * The feature id for the '<em><b>Views</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER__VIEWS = ABSTRACT_LAYER__VIEWS;
+
+	/**
+	 * The feature id for the '<em><b>Attached Properties</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER__ATTACHED_PROPERTIES = ABSTRACT_LAYER__ATTACHED_PROPERTIES;
+
+	/**
+	 * The feature id for the '<em><b>Expr</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER__EXPR = ABSTRACT_LAYER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Language</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER__LANGUAGE = ABSTRACT_LAYER_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Is Domain Changed Event Dependant</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER__IS_DOMAIN_CHANGED_EVENT_DEPENDANT = ABSTRACT_LAYER_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Domain Changed Event Level</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER__DOMAIN_CHANGED_EVENT_LEVEL = ABSTRACT_LAYER_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Is Diagram Changed Event Dependant</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER__IS_DIAGRAM_CHANGED_EVENT_DEPENDANT = ABSTRACT_LAYER_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Diagram Changed Event Level</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER__DIAGRAM_CHANGED_EVENT_LEVEL = ABSTRACT_LAYER_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Expression Context Object Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER__EXPRESSION_CONTEXT_OBJECT_TYPE = ABSTRACT_LAYER_FEATURE_COUNT + 6;
+
+	/**
+	 * The number of structural features of the '<em>Reg Exp Layer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER_FEATURE_COUNT = ABSTRACT_LAYER_FEATURE_COUNT + 7;
+
+	/**
+	 * The operation id for the '<em>Get Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY = ABSTRACT_LAYER___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Get Views Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY = ABSTRACT_LAYER___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Get Properties Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST = ABSTRACT_LAYER___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST;
+
+	/**
+	 * The operation id for the '<em>Attach To Layers Stack</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER___ATTACH_TO_LAYERS_STACK__LAYERSSTACK = ABSTRACT_LAYER___ATTACH_TO_LAYERS_STACK__LAYERSSTACK;
+
+	/**
+	 * The operation id for the '<em>Get Layers Stack</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER___GET_LAYERS_STACK = ABSTRACT_LAYER___GET_LAYERS_STACK;
+
+	/**
+	 * The operation id for the '<em>Enter Attached State</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER___ENTER_ATTACHED_STATE = ABSTRACT_LAYER___ENTER_ATTACHED_STATE;
+
+	/**
+	 * The operation id for the '<em>Attach</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER___ATTACH = ABSTRACT_LAYER___ATTACH;
+
+	/**
+	 * The operation id for the '<em>Detach</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER___DETACH = ABSTRACT_LAYER___DETACH;
+
+	/**
+	 * The operation id for the '<em>Exit Attached State</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER___EXIT_ATTACHED_STATE = ABSTRACT_LAYER___EXIT_ATTACHED_STATE;
+
+	/**
+	 * The operation id for the '<em>Add Property Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER___ADD_PROPERTY_INSTANCE__PROPERTY = ABSTRACT_LAYER___ADD_PROPERTY_INSTANCE__PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Remove Property Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER___REMOVE_PROPERTY_INSTANCE__PROPERTY = ABSTRACT_LAYER___REMOVE_PROPERTY_INSTANCE__PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Get Property Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER___GET_PROPERTY_INSTANCE__PROPERTY = ABSTRACT_LAYER___GET_PROPERTY_INSTANCE__PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Get Property Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER___GET_PROPERTY_INSTANCE__STRING = ABSTRACT_LAYER___GET_PROPERTY_INSTANCE__STRING;
+
+	/**
+	 * The operation id for the '<em>Activate</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER___ACTIVATE__ABSTRACTLAYEROPERATOR = ABSTRACT_LAYER_OPERATION_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Deactivate</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER___DEACTIVATE__ABSTRACTLAYEROPERATOR = ABSTRACT_LAYER_OPERATION_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>Is Derived View</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER___IS_DERIVED_VIEW__VIEW = ABSTRACT_LAYER_OPERATION_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>Attach Derived View</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER___ATTACH_DERIVED_VIEW__VIEW = ABSTRACT_LAYER_OPERATION_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>Attach Derived Views</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER___ATTACH_DERIVED_VIEWS__ELIST = ABSTRACT_LAYER_OPERATION_COUNT + 4;
+
+	/**
+	 * The operation id for the '<em>Attach Derived Views</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER___ATTACH_DERIVED_VIEWS = ABSTRACT_LAYER_OPERATION_COUNT + 5;
+
+	/**
+	 * The operation id for the '<em>Lookup Derived Views</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER___LOOKUP_DERIVED_VIEWS__ELIST = ABSTRACT_LAYER_OPERATION_COUNT + 6;
+
+	/**
+	 * The number of operations of the '<em>Reg Exp Layer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int REG_EXP_LAYER_OPERATION_COUNT = ABSTRACT_LAYER_OPERATION_COUNT + 7;
+
+	/**
+	 * The feature id for the '<em><b>Application</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER__APPLICATION = ABSTRACT_LAYER__APPLICATION;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER__NAME = ABSTRACT_LAYER__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER__DESCRIPTION = ABSTRACT_LAYER__DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Is Layer Enabled Internal</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER__IS_LAYER_ENABLED_INTERNAL = ABSTRACT_LAYER__IS_LAYER_ENABLED_INTERNAL;
+
+	/**
+	 * The feature id for the '<em><b>Is Layer Enabled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER__IS_LAYER_ENABLED = ABSTRACT_LAYER__IS_LAYER_ENABLED;
+
+	/**
+	 * The feature id for the '<em><b>Is Branch Enabled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER__IS_BRANCH_ENABLED = ABSTRACT_LAYER__IS_BRANCH_ENABLED;
+
+	/**
+	 * The feature id for the '<em><b>Owning Layers Stack</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER__OWNING_LAYERS_STACK = ABSTRACT_LAYER__OWNING_LAYERS_STACK;
+
+	/**
+	 * The feature id for the '<em><b>State</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER__STATE = ABSTRACT_LAYER__STATE;
+
+	/**
+	 * The feature id for the '<em><b>Property Values</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER__PROPERTY_VALUES = ABSTRACT_LAYER__PROPERTY_VALUES;
+
+	/**
+	 * The feature id for the '<em><b>Property Value Map</b></em>' map.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER__PROPERTY_VALUE_MAP = ABSTRACT_LAYER__PROPERTY_VALUE_MAP;
+
+	/**
+	 * The feature id for the '<em><b>Layer Descriptor</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER__LAYER_DESCRIPTOR = ABSTRACT_LAYER__LAYER_DESCRIPTOR;
+
+	/**
+	 * The feature id for the '<em><b>Views</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER__VIEWS = ABSTRACT_LAYER__VIEWS;
+
+	/**
+	 * The feature id for the '<em><b>Attached Properties</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER__ATTACHED_PROPERTIES = ABSTRACT_LAYER__ATTACHED_PROPERTIES;
+
+	/**
+	 * The number of structural features of the '<em>Layer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_FEATURE_COUNT = ABSTRACT_LAYER_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Get Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY = ABSTRACT_LAYER___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Get Views Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY = ABSTRACT_LAYER___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Get Properties Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST = ABSTRACT_LAYER___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST;
+
+	/**
+	 * The operation id for the '<em>Attach To Layers Stack</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER___ATTACH_TO_LAYERS_STACK__LAYERSSTACK = ABSTRACT_LAYER___ATTACH_TO_LAYERS_STACK__LAYERSSTACK;
+
+	/**
+	 * The operation id for the '<em>Get Layers Stack</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER___GET_LAYERS_STACK = ABSTRACT_LAYER___GET_LAYERS_STACK;
+
+	/**
+	 * The operation id for the '<em>Enter Attached State</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER___ENTER_ATTACHED_STATE = ABSTRACT_LAYER___ENTER_ATTACHED_STATE;
+
+	/**
+	 * The operation id for the '<em>Attach</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER___ATTACH = ABSTRACT_LAYER___ATTACH;
+
+	/**
+	 * The operation id for the '<em>Detach</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER___DETACH = ABSTRACT_LAYER___DETACH;
+
+	/**
+	 * The operation id for the '<em>Exit Attached State</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER___EXIT_ATTACHED_STATE = ABSTRACT_LAYER___EXIT_ATTACHED_STATE;
+
+	/**
+	 * The operation id for the '<em>Add Property Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER___ADD_PROPERTY_INSTANCE__PROPERTY = ABSTRACT_LAYER___ADD_PROPERTY_INSTANCE__PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Remove Property Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER___REMOVE_PROPERTY_INSTANCE__PROPERTY = ABSTRACT_LAYER___REMOVE_PROPERTY_INSTANCE__PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Get Property Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER___GET_PROPERTY_INSTANCE__PROPERTY = ABSTRACT_LAYER___GET_PROPERTY_INSTANCE__PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Get Property Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER___GET_PROPERTY_INSTANCE__STRING = ABSTRACT_LAYER___GET_PROPERTY_INSTANCE__STRING;
+
+	/**
+	 * The number of operations of the '<em>Layer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_OPERATION_COUNT = ABSTRACT_LAYER_OPERATION_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Metamodel</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int COLOR__METAMODEL = TYPE__METAMODEL;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int COLOR__NAME = TYPE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int COLOR__DESCRIPTION = TYPE__DESCRIPTION;
+
+	/**
+	 * The number of structural features of the '<em>Color</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int COLOR_FEATURE_COUNT = TYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Create Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int COLOR___CREATE_INSTANCE = TYPE___CREATE_INSTANCE;
+
+	/**
+	 * The number of operations of the '<em>Color</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int COLOR_OPERATION_COUNT = TYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int COLOR_INSTANCE__VALUE = TYPE_INSTANCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Color Instance</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int COLOR_INSTANCE_FEATURE_COUNT = TYPE_INSTANCE_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>Get Cmd Value</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int COLOR_INSTANCE___GET_CMD_VALUE = TYPE_INSTANCE___GET_CMD_VALUE;
+
+	/**
+	 * The operation id for the '<em>Set Value From String</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int COLOR_INSTANCE___SET_VALUE_FROM_STRING__STRING = TYPE_INSTANCE___SET_VALUE_FROM_STRING__STRING;
+
+	/**
+	 * The operation id for the '<em>Set Value From Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int COLOR_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE = TYPE_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE;
+
+	/**
+	 * The number of operations of the '<em>Color Instance</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int COLOR_INSTANCE_OPERATION_COUNT = TYPE_INSTANCE_OPERATION_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Transparency</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FILL_INSTANCE__TRANSPARENCY = TYPE_INSTANCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Fill Color</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FILL_INSTANCE__FILL_COLOR = TYPE_INSTANCE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Fill Instance</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FILL_INSTANCE_FEATURE_COUNT = TYPE_INSTANCE_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>Get Cmd Value</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FILL_INSTANCE___GET_CMD_VALUE = TYPE_INSTANCE___GET_CMD_VALUE;
+
+	/**
+	 * The operation id for the '<em>Set Value From String</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FILL_INSTANCE___SET_VALUE_FROM_STRING__STRING = TYPE_INSTANCE___SET_VALUE_FROM_STRING__STRING;
+
+	/**
+	 * The operation id for the '<em>Set Value From Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FILL_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE = TYPE_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE;
+
+	/**
+	 * The number of operations of the '<em>Fill Instance</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FILL_INSTANCE_OPERATION_COUNT = TYPE_INSTANCE_OPERATION_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Metamodel</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FILL__METAMODEL = TYPE__METAMODEL;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FILL__NAME = TYPE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FILL__DESCRIPTION = TYPE__DESCRIPTION;
+
+	/**
+	 * The number of structural features of the '<em>Fill</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FILL_FEATURE_COUNT = TYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Create Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FILL___CREATE_INSTANCE = TYPE___CREATE_INSTANCE;
+
+	/**
+	 * The number of operations of the '<em>Fill</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FILL_OPERATION_COUNT = TYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Property</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FILL_PROPERTY_SETTER__PROPERTY = PROPERTY_SETTER__PROPERTY;
+
+	/**
+	 * The feature id for the '<em><b>Property Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FILL_PROPERTY_SETTER__PROPERTY_NAME = PROPERTY_SETTER__PROPERTY_NAME;
+
+	/**
+	 * The number of structural features of the '<em>Fill Property Setter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FILL_PROPERTY_SETTER_FEATURE_COUNT = PROPERTY_SETTER_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Set Value</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FILL_PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE = PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE;
+
+	/**
+	 * The number of operations of the '<em>Fill Property Setter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FILL_PROPERTY_SETTER_OPERATION_COUNT = PROPERTY_SETTER_OPERATION_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Property</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int IS_VALID_PROPERTY_SETTER__PROPERTY = PROPERTY_SETTER__PROPERTY;
+
+	/**
+	 * The feature id for the '<em><b>Property Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int IS_VALID_PROPERTY_SETTER__PROPERTY_NAME = PROPERTY_SETTER__PROPERTY_NAME;
+
+	/**
+	 * The number of structural features of the '<em>Is Valid Property Setter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int IS_VALID_PROPERTY_SETTER_FEATURE_COUNT = PROPERTY_SETTER_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Set Value</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int IS_VALID_PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE = PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE;
+
+	/**
+	 * The number of operations of the '<em>Is Valid Property Setter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int IS_VALID_PROPERTY_SETTER_OPERATION_COUNT = PROPERTY_SETTER_OPERATION_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Property</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int NULL_PROPERTY_SETTER__PROPERTY = PROPERTY_SETTER__PROPERTY;
+
+	/**
+	 * The feature id for the '<em><b>Property Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int NULL_PROPERTY_SETTER__PROPERTY_NAME = PROPERTY_SETTER__PROPERTY_NAME;
+
+	/**
+	 * The number of structural features of the '<em>Null Property Setter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int NULL_PROPERTY_SETTER_FEATURE_COUNT = PROPERTY_SETTER_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Set Value</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int NULL_PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE = PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE;
+
+	/**
+	 * The number of operations of the '<em>Null Property Setter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int NULL_PROPERTY_SETTER_OPERATION_COUNT = PROPERTY_SETTER_OPERATION_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Metamodel</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LINE_TYPE__METAMODEL = TYPE__METAMODEL;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LINE_TYPE__NAME = TYPE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LINE_TYPE__DESCRIPTION = TYPE__DESCRIPTION;
+
+	/**
+	 * The number of structural features of the '<em>Line Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LINE_TYPE_FEATURE_COUNT = TYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Create Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LINE_TYPE___CREATE_INSTANCE = TYPE___CREATE_INSTANCE;
+
+	/**
+	 * The number of operations of the '<em>Line Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LINE_TYPE_OPERATION_COUNT = TYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Line Color</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LINE_INSTANCE__LINE_COLOR = TYPE_INSTANCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Line With</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LINE_INSTANCE__LINE_WITH = TYPE_INSTANCE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Line Instance</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LINE_INSTANCE_FEATURE_COUNT = TYPE_INSTANCE_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>Get Cmd Value</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LINE_INSTANCE___GET_CMD_VALUE = TYPE_INSTANCE___GET_CMD_VALUE;
+
+	/**
+	 * The operation id for the '<em>Set Value From String</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LINE_INSTANCE___SET_VALUE_FROM_STRING__STRING = TYPE_INSTANCE___SET_VALUE_FROM_STRING__STRING;
+
+	/**
+	 * The operation id for the '<em>Set Value From Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LINE_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE = TYPE_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE;
+
+	/**
+	 * The number of operations of the '<em>Line Instance</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LINE_INSTANCE_OPERATION_COUNT = TYPE_INSTANCE_OPERATION_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Property</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LINE_PROPERTY_SETTER__PROPERTY = PROPERTY_SETTER__PROPERTY;
+
+	/**
+	 * The feature id for the '<em><b>Property Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LINE_PROPERTY_SETTER__PROPERTY_NAME = PROPERTY_SETTER__PROPERTY_NAME;
+
+	/**
+	 * The number of structural features of the '<em>Line Property Setter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LINE_PROPERTY_SETTER_FEATURE_COUNT = PROPERTY_SETTER_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Set Value</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LINE_PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE = PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE;
+
+	/**
+	 * The number of operations of the '<em>Line Property Setter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int LINE_PROPERTY_SETTER_OPERATION_COUNT = PROPERTY_SETTER_OPERATION_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Property</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FONT_PROPERTY_SETTER__PROPERTY = PROPERTY_SETTER__PROPERTY;
+
+	/**
+	 * The feature id for the '<em><b>Property Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FONT_PROPERTY_SETTER__PROPERTY_NAME = PROPERTY_SETTER__PROPERTY_NAME;
+
+	/**
+	 * The number of structural features of the '<em>Font Property Setter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FONT_PROPERTY_SETTER_FEATURE_COUNT = PROPERTY_SETTER_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Set Value</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FONT_PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE = PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE;
+
+	/**
+	 * The number of operations of the '<em>Font Property Setter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FONT_PROPERTY_SETTER_OPERATION_COUNT = PROPERTY_SETTER_OPERATION_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Font Color</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FONT_INSTANCE__FONT_COLOR = TYPE_INSTANCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Font Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FONT_INSTANCE__FONT_NAME = TYPE_INSTANCE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Font Heigh</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FONT_INSTANCE__FONT_HEIGH = TYPE_INSTANCE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Bold</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FONT_INSTANCE__BOLD = TYPE_INSTANCE_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>Font Instance</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FONT_INSTANCE_FEATURE_COUNT = TYPE_INSTANCE_FEATURE_COUNT + 4;
+
+	/**
+	 * The operation id for the '<em>Get Cmd Value</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FONT_INSTANCE___GET_CMD_VALUE = TYPE_INSTANCE___GET_CMD_VALUE;
+
+	/**
+	 * The operation id for the '<em>Set Value From String</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FONT_INSTANCE___SET_VALUE_FROM_STRING__STRING = TYPE_INSTANCE___SET_VALUE_FROM_STRING__STRING;
+
+	/**
+	 * The operation id for the '<em>Set Value From Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FONT_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE = TYPE_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE;
+
+	/**
+	 * The number of operations of the '<em>Font Instance</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FONT_INSTANCE_OPERATION_COUNT = TYPE_INSTANCE_OPERATION_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Metamodel</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FONT_TYPE__METAMODEL = TYPE__METAMODEL;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FONT_TYPE__NAME = TYPE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FONT_TYPE__DESCRIPTION = TYPE__DESCRIPTION;
+
+	/**
+	 * The number of structural features of the '<em>Font Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FONT_TYPE_FEATURE_COUNT = TYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Create Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FONT_TYPE___CREATE_INSTANCE = TYPE___CREATE_INSTANCE;
+
+	/**
+	 * The number of operations of the '<em>Font Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int FONT_TYPE_OPERATION_COUNT = TYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Property</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int IS_VISIBLE_PROPERTY_SETTER__PROPERTY = PROPERTY_SETTER__PROPERTY;
+
+	/**
+	 * The feature id for the '<em><b>Property Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int IS_VISIBLE_PROPERTY_SETTER__PROPERTY_NAME = PROPERTY_SETTER__PROPERTY_NAME;
+
+	/**
+	 * The number of structural features of the '<em>Is Visible Property Setter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int IS_VISIBLE_PROPERTY_SETTER_FEATURE_COUNT = PROPERTY_SETTER_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Set Value</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int IS_VISIBLE_PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE = PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE;
+
+	/**
+	 * The number of operations of the '<em>Is Visible Property Setter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int IS_VISIBLE_PROPERTY_SETTER_OPERATION_COUNT = PROPERTY_SETTER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TopLayerOperatorDescriptorImpl <em>Top Layer Operator Descriptor</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.TopLayerOperatorDescriptorImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getTopLayerOperatorDescriptor()
+	 * @generated
+	 */
+	int TOP_LAYER_OPERATOR_DESCRIPTOR = 62;
+
+	/**
+	 * The feature id for the '<em><b>Property Operators</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS = LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR_DESCRIPTOR__NAME = LAYER_OPERATOR_DESCRIPTOR__NAME;
+
+	/**
+	 * The number of structural features of the '<em>Top Layer Operator Descriptor</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR_DESCRIPTOR_FEATURE_COUNT = LAYER_OPERATOR_DESCRIPTOR_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Get Property Operator</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR_DESCRIPTOR___GET_PROPERTY_OPERATOR__PROPERTY = LAYER_OPERATOR_DESCRIPTOR___GET_PROPERTY_OPERATOR__PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Set Property Operator</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_OPERATOR__PROPERTY_PROPERTYOPERATOR = LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_OPERATOR__PROPERTY_PROPERTYOPERATOR;
+
+	/**
+	 * The operation id for the '<em>Create Layer Operator</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR_DESCRIPTOR___CREATE_LAYER_OPERATOR = LAYER_OPERATOR_DESCRIPTOR___CREATE_LAYER_OPERATOR;
+
+	/**
+	 * The operation id for the '<em>Set Property Collection Size</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_COLLECTION_SIZE__INT_DEFAULTPROPERTYOPERATOR = LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_COLLECTION_SIZE__INT_DEFAULTPROPERTYOPERATOR;
+
+	/**
+	 * The number of operations of the '<em>Top Layer Operator Descriptor</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int TOP_LAYER_OPERATOR_DESCRIPTOR_OPERATION_COUNT = LAYER_OPERATOR_DESCRIPTOR_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StackedLayerOperatorDescriptorImpl <em>Stacked Layer Operator Descriptor</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StackedLayerOperatorDescriptorImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStackedLayerOperatorDescriptor()
+	 * @generated
+	 */
+	int STACKED_LAYER_OPERATOR_DESCRIPTOR = 63;
+
+	/**
+	 * The feature id for the '<em><b>Property Operators</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS = LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR_DESCRIPTOR__NAME = LAYER_OPERATOR_DESCRIPTOR__NAME;
+
+	/**
+	 * The number of structural features of the '<em>Stacked Layer Operator Descriptor</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR_DESCRIPTOR_FEATURE_COUNT = LAYER_OPERATOR_DESCRIPTOR_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Get Property Operator</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR_DESCRIPTOR___GET_PROPERTY_OPERATOR__PROPERTY = LAYER_OPERATOR_DESCRIPTOR___GET_PROPERTY_OPERATOR__PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Set Property Operator</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_OPERATOR__PROPERTY_PROPERTYOPERATOR = LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_OPERATOR__PROPERTY_PROPERTYOPERATOR;
+
+	/**
+	 * The operation id for the '<em>Create Layer Operator</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR_DESCRIPTOR___CREATE_LAYER_OPERATOR = LAYER_OPERATOR_DESCRIPTOR___CREATE_LAYER_OPERATOR;
+
+	/**
+	 * The operation id for the '<em>Set Property Collection Size</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_COLLECTION_SIZE__INT_DEFAULTPROPERTYOPERATOR = LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_COLLECTION_SIZE__INT_DEFAULTPROPERTYOPERATOR;
+
+	/**
+	 * The number of operations of the '<em>Stacked Layer Operator Descriptor</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int STACKED_LAYER_OPERATOR_DESCRIPTOR_OPERATION_COUNT = LAYER_OPERATOR_DESCRIPTOR_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomPropertyOperatorImpl <em>Custom Property Operator</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomPropertyOperatorImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getCustomPropertyOperator()
+	 * @generated
+	 */
+	int CUSTOM_PROPERTY_OPERATOR = 64;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_PROPERTY_OPERATOR__NAME = PROPERTY_OPERATOR__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Classname</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_PROPERTY_OPERATOR__CLASSNAME = PROPERTY_OPERATOR_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Operator Instance</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_PROPERTY_OPERATOR__OPERATOR_INSTANCE = PROPERTY_OPERATOR_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Class Bundle ID</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_PROPERTY_OPERATOR__CLASS_BUNDLE_ID = PROPERTY_OPERATOR_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Custom Property Operator</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_PROPERTY_OPERATOR_FEATURE_COUNT = PROPERTY_OPERATOR_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>Get Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_PROPERTY_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST = PROPERTY_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST;
+
+	/**
+	 * The operation id for the '<em>Reset Operator Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_PROPERTY_OPERATOR___RESET_OPERATOR_INSTANCE = PROPERTY_OPERATOR_OPERATION_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Custom Property Operator</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int CUSTOM_PROPERTY_OPERATOR_OPERATION_COUNT = PROPERTY_OPERATOR_OPERATION_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AndStackedLayerOperatorDescriptorImpl <em>And Stacked Layer Operator Descriptor</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.AndStackedLayerOperatorDescriptorImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getAndStackedLayerOperatorDescriptor()
+	 * @generated
+	 */
+	int AND_STACKED_LAYER_OPERATOR_DESCRIPTOR = 65;
+
+	/**
+	 * The feature id for the '<em><b>Property Operators</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int AND_STACKED_LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS = STACKED_LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int AND_STACKED_LAYER_OPERATOR_DESCRIPTOR__NAME = STACKED_LAYER_OPERATOR_DESCRIPTOR__NAME;
+
+	/**
+	 * The number of structural features of the '<em>And Stacked Layer Operator Descriptor</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int AND_STACKED_LAYER_OPERATOR_DESCRIPTOR_FEATURE_COUNT = STACKED_LAYER_OPERATOR_DESCRIPTOR_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Get Property Operator</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int AND_STACKED_LAYER_OPERATOR_DESCRIPTOR___GET_PROPERTY_OPERATOR__PROPERTY = STACKED_LAYER_OPERATOR_DESCRIPTOR___GET_PROPERTY_OPERATOR__PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Set Property Operator</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int AND_STACKED_LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_OPERATOR__PROPERTY_PROPERTYOPERATOR = STACKED_LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_OPERATOR__PROPERTY_PROPERTYOPERATOR;
+
+	/**
+	 * The operation id for the '<em>Create Layer Operator</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int AND_STACKED_LAYER_OPERATOR_DESCRIPTOR___CREATE_LAYER_OPERATOR = STACKED_LAYER_OPERATOR_DESCRIPTOR___CREATE_LAYER_OPERATOR;
+
+	/**
+	 * The operation id for the '<em>Set Property Collection Size</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int AND_STACKED_LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_COLLECTION_SIZE__INT_DEFAULTPROPERTYOPERATOR = STACKED_LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_COLLECTION_SIZE__INT_DEFAULTPROPERTYOPERATOR;
+
+	/**
+	 * The number of operations of the '<em>And Stacked Layer Operator Descriptor</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int AND_STACKED_LAYER_OPERATOR_DESCRIPTOR_OPERATION_COUNT = STACKED_LAYER_OPERATOR_DESCRIPTOR_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.OrStackedLayerOperatorDescriptorImpl <em>Or Stacked Layer Operator Descriptor</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.OrStackedLayerOperatorDescriptorImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getOrStackedLayerOperatorDescriptor()
+	 * @generated
+	 */
+	int OR_STACKED_LAYER_OPERATOR_DESCRIPTOR = 66;
+
+	/**
+	 * The feature id for the '<em><b>Property Operators</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int OR_STACKED_LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS = STACKED_LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int OR_STACKED_LAYER_OPERATOR_DESCRIPTOR__NAME = STACKED_LAYER_OPERATOR_DESCRIPTOR__NAME;
+
+	/**
+	 * The number of structural features of the '<em>Or Stacked Layer Operator Descriptor</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int OR_STACKED_LAYER_OPERATOR_DESCRIPTOR_FEATURE_COUNT = STACKED_LAYER_OPERATOR_DESCRIPTOR_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Get Property Operator</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int OR_STACKED_LAYER_OPERATOR_DESCRIPTOR___GET_PROPERTY_OPERATOR__PROPERTY = STACKED_LAYER_OPERATOR_DESCRIPTOR___GET_PROPERTY_OPERATOR__PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Set Property Operator</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int OR_STACKED_LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_OPERATOR__PROPERTY_PROPERTYOPERATOR = STACKED_LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_OPERATOR__PROPERTY_PROPERTYOPERATOR;
+
+	/**
+	 * The operation id for the '<em>Create Layer Operator</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int OR_STACKED_LAYER_OPERATOR_DESCRIPTOR___CREATE_LAYER_OPERATOR = STACKED_LAYER_OPERATOR_DESCRIPTOR___CREATE_LAYER_OPERATOR;
+
+	/**
+	 * The operation id for the '<em>Set Property Collection Size</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int OR_STACKED_LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_COLLECTION_SIZE__INT_DEFAULTPROPERTYOPERATOR = STACKED_LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_COLLECTION_SIZE__INT_DEFAULTPROPERTYOPERATOR;
+
+	/**
+	 * The number of operations of the '<em>Or Stacked Layer Operator Descriptor</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int OR_STACKED_LAYER_OPERATOR_DESCRIPTOR_OPERATION_COUNT = STACKED_LAYER_OPERATOR_DESCRIPTOR_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.IsAbstractUmlSetterImpl <em>Is Abstract Uml Setter</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.IsAbstractUmlSetterImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getIsAbstractUmlSetter()
+	 * @generated
+	 */
+	int IS_ABSTRACT_UML_SETTER = 67;
+
+	/**
+	 * The feature id for the '<em><b>Property</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int IS_ABSTRACT_UML_SETTER__PROPERTY = PROPERTY_SETTER__PROPERTY;
+
+	/**
+	 * The feature id for the '<em><b>Property Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int IS_ABSTRACT_UML_SETTER__PROPERTY_NAME = PROPERTY_SETTER__PROPERTY_NAME;
+
+	/**
+	 * The number of structural features of the '<em>Is Abstract Uml Setter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int IS_ABSTRACT_UML_SETTER_FEATURE_COUNT = PROPERTY_SETTER_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Set Value</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int IS_ABSTRACT_UML_SETTER___SET_VALUE__VIEW_TYPEINSTANCE = PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE;
+
+	/**
+	 * The number of operations of the '<em>Is Abstract Uml Setter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int IS_ABSTRACT_UML_SETTER_OPERATION_COUNT = PROPERTY_SETTER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AllViewsDerivedLayerImpl <em>All Views Derived Layer</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.AllViewsDerivedLayerImpl
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getAllViewsDerivedLayer()
+	 * @generated
+	 */
+	int ALL_VIEWS_DERIVED_LAYER = 68;
+
+	/**
+	 * The feature id for the '<em><b>Application</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ALL_VIEWS_DERIVED_LAYER__APPLICATION = ABSTRACT_LAYER__APPLICATION;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ALL_VIEWS_DERIVED_LAYER__NAME = ABSTRACT_LAYER__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ALL_VIEWS_DERIVED_LAYER__DESCRIPTION = ABSTRACT_LAYER__DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Is Layer Enabled Internal</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ALL_VIEWS_DERIVED_LAYER__IS_LAYER_ENABLED_INTERNAL = ABSTRACT_LAYER__IS_LAYER_ENABLED_INTERNAL;
+
+	/**
+	 * The feature id for the '<em><b>Is Layer Enabled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ALL_VIEWS_DERIVED_LAYER__IS_LAYER_ENABLED = ABSTRACT_LAYER__IS_LAYER_ENABLED;
+
+	/**
+	 * The feature id for the '<em><b>Is Branch Enabled</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ALL_VIEWS_DERIVED_LAYER__IS_BRANCH_ENABLED = ABSTRACT_LAYER__IS_BRANCH_ENABLED;
+
+	/**
+	 * The feature id for the '<em><b>Owning Layers Stack</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ALL_VIEWS_DERIVED_LAYER__OWNING_LAYERS_STACK = ABSTRACT_LAYER__OWNING_LAYERS_STACK;
+
+	/**
+	 * The feature id for the '<em><b>State</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ALL_VIEWS_DERIVED_LAYER__STATE = ABSTRACT_LAYER__STATE;
+
+	/**
+	 * The feature id for the '<em><b>Property Values</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ALL_VIEWS_DERIVED_LAYER__PROPERTY_VALUES = ABSTRACT_LAYER__PROPERTY_VALUES;
+
+	/**
+	 * The feature id for the '<em><b>Property Value Map</b></em>' map.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ALL_VIEWS_DERIVED_LAYER__PROPERTY_VALUE_MAP = ABSTRACT_LAYER__PROPERTY_VALUE_MAP;
+
+	/**
+	 * The feature id for the '<em><b>Layer Descriptor</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ALL_VIEWS_DERIVED_LAYER__LAYER_DESCRIPTOR = ABSTRACT_LAYER__LAYER_DESCRIPTOR;
+
+	/**
+	 * The feature id for the '<em><b>Views</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ALL_VIEWS_DERIVED_LAYER__VIEWS = ABSTRACT_LAYER__VIEWS;
+
+	/**
+	 * The feature id for the '<em><b>Attached Properties</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ALL_VIEWS_DERIVED_LAYER__ATTACHED_PROPERTIES = ABSTRACT_LAYER__ATTACHED_PROPERTIES;
+
+	/**
+	 * The number of structural features of the '<em>All Views Derived Layer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ALL_VIEWS_DERIVED_LAYER_FEATURE_COUNT = ABSTRACT_LAYER_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Get Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ALL_VIEWS_DERIVED_LAYER___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY = ABSTRACT_LAYER___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Get Views Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ALL_VIEWS_DERIVED_LAYER___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY = ABSTRACT_LAYER___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Get Properties Compute Property Value Command</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ALL_VIEWS_DERIVED_LAYER___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST = ABSTRACT_LAYER___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST;
+
+	/**
+	 * The operation id for the '<em>Attach To Layers Stack</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ALL_VIEWS_DERIVED_LAYER___ATTACH_TO_LAYERS_STACK__LAYERSSTACK = ABSTRACT_LAYER___ATTACH_TO_LAYERS_STACK__LAYERSSTACK;
+
+	/**
+	 * The operation id for the '<em>Get Layers Stack</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ALL_VIEWS_DERIVED_LAYER___GET_LAYERS_STACK = ABSTRACT_LAYER___GET_LAYERS_STACK;
+
+	/**
+	 * The operation id for the '<em>Enter Attached State</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ALL_VIEWS_DERIVED_LAYER___ENTER_ATTACHED_STATE = ABSTRACT_LAYER___ENTER_ATTACHED_STATE;
+
+	/**
+	 * The operation id for the '<em>Attach</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ALL_VIEWS_DERIVED_LAYER___ATTACH = ABSTRACT_LAYER___ATTACH;
+
+	/**
+	 * The operation id for the '<em>Detach</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ALL_VIEWS_DERIVED_LAYER___DETACH = ABSTRACT_LAYER___DETACH;
+
+	/**
+	 * The operation id for the '<em>Exit Attached State</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ALL_VIEWS_DERIVED_LAYER___EXIT_ATTACHED_STATE = ABSTRACT_LAYER___EXIT_ATTACHED_STATE;
+
+	/**
+	 * The operation id for the '<em>Add Property Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ALL_VIEWS_DERIVED_LAYER___ADD_PROPERTY_INSTANCE__PROPERTY = ABSTRACT_LAYER___ADD_PROPERTY_INSTANCE__PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Remove Property Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ALL_VIEWS_DERIVED_LAYER___REMOVE_PROPERTY_INSTANCE__PROPERTY = ABSTRACT_LAYER___REMOVE_PROPERTY_INSTANCE__PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Get Property Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ALL_VIEWS_DERIVED_LAYER___GET_PROPERTY_INSTANCE__PROPERTY = ABSTRACT_LAYER___GET_PROPERTY_INSTANCE__PROPERTY;
+
+	/**
+	 * The operation id for the '<em>Get Property Instance</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ALL_VIEWS_DERIVED_LAYER___GET_PROPERTY_INSTANCE__STRING = ABSTRACT_LAYER___GET_PROPERTY_INSTANCE__STRING;
+
+	/**
+	 * The number of operations of the '<em>All Views Derived Layer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 * @ordered
+	 */
+	int ALL_VIEWS_DERIVED_LAYER_OPERATION_COUNT = ABSTRACT_LAYER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerState <em>Layer State</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerState
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerState()
+	 * @generated
+	 */
+	int LAYER_STATE = 69;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.EventLevel <em>Event Level</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.EventLevel
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getEventLevel()
+	 * @generated
+	 */
+	int EVENT_LEVEL = 70;
+
+	/**
+	 * The meta object id for the '<em>String</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see java.lang.String
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getString()
+	 * @generated
+	 */
+	int STRING = 71;
+
+	/**
+	 * The meta object id for the '<em>boolean</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getboolean()
+	 * @generated
+	 */
+	int BOOLEAN = 72;
+
+	/**
+	 * The meta object id for the '<em>EPackage</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emf.ecore.EPackage
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getEPackage()
+	 * @generated
+	 */
+	int EPACKAGE = 73;
+
+	/**
+	 * The meta object id for the '<em>Not Found Exception</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.NotFoundException
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getNotFoundException()
+	 * @generated
+	 */
+	int NOT_FOUND_EXCEPTION = 77;
+
+	/**
+	 * The meta object id for the '<em>Compute Property Value Command</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getComputePropertyValueCommand()
+	 * @generated
+	 */
+	int COMPUTE_PROPERTY_VALUE_COMMAND = 78;
+
+	/**
+	 * The meta object id for the '<em>Exception</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.LayersException
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayersException()
+	 * @generated
+	 */
+	int LAYERS_EXCEPTION = 74;
+
+	/**
+	 * The meta object id for the '<em>int</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getint()
+	 * @generated
+	 */
+	int INT = 75;
+
+
+	/**
+	 * The meta object id for the '<em>Object</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see java.lang.Object
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getObject()
+	 * @generated
+	 */
+	int OBJECT = 79;
+
+
+	/**
+	 * The meta object id for the '<em>Custom Property Opertor Instance</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getCustomPropertyOpertorInstance()
+	 * @generated
+	 */
+	int CUSTOM_PROPERTY_OPERTOR_INSTANCE = 80;
+
+	/**
+	 * The meta object id for the '<em>Bad State Exception</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.BadStateException
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getBadStateException()
+	 * @generated
+	 */
+	int BAD_STATE_EXCEPTION = 76;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle <em>Layer Named Style</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Layer Named Style</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle
+	 * @generated
+	 */
+	EClass getLayerNamedStyle();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle#getLayersStack <em>Layers Stack</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference list '<em>Layers Stack</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle#getLayersStack()
+	 * @see #getLayerNamedStyle()
+	 * @generated
+	 */
+	EReference getLayerNamedStyle_LayersStack();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack <em>Stack</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Stack</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack
+	 * @generated
+	 */
+	EClass getLayersStack();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getLayers <em>Layers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference '<em>Layers</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getLayers()
+	 * @see #getLayersStack()
+	 * @generated
+	 */
+	EReference getLayersStack_Layers();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getName()
+	 * @see #getLayersStack()
+	 * @generated
+	 */
+	EAttribute getLayersStack_Name();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getDescription <em>Description</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Description</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getDescription()
+	 * @see #getLayersStack()
+	 * @generated
+	 */
+	EAttribute getLayersStack_Description();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getDiagram <em>Diagram</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the reference '<em>Diagram</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getDiagram()
+	 * @see #getLayersStack()
+	 * @generated
+	 */
+	EReference getLayersStack_Diagram();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getState <em>State</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>State</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getState()
+	 * @see #getLayersStack()
+	 * @generated
+	 */
+	EAttribute getLayersStack_State();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 * <em>Get Compute Property Value Command</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Get Compute Property Value Command</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 * @generated
+	 */
+	EOperation getLayersStack__GetComputePropertyValueCommand__View_Property();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.emf.common.util.EList)
+	 * <em>Get Properties Compute Property Value Command</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Get Properties Compute Property Value Command</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.emf.common.util.EList)
+	 * @generated
+	 */
+	EOperation getLayersStack__GetPropertiesComputePropertyValueCommand__View_EList();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getViewsComputePropertyValueCommand(org.eclipse.emf.common.util.EList, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 * <em>Get Views Compute Property Value Command</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Get Views Compute Property Value Command</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getViewsComputePropertyValueCommand(org.eclipse.emf.common.util.EList, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 * @generated
+	 */
+	EOperation getLayersStack__GetViewsComputePropertyValueCommand__EList_Property();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#startAfterCreation() <em>Start After Creation</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Start After Creation</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#startAfterCreation()
+	 * @generated
+	 */
+	EOperation getLayersStack__StartAfterCreation();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#attachLayers() <em>Attach Layers</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Attach Layers</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#attachLayers()
+	 * @generated
+	 */
+	EOperation getLayersStack__AttachLayers();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#attach() <em>Attach</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Attach</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#attach()
+	 * @generated
+	 */
+	EOperation getLayersStack__Attach();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#detach() <em>Detach</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Detach</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#detach()
+	 * @generated
+	 */
+	EOperation getLayersStack__Detach();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#enterAttachedState() <em>Enter Attached State</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Enter Attached State</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#enterAttachedState()
+	 * @generated
+	 */
+	EOperation getLayersStack__EnterAttachedState();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#exitAttachedState() <em>Exit Attached State</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Exit Attached State</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#exitAttachedState()
+	 * @generated
+	 */
+	EOperation getLayersStack__ExitAttachedState();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.Layer <em>Layer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Layer</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Layer
+	 * @generated
+	 */
+	EClass getLayer();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.Color <em>Color</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Color</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Color
+	 * @generated
+	 */
+	EClass getColor();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance <em>Color Instance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Color Instance</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance
+	 * @generated
+	 */
+	EClass getColorInstance();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance#getValue <em>Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Value</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance#getValue()
+	 * @see #getColorInstance()
+	 * @generated
+	 */
+	EAttribute getColorInstance_Value();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.FillInstance <em>Fill Instance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Fill Instance</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.FillInstance
+	 * @generated
+	 */
+	EClass getFillInstance();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.FillInstance#getTransparency <em>Transparency</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Transparency</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.FillInstance#getTransparency()
+	 * @see #getFillInstance()
+	 * @generated
+	 */
+	EAttribute getFillInstance_Transparency();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.FillInstance#getFillColor <em>Fill Color</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference '<em>Fill Color</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.FillInstance#getFillColor()
+	 * @see #getFillInstance()
+	 * @generated
+	 */
+	EReference getFillInstance_FillColor();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.Fill <em>Fill</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Fill</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Fill
+	 * @generated
+	 */
+	EClass getFill();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.FillPropertySetter <em>Fill Property Setter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Fill Property Setter</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.FillPropertySetter
+	 * @generated
+	 */
+	EClass getFillPropertySetter();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.IsValidPropertySetter <em>Is Valid Property Setter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Is Valid Property Setter</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.IsValidPropertySetter
+	 * @generated
+	 */
+	EClass getIsValidPropertySetter();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.NullPropertySetter <em>Null Property Setter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Null Property Setter</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.NullPropertySetter
+	 * @generated
+	 */
+	EClass getNullPropertySetter();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LineType <em>Line Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Line Type</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LineType
+	 * @generated
+	 */
+	EClass getLineType();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LineInstance <em>Line Instance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Line Instance</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LineInstance
+	 * @generated
+	 */
+	EClass getLineInstance();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.LineInstance#getLineColor <em>Line Color</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Line Color</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LineInstance#getLineColor()
+	 * @see #getLineInstance()
+	 * @generated
+	 */
+	EAttribute getLineInstance_LineColor();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.LineInstance#getLineWith <em>Line With</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Line With</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LineInstance#getLineWith()
+	 * @see #getLineInstance()
+	 * @generated
+	 */
+	EAttribute getLineInstance_LineWith();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LinePropertySetter <em>Line Property Setter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Line Property Setter</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LinePropertySetter
+	 * @generated
+	 */
+	EClass getLinePropertySetter();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.FontPropertySetter <em>Font Property Setter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Font Property Setter</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.FontPropertySetter
+	 * @generated
+	 */
+	EClass getFontPropertySetter();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance <em>Font Instance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Font Instance</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.FontInstance
+	 * @generated
+	 */
+	EClass getFontInstance();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#getFontColor <em>Font Color</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Font Color</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#getFontColor()
+	 * @see #getFontInstance()
+	 * @generated
+	 */
+	EAttribute getFontInstance_FontColor();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#getFontName <em>Font Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Font Name</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#getFontName()
+	 * @see #getFontInstance()
+	 * @generated
+	 */
+	EAttribute getFontInstance_FontName();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#getFontHeigh <em>Font Heigh</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Font Heigh</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#getFontHeigh()
+	 * @see #getFontInstance()
+	 * @generated
+	 */
+	EAttribute getFontInstance_FontHeigh();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#isBold <em>Bold</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Bold</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.FontInstance#isBold()
+	 * @see #getFontInstance()
+	 * @generated
+	 */
+	EAttribute getFontInstance_Bold();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.FontType <em>Font Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Font Type</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.FontType
+	 * @generated
+	 */
+	EClass getFontType();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.IsVisiblePropertySetter <em>Is Visible Property Setter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Is Visible Property Setter</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.IsVisiblePropertySetter
+	 * @generated
+	 */
+	EClass getIsVisiblePropertySetter();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry <em>Layer Operator Descriptor Registry</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Layer Operator Descriptor Registry</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry
+	 * @generated
+	 */
+	EClass getLayerOperatorDescriptorRegistry();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getDescriptors <em>Descriptors</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference list '<em>Descriptors</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getDescriptors()
+	 * @see #getLayerOperatorDescriptorRegistry()
+	 * @generated
+	 */
+	EReference getLayerOperatorDescriptorRegistry_Descriptors();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getPropertyOperators <em>Property Operators</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference list '<em>Property Operators</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getPropertyOperators()
+	 * @see #getLayerOperatorDescriptorRegistry()
+	 * @generated
+	 */
+	EReference getLayerOperatorDescriptorRegistry_PropertyOperators();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getPropertyCollectionSize <em>Property Collection Size</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Property Collection Size</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getPropertyCollectionSize()
+	 * @see #getLayerOperatorDescriptorRegistry()
+	 * @generated
+	 */
+	EAttribute getLayerOperatorDescriptorRegistry_PropertyCollectionSize();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getDefaultOperator <em>Default Operator</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the reference '<em>Default Operator</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getDefaultOperator()
+	 * @see #getLayerOperatorDescriptorRegistry()
+	 * @generated
+	 */
+	EReference getLayerOperatorDescriptorRegistry_DefaultOperator();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#addLayerOperatorDescriptor(org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor) <em>Add Layer Operator Descriptor</em>}
+	 * ' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Add Layer Operator Descriptor</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#addLayerOperatorDescriptor(org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor)
+	 * @generated
+	 */
+	EOperation getLayerOperatorDescriptorRegistry__AddLayerOperatorDescriptor__LayerOperatorDescriptor();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getLayerOperatorDescriptor(java.lang.String) <em>Get Layer Operator Descriptor</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Get Layer Operator Descriptor</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getLayerOperatorDescriptor(java.lang.String)
+	 * @generated
+	 */
+	EOperation getLayerOperatorDescriptorRegistry__GetLayerOperatorDescriptor__String();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#addPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator) <em>Add Property Operator</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Add Property Operator</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#addPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator)
+	 * @generated
+	 */
+	EOperation getLayerOperatorDescriptorRegistry__AddPropertyOperator__PropertyOperator();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getPropertyOperator(java.lang.String) <em>Get Property Operator</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Get Property Operator</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#getPropertyOperator(java.lang.String)
+	 * @generated
+	 */
+	EOperation getLayerOperatorDescriptorRegistry__GetPropertyOperator__String();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#attachOperatorToDescriptor(org.eclipse.papyrus.layers.stackmodel.layers.Property, java.lang.String, java.lang.String)
+	 * <em>Attach Operator To Descriptor</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Attach Operator To Descriptor</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#attachOperatorToDescriptor(org.eclipse.papyrus.layers.stackmodel.layers.Property, java.lang.String, java.lang.String)
+	 * @generated
+	 */
+	EOperation getLayerOperatorDescriptorRegistry__AttachOperatorToDescriptor__Property_String_String();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#createLayerOperator(java.lang.String) <em>Create Layer Operator</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Create Layer Operator</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry#createLayerOperator(java.lang.String)
+	 * @generated
+	 */
+	EOperation getLayerOperatorDescriptorRegistry__CreateLayerOperator__String();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperatorDescriptor <em>Top Layer Operator Descriptor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Top Layer Operator Descriptor</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperatorDescriptor
+	 * @generated
+	 */
+	EClass getTopLayerOperatorDescriptor();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperatorDescriptor <em>Stacked Layer Operator Descriptor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Stacked Layer Operator Descriptor</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperatorDescriptor
+	 * @generated
+	 */
+	EClass getStackedLayerOperatorDescriptor();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator <em>Custom Property Operator</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Custom Property Operator</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator
+	 * @generated
+	 */
+	EClass getCustomPropertyOperator();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#getClassname <em>Classname</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Classname</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#getClassname()
+	 * @see #getCustomPropertyOperator()
+	 * @generated
+	 */
+	EAttribute getCustomPropertyOperator_Classname();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#getOperatorInstance <em>Operator Instance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Operator Instance</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#getOperatorInstance()
+	 * @see #getCustomPropertyOperator()
+	 * @generated
+	 */
+	EAttribute getCustomPropertyOperator_OperatorInstance();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#getClassBundleID <em>Class Bundle ID</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Class Bundle ID</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#getClassBundleID()
+	 * @see #getCustomPropertyOperator()
+	 * @generated
+	 */
+	EAttribute getCustomPropertyOperator_ClassBundleID();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#resetOperatorInstance() <em>Reset Operator Instance</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Reset Operator Instance</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator#resetOperatorInstance()
+	 * @generated
+	 */
+	EOperation getCustomPropertyOperator__ResetOperatorInstance();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.AndStackedLayerOperatorDescriptor <em>And Stacked Layer Operator Descriptor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>And Stacked Layer Operator Descriptor</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.AndStackedLayerOperatorDescriptor
+	 * @generated
+	 */
+	EClass getAndStackedLayerOperatorDescriptor();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.OrStackedLayerOperatorDescriptor <em>Or Stacked Layer Operator Descriptor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Or Stacked Layer Operator Descriptor</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.OrStackedLayerOperatorDescriptor
+	 * @generated
+	 */
+	EClass getOrStackedLayerOperatorDescriptor();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.IsAbstractUmlSetter <em>Is Abstract Uml Setter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Is Abstract Uml Setter</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.IsAbstractUmlSetter
+	 * @generated
+	 */
+	EClass getIsAbstractUmlSetter();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.AllViewsDerivedLayer <em>All Views Derived Layer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>All Views Derived Layer</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.AllViewsDerivedLayer
+	 * @generated
+	 */
+	EClass getAllViewsDerivedLayer();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerState <em>Layer State</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for enum '<em>Layer State</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerState
+	 * @generated
+	 */
+	EEnum getLayerState();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.papyrus.layers.stackmodel.layers.EventLevel <em>Event Level</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for enum '<em>Event Level</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.EventLevel
+	 * @generated
+	 */
+	EEnum getEventLevel();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance <em>Type Instance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Type Instance</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance
+	 * @generated
+	 */
+	EClass getTypeInstance();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance#setValueFromString(java.lang.String) <em>Set Value From String</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Set Value From String</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance#setValueFromString(java.lang.String)
+	 * @generated
+	 */
+	EOperation getTypeInstance__SetValueFromString__String();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance#setValueFromInstance(org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance) <em>Set Value From Instance</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Set Value From Instance</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance#setValueFromInstance(org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance)
+	 * @generated
+	 */
+	EOperation getTypeInstance__SetValueFromInstance__TypeInstance();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand <em>Compute Property Value Command Itf</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Compute Property Value Command Itf</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand
+	 * @model instanceClass="org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand"
+	 * @generated
+	 */
+	EClass getComputePropertyValueCommandItf();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand#getCmdValue() <em>Get Cmd Value</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Get Cmd Value</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand#getCmdValue()
+	 * @generated
+	 */
+	EOperation getComputePropertyValueCommandItf__GetCmdValue();
+
+	/**
+	 * Returns the meta object for class '{@link java.util.Map.Entry <em>String To Type Instance Map</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>String To Type Instance Map</em>'.
+	 * @see java.util.Map.Entry
+	 * @model keyDataType="org.eclipse.papyrus.layers.stackmodel.layers.String" keyRequired="true" keyOrdered="false"
+	 *        valueType="org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance" valueContainment="true" valueRequired="true" valueOrdered="false"
+	 * @generated
+	 */
+	EClass getStringToTypeInstanceMap();
+
+	/**
+	 * Returns the meta object for the attribute '{@link java.util.Map.Entry <em>Key</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Key</em>'.
+	 * @see java.util.Map.Entry
+	 * @see #getStringToTypeInstanceMap()
+	 * @generated
+	 */
+	EAttribute getStringToTypeInstanceMap_Key();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link java.util.Map.Entry <em>Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference '<em>Value</em>'.
+	 * @see java.util.Map.Entry
+	 * @see #getStringToTypeInstanceMap()
+	 * @generated
+	 */
+	EReference getStringToTypeInstanceMap_Value();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor <em>Layer Descriptor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Layer Descriptor</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor
+	 * @generated
+	 */
+	EClass getLayerDescriptor();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor#getPropertyRegistry <em>Property Registry</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the reference '<em>Property Registry</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor#getPropertyRegistry()
+	 * @see #getLayerDescriptor()
+	 * @generated
+	 */
+	EReference getLayerDescriptor_PropertyRegistry();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory <em>Layer Application Factory</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Layer Application Factory</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory
+	 * @generated
+	 */
+	EClass getLayerApplicationFactory();
+
+	/**
+	 * Returns the meta object for the container reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory#getApplication <em>Application</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the container reference '<em>Application</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory#getApplication()
+	 * @see #getLayerApplicationFactory()
+	 * @generated
+	 */
+	EReference getLayerApplicationFactory_Application();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry <em>Property Setter Registry</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Property Setter Registry</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry
+	 * @generated
+	 */
+	EClass getPropertySetterRegistry();
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getPropertySetters <em>Property Setters</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the reference list '<em>Property Setters</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getPropertySetters()
+	 * @see #getPropertySetterRegistry()
+	 * @generated
+	 */
+	EReference getPropertySetterRegistry_PropertySetters();
+
+	/**
+	 * Returns the meta object for the map '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getSetterMap <em>Setter Map</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the map '<em>Setter Map</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getSetterMap()
+	 * @see #getPropertySetterRegistry()
+	 * @generated
+	 */
+	EReference getPropertySetterRegistry_SetterMap();
+
+	/**
+	 * Returns the meta object for the container reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getApplication <em>Application</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the container reference '<em>Application</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getApplication()
+	 * @see #getPropertySetterRegistry()
+	 * @generated
+	 */
+	EReference getPropertySetterRegistry_Application();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getPropertySetter(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Property Setter</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Get Property Setter</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getPropertySetter(org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 * @generated
+	 */
+	EOperation getPropertySetterRegistry__GetPropertySetter__Property();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getPropertySetter(java.lang.String) <em>Get Property Setter</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Get Property Setter</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getPropertySetter(java.lang.String)
+	 * @generated
+	 */
+	EOperation getPropertySetterRegistry__GetPropertySetter__String();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#addPropertySetter(org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter) <em>Add Property Setter</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Add Property Setter</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#addPropertySetter(org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter)
+	 * @generated
+	 */
+	EOperation getPropertySetterRegistry__AddPropertySetter__PropertySetter();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter <em>Property Setter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Property Setter</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter
+	 * @generated
+	 */
+	EClass getPropertySetter();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter#getProperty <em>Property</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the reference '<em>Property</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter#getProperty()
+	 * @see #getPropertySetter()
+	 * @generated
+	 */
+	EReference getPropertySetter_Property();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter#getPropertyName <em>Property Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Property Name</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter#getPropertyName()
+	 * @see #getPropertySetter()
+	 * @generated
+	 */
+	EAttribute getPropertySetter_PropertyName();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter#setValue(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance) <em>Set Value</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Set Value</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter#setValue(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance)
+	 * @generated
+	 */
+	EOperation getPropertySetter__SetValue__View_TypeInstance();
+
+	/**
+	 * Returns the meta object for class '{@link java.util.Map.Entry <em>String To Property Setter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>String To Property Setter</em>'.
+	 * @see java.util.Map.Entry
+	 * @model keyDataType="org.eclipse.papyrus.layers.stackmodel.layers.String" keyRequired="true" keyOrdered="false"
+	 *        valueType="org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter" valueContainment="true" valueRequired="true" valueOrdered="false"
+	 * @generated
+	 */
+	EClass getStringToPropertySetter();
+
+	/**
+	 * Returns the meta object for the attribute '{@link java.util.Map.Entry <em>Key</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Key</em>'.
+	 * @see java.util.Map.Entry
+	 * @see #getStringToPropertySetter()
+	 * @generated
+	 */
+	EAttribute getStringToPropertySetter_Key();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link java.util.Map.Entry <em>Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference '<em>Value</em>'.
+	 * @see java.util.Map.Entry
+	 * @see #getStringToPropertySetter()
+	 * @generated
+	 */
+	EReference getStringToPropertySetter_Value();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer <em>Abstract Layer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Abstract Layer</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer
+	 * @generated
+	 */
+	EClass getAbstractLayer();
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyValues <em>Property Values</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the reference list '<em>Property Values</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyValues()
+	 * @see #getAbstractLayer()
+	 * @generated
+	 */
+	EReference getAbstractLayer_PropertyValues();
+
+	/**
+	 * Returns the meta object for the map '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyValueMap <em>Property Value Map</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the map '<em>Property Value Map</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyValueMap()
+	 * @see #getAbstractLayer()
+	 * @generated
+	 */
+	EReference getAbstractLayer_PropertyValueMap();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getLayerDescriptor <em>Layer Descriptor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the reference '<em>Layer Descriptor</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getLayerDescriptor()
+	 * @see #getAbstractLayer()
+	 * @generated
+	 */
+	EReference getAbstractLayer_LayerDescriptor();
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getViews <em>Views</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the reference list '<em>Views</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getViews()
+	 * @see #getAbstractLayer()
+	 * @generated
+	 */
+	EReference getAbstractLayer_Views();
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getAttachedProperties <em>Attached Properties</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the reference list '<em>Attached Properties</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getAttachedProperties()
+	 * @see #getAbstractLayer()
+	 * @generated
+	 */
+	EReference getAbstractLayer_AttachedProperties();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#addPropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Add Property Instance</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Add Property Instance</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#addPropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 * @generated
+	 */
+	EOperation getAbstractLayer__AddPropertyInstance__Property();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#removePropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Remove Property Instance</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Remove Property Instance</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#removePropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 * @generated
+	 */
+	EOperation getAbstractLayer__RemovePropertyInstance__Property();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Property Instance</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Get Property Instance</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 * @generated
+	 */
+	EOperation getAbstractLayer__GetPropertyInstance__Property();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyInstance(java.lang.String) <em>Get Property Instance</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Get Property Instance</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer#getPropertyInstance(java.lang.String)
+	 * @generated
+	 */
+	EOperation getAbstractLayer__GetPropertyInstance__String();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.Property <em>Property</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Property</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Property
+	 * @generated
+	 */
+	EClass getProperty();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#getType <em>Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the reference '<em>Type</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Property#getType()
+	 * @see #getProperty()
+	 * @generated
+	 */
+	EReference getProperty_Type();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#getDefaultValue <em>Default Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference '<em>Default Value</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Property#getDefaultValue()
+	 * @see #getProperty()
+	 * @generated
+	 */
+	EReference getProperty_DefaultValue();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Property#getName()
+	 * @see #getProperty()
+	 * @generated
+	 */
+	EAttribute getProperty_Name();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#getDescription <em>Description</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Description</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Property#getDescription()
+	 * @see #getProperty()
+	 * @generated
+	 */
+	EAttribute getProperty_Description();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#getIndex <em>Index</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Index</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Property#getIndex()
+	 * @see #getProperty()
+	 * @generated
+	 */
+	EAttribute getProperty_Index();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#createInstance() <em>Create Instance</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Create Instance</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Property#createInstance()
+	 * @generated
+	 */
+	EOperation getProperty__CreateInstance();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.FolderElement <em>Folder Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Folder Element</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.FolderElement
+	 * @generated
+	 */
+	EClass getFolderElement();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression <em>Layer Expression</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Layer Expression</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression
+	 * @generated
+	 */
+	EClass getLayerExpression();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getName()
+	 * @see #getLayerExpression()
+	 * @generated
+	 */
+	EAttribute getLayerExpression_Name();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getDescription <em>Description</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Description</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getDescription()
+	 * @see #getLayerExpression()
+	 * @generated
+	 */
+	EAttribute getLayerExpression_Description();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#isLayerEnabledInternal <em>Is Layer Enabled Internal</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Is Layer Enabled Internal</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#isLayerEnabledInternal()
+	 * @see #getLayerExpression()
+	 * @generated
+	 */
+	EAttribute getLayerExpression_IsLayerEnabledInternal();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#isLayerEnabled <em>Is Layer Enabled</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Is Layer Enabled</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#isLayerEnabled()
+	 * @see #getLayerExpression()
+	 * @generated
+	 */
+	EAttribute getLayerExpression_IsLayerEnabled();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#isBranchEnabled <em>Is Branch Enabled</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Is Branch Enabled</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#isBranchEnabled()
+	 * @see #getLayerExpression()
+	 * @generated
+	 */
+	EAttribute getLayerExpression_IsBranchEnabled();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getOwningLayersStack <em>Owning Layers Stack</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the reference '<em>Owning Layers Stack</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getOwningLayersStack()
+	 * @see #getLayerExpression()
+	 * @generated
+	 */
+	EReference getLayerExpression_OwningLayersStack();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getState <em>State</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>State</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getState()
+	 * @see #getLayerExpression()
+	 * @generated
+	 */
+	EAttribute getLayerExpression_State();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 * <em>Get Compute Property Value Command</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Get Compute Property Value Command</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 * @generated
+	 */
+	EOperation getLayerExpression__GetComputePropertyValueCommand__View_Property();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getViewsComputePropertyValueCommand(org.eclipse.emf.common.util.EList, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 * <em>Get Views Compute Property Value Command</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Get Views Compute Property Value Command</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getViewsComputePropertyValueCommand(org.eclipse.emf.common.util.EList, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 * @generated
+	 */
+	EOperation getLayerExpression__GetViewsComputePropertyValueCommand__EList_Property();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.emf.common.util.EList)
+	 * <em>Get Properties Compute Property Value Command</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Get Properties Compute Property Value Command</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.emf.common.util.EList)
+	 * @generated
+	 */
+	EOperation getLayerExpression__GetPropertiesComputePropertyValueCommand__View_EList();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#attachToLayersStack(org.eclipse.papyrus.layers.stackmodel.layers.LayersStack) <em>Attach To Layers Stack</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Attach To Layers Stack</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#attachToLayersStack(org.eclipse.papyrus.layers.stackmodel.layers.LayersStack)
+	 * @generated
+	 */
+	EOperation getLayerExpression__AttachToLayersStack__LayersStack();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getLayersStack() <em>Get Layers Stack</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Get Layers Stack</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#getLayersStack()
+	 * @generated
+	 */
+	EOperation getLayerExpression__GetLayersStack();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#enterAttachedState() <em>Enter Attached State</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Enter Attached State</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#enterAttachedState()
+	 * @generated
+	 */
+	EOperation getLayerExpression__EnterAttachedState();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#attach() <em>Attach</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Attach</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#attach()
+	 * @generated
+	 */
+	EOperation getLayerExpression__Attach();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#detach() <em>Detach</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Detach</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#detach()
+	 * @generated
+	 */
+	EOperation getLayerExpression__Detach();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#exitAttachedState() <em>Exit Attached State</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Exit Attached State</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression#exitAttachedState()
+	 * @generated
+	 */
+	EOperation getLayerExpression__ExitAttachedState();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.ApplicationDependantElement <em>Application Dependant Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Application Dependant Element</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.ApplicationDependantElement
+	 * @generated
+	 */
+	EClass getApplicationDependantElement();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.ApplicationDependantElement#getApplication <em>Application</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the reference '<em>Application</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.ApplicationDependantElement#getApplication()
+	 * @see #getApplicationDependantElement()
+	 * @generated
+	 */
+	EReference getApplicationDependantElement_Application();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.Type <em>Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Type</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Type
+	 * @generated
+	 */
+	EClass getType();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.Type#getMetamodel <em>Metamodel</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the reference '<em>Metamodel</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Type#getMetamodel()
+	 * @see #getType()
+	 * @generated
+	 */
+	EReference getType_Metamodel();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.Type#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Type#getName()
+	 * @see #getType()
+	 * @generated
+	 */
+	EAttribute getType_Name();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.Type#getDescription <em>Description</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Description</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Type#getDescription()
+	 * @see #getType()
+	 * @generated
+	 */
+	EAttribute getType_Description();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Type#createInstance() <em>Create Instance</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Create Instance</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Type#createInstance()
+	 * @generated
+	 */
+	EOperation getType__CreateInstance();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel <em>Metamodel</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Metamodel</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Metamodel
+	 * @generated
+	 */
+	EClass getMetamodel();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getName()
+	 * @see #getMetamodel()
+	 * @generated
+	 */
+	EAttribute getMetamodel_Name();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getDescription <em>Description</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Description</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getDescription()
+	 * @see #getMetamodel()
+	 * @generated
+	 */
+	EAttribute getMetamodel_Description();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getNsuri <em>Nsuri</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Nsuri</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getNsuri()
+	 * @see #getMetamodel()
+	 * @generated
+	 */
+	EAttribute getMetamodel_Nsuri();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getPluginID <em>Plugin ID</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Plugin ID</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getPluginID()
+	 * @see #getMetamodel()
+	 * @generated
+	 */
+	EAttribute getMetamodel_PluginID();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getEPackageInstanceName <em>EPackage Instance Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>EPackage Instance Name</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getEPackageInstanceName()
+	 * @see #getMetamodel()
+	 * @generated
+	 */
+	EAttribute getMetamodel_EPackageInstanceName();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#isTypeValid <em>Is Type Valid</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Is Type Valid</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#isTypeValid()
+	 * @see #getMetamodel()
+	 * @generated
+	 */
+	EAttribute getMetamodel_IsTypeValid();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getEPackage() <em>Get EPackage</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Get EPackage</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getEPackage()
+	 * @generated
+	 */
+	EOperation getMetamodel__GetEPackage();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.Folder <em>Folder</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Folder</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Folder
+	 * @generated
+	 */
+	EClass getFolder();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.layers.stackmodel.layers.Folder#getElements <em>Elements</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference list '<em>Elements</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Folder#getElements()
+	 * @see #getFolder()
+	 * @generated
+	 */
+	EReference getFolder_Elements();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.Folder#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Folder#getName()
+	 * @see #getFolder()
+	 * @generated
+	 */
+	EAttribute getFolder_Name();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.IntInstance <em>Int Instance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Int Instance</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.IntInstance
+	 * @generated
+	 */
+	EClass getIntInstance();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.IntInstance#getValue <em>Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Value</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.IntInstance#getValue()
+	 * @see #getIntInstance()
+	 * @generated
+	 */
+	EAttribute getIntInstance_Value();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance <em>Boolean Instance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Boolean Instance</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance
+	 * @generated
+	 */
+	EClass getBooleanInstance();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance#isValue <em>Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Value</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance#isValue()
+	 * @see #getBooleanInstance()
+	 * @generated
+	 */
+	EAttribute getBooleanInstance_Value();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.StringInstance <em>String Instance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>String Instance</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.StringInstance
+	 * @generated
+	 */
+	EClass getStringInstance();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.StringInstance#getValue <em>Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Value</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.StringInstance#getValue()
+	 * @see #getStringInstance()
+	 * @generated
+	 */
+	EAttribute getStringInstance_Value();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.IntType <em>Int Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Int Type</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.IntType
+	 * @generated
+	 */
+	EClass getIntType();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanType <em>Boolean Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Boolean Type</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.BooleanType
+	 * @generated
+	 */
+	EClass getBooleanType();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.StringType <em>String Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>String Type</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.StringType
+	 * @generated
+	 */
+	EClass getStringType();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomType <em>Custom Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Custom Type</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.CustomType
+	 * @generated
+	 */
+	EClass getCustomType();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomType#getClassifier <em>Classifier</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Classifier</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.CustomType#getClassifier()
+	 * @see #getCustomType()
+	 * @generated
+	 */
+	EAttribute getCustomType_Classifier();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication <em>Stack Application</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Stack Application</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication
+	 * @generated
+	 */
+	EClass getLayersStackApplication();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayersStacks <em>Layers Stacks</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference list '<em>Layers Stacks</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayersStacks()
+	 * @see #getLayersStackApplication()
+	 * @generated
+	 */
+	EReference getLayersStackApplication_LayersStacks();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayerStackRegistry <em>Layer Stack Registry</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference '<em>Layer Stack Registry</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayerStackRegistry()
+	 * @see #getLayersStackApplication()
+	 * @generated
+	 */
+	EReference getLayersStackApplication_LayerStackRegistry();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getPropertyRegistry <em>Property Registry</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference '<em>Property Registry</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getPropertyRegistry()
+	 * @see #getLayersStackApplication()
+	 * @generated
+	 */
+	EReference getLayersStackApplication_PropertyRegistry();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayerDescriptorRegistry <em>Layer Descriptor Registry</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference '<em>Layer Descriptor Registry</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayerDescriptorRegistry()
+	 * @see #getLayersStackApplication()
+	 * @generated
+	 */
+	EReference getLayersStackApplication_LayerDescriptorRegistry();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getFactory <em>Factory</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference '<em>Factory</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getFactory()
+	 * @see #getLayersStackApplication()
+	 * @generated
+	 */
+	EReference getLayersStackApplication_Factory();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getPropertySetterRegistry <em>Property Setter Registry</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference '<em>Property Setter Registry</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getPropertySetterRegistry()
+	 * @see #getLayersStackApplication()
+	 * @generated
+	 */
+	EReference getLayersStackApplication_PropertySetterRegistry();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayerOperatorDescriptorRegistry <em>Layer Operator Descriptor Registry</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference '<em>Layer Operator Descriptor Registry</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayerOperatorDescriptorRegistry()
+	 * @see #getLayersStackApplication()
+	 * @generated
+	 */
+	EReference getLayersStackApplication_LayerOperatorDescriptorRegistry();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram) <em>Get Layers Stack For</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Get Layers Stack For</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram)
+	 * @generated
+	 */
+	EOperation getLayersStackApplication__GetLayersStackFor__Diagram();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#removeLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram) <em>Remove Layers Stack For</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Remove Layers Stack For</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#removeLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram)
+	 * @generated
+	 */
+	EOperation getLayersStackApplication__RemoveLayersStackFor__Diagram();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#isLayersStackAttachedFor(org.eclipse.gmf.runtime.notation.Diagram) <em>Is Layers Stack Attached For</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Is Layers Stack Attached For</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#isLayersStackAttachedFor(org.eclipse.gmf.runtime.notation.Diagram)
+	 * @generated
+	 */
+	EOperation getLayersStackApplication__IsLayersStackAttachedFor__Diagram();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#createLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram) <em>Create Layers Stack For</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Create Layers Stack For</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#createLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram)
+	 * @generated
+	 */
+	EOperation getLayersStackApplication__CreateLayersStackFor__Diagram();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#lookupLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram) <em>Lookup Layers Stack For</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Lookup Layers Stack For</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#lookupLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram)
+	 * @generated
+	 */
+	EOperation getLayersStackApplication__LookupLayersStackFor__Diagram();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerStackDescriptorRegistry <em>Layer Stack Descriptor Registry</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Layer Stack Descriptor Registry</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerStackDescriptorRegistry
+	 * @generated
+	 */
+	EClass getLayerStackDescriptorRegistry();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry <em>Property Registry</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Property Registry</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry
+	 * @generated
+	 */
+	EClass getPropertyRegistry();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getProperties <em>Properties</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference list '<em>Properties</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getProperties()
+	 * @see #getPropertyRegistry()
+	 * @generated
+	 */
+	EReference getPropertyRegistry_Properties();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getTypeRegistry <em>Type Registry</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference '<em>Type Registry</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getTypeRegistry()
+	 * @see #getPropertyRegistry()
+	 * @generated
+	 */
+	EReference getPropertyRegistry_TypeRegistry();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getPropertiesCount <em>Properties Count</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Properties Count</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getPropertiesCount()
+	 * @see #getPropertyRegistry()
+	 * @generated
+	 */
+	EAttribute getPropertyRegistry_PropertiesCount();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getPropertyIndex(java.lang.String) <em>Get Property Index</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Get Property Index</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getPropertyIndex(java.lang.String)
+	 * @generated
+	 */
+	EOperation getPropertyRegistry__GetPropertyIndex__String();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getProperty(java.lang.String) <em>Get Property</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Get Property</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getProperty(java.lang.String)
+	 * @generated
+	 */
+	EOperation getPropertyRegistry__GetProperty__String();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#addProperty(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Add Property</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Add Property</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#addProperty(org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 * @generated
+	 */
+	EOperation getPropertyRegistry__AddProperty__Property();
+
+	/**
+	 * Returns the meta object for class '{@link java.util.Map.Entry <em>String To Property Index Map</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>String To Property Index Map</em>'.
+	 * @see java.util.Map.Entry
+	 * @model features="value key"
+	 *        valueType="org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex" valueContainment="true" valueOrdered="false"
+	 *        keyDataType="org.eclipse.papyrus.layers.stackmodel.layers.String" keyRequired="true" keyOrdered="false"
+	 * @generated
+	 */
+	EClass getStringToPropertyIndexMap();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link java.util.Map.Entry <em>Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference '<em>Value</em>'.
+	 * @see java.util.Map.Entry
+	 * @see #getStringToPropertyIndexMap()
+	 * @generated
+	 */
+	EReference getStringToPropertyIndexMap_Value();
+
+	/**
+	 * Returns the meta object for the attribute '{@link java.util.Map.Entry <em>Key</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Key</em>'.
+	 * @see java.util.Map.Entry
+	 * @see #getStringToPropertyIndexMap()
+	 * @generated
+	 */
+	EAttribute getStringToPropertyIndexMap_Key();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.SimpleLayerDescriptor <em>Simple Layer Descriptor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Simple Layer Descriptor</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.SimpleLayerDescriptor
+	 * @generated
+	 */
+	EClass getSimpleLayerDescriptor();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayerDescriptor <em>Reg Exp Layer Descriptor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Reg Exp Layer Descriptor</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayerDescriptor
+	 * @generated
+	 */
+	EClass getRegExpLayerDescriptor();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.NullInstance <em>Null Instance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Null Instance</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.NullInstance
+	 * @generated
+	 */
+	EClass getNullInstance();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.NullInstance#getInstance() <em>Get Instance</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Get Instance</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.NullInstance#getInstance()
+	 * @generated
+	 */
+	EOperation getNullInstance__GetInstance();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer <em>Reg Exp Layer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Reg Exp Layer</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer
+	 * @generated
+	 */
+	EClass getRegExpLayer();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getExpr <em>Expr</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Expr</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getExpr()
+	 * @see #getRegExpLayer()
+	 * @generated
+	 */
+	EAttribute getRegExpLayer_Expr();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getLanguage <em>Language</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Language</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getLanguage()
+	 * @see #getRegExpLayer()
+	 * @generated
+	 */
+	EAttribute getRegExpLayer_Language();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#isDomainChangedEventDependant <em>Is Domain Changed Event Dependant</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Is Domain Changed Event Dependant</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#isDomainChangedEventDependant()
+	 * @see #getRegExpLayer()
+	 * @generated
+	 */
+	EAttribute getRegExpLayer_IsDomainChangedEventDependant();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getDomainChangedEventLevel <em>Domain Changed Event Level</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Domain Changed Event Level</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getDomainChangedEventLevel()
+	 * @see #getRegExpLayer()
+	 * @generated
+	 */
+	EAttribute getRegExpLayer_DomainChangedEventLevel();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#isDiagramChangedEventDependant <em>Is Diagram Changed Event Dependant</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Is Diagram Changed Event Dependant</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#isDiagramChangedEventDependant()
+	 * @see #getRegExpLayer()
+	 * @generated
+	 */
+	EAttribute getRegExpLayer_IsDiagramChangedEventDependant();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getDiagramChangedEventLevel <em>Diagram Changed Event Level</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Diagram Changed Event Level</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getDiagramChangedEventLevel()
+	 * @see #getRegExpLayer()
+	 * @generated
+	 */
+	EAttribute getRegExpLayer_DiagramChangedEventLevel();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getExpressionContextObjectType <em>Expression Context Object Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Expression Context Object Type</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getExpressionContextObjectType()
+	 * @see #getRegExpLayer()
+	 * @generated
+	 */
+	EAttribute getRegExpLayer_ExpressionContextObjectType();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#activate(org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator) <em>Activate</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Activate</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#activate(org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator)
+	 * @generated
+	 */
+	EOperation getRegExpLayer__Activate__AbstractLayerOperator();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#deactivate(org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator) <em>Deactivate</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Deactivate</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#deactivate(org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator)
+	 * @generated
+	 */
+	EOperation getRegExpLayer__Deactivate__AbstractLayerOperator();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#isDerivedView(org.eclipse.gmf.runtime.notation.View) <em>Is Derived View</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Is Derived View</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#isDerivedView(org.eclipse.gmf.runtime.notation.View)
+	 * @generated
+	 */
+	EOperation getRegExpLayer__IsDerivedView__View();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#attachDerivedView(org.eclipse.gmf.runtime.notation.View) <em>Attach Derived View</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Attach Derived View</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#attachDerivedView(org.eclipse.gmf.runtime.notation.View)
+	 * @generated
+	 */
+	EOperation getRegExpLayer__AttachDerivedView__View();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#attachDerivedViews(org.eclipse.emf.common.util.EList) <em>Attach Derived Views</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Attach Derived Views</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#attachDerivedViews(org.eclipse.emf.common.util.EList)
+	 * @generated
+	 */
+	EOperation getRegExpLayer__AttachDerivedViews__EList();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#attachDerivedViews() <em>Attach Derived Views</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Attach Derived Views</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#attachDerivedViews()
+	 * @generated
+	 */
+	EOperation getRegExpLayer__AttachDerivedViews();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#lookupDerivedViews(org.eclipse.emf.common.util.EList) <em>Lookup Derived Views</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Lookup Derived Views</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#lookupDerivedViews(org.eclipse.emf.common.util.EList)
+	 * @generated
+	 */
+	EOperation getRegExpLayer__LookupDerivedViews__EList();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex <em>Property Index</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Property Index</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex
+	 * @generated
+	 */
+	EClass getPropertyIndex();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex#getProperty <em>Property</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the reference '<em>Property</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex#getProperty()
+	 * @see #getPropertyIndex()
+	 * @generated
+	 */
+	EReference getPropertyIndex_Property();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex#getIndex <em>Index</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Index</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex#getIndex()
+	 * @see #getPropertyIndex()
+	 * @generated
+	 */
+	EAttribute getPropertyIndex_Index();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry <em>Type Registry</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Type Registry</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry
+	 * @generated
+	 */
+	EClass getTypeRegistry();
+
+	/**
+	 * Returns the meta object for the map '{@link org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry#getTypes <em>Types</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the map '<em>Types</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry#getTypes()
+	 * @see #getTypeRegistry()
+	 * @generated
+	 */
+	EReference getTypeRegistry_Types();
+
+	/**
+	 * Returns the meta object for class '{@link java.util.Map.Entry <em>String To Type Map</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>String To Type Map</em>'.
+	 * @see java.util.Map.Entry
+	 * @model features="value key"
+	 *        valueType="org.eclipse.papyrus.layers.stackmodel.layers.Type" valueContainment="true" valueRequired="true" valueOrdered="false"
+	 *        keyDataType="org.eclipse.papyrus.layers.stackmodel.layers.String" keyRequired="true" keyOrdered="false"
+	 * @generated
+	 */
+	EClass getStringToTypeMap();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link java.util.Map.Entry <em>Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference '<em>Value</em>'.
+	 * @see java.util.Map.Entry
+	 * @see #getStringToTypeMap()
+	 * @generated
+	 */
+	EReference getStringToTypeMap_Value();
+
+	/**
+	 * Returns the meta object for the attribute '{@link java.util.Map.Entry <em>Key</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Key</em>'.
+	 * @see java.util.Map.Entry
+	 * @see #getStringToTypeMap()
+	 * @generated
+	 */
+	EAttribute getStringToTypeMap_Key();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry <em>Layer Descriptor Registry</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Layer Descriptor Registry</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry
+	 * @generated
+	 */
+	EClass getLayerDescriptorRegistry();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry#getLayerDescriptors <em>Layer Descriptors</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference list '<em>Layer Descriptors</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry#getLayerDescriptors()
+	 * @see #getLayerDescriptorRegistry()
+	 * @generated
+	 */
+	EReference getLayerDescriptorRegistry_LayerDescriptors();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator <em>Layer Operator</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Layer Operator</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator
+	 * @generated
+	 */
+	EClass getLayerOperator();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator#getLayers <em>Layers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the containment reference list '<em>Layers</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator#getLayers()
+	 * @see #getLayerOperator()
+	 * @generated
+	 */
+	EReference getLayerOperator_Layers();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer <em>Container</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Container</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer
+	 * @generated
+	 */
+	EClass getLayersContainer();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer#addLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression) <em>Add Layer</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Add Layer</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer#addLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression)
+	 * @generated
+	 */
+	EOperation getLayersContainer__AddLayer__LayerExpression();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator <em>Abstract Layer Operator</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Abstract Layer Operator</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator
+	 * @generated
+	 */
+	EClass getAbstractLayerOperator();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#getLayerOperatorDescriptor <em>Layer Operator Descriptor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the reference '<em>Layer Operator Descriptor</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#getLayerOperatorDescriptor()
+	 * @see #getAbstractLayerOperator()
+	 * @generated
+	 */
+	EReference getAbstractLayerOperator_LayerOperatorDescriptor();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#getLayerOperatorDescriptorName <em>Layer Operator Descriptor Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Layer Operator Descriptor Name</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#getLayerOperatorDescriptorName()
+	 * @see #getAbstractLayerOperator()
+	 * @generated
+	 */
+	EAttribute getAbstractLayerOperator_LayerOperatorDescriptorName();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#isDescriptorSet() <em>Is Descriptor Set</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Is Descriptor Set</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#isDescriptorSet()
+	 * @generated
+	 */
+	EOperation getAbstractLayerOperator__IsDescriptorSet();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#resetDescriptor() <em>Reset Descriptor</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Reset Descriptor</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator#resetDescriptor()
+	 * @generated
+	 */
+	EOperation getAbstractLayerOperator__ResetDescriptor();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor <em>Layer Operator Descriptor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Layer Operator Descriptor</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor
+	 * @generated
+	 */
+	EClass getLayerOperatorDescriptor();
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#getPropertyOperators <em>Property Operators</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the reference list '<em>Property Operators</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#getPropertyOperators()
+	 * @see #getLayerOperatorDescriptor()
+	 * @generated
+	 */
+	EReference getLayerOperatorDescriptor_PropertyOperators();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#getName()
+	 * @see #getLayerOperatorDescriptor()
+	 * @generated
+	 */
+	EAttribute getLayerOperatorDescriptor_Name();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#getPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.Property) <em>Get Property Operator</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Get Property Operator</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#getPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 * @generated
+	 */
+	EOperation getLayerOperatorDescriptor__GetPropertyOperator__Property();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#setPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.Property, org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator)
+	 * <em>Set Property Operator</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Set Property Operator</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#setPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.Property, org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator)
+	 * @generated
+	 */
+	EOperation getLayerOperatorDescriptor__SetPropertyOperator__Property_PropertyOperator();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#createLayerOperator() <em>Create Layer Operator</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Create Layer Operator</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#createLayerOperator()
+	 * @generated
+	 */
+	EOperation getLayerOperatorDescriptor__CreateLayerOperator();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#setPropertyCollectionSize(int, org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator) <em>Set Property Collection Size</em>}'
+	 * operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Set Property Collection Size</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor#setPropertyCollectionSize(int, org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator)
+	 * @generated
+	 */
+	EOperation getLayerOperatorDescriptor__SetPropertyCollectionSize__int_DefaultPropertyOperator();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator <em>Property Operator</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Property Operator</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator
+	 * @generated
+	 */
+	EClass getPropertyOperator();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator#getName()
+	 * @see #getPropertyOperator()
+	 * @generated
+	 */
+	EAttribute getPropertyOperator_Name();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList) <em>Get Compute Property Value Command</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for the '<em>Get Compute Property Value Command</em>' operation.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList)
+	 * @generated
+	 */
+	EOperation getPropertyOperator__GetComputePropertyValueCommand__EList();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator <em>Default Property Operator</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Default Property Operator</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator
+	 * @generated
+	 */
+	EClass getDefaultPropertyOperator();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator <em>Top Layer Operator</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Top Layer Operator</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator
+	 * @generated
+	 */
+	EClass getTopLayerOperator();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator <em>Stacked Layer Operator</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Stacked Layer Operator</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator
+	 * @generated
+	 */
+	EClass getStackedLayerOperator();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomLayerOperator <em>Custom Layer Operator</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for class '<em>Custom Layer Operator</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.CustomLayerOperator
+	 * @generated
+	 */
+	EClass getCustomLayerOperator();
+
+	/**
+	 * Returns the meta object for data type '{@link java.lang.String <em>String</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for data type '<em>String</em>'.
+	 * @see java.lang.String
+	 * @model instanceClass="java.lang.String"
+	 * @generated
+	 */
+	EDataType getString();
+
+	/**
+	 * Returns the meta object for data type '<em>boolean</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for data type '<em>boolean</em>'.
+	 * @model instanceClass="boolean"
+	 * @generated
+	 */
+	EDataType getboolean();
+
+	/**
+	 * Returns the meta object for data type '{@link org.eclipse.emf.ecore.EPackage <em>EPackage</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for data type '<em>EPackage</em>'.
+	 * @see org.eclipse.emf.ecore.EPackage
+	 * @model instanceClass="org.eclipse.emf.ecore.EPackage"
+	 * @generated
+	 */
+	EDataType getEPackage();
+
+	/**
+	 * Returns the meta object for data type '{@link org.eclipse.papyrus.layers.stackmodel.NotFoundException <em>Not Found Exception</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for data type '<em>Not Found Exception</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.NotFoundException
+	 * @model instanceClass="org.eclipse.papyrus.layers.stackmodel.NotFoundException"
+	 *        extendedMetaData="baseType='LayersException'"
+	 * @generated
+	 */
+	EDataType getNotFoundException();
+
+	/**
+	 * Returns the meta object for data type '{@link org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand <em>Compute Property Value Command</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for data type '<em>Compute Property Value Command</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand
+	 * @model instanceClass="org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand"
+	 * @generated
+	 */
+	EDataType getComputePropertyValueCommand();
+
+	/**
+	 * Returns the meta object for data type '{@link org.eclipse.papyrus.layers.stackmodel.LayersException <em>Exception</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for data type '<em>Exception</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.LayersException
+	 * @model instanceClass="org.eclipse.papyrus.layers.stackmodel.LayersException"
+	 * @generated
+	 */
+	EDataType getLayersException();
+
+	/**
+	 * Returns the meta object for data type '<em>int</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for data type '<em>int</em>'.
+	 * @model instanceClass="int"
+	 * @generated
+	 */
+	EDataType getint();
+
+	/**
+	 * Returns the meta object for data type '{@link java.lang.Object <em>Object</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for data type '<em>Object</em>'.
+	 * @see java.lang.Object
+	 * @model instanceClass="java.lang.Object"
+	 * @generated
+	 */
+	EDataType getObject();
+
+	/**
+	 * Returns the meta object for data type '{@link org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance <em>Custom Property Opertor Instance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for data type '<em>Custom Property Opertor Instance</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance
+	 * @model instanceClass="org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance"
+	 * @generated
+	 */
+	EDataType getCustomPropertyOpertorInstance();
+
+	/**
+	 * Returns the meta object for data type '{@link org.eclipse.papyrus.layers.stackmodel.BadStateException <em>Bad State Exception</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the meta object for data type '<em>Bad State Exception</em>'.
+	 * @see org.eclipse.papyrus.layers.stackmodel.BadStateException
+	 * @model instanceClass="org.eclipse.papyrus.layers.stackmodel.BadStateException"
+	 *        extendedMetaData="baseType='LayersException'"
+	 * @generated
+	 */
+	EDataType getBadStateException();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	LayersFactory getLayersFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 * <li>each class,</li>
+	 * <li>each feature of each class,</li>
+	 * <li>each operation of each class,</li>
+	 * <li>each enum,</li>
+	 * <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerNamedStyleImpl <em>Layer Named Style</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerNamedStyleImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerNamedStyle()
+		 * @generated
+		 */
+		EClass LAYER_NAMED_STYLE = eINSTANCE.getLayerNamedStyle();
+
+		/**
+		 * The meta object literal for the '<em><b>Layers Stack</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference LAYER_NAMED_STYLE__LAYERS_STACK = eINSTANCE.getLayerNamedStyle_LayersStack();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackImpl <em>Stack</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayersStack()
+		 * @generated
+		 */
+		EClass LAYERS_STACK = eINSTANCE.getLayersStack();
+
+		/**
+		 * The meta object literal for the '<em><b>Layers</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference LAYERS_STACK__LAYERS = eINSTANCE.getLayersStack_Layers();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute LAYERS_STACK__NAME = eINSTANCE.getLayersStack_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Description</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute LAYERS_STACK__DESCRIPTION = eINSTANCE.getLayersStack_Description();
+
+		/**
+		 * The meta object literal for the '<em><b>Diagram</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference LAYERS_STACK__DIAGRAM = eINSTANCE.getLayersStack_Diagram();
+
+		/**
+		 * The meta object literal for the '<em><b>State</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute LAYERS_STACK__STATE = eINSTANCE.getLayersStack_State();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Compute Property Value Command</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYERS_STACK___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY = eINSTANCE.getLayersStack__GetComputePropertyValueCommand__View_Property();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Properties Compute Property Value Command</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYERS_STACK___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST = eINSTANCE.getLayersStack__GetPropertiesComputePropertyValueCommand__View_EList();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Views Compute Property Value Command</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYERS_STACK___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY = eINSTANCE.getLayersStack__GetViewsComputePropertyValueCommand__EList_Property();
+
+		/**
+		 * The meta object literal for the '<em><b>Start After Creation</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYERS_STACK___START_AFTER_CREATION = eINSTANCE.getLayersStack__StartAfterCreation();
+
+		/**
+		 * The meta object literal for the '<em><b>Attach Layers</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYERS_STACK___ATTACH_LAYERS = eINSTANCE.getLayersStack__AttachLayers();
+
+		/**
+		 * The meta object literal for the '<em><b>Attach</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYERS_STACK___ATTACH = eINSTANCE.getLayersStack__Attach();
+
+		/**
+		 * The meta object literal for the '<em><b>Detach</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYERS_STACK___DETACH = eINSTANCE.getLayersStack__Detach();
+
+		/**
+		 * The meta object literal for the '<em><b>Enter Attached State</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYERS_STACK___ENTER_ATTACHED_STATE = eINSTANCE.getLayersStack__EnterAttachedState();
+
+		/**
+		 * The meta object literal for the '<em><b>Exit Attached State</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYERS_STACK___EXIT_ATTACHED_STATE = eINSTANCE.getLayersStack__ExitAttachedState();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl <em>Layer</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayer()
+		 * @generated
+		 */
+		EClass LAYER = eINSTANCE.getLayer();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.ColorImpl <em>Color</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.ColorImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getColor()
+		 * @generated
+		 */
+		EClass COLOR = eINSTANCE.getColor();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.ColorInstanceImpl <em>Color Instance</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.ColorInstanceImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getColorInstance()
+		 * @generated
+		 */
+		EClass COLOR_INSTANCE = eINSTANCE.getColorInstance();
+
+		/**
+		 * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute COLOR_INSTANCE__VALUE = eINSTANCE.getColorInstance_Value();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FillInstanceImpl <em>Fill Instance</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FillInstanceImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFillInstance()
+		 * @generated
+		 */
+		EClass FILL_INSTANCE = eINSTANCE.getFillInstance();
+
+		/**
+		 * The meta object literal for the '<em><b>Transparency</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute FILL_INSTANCE__TRANSPARENCY = eINSTANCE.getFillInstance_Transparency();
+
+		/**
+		 * The meta object literal for the '<em><b>Fill Color</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference FILL_INSTANCE__FILL_COLOR = eINSTANCE.getFillInstance_FillColor();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FillImpl <em>Fill</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FillImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFill()
+		 * @generated
+		 */
+		EClass FILL = eINSTANCE.getFill();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FillPropertySetterImpl <em>Fill Property Setter</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FillPropertySetterImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFillPropertySetter()
+		 * @generated
+		 */
+		EClass FILL_PROPERTY_SETTER = eINSTANCE.getFillPropertySetter();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.IsValidPropertySetterImpl <em>Is Valid Property Setter</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.IsValidPropertySetterImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getIsValidPropertySetter()
+		 * @generated
+		 */
+		EClass IS_VALID_PROPERTY_SETTER = eINSTANCE.getIsValidPropertySetter();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.NullPropertySetterImpl <em>Null Property Setter</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.NullPropertySetterImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getNullPropertySetter()
+		 * @generated
+		 */
+		EClass NULL_PROPERTY_SETTER = eINSTANCE.getNullPropertySetter();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LineTypeImpl <em>Line Type</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LineTypeImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLineType()
+		 * @generated
+		 */
+		EClass LINE_TYPE = eINSTANCE.getLineType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LineInstanceImpl <em>Line Instance</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LineInstanceImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLineInstance()
+		 * @generated
+		 */
+		EClass LINE_INSTANCE = eINSTANCE.getLineInstance();
+
+		/**
+		 * The meta object literal for the '<em><b>Line Color</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute LINE_INSTANCE__LINE_COLOR = eINSTANCE.getLineInstance_LineColor();
+
+		/**
+		 * The meta object literal for the '<em><b>Line With</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute LINE_INSTANCE__LINE_WITH = eINSTANCE.getLineInstance_LineWith();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LinePropertySetterImpl <em>Line Property Setter</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LinePropertySetterImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLinePropertySetter()
+		 * @generated
+		 */
+		EClass LINE_PROPERTY_SETTER = eINSTANCE.getLinePropertySetter();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FontPropertySetterImpl <em>Font Property Setter</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FontPropertySetterImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFontPropertySetter()
+		 * @generated
+		 */
+		EClass FONT_PROPERTY_SETTER = eINSTANCE.getFontPropertySetter();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FontInstanceImpl <em>Font Instance</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FontInstanceImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFontInstance()
+		 * @generated
+		 */
+		EClass FONT_INSTANCE = eINSTANCE.getFontInstance();
+
+		/**
+		 * The meta object literal for the '<em><b>Font Color</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute FONT_INSTANCE__FONT_COLOR = eINSTANCE.getFontInstance_FontColor();
+
+		/**
+		 * The meta object literal for the '<em><b>Font Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute FONT_INSTANCE__FONT_NAME = eINSTANCE.getFontInstance_FontName();
+
+		/**
+		 * The meta object literal for the '<em><b>Font Heigh</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute FONT_INSTANCE__FONT_HEIGH = eINSTANCE.getFontInstance_FontHeigh();
+
+		/**
+		 * The meta object literal for the '<em><b>Bold</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute FONT_INSTANCE__BOLD = eINSTANCE.getFontInstance_Bold();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FontTypeImpl <em>Font Type</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FontTypeImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFontType()
+		 * @generated
+		 */
+		EClass FONT_TYPE = eINSTANCE.getFontType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.IsVisiblePropertySetterImpl <em>Is Visible Property Setter</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.IsVisiblePropertySetterImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getIsVisiblePropertySetter()
+		 * @generated
+		 */
+		EClass IS_VISIBLE_PROPERTY_SETTER = eINSTANCE.getIsVisiblePropertySetter();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl <em>Layer Operator Descriptor Registry</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerOperatorDescriptorRegistry()
+		 * @generated
+		 */
+		EClass LAYER_OPERATOR_DESCRIPTOR_REGISTRY = eINSTANCE.getLayerOperatorDescriptorRegistry();
+
+		/**
+		 * The meta object literal for the '<em><b>Descriptors</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS = eINSTANCE.getLayerOperatorDescriptorRegistry_Descriptors();
+
+		/**
+		 * The meta object literal for the '<em><b>Property Operators</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_OPERATORS = eINSTANCE.getLayerOperatorDescriptorRegistry_PropertyOperators();
+
+		/**
+		 * The meta object literal for the '<em><b>Property Collection Size</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_COLLECTION_SIZE = eINSTANCE.getLayerOperatorDescriptorRegistry_PropertyCollectionSize();
+
+		/**
+		 * The meta object literal for the '<em><b>Default Operator</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DEFAULT_OPERATOR = eINSTANCE.getLayerOperatorDescriptorRegistry_DefaultOperator();
+
+		/**
+		 * The meta object literal for the '<em><b>Add Layer Operator Descriptor</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYER_OPERATOR_DESCRIPTOR_REGISTRY___ADD_LAYER_OPERATOR_DESCRIPTOR__LAYEROPERATORDESCRIPTOR = eINSTANCE.getLayerOperatorDescriptorRegistry__AddLayerOperatorDescriptor__LayerOperatorDescriptor();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Layer Operator Descriptor</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYER_OPERATOR_DESCRIPTOR_REGISTRY___GET_LAYER_OPERATOR_DESCRIPTOR__STRING = eINSTANCE.getLayerOperatorDescriptorRegistry__GetLayerOperatorDescriptor__String();
+
+		/**
+		 * The meta object literal for the '<em><b>Add Property Operator</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYER_OPERATOR_DESCRIPTOR_REGISTRY___ADD_PROPERTY_OPERATOR__PROPERTYOPERATOR = eINSTANCE.getLayerOperatorDescriptorRegistry__AddPropertyOperator__PropertyOperator();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Property Operator</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYER_OPERATOR_DESCRIPTOR_REGISTRY___GET_PROPERTY_OPERATOR__STRING = eINSTANCE.getLayerOperatorDescriptorRegistry__GetPropertyOperator__String();
+
+		/**
+		 * The meta object literal for the '<em><b>Attach Operator To Descriptor</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYER_OPERATOR_DESCRIPTOR_REGISTRY___ATTACH_OPERATOR_TO_DESCRIPTOR__PROPERTY_STRING_STRING = eINSTANCE.getLayerOperatorDescriptorRegistry__AttachOperatorToDescriptor__Property_String_String();
+
+		/**
+		 * The meta object literal for the '<em><b>Create Layer Operator</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYER_OPERATOR_DESCRIPTOR_REGISTRY___CREATE_LAYER_OPERATOR__STRING = eINSTANCE.getLayerOperatorDescriptorRegistry__CreateLayerOperator__String();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TopLayerOperatorDescriptorImpl <em>Top Layer Operator Descriptor</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.TopLayerOperatorDescriptorImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getTopLayerOperatorDescriptor()
+		 * @generated
+		 */
+		EClass TOP_LAYER_OPERATOR_DESCRIPTOR = eINSTANCE.getTopLayerOperatorDescriptor();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StackedLayerOperatorDescriptorImpl <em>Stacked Layer Operator Descriptor</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StackedLayerOperatorDescriptorImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStackedLayerOperatorDescriptor()
+		 * @generated
+		 */
+		EClass STACKED_LAYER_OPERATOR_DESCRIPTOR = eINSTANCE.getStackedLayerOperatorDescriptor();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomPropertyOperatorImpl <em>Custom Property Operator</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomPropertyOperatorImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getCustomPropertyOperator()
+		 * @generated
+		 */
+		EClass CUSTOM_PROPERTY_OPERATOR = eINSTANCE.getCustomPropertyOperator();
+
+		/**
+		 * The meta object literal for the '<em><b>Classname</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute CUSTOM_PROPERTY_OPERATOR__CLASSNAME = eINSTANCE.getCustomPropertyOperator_Classname();
+
+		/**
+		 * The meta object literal for the '<em><b>Operator Instance</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute CUSTOM_PROPERTY_OPERATOR__OPERATOR_INSTANCE = eINSTANCE.getCustomPropertyOperator_OperatorInstance();
+
+		/**
+		 * The meta object literal for the '<em><b>Class Bundle ID</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute CUSTOM_PROPERTY_OPERATOR__CLASS_BUNDLE_ID = eINSTANCE.getCustomPropertyOperator_ClassBundleID();
+
+		/**
+		 * The meta object literal for the '<em><b>Reset Operator Instance</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation CUSTOM_PROPERTY_OPERATOR___RESET_OPERATOR_INSTANCE = eINSTANCE.getCustomPropertyOperator__ResetOperatorInstance();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AndStackedLayerOperatorDescriptorImpl <em>And Stacked Layer Operator Descriptor</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.AndStackedLayerOperatorDescriptorImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getAndStackedLayerOperatorDescriptor()
+		 * @generated
+		 */
+		EClass AND_STACKED_LAYER_OPERATOR_DESCRIPTOR = eINSTANCE.getAndStackedLayerOperatorDescriptor();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.OrStackedLayerOperatorDescriptorImpl <em>Or Stacked Layer Operator Descriptor</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.OrStackedLayerOperatorDescriptorImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getOrStackedLayerOperatorDescriptor()
+		 * @generated
+		 */
+		EClass OR_STACKED_LAYER_OPERATOR_DESCRIPTOR = eINSTANCE.getOrStackedLayerOperatorDescriptor();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.IsAbstractUmlSetterImpl <em>Is Abstract Uml Setter</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.IsAbstractUmlSetterImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getIsAbstractUmlSetter()
+		 * @generated
+		 */
+		EClass IS_ABSTRACT_UML_SETTER = eINSTANCE.getIsAbstractUmlSetter();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AllViewsDerivedLayerImpl <em>All Views Derived Layer</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.AllViewsDerivedLayerImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getAllViewsDerivedLayer()
+		 * @generated
+		 */
+		EClass ALL_VIEWS_DERIVED_LAYER = eINSTANCE.getAllViewsDerivedLayer();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerState <em>Layer State</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerState
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerState()
+		 * @generated
+		 */
+		EEnum LAYER_STATE = eINSTANCE.getLayerState();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.EventLevel <em>Event Level</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.EventLevel
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getEventLevel()
+		 * @generated
+		 */
+		EEnum EVENT_LEVEL = eINSTANCE.getEventLevel();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeInstanceImpl <em>Type Instance</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeInstanceImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getTypeInstance()
+		 * @generated
+		 */
+		EClass TYPE_INSTANCE = eINSTANCE.getTypeInstance();
+
+		/**
+		 * The meta object literal for the '<em><b>Set Value From String</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation TYPE_INSTANCE___SET_VALUE_FROM_STRING__STRING = eINSTANCE.getTypeInstance__SetValueFromString__String();
+
+		/**
+		 * The meta object literal for the '<em><b>Set Value From Instance</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation TYPE_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE = eINSTANCE.getTypeInstance__SetValueFromInstance__TypeInstance();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand <em>Compute Property Value Command Itf</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getComputePropertyValueCommandItf()
+		 * @generated
+		 */
+		EClass COMPUTE_PROPERTY_VALUE_COMMAND_ITF = eINSTANCE.getComputePropertyValueCommandItf();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Cmd Value</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation COMPUTE_PROPERTY_VALUE_COMMAND_ITF___GET_CMD_VALUE = eINSTANCE.getComputePropertyValueCommandItf__GetCmdValue();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToTypeInstanceMapImpl <em>String To Type Instance Map</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToTypeInstanceMapImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStringToTypeInstanceMap()
+		 * @generated
+		 */
+		EClass STRING_TO_TYPE_INSTANCE_MAP = eINSTANCE.getStringToTypeInstanceMap();
+
+		/**
+		 * The meta object literal for the '<em><b>Key</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute STRING_TO_TYPE_INSTANCE_MAP__KEY = eINSTANCE.getStringToTypeInstanceMap_Key();
+
+		/**
+		 * The meta object literal for the '<em><b>Value</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference STRING_TO_TYPE_INSTANCE_MAP__VALUE = eINSTANCE.getStringToTypeInstanceMap_Value();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerDescriptorImpl <em>Layer Descriptor</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerDescriptorImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerDescriptor()
+		 * @generated
+		 */
+		EClass LAYER_DESCRIPTOR = eINSTANCE.getLayerDescriptor();
+
+		/**
+		 * The meta object literal for the '<em><b>Property Registry</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference LAYER_DESCRIPTOR__PROPERTY_REGISTRY = eINSTANCE.getLayerDescriptor_PropertyRegistry();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerApplicationFactoryImpl <em>Layer Application Factory</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerApplicationFactoryImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerApplicationFactory()
+		 * @generated
+		 */
+		EClass LAYER_APPLICATION_FACTORY = eINSTANCE.getLayerApplicationFactory();
+
+		/**
+		 * The meta object literal for the '<em><b>Application</b></em>' container reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference LAYER_APPLICATION_FACTORY__APPLICATION = eINSTANCE.getLayerApplicationFactory_Application();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterRegistryImpl <em>Property Setter Registry</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterRegistryImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getPropertySetterRegistry()
+		 * @generated
+		 */
+		EClass PROPERTY_SETTER_REGISTRY = eINSTANCE.getPropertySetterRegistry();
+
+		/**
+		 * The meta object literal for the '<em><b>Property Setters</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS = eINSTANCE.getPropertySetterRegistry_PropertySetters();
+
+		/**
+		 * The meta object literal for the '<em><b>Setter Map</b></em>' map feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference PROPERTY_SETTER_REGISTRY__SETTER_MAP = eINSTANCE.getPropertySetterRegistry_SetterMap();
+
+		/**
+		 * The meta object literal for the '<em><b>Application</b></em>' container reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference PROPERTY_SETTER_REGISTRY__APPLICATION = eINSTANCE.getPropertySetterRegistry_Application();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Property Setter</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation PROPERTY_SETTER_REGISTRY___GET_PROPERTY_SETTER__PROPERTY = eINSTANCE.getPropertySetterRegistry__GetPropertySetter__Property();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Property Setter</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation PROPERTY_SETTER_REGISTRY___GET_PROPERTY_SETTER__STRING = eINSTANCE.getPropertySetterRegistry__GetPropertySetter__String();
+
+		/**
+		 * The meta object literal for the '<em><b>Add Property Setter</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation PROPERTY_SETTER_REGISTRY___ADD_PROPERTY_SETTER__PROPERTYSETTER = eINSTANCE.getPropertySetterRegistry__AddPropertySetter__PropertySetter();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterImpl <em>Property Setter</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getPropertySetter()
+		 * @generated
+		 */
+		EClass PROPERTY_SETTER = eINSTANCE.getPropertySetter();
+
+		/**
+		 * The meta object literal for the '<em><b>Property</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference PROPERTY_SETTER__PROPERTY = eINSTANCE.getPropertySetter_Property();
+
+		/**
+		 * The meta object literal for the '<em><b>Property Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute PROPERTY_SETTER__PROPERTY_NAME = eINSTANCE.getPropertySetter_PropertyName();
+
+		/**
+		 * The meta object literal for the '<em><b>Set Value</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE = eINSTANCE.getPropertySetter__SetValue__View_TypeInstance();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToPropertySetterImpl <em>String To Property Setter</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToPropertySetterImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStringToPropertySetter()
+		 * @generated
+		 */
+		EClass STRING_TO_PROPERTY_SETTER = eINSTANCE.getStringToPropertySetter();
+
+		/**
+		 * The meta object literal for the '<em><b>Key</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute STRING_TO_PROPERTY_SETTER__KEY = eINSTANCE.getStringToPropertySetter_Key();
+
+		/**
+		 * The meta object literal for the '<em><b>Value</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference STRING_TO_PROPERTY_SETTER__VALUE = eINSTANCE.getStringToPropertySetter_Value();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerImpl <em>Abstract Layer</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getAbstractLayer()
+		 * @generated
+		 */
+		EClass ABSTRACT_LAYER = eINSTANCE.getAbstractLayer();
+
+		/**
+		 * The meta object literal for the '<em><b>Property Values</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference ABSTRACT_LAYER__PROPERTY_VALUES = eINSTANCE.getAbstractLayer_PropertyValues();
+
+		/**
+		 * The meta object literal for the '<em><b>Property Value Map</b></em>' map feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference ABSTRACT_LAYER__PROPERTY_VALUE_MAP = eINSTANCE.getAbstractLayer_PropertyValueMap();
+
+		/**
+		 * The meta object literal for the '<em><b>Layer Descriptor</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference ABSTRACT_LAYER__LAYER_DESCRIPTOR = eINSTANCE.getAbstractLayer_LayerDescriptor();
+
+		/**
+		 * The meta object literal for the '<em><b>Views</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference ABSTRACT_LAYER__VIEWS = eINSTANCE.getAbstractLayer_Views();
+
+		/**
+		 * The meta object literal for the '<em><b>Attached Properties</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference ABSTRACT_LAYER__ATTACHED_PROPERTIES = eINSTANCE.getAbstractLayer_AttachedProperties();
+
+		/**
+		 * The meta object literal for the '<em><b>Add Property Instance</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation ABSTRACT_LAYER___ADD_PROPERTY_INSTANCE__PROPERTY = eINSTANCE.getAbstractLayer__AddPropertyInstance__Property();
+
+		/**
+		 * The meta object literal for the '<em><b>Remove Property Instance</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation ABSTRACT_LAYER___REMOVE_PROPERTY_INSTANCE__PROPERTY = eINSTANCE.getAbstractLayer__RemovePropertyInstance__Property();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Property Instance</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation ABSTRACT_LAYER___GET_PROPERTY_INSTANCE__PROPERTY = eINSTANCE.getAbstractLayer__GetPropertyInstance__Property();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Property Instance</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation ABSTRACT_LAYER___GET_PROPERTY_INSTANCE__STRING = eINSTANCE.getAbstractLayer__GetPropertyInstance__String();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyImpl <em>Property</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getProperty()
+		 * @generated
+		 */
+		EClass PROPERTY = eINSTANCE.getProperty();
+
+		/**
+		 * The meta object literal for the '<em><b>Type</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference PROPERTY__TYPE = eINSTANCE.getProperty_Type();
+
+		/**
+		 * The meta object literal for the '<em><b>Default Value</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference PROPERTY__DEFAULT_VALUE = eINSTANCE.getProperty_DefaultValue();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute PROPERTY__NAME = eINSTANCE.getProperty_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Description</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute PROPERTY__DESCRIPTION = eINSTANCE.getProperty_Description();
+
+		/**
+		 * The meta object literal for the '<em><b>Index</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute PROPERTY__INDEX = eINSTANCE.getProperty_Index();
+
+		/**
+		 * The meta object literal for the '<em><b>Create Instance</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation PROPERTY___CREATE_INSTANCE = eINSTANCE.getProperty__CreateInstance();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FolderElementImpl <em>Folder Element</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FolderElementImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFolderElement()
+		 * @generated
+		 */
+		EClass FOLDER_ELEMENT = eINSTANCE.getFolderElement();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl <em>Layer Expression</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerExpression()
+		 * @generated
+		 */
+		EClass LAYER_EXPRESSION = eINSTANCE.getLayerExpression();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute LAYER_EXPRESSION__NAME = eINSTANCE.getLayerExpression_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Description</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute LAYER_EXPRESSION__DESCRIPTION = eINSTANCE.getLayerExpression_Description();
+
+		/**
+		 * The meta object literal for the '<em><b>Is Layer Enabled Internal</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute LAYER_EXPRESSION__IS_LAYER_ENABLED_INTERNAL = eINSTANCE.getLayerExpression_IsLayerEnabledInternal();
+
+		/**
+		 * The meta object literal for the '<em><b>Is Layer Enabled</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute LAYER_EXPRESSION__IS_LAYER_ENABLED = eINSTANCE.getLayerExpression_IsLayerEnabled();
+
+		/**
+		 * The meta object literal for the '<em><b>Is Branch Enabled</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute LAYER_EXPRESSION__IS_BRANCH_ENABLED = eINSTANCE.getLayerExpression_IsBranchEnabled();
+
+		/**
+		 * The meta object literal for the '<em><b>Owning Layers Stack</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference LAYER_EXPRESSION__OWNING_LAYERS_STACK = eINSTANCE.getLayerExpression_OwningLayersStack();
+
+		/**
+		 * The meta object literal for the '<em><b>State</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute LAYER_EXPRESSION__STATE = eINSTANCE.getLayerExpression_State();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Compute Property Value Command</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYER_EXPRESSION___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY = eINSTANCE.getLayerExpression__GetComputePropertyValueCommand__View_Property();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Views Compute Property Value Command</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYER_EXPRESSION___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY = eINSTANCE.getLayerExpression__GetViewsComputePropertyValueCommand__EList_Property();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Properties Compute Property Value Command</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYER_EXPRESSION___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST = eINSTANCE.getLayerExpression__GetPropertiesComputePropertyValueCommand__View_EList();
+
+		/**
+		 * The meta object literal for the '<em><b>Attach To Layers Stack</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYER_EXPRESSION___ATTACH_TO_LAYERS_STACK__LAYERSSTACK = eINSTANCE.getLayerExpression__AttachToLayersStack__LayersStack();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Layers Stack</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYER_EXPRESSION___GET_LAYERS_STACK = eINSTANCE.getLayerExpression__GetLayersStack();
+
+		/**
+		 * The meta object literal for the '<em><b>Enter Attached State</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYER_EXPRESSION___ENTER_ATTACHED_STATE = eINSTANCE.getLayerExpression__EnterAttachedState();
+
+		/**
+		 * The meta object literal for the '<em><b>Attach</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYER_EXPRESSION___ATTACH = eINSTANCE.getLayerExpression__Attach();
+
+		/**
+		 * The meta object literal for the '<em><b>Detach</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYER_EXPRESSION___DETACH = eINSTANCE.getLayerExpression__Detach();
+
+		/**
+		 * The meta object literal for the '<em><b>Exit Attached State</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYER_EXPRESSION___EXIT_ATTACHED_STATE = eINSTANCE.getLayerExpression__ExitAttachedState();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.ApplicationDependantElementImpl <em>Application Dependant Element</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.ApplicationDependantElementImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getApplicationDependantElement()
+		 * @generated
+		 */
+		EClass APPLICATION_DEPENDANT_ELEMENT = eINSTANCE.getApplicationDependantElement();
+
+		/**
+		 * The meta object literal for the '<em><b>Application</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference APPLICATION_DEPENDANT_ELEMENT__APPLICATION = eINSTANCE.getApplicationDependantElement_Application();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeImpl <em>Type</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getType()
+		 * @generated
+		 */
+		EClass TYPE = eINSTANCE.getType();
+
+		/**
+		 * The meta object literal for the '<em><b>Metamodel</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference TYPE__METAMODEL = eINSTANCE.getType_Metamodel();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute TYPE__NAME = eINSTANCE.getType_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Description</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute TYPE__DESCRIPTION = eINSTANCE.getType_Description();
+
+		/**
+		 * The meta object literal for the '<em><b>Create Instance</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation TYPE___CREATE_INSTANCE = eINSTANCE.getType__CreateInstance();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.MetamodelImpl <em>Metamodel</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.MetamodelImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getMetamodel()
+		 * @generated
+		 */
+		EClass METAMODEL = eINSTANCE.getMetamodel();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute METAMODEL__NAME = eINSTANCE.getMetamodel_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Description</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute METAMODEL__DESCRIPTION = eINSTANCE.getMetamodel_Description();
+
+		/**
+		 * The meta object literal for the '<em><b>Nsuri</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute METAMODEL__NSURI = eINSTANCE.getMetamodel_Nsuri();
+
+		/**
+		 * The meta object literal for the '<em><b>Plugin ID</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute METAMODEL__PLUGIN_ID = eINSTANCE.getMetamodel_PluginID();
+
+		/**
+		 * The meta object literal for the '<em><b>EPackage Instance Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute METAMODEL__EPACKAGE_INSTANCE_NAME = eINSTANCE.getMetamodel_EPackageInstanceName();
+
+		/**
+		 * The meta object literal for the '<em><b>Is Type Valid</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute METAMODEL__IS_TYPE_VALID = eINSTANCE.getMetamodel_IsTypeValid();
+
+		/**
+		 * The meta object literal for the '<em><b>Get EPackage</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation METAMODEL___GET_EPACKAGE = eINSTANCE.getMetamodel__GetEPackage();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FolderImpl <em>Folder</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.FolderImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getFolder()
+		 * @generated
+		 */
+		EClass FOLDER = eINSTANCE.getFolder();
+
+		/**
+		 * The meta object literal for the '<em><b>Elements</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference FOLDER__ELEMENTS = eINSTANCE.getFolder_Elements();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute FOLDER__NAME = eINSTANCE.getFolder_Name();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.IntInstanceImpl <em>Int Instance</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.IntInstanceImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getIntInstance()
+		 * @generated
+		 */
+		EClass INT_INSTANCE = eINSTANCE.getIntInstance();
+
+		/**
+		 * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute INT_INSTANCE__VALUE = eINSTANCE.getIntInstance_Value();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.BooleanInstanceImpl <em>Boolean Instance</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.BooleanInstanceImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getBooleanInstance()
+		 * @generated
+		 */
+		EClass BOOLEAN_INSTANCE = eINSTANCE.getBooleanInstance();
+
+		/**
+		 * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute BOOLEAN_INSTANCE__VALUE = eINSTANCE.getBooleanInstance_Value();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringInstanceImpl <em>String Instance</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StringInstanceImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStringInstance()
+		 * @generated
+		 */
+		EClass STRING_INSTANCE = eINSTANCE.getStringInstance();
+
+		/**
+		 * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute STRING_INSTANCE__VALUE = eINSTANCE.getStringInstance_Value();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.IntTypeImpl <em>Int Type</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.IntTypeImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getIntType()
+		 * @generated
+		 */
+		EClass INT_TYPE = eINSTANCE.getIntType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.BooleanTypeImpl <em>Boolean Type</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.BooleanTypeImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getBooleanType()
+		 * @generated
+		 */
+		EClass BOOLEAN_TYPE = eINSTANCE.getBooleanType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringTypeImpl <em>String Type</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StringTypeImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStringType()
+		 * @generated
+		 */
+		EClass STRING_TYPE = eINSTANCE.getStringType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomTypeImpl <em>Custom Type</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomTypeImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getCustomType()
+		 * @generated
+		 */
+		EClass CUSTOM_TYPE = eINSTANCE.getCustomType();
+
+		/**
+		 * The meta object literal for the '<em><b>Classifier</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute CUSTOM_TYPE__CLASSIFIER = eINSTANCE.getCustomType_Classifier();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl <em>Stack Application</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayersStackApplication()
+		 * @generated
+		 */
+		EClass LAYERS_STACK_APPLICATION = eINSTANCE.getLayersStackApplication();
+
+		/**
+		 * The meta object literal for the '<em><b>Layers Stacks</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference LAYERS_STACK_APPLICATION__LAYERS_STACKS = eINSTANCE.getLayersStackApplication_LayersStacks();
+
+		/**
+		 * The meta object literal for the '<em><b>Layer Stack Registry</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference LAYERS_STACK_APPLICATION__LAYER_STACK_REGISTRY = eINSTANCE.getLayersStackApplication_LayerStackRegistry();
+
+		/**
+		 * The meta object literal for the '<em><b>Property Registry</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference LAYERS_STACK_APPLICATION__PROPERTY_REGISTRY = eINSTANCE.getLayersStackApplication_PropertyRegistry();
+
+		/**
+		 * The meta object literal for the '<em><b>Layer Descriptor Registry</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference LAYERS_STACK_APPLICATION__LAYER_DESCRIPTOR_REGISTRY = eINSTANCE.getLayersStackApplication_LayerDescriptorRegistry();
+
+		/**
+		 * The meta object literal for the '<em><b>Factory</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference LAYERS_STACK_APPLICATION__FACTORY = eINSTANCE.getLayersStackApplication_Factory();
+
+		/**
+		 * The meta object literal for the '<em><b>Property Setter Registry</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY = eINSTANCE.getLayersStackApplication_PropertySetterRegistry();
+
+		/**
+		 * The meta object literal for the '<em><b>Layer Operator Descriptor Registry</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference LAYERS_STACK_APPLICATION__LAYER_OPERATOR_DESCRIPTOR_REGISTRY = eINSTANCE.getLayersStackApplication_LayerOperatorDescriptorRegistry();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Layers Stack For</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYERS_STACK_APPLICATION___GET_LAYERS_STACK_FOR__DIAGRAM = eINSTANCE.getLayersStackApplication__GetLayersStackFor__Diagram();
+
+		/**
+		 * The meta object literal for the '<em><b>Remove Layers Stack For</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYERS_STACK_APPLICATION___REMOVE_LAYERS_STACK_FOR__DIAGRAM = eINSTANCE.getLayersStackApplication__RemoveLayersStackFor__Diagram();
+
+		/**
+		 * The meta object literal for the '<em><b>Is Layers Stack Attached For</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYERS_STACK_APPLICATION___IS_LAYERS_STACK_ATTACHED_FOR__DIAGRAM = eINSTANCE.getLayersStackApplication__IsLayersStackAttachedFor__Diagram();
+
+		/**
+		 * The meta object literal for the '<em><b>Create Layers Stack For</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYERS_STACK_APPLICATION___CREATE_LAYERS_STACK_FOR__DIAGRAM = eINSTANCE.getLayersStackApplication__CreateLayersStackFor__Diagram();
+
+		/**
+		 * The meta object literal for the '<em><b>Lookup Layers Stack For</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYERS_STACK_APPLICATION___LOOKUP_LAYERS_STACK_FOR__DIAGRAM = eINSTANCE.getLayersStackApplication__LookupLayersStackFor__Diagram();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerStackDescriptorRegistryImpl <em>Layer Stack Descriptor Registry</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerStackDescriptorRegistryImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerStackDescriptorRegistry()
+		 * @generated
+		 */
+		EClass LAYER_STACK_DESCRIPTOR_REGISTRY = eINSTANCE.getLayerStackDescriptorRegistry();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyRegistryImpl <em>Property Registry</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyRegistryImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getPropertyRegistry()
+		 * @generated
+		 */
+		EClass PROPERTY_REGISTRY = eINSTANCE.getPropertyRegistry();
+
+		/**
+		 * The meta object literal for the '<em><b>Properties</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference PROPERTY_REGISTRY__PROPERTIES = eINSTANCE.getPropertyRegistry_Properties();
+
+		/**
+		 * The meta object literal for the '<em><b>Type Registry</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference PROPERTY_REGISTRY__TYPE_REGISTRY = eINSTANCE.getPropertyRegistry_TypeRegistry();
+
+		/**
+		 * The meta object literal for the '<em><b>Properties Count</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute PROPERTY_REGISTRY__PROPERTIES_COUNT = eINSTANCE.getPropertyRegistry_PropertiesCount();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Property Index</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation PROPERTY_REGISTRY___GET_PROPERTY_INDEX__STRING = eINSTANCE.getPropertyRegistry__GetPropertyIndex__String();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Property</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation PROPERTY_REGISTRY___GET_PROPERTY__STRING = eINSTANCE.getPropertyRegistry__GetProperty__String();
+
+		/**
+		 * The meta object literal for the '<em><b>Add Property</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation PROPERTY_REGISTRY___ADD_PROPERTY__PROPERTY = eINSTANCE.getPropertyRegistry__AddProperty__Property();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToPropertyIndexMapImpl <em>String To Property Index Map</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToPropertyIndexMapImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStringToPropertyIndexMap()
+		 * @generated
+		 */
+		EClass STRING_TO_PROPERTY_INDEX_MAP = eINSTANCE.getStringToPropertyIndexMap();
+
+		/**
+		 * The meta object literal for the '<em><b>Value</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference STRING_TO_PROPERTY_INDEX_MAP__VALUE = eINSTANCE.getStringToPropertyIndexMap_Value();
+
+		/**
+		 * The meta object literal for the '<em><b>Key</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute STRING_TO_PROPERTY_INDEX_MAP__KEY = eINSTANCE.getStringToPropertyIndexMap_Key();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.SimpleLayerDescriptorImpl <em>Simple Layer Descriptor</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.SimpleLayerDescriptorImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getSimpleLayerDescriptor()
+		 * @generated
+		 */
+		EClass SIMPLE_LAYER_DESCRIPTOR = eINSTANCE.getSimpleLayerDescriptor();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerDescriptorImpl <em>Reg Exp Layer Descriptor</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerDescriptorImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getRegExpLayerDescriptor()
+		 * @generated
+		 */
+		EClass REG_EXP_LAYER_DESCRIPTOR = eINSTANCE.getRegExpLayerDescriptor();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.NullInstanceImpl <em>Null Instance</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.NullInstanceImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getNullInstance()
+		 * @generated
+		 */
+		EClass NULL_INSTANCE = eINSTANCE.getNullInstance();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Instance</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation NULL_INSTANCE___GET_INSTANCE = eINSTANCE.getNullInstance__GetInstance();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerImpl <em>Reg Exp Layer</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getRegExpLayer()
+		 * @generated
+		 */
+		EClass REG_EXP_LAYER = eINSTANCE.getRegExpLayer();
+
+		/**
+		 * The meta object literal for the '<em><b>Expr</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute REG_EXP_LAYER__EXPR = eINSTANCE.getRegExpLayer_Expr();
+
+		/**
+		 * The meta object literal for the '<em><b>Language</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute REG_EXP_LAYER__LANGUAGE = eINSTANCE.getRegExpLayer_Language();
+
+		/**
+		 * The meta object literal for the '<em><b>Is Domain Changed Event Dependant</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute REG_EXP_LAYER__IS_DOMAIN_CHANGED_EVENT_DEPENDANT = eINSTANCE.getRegExpLayer_IsDomainChangedEventDependant();
+
+		/**
+		 * The meta object literal for the '<em><b>Domain Changed Event Level</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute REG_EXP_LAYER__DOMAIN_CHANGED_EVENT_LEVEL = eINSTANCE.getRegExpLayer_DomainChangedEventLevel();
+
+		/**
+		 * The meta object literal for the '<em><b>Is Diagram Changed Event Dependant</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute REG_EXP_LAYER__IS_DIAGRAM_CHANGED_EVENT_DEPENDANT = eINSTANCE.getRegExpLayer_IsDiagramChangedEventDependant();
+
+		/**
+		 * The meta object literal for the '<em><b>Diagram Changed Event Level</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute REG_EXP_LAYER__DIAGRAM_CHANGED_EVENT_LEVEL = eINSTANCE.getRegExpLayer_DiagramChangedEventLevel();
+
+		/**
+		 * The meta object literal for the '<em><b>Expression Context Object Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute REG_EXP_LAYER__EXPRESSION_CONTEXT_OBJECT_TYPE = eINSTANCE.getRegExpLayer_ExpressionContextObjectType();
+
+		/**
+		 * The meta object literal for the '<em><b>Activate</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation REG_EXP_LAYER___ACTIVATE__ABSTRACTLAYEROPERATOR = eINSTANCE.getRegExpLayer__Activate__AbstractLayerOperator();
+
+		/**
+		 * The meta object literal for the '<em><b>Deactivate</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation REG_EXP_LAYER___DEACTIVATE__ABSTRACTLAYEROPERATOR = eINSTANCE.getRegExpLayer__Deactivate__AbstractLayerOperator();
+
+		/**
+		 * The meta object literal for the '<em><b>Is Derived View</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation REG_EXP_LAYER___IS_DERIVED_VIEW__VIEW = eINSTANCE.getRegExpLayer__IsDerivedView__View();
+
+		/**
+		 * The meta object literal for the '<em><b>Attach Derived View</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation REG_EXP_LAYER___ATTACH_DERIVED_VIEW__VIEW = eINSTANCE.getRegExpLayer__AttachDerivedView__View();
+
+		/**
+		 * The meta object literal for the '<em><b>Attach Derived Views</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation REG_EXP_LAYER___ATTACH_DERIVED_VIEWS__ELIST = eINSTANCE.getRegExpLayer__AttachDerivedViews__EList();
+
+		/**
+		 * The meta object literal for the '<em><b>Attach Derived Views</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation REG_EXP_LAYER___ATTACH_DERIVED_VIEWS = eINSTANCE.getRegExpLayer__AttachDerivedViews();
+
+		/**
+		 * The meta object literal for the '<em><b>Lookup Derived Views</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation REG_EXP_LAYER___LOOKUP_DERIVED_VIEWS__ELIST = eINSTANCE.getRegExpLayer__LookupDerivedViews__EList();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyIndexImpl <em>Property Index</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyIndexImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getPropertyIndex()
+		 * @generated
+		 */
+		EClass PROPERTY_INDEX = eINSTANCE.getPropertyIndex();
+
+		/**
+		 * The meta object literal for the '<em><b>Property</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference PROPERTY_INDEX__PROPERTY = eINSTANCE.getPropertyIndex_Property();
+
+		/**
+		 * The meta object literal for the '<em><b>Index</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute PROPERTY_INDEX__INDEX = eINSTANCE.getPropertyIndex_Index();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeRegistryImpl <em>Type Registry</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeRegistryImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getTypeRegistry()
+		 * @generated
+		 */
+		EClass TYPE_REGISTRY = eINSTANCE.getTypeRegistry();
+
+		/**
+		 * The meta object literal for the '<em><b>Types</b></em>' map feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference TYPE_REGISTRY__TYPES = eINSTANCE.getTypeRegistry_Types();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToTypeMapImpl <em>String To Type Map</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToTypeMapImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStringToTypeMap()
+		 * @generated
+		 */
+		EClass STRING_TO_TYPE_MAP = eINSTANCE.getStringToTypeMap();
+
+		/**
+		 * The meta object literal for the '<em><b>Value</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference STRING_TO_TYPE_MAP__VALUE = eINSTANCE.getStringToTypeMap_Value();
+
+		/**
+		 * The meta object literal for the '<em><b>Key</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute STRING_TO_TYPE_MAP__KEY = eINSTANCE.getStringToTypeMap_Key();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerDescriptorRegistryImpl <em>Layer Descriptor Registry</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerDescriptorRegistryImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerDescriptorRegistry()
+		 * @generated
+		 */
+		EClass LAYER_DESCRIPTOR_REGISTRY = eINSTANCE.getLayerDescriptorRegistry();
+
+		/**
+		 * The meta object literal for the '<em><b>Layer Descriptors</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference LAYER_DESCRIPTOR_REGISTRY__LAYER_DESCRIPTORS = eINSTANCE.getLayerDescriptorRegistry_LayerDescriptors();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorImpl <em>Layer Operator</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerOperator()
+		 * @generated
+		 */
+		EClass LAYER_OPERATOR = eINSTANCE.getLayerOperator();
+
+		/**
+		 * The meta object literal for the '<em><b>Layers</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference LAYER_OPERATOR__LAYERS = eINSTANCE.getLayerOperator_Layers();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer <em>Container</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayersContainer()
+		 * @generated
+		 */
+		EClass LAYERS_CONTAINER = eINSTANCE.getLayersContainer();
+
+		/**
+		 * The meta object literal for the '<em><b>Add Layer</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYERS_CONTAINER___ADD_LAYER__LAYEREXPRESSION = eINSTANCE.getLayersContainer__AddLayer__LayerExpression();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerOperatorImpl <em>Abstract Layer Operator</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerOperatorImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getAbstractLayerOperator()
+		 * @generated
+		 */
+		EClass ABSTRACT_LAYER_OPERATOR = eINSTANCE.getAbstractLayerOperator();
+
+		/**
+		 * The meta object literal for the '<em><b>Layer Operator Descriptor</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR = eINSTANCE.getAbstractLayerOperator_LayerOperatorDescriptor();
+
+		/**
+		 * The meta object literal for the '<em><b>Layer Operator Descriptor Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR_NAME = eINSTANCE.getAbstractLayerOperator_LayerOperatorDescriptorName();
+
+		/**
+		 * The meta object literal for the '<em><b>Is Descriptor Set</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation ABSTRACT_LAYER_OPERATOR___IS_DESCRIPTOR_SET = eINSTANCE.getAbstractLayerOperator__IsDescriptorSet();
+
+		/**
+		 * The meta object literal for the '<em><b>Reset Descriptor</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation ABSTRACT_LAYER_OPERATOR___RESET_DESCRIPTOR = eINSTANCE.getAbstractLayerOperator__ResetDescriptor();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl <em>Layer Operator Descriptor</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayerOperatorDescriptor()
+		 * @generated
+		 */
+		EClass LAYER_OPERATOR_DESCRIPTOR = eINSTANCE.getLayerOperatorDescriptor();
+
+		/**
+		 * The meta object literal for the '<em><b>Property Operators</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EReference LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS = eINSTANCE.getLayerOperatorDescriptor_PropertyOperators();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute LAYER_OPERATOR_DESCRIPTOR__NAME = eINSTANCE.getLayerOperatorDescriptor_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Property Operator</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYER_OPERATOR_DESCRIPTOR___GET_PROPERTY_OPERATOR__PROPERTY = eINSTANCE.getLayerOperatorDescriptor__GetPropertyOperator__Property();
+
+		/**
+		 * The meta object literal for the '<em><b>Set Property Operator</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_OPERATOR__PROPERTY_PROPERTYOPERATOR = eINSTANCE.getLayerOperatorDescriptor__SetPropertyOperator__Property_PropertyOperator();
+
+		/**
+		 * The meta object literal for the '<em><b>Create Layer Operator</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYER_OPERATOR_DESCRIPTOR___CREATE_LAYER_OPERATOR = eINSTANCE.getLayerOperatorDescriptor__CreateLayerOperator();
+
+		/**
+		 * The meta object literal for the '<em><b>Set Property Collection Size</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_COLLECTION_SIZE__INT_DEFAULTPROPERTYOPERATOR = eINSTANCE.getLayerOperatorDescriptor__SetPropertyCollectionSize__int_DefaultPropertyOperator();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyOperatorImpl <em>Property Operator</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyOperatorImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getPropertyOperator()
+		 * @generated
+		 */
+		EClass PROPERTY_OPERATOR = eINSTANCE.getPropertyOperator();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EAttribute PROPERTY_OPERATOR__NAME = eINSTANCE.getPropertyOperator_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Compute Property Value Command</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @generated
+		 */
+		EOperation PROPERTY_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST = eINSTANCE.getPropertyOperator__GetComputePropertyValueCommand__EList();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.DefaultPropertyOperatorImpl <em>Default Property Operator</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.DefaultPropertyOperatorImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getDefaultPropertyOperator()
+		 * @generated
+		 */
+		EClass DEFAULT_PROPERTY_OPERATOR = eINSTANCE.getDefaultPropertyOperator();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TopLayerOperatorImpl <em>Top Layer Operator</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.TopLayerOperatorImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getTopLayerOperator()
+		 * @generated
+		 */
+		EClass TOP_LAYER_OPERATOR = eINSTANCE.getTopLayerOperator();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StackedLayerOperatorImpl <em>Stacked Layer Operator</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.StackedLayerOperatorImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getStackedLayerOperator()
+		 * @generated
+		 */
+		EClass STACKED_LAYER_OPERATOR = eINSTANCE.getStackedLayerOperator();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomLayerOperatorImpl <em>Custom Layer Operator</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomLayerOperatorImpl
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getCustomLayerOperator()
+		 * @generated
+		 */
+		EClass CUSTOM_LAYER_OPERATOR = eINSTANCE.getCustomLayerOperator();
+
+		/**
+		 * The meta object literal for the '<em>String</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see java.lang.String
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getString()
+		 * @generated
+		 */
+		EDataType STRING = eINSTANCE.getString();
+
+		/**
+		 * The meta object literal for the '<em>boolean</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getboolean()
+		 * @generated
+		 */
+		EDataType BOOLEAN = eINSTANCE.getboolean();
+
+		/**
+		 * The meta object literal for the '<em>EPackage</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.emf.ecore.EPackage
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getEPackage()
+		 * @generated
+		 */
+		EDataType EPACKAGE = eINSTANCE.getEPackage();
+
+		/**
+		 * The meta object literal for the '<em>Not Found Exception</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.NotFoundException
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getNotFoundException()
+		 * @generated
+		 */
+		EDataType NOT_FOUND_EXCEPTION = eINSTANCE.getNotFoundException();
+
+		/**
+		 * The meta object literal for the '<em>Compute Property Value Command</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getComputePropertyValueCommand()
+		 * @generated
+		 */
+		EDataType COMPUTE_PROPERTY_VALUE_COMMAND = eINSTANCE.getComputePropertyValueCommand();
+
+		/**
+		 * The meta object literal for the '<em>Exception</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.LayersException
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getLayersException()
+		 * @generated
+		 */
+		EDataType LAYERS_EXCEPTION = eINSTANCE.getLayersException();
+
+		/**
+		 * The meta object literal for the '<em>int</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getint()
+		 * @generated
+		 */
+		EDataType INT = eINSTANCE.getint();
+
+		/**
+		 * The meta object literal for the '<em>Object</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see java.lang.Object
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getObject()
+		 * @generated
+		 */
+		EDataType OBJECT = eINSTANCE.getObject();
+
+		/**
+		 * The meta object literal for the '<em>Custom Property Opertor Instance</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getCustomPropertyOpertorInstance()
+		 * @generated
+		 */
+		EDataType CUSTOM_PROPERTY_OPERTOR_INSTANCE = eINSTANCE.getCustomPropertyOpertorInstance();
+
+		/**
+		 * The meta object literal for the '<em>Bad State Exception</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.BadStateException
+		 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersPackageImpl#getBadStateException()
+		 * @generated
+		 */
+		EDataType BAD_STATE_EXCEPTION = eINSTANCE.getBadStateException();
+
+	}
+
+} // LayersPackage
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersStack.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersStack.java
new file mode 100755
index 0000000..72e3b8d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersStack.java
@@ -0,0 +1,320 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import java.util.List;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Stack</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getLayers <em>Layers</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getDescription <em>Description</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getDiagram <em>Diagram</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getState <em>State</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayersStack()
+ * @model
+ * @generated
+ */
+public interface LayersStack extends LayersContainer {
+	/**
+	 * Returns the value of the '<em><b>Layers</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Layers</em>' containment reference list isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Layers</em>' containment reference.
+	 * @see #setLayers(LayerExpression)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayersStack_Layers()
+	 * @model containment="true" ordered="false"
+	 * @generated
+	 */
+	LayerExpression getLayers();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getLayers <em>Layers</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Layers</em>' containment reference.
+	 * @see #getLayers()
+	 * @generated
+	 */
+	void setLayers(LayerExpression value);
+
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayersStack_Name()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Description</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Description</em>' attribute.
+	 * @see #setDescription(String)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayersStack_Description()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getDescription();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getDescription <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Description</em>' attribute.
+	 * @see #getDescription()
+	 * @generated
+	 */
+	void setDescription(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Diagram</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Diagram</em>' reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Diagram</em>' reference.
+	 * @see #setDiagram(Diagram)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayersStack_Diagram()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	Diagram getDiagram();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getDiagram <em>Diagram</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Diagram</em>' reference.
+	 * @see #getDiagram()
+	 * @generated
+	 */
+	void setDiagram(Diagram value);
+
+	/**
+	 * Returns the value of the '<em><b>State</b></em>' attribute.
+	 * The default value is <code>"detached"</code>.
+	 * The literals are from the enumeration {@link org.eclipse.papyrus.layers.stackmodel.layers.LayerState}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>State</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>State</em>' attribute.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerState
+	 * @see #setState(LayerState)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayersStack_State()
+	 * @model default="detached" unique="false" required="true" ordered="false"
+	 * @generated
+	 */
+	LayerState getState();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack#getState <em>State</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>State</em>' attribute.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerState
+	 * @see #getState()
+	 * @generated
+	 */
+	void setState(LayerState value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.ComputePropertyValueCommand" required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException" viewRequired="true" viewOrdered="false"
+	 *        propertyRequired="true" propertyOrdered="false"
+	 * @generated
+	 */
+	ComputePropertyValueCommand getComputePropertyValueCommand(View view, Property property) throws LayersException;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.ComputePropertyValueCommand" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException" viewRequired="true" viewOrdered="false" propertyRequired="true" propertyMany="true"
+	 * @generated
+	 */
+	EList<ComputePropertyValueCommand> getPropertiesComputePropertyValueCommand(View view, EList<Property> property) throws LayersException;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.ComputePropertyValueCommand" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException" viewMany="true" propertyRequired="true" propertyOrdered="false"
+	 * @generated
+	 */
+	EList<ComputePropertyValueCommand> getViewsComputePropertyValueCommand(EList<View> view, Property property) throws LayersException;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model
+	 * @generated
+	 */
+	void startAfterCreation();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * Start the LayersStack after a reloading by EMF. This method should be explicitly called after a reloading.
+	 * The method usually start the layer behaviors.
+	 * <!-- end-model-doc -->
+	 *
+	 * @model exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException"
+	 * @generated
+	 */
+	void attachLayers() throws LayersException;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * Try to attach this Layer. If successful, the state go to "attached". Otherwise, an exception is thrown.
+	 * A Layer can be attached if its required attributes are set.
+	 * Required attributes:
+	 * <ul>
+	 * <li>application</li>
+	 * <li>owningLayerStack</li>
+	 * <li>parent container</li>
+	 * <li></li>
+	 * </ul>
+	 * Just after enterring in "attached" state, the enterAttachedState() method is called.
+	 * If this Layer is successfully attached, then attach subLayers.
+	 * <!-- end-model-doc -->
+	 *
+	 * @model exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException"
+	 * @generated
+	 */
+	void attach() throws LayersException;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * Detach the Layer. The state go to "detached".
+	 * Associated behavior are stopped.
+	 * <!-- end-model-doc -->
+	 *
+	 * @model exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException"
+	 * @generated
+	 */
+	void detach() throws LayersException;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * This method is called by the class immediately after entering in attached state.
+	 * The methodcan be used to start the layer behaviors.
+	 * <!-- end-model-doc -->
+	 *
+	 * @model exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException"
+	 * @generated
+	 */
+	void enterAttachedState() throws LayersException;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * This method is called just before this Layer leave the attached state.
+	 *
+	 * <!-- end-model-doc -->
+	 *
+	 * @model
+	 * @generated
+	 */
+	void exitAttachedState();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @throws LayersException
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.ComputePropertyValueCommand" viewRequired="true" viewOrdered="false" propertyRequired="true" propertyMany="true"
+	 * @generated NOT
+	 */
+	EList<ComputePropertyValueCommand> getPropertiesComputePropertyValueCommand(View view, List<Property> property) throws LayersException;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @throws LayersException
+	 *             If something wrong happen during computation.
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.ComputePropertyValueCommand" viewMany="true" propertyRequired="true" propertyOrdered="false"
+	 * @generated NOT
+	 */
+	EList<ComputePropertyValueCommand> getViewsComputePropertyValueCommand(List<View> view, Property property) throws LayersException;
+
+} // LayersStack
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersStackApplication.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersStackApplication.java
new file mode 100755
index 0000000..dfe37a6
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LayersStackApplication.java
@@ -0,0 +1,275 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Stack Application</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayersStacks <em>Layers Stacks</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayerStackRegistry <em>Layer Stack Registry</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getPropertyRegistry <em>Property Registry</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayerDescriptorRegistry <em>Layer Descriptor Registry</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getFactory <em>Factory</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getPropertySetterRegistry <em>Property Setter Registry</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayerOperatorDescriptorRegistry <em>Layer Operator Descriptor Registry</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayersStackApplication()
+ * @model
+ * @generated
+ */
+public interface LayersStackApplication extends FolderElement {
+	/**
+	 * Returns the value of the '<em><b>Layers Stacks</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Layers Stacks</em>' containment reference list isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Layers Stacks</em>' containment reference list.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayersStackApplication_LayersStacks()
+	 * @model containment="true" ordered="false"
+	 * @generated
+	 */
+	EList<LayersStack> getLayersStacks();
+
+	/**
+	 * Returns the value of the '<em><b>Layer Stack Registry</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Layer Stack Registry</em>' containment reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Layer Stack Registry</em>' containment reference.
+	 * @see #setLayerStackRegistry(LayerStackDescriptorRegistry)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayersStackApplication_LayerStackRegistry()
+	 * @model containment="true" required="true" transient="true" ordered="false"
+	 * @generated
+	 */
+	LayerStackDescriptorRegistry getLayerStackRegistry();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayerStackRegistry <em>Layer Stack Registry</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Layer Stack Registry</em>' containment reference.
+	 * @see #getLayerStackRegistry()
+	 * @generated
+	 */
+	void setLayerStackRegistry(LayerStackDescriptorRegistry value);
+
+	/**
+	 * Returns the value of the '<em><b>Property Registry</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Property Registry</em>' containment reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Property Registry</em>' containment reference.
+	 * @see #setPropertyRegistry(PropertyRegistry)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayersStackApplication_PropertyRegistry()
+	 * @model containment="true" required="true" transient="true" ordered="false"
+	 * @generated
+	 */
+	PropertyRegistry getPropertyRegistry();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getPropertyRegistry <em>Property Registry</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Property Registry</em>' containment reference.
+	 * @see #getPropertyRegistry()
+	 * @generated
+	 */
+	void setPropertyRegistry(PropertyRegistry value);
+
+	/**
+	 * Returns the value of the '<em><b>Layer Descriptor Registry</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Layer Descriptor Registry</em>' containment reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Layer Descriptor Registry</em>' containment reference.
+	 * @see #setLayerDescriptorRegistry(LayerDescriptorRegistry)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayersStackApplication_LayerDescriptorRegistry()
+	 * @model containment="true" required="true" transient="true" ordered="false"
+	 * @generated
+	 */
+	LayerDescriptorRegistry getLayerDescriptorRegistry();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayerDescriptorRegistry <em>Layer Descriptor Registry</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Layer Descriptor Registry</em>' containment reference.
+	 * @see #getLayerDescriptorRegistry()
+	 * @generated
+	 */
+	void setLayerDescriptorRegistry(LayerDescriptorRegistry value);
+
+	/**
+	 * Returns the value of the '<em><b>Factory</b></em>' containment reference.
+	 * It is bidirectional and its opposite is '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory#getApplication <em>Application</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Factory</em>' containment reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Factory</em>' containment reference.
+	 * @see #setFactory(LayerApplicationFactory)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayersStackApplication_Factory()
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory#getApplication
+	 * @model opposite="application" containment="true" required="true" transient="true" ordered="false"
+	 * @generated
+	 */
+	LayerApplicationFactory getFactory();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getFactory <em>Factory</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Factory</em>' containment reference.
+	 * @see #getFactory()
+	 * @generated
+	 */
+	void setFactory(LayerApplicationFactory value);
+
+	/**
+	 * Returns the value of the '<em><b>Property Setter Registry</b></em>' containment reference.
+	 * It is bidirectional and its opposite is '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getApplication <em>Application</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Property Setter Registry</em>' containment reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Property Setter Registry</em>' containment reference.
+	 * @see #setPropertySetterRegistry(PropertySetterRegistry)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayersStackApplication_PropertySetterRegistry()
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getApplication
+	 * @model opposite="application" containment="true" transient="true" ordered="false"
+	 * @generated
+	 */
+	PropertySetterRegistry getPropertySetterRegistry();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getPropertySetterRegistry <em>Property Setter Registry</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Property Setter Registry</em>' containment reference.
+	 * @see #getPropertySetterRegistry()
+	 * @generated
+	 */
+	void setPropertySetterRegistry(PropertySetterRegistry value);
+
+	/**
+	 * Returns the value of the '<em><b>Layer Operator Descriptor Registry</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Layer Operator Descriptor Registry</em>' containment reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Layer Operator Descriptor Registry</em>' containment reference.
+	 * @see #setLayerOperatorDescriptorRegistry(LayerOperatorDescriptorRegistry)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLayersStackApplication_LayerOperatorDescriptorRegistry()
+	 * @model containment="true" transient="true" ordered="false"
+	 * @generated
+	 */
+	LayerOperatorDescriptorRegistry getLayerOperatorDescriptorRegistry();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getLayerOperatorDescriptorRegistry <em>Layer Operator Descriptor Registry</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Layer Operator Descriptor Registry</em>' containment reference.
+	 * @see #getLayerOperatorDescriptorRegistry()
+	 * @generated
+	 */
+	void setLayerOperatorDescriptorRegistry(LayerOperatorDescriptorRegistry value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model required="true" ordered="false" diagramRequired="true" diagramOrdered="false"
+	 * @generated
+	 */
+	LayersStack getLayersStackFor(Diagram diagram);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model diagramRequired="true" diagramOrdered="false"
+	 * @generated
+	 */
+	void removeLayersStackFor(Diagram diagram);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.boolean" required="true" ordered="false" diagramRequired="true" diagramOrdered="false"
+	 * @generated
+	 */
+	boolean isLayersStackAttachedFor(Diagram diagram);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model required="true" ordered="false" diagramRequired="true" diagramOrdered="false"
+	 * @generated
+	 */
+	LayersStack createLayersStackFor(Diagram diagram);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.NotFoundException" diagramRequired="true" diagramOrdered="false"
+	 * @generated
+	 */
+	LayersStack lookupLayersStackFor(Diagram diagram) throws NotFoundException;
+
+} // LayersStackApplication
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LineInstance.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LineInstance.java
new file mode 100755
index 0000000..f06178f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LineInstance.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Line Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LineInstance#getLineColor <em>Line Color</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.LineInstance#getLineWith <em>Line With</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLineInstance()
+ * @model
+ * @generated
+ */
+public interface LineInstance extends TypeInstance {
+	/**
+	 * Returns the value of the '<em><b>Line Color</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Line Color</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Line Color</em>' attribute.
+	 * @see #setLineColor(int)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLineInstance_LineColor()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.int" required="true" ordered="false"
+	 * @generated
+	 */
+	int getLineColor();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LineInstance#getLineColor <em>Line Color</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Line Color</em>' attribute.
+	 * @see #getLineColor()
+	 * @generated
+	 */
+	void setLineColor(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Line With</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Line With</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Line With</em>' attribute.
+	 * @see #setLineWith(int)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLineInstance_LineWith()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.int" required="true" ordered="false"
+	 * @generated
+	 */
+	int getLineWith();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.LineInstance#getLineWith <em>Line With</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Line With</em>' attribute.
+	 * @see #getLineWith()
+	 * @generated
+	 */
+	void setLineWith(int value);
+
+} // LineInstance
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LinePropertySetter.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LinePropertySetter.java
new file mode 100755
index 0000000..5b2cf56
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LinePropertySetter.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Line Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLinePropertySetter()
+ * @model
+ * @generated
+ */
+public interface LinePropertySetter extends PropertySetter {
+} // LinePropertySetter
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LineType.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LineType.java
new file mode 100755
index 0000000..d9c0fea
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/LineType.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Line Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getLineType()
+ * @model
+ * @generated
+ */
+public interface LineType extends Type {
+} // LineType
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Metamodel.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Metamodel.java
new file mode 100755
index 0000000..721a326
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Metamodel.java
@@ -0,0 +1,216 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Metamodel</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getDescription <em>Description</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getNsuri <em>Nsuri</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getPluginID <em>Plugin ID</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getEPackageInstanceName <em>EPackage Instance Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#isTypeValid <em>Is Type Valid</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getMetamodel()
+ * @model
+ * @generated
+ */
+public interface Metamodel extends FolderElement {
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getMetamodel_Name()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Description</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Description</em>' attribute.
+	 * @see #setDescription(String)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getMetamodel_Description()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getDescription();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getDescription <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Description</em>' attribute.
+	 * @see #getDescription()
+	 * @generated
+	 */
+	void setDescription(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Nsuri</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Nsuri</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Nsuri</em>' attribute.
+	 * @see #setNsuri(String)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getMetamodel_Nsuri()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getNsuri();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getNsuri <em>Nsuri</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Nsuri</em>' attribute.
+	 * @see #getNsuri()
+	 * @generated
+	 */
+	void setNsuri(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Plugin ID</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Plugin ID</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Plugin ID</em>' attribute.
+	 * @see #setPluginID(String)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getMetamodel_PluginID()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getPluginID();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getPluginID <em>Plugin ID</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Plugin ID</em>' attribute.
+	 * @see #getPluginID()
+	 * @generated
+	 */
+	void setPluginID(String value);
+
+	/**
+	 * Returns the value of the '<em><b>EPackage Instance Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>EPackage Instance Name</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>EPackage Instance Name</em>' attribute.
+	 * @see #setEPackageInstanceName(String)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getMetamodel_EPackageInstanceName()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getEPackageInstanceName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#getEPackageInstanceName <em>EPackage Instance Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>EPackage Instance Name</em>' attribute.
+	 * @see #getEPackageInstanceName()
+	 * @generated
+	 */
+	void setEPackageInstanceName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Is Type Valid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Is Type Valid</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Is Type Valid</em>' attribute.
+	 * @see #setIsTypeValid(boolean)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getMetamodel_IsTypeValid()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.boolean" required="true" ordered="false"
+	 * @generated
+	 */
+	boolean isTypeValid();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel#isTypeValid <em>Is Type Valid</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Is Type Valid</em>' attribute.
+	 * @see #isTypeValid()
+	 * @generated
+	 */
+	void setIsTypeValid(boolean value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model kind="operation" dataType="org.eclipse.papyrus.layers.stackmodel.layers.EPackage" required="true" ordered="false"
+	 * @generated
+	 */
+	EPackage getEPackage();
+
+} // Metamodel
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/NullInstance.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/NullInstance.java
new file mode 100755
index 0000000..d0e04fa
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/NullInstance.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Null Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getNullInstance()
+ * @model
+ * @generated
+ */
+public interface NullInstance extends TypeInstance {
+
+	public static NullInstance NULLINSTANCE = LayersFactory.eINSTANCE.createNullInstance();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model kind="operation" required="true" ordered="false"
+	 * @generated
+	 */
+	NullInstance getInstance();
+} // NullInstance
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/NullPropertySetter.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/NullPropertySetter.java
new file mode 100755
index 0000000..395f853
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/NullPropertySetter.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Null Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getNullPropertySetter()
+ * @model
+ * @generated
+ */
+public interface NullPropertySetter extends PropertySetter {
+} // NullPropertySetter
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/OrStackedLayerOperatorDescriptor.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/OrStackedLayerOperatorDescriptor.java
new file mode 100755
index 0000000..1783d86
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/OrStackedLayerOperatorDescriptor.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Or Stacked Layer Operator Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getOrStackedLayerOperatorDescriptor()
+ * @model
+ * @generated
+ */
+public interface OrStackedLayerOperatorDescriptor extends StackedLayerOperatorDescriptor {
+} // OrStackedLayerOperatorDescriptor
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Package.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Package.java
new file mode 100755
index 0000000..71c1d83
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Package.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Package</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Package#getElements <em>Elements</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPackage()
+ * @model
+ * @generated
+ */
+public interface Package extends PackageableElement {
+	/**
+	 * Returns the value of the '<em><b>Elements</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.layers.stackmodel.layers.PackageableElement}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Elements</em>' containment reference list isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Elements</em>' containment reference list.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPackage_Elements()
+	 * @model containment="true" ordered="false"
+	 * @generated
+	 */
+	EList<PackageableElement> getElements();
+
+} // Package
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PackageableElement.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PackageableElement.java
new file mode 100755
index 0000000..f1dc911
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PackageableElement.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Packageable Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPackageableElement()
+ * @model
+ * @generated
+ */
+public interface PackageableElement extends EObject {
+} // PackageableElement
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Property.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Property.java
new file mode 100755
index 0000000..959f19d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Property.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.papyrus.layers.stackmodel.BadStateException;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#getType <em>Type</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#getDefaultValue <em>Default Value</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#getDescription <em>Description</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#getIndex <em>Index</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getProperty()
+ * @model
+ * @generated
+ */
+public interface Property extends FolderElement {
+	/**
+	 * Returns the value of the '<em><b>Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Type</em>' reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Type</em>' reference.
+	 * @see #setType(Type)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getProperty_Type()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	Type getType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#getType <em>Type</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Type</em>' reference.
+	 * @see #getType()
+	 * @generated
+	 */
+	void setType(Type value);
+
+	/**
+	 * Returns the value of the '<em><b>Default Value</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Default Value</em>' reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Default Value</em>' containment reference.
+	 * @see #setDefaultValue(TypeInstance)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getProperty_DefaultValue()
+	 * @model containment="true" ordered="false"
+	 * @generated
+	 */
+	TypeInstance getDefaultValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#getDefaultValue <em>Default Value</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Default Value</em>' containment reference.
+	 * @see #getDefaultValue()
+	 * @generated
+	 */
+	void setDefaultValue(TypeInstance value);
+
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getProperty_Name()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Description</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Description</em>' attribute.
+	 * @see #setDescription(String)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getProperty_Description()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getDescription();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#getDescription <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Description</em>' attribute.
+	 * @see #getDescription()
+	 * @generated
+	 */
+	void setDescription(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Index</b></em>' attribute.
+	 * The default value is <code>"-1"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Index</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Index</em>' attribute.
+	 * @see #setIndex(int)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getProperty_Index()
+	 * @model default="-1" dataType="org.eclipse.papyrus.layers.stackmodel.layers.int" required="true" ordered="false"
+	 * @generated
+	 */
+	int getIndex();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Property#getIndex <em>Index</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Index</em>' attribute.
+	 * @see #getIndex()
+	 * @generated
+	 */
+	void setIndex(int value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.BadStateException"
+	 * @generated
+	 */
+	TypeInstance createInstance() throws BadStateException;
+
+} // Property
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyDescriptor.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyDescriptor.java
new file mode 100755
index 0000000..2d73821
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyDescriptor.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertyDescriptor()
+ * @model
+ * @generated
+ */
+public interface PropertyDescriptor extends EObject {
+} // PropertyDescriptor
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyIndex.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyIndex.java
new file mode 100755
index 0000000..afd840b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyIndex.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Index</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex#getProperty <em>Property</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex#getIndex <em>Index</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertyIndex()
+ * @model
+ * @generated
+ */
+public interface PropertyIndex extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Property</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Property</em>' reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Property</em>' reference.
+	 * @see #setProperty(Property)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertyIndex_Property()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	Property getProperty();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex#getProperty <em>Property</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Property</em>' reference.
+	 * @see #getProperty()
+	 * @generated
+	 */
+	void setProperty(Property value);
+
+	/**
+	 * Returns the value of the '<em><b>Index</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Index</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Index</em>' attribute.
+	 * @see #setIndex(int)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertyIndex_Index()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.int" required="true" ordered="false"
+	 * @generated
+	 */
+	int getIndex();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex#getIndex <em>Index</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Index</em>' attribute.
+	 * @see #getIndex()
+	 * @generated
+	 */
+	void setIndex(int value);
+
+} // PropertyIndex
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyOperator.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyOperator.java
new file mode 100755
index 0000000..5266866
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyOperator.java
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Operator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertyOperator()
+ * @model
+ * @generated
+ */
+public interface PropertyOperator extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertyOperator_Name()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.ComputePropertyValueCommand" required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException"
+	 *        propertyDataType="org.eclipse.papyrus.layers.stackmodel.layers.ComputePropertyValueCommand" propertyMany="true"
+	 * @generated
+	 */
+	ComputePropertyValueCommand getComputePropertyValueCommand(EList<ComputePropertyValueCommand> property) throws LayersException;
+
+} // PropertyOperator
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyRegistry.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyRegistry.java
new file mode 100755
index 0000000..b69da4a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyRegistry.java
@@ -0,0 +1,125 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Registry</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getProperties <em>Properties</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getTypeRegistry <em>Type Registry</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getPropertiesCount <em>Properties Count</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertyRegistry()
+ * @model
+ * @generated
+ */
+public interface PropertyRegistry extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Properties</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.layers.stackmodel.layers.Property}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Properties</em>' containment reference list isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Properties</em>' containment reference list.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertyRegistry_Properties()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Property> getProperties();
+
+	/**
+	 * Returns the value of the '<em><b>Type Registry</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Type Registry</em>' containment reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Type Registry</em>' containment reference.
+	 * @see #setTypeRegistry(TypeRegistry)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertyRegistry_TypeRegistry()
+	 * @model containment="true" ordered="false"
+	 * @generated
+	 */
+	TypeRegistry getTypeRegistry();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry#getTypeRegistry <em>Type Registry</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Type Registry</em>' containment reference.
+	 * @see #getTypeRegistry()
+	 * @generated
+	 */
+	void setTypeRegistry(TypeRegistry value);
+
+	/**
+	 * Returns the value of the '<em><b>Properties Count</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Properties Count</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Properties Count</em>' attribute.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertyRegistry_PropertiesCount()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.int" required="true" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
+	 * @generated
+	 */
+	int getPropertiesCount();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.int" required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.NotFoundException" propertyNameDataType="org.eclipse.papyrus.layers.stackmodel.layers.String"
+	 *        propertyNameRequired="true" propertyNameOrdered="false"
+	 * @generated
+	 */
+	int getPropertyIndex(String propertyName) throws NotFoundException;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.NotFoundException" propertyNameDataType="org.eclipse.papyrus.layers.stackmodel.layers.String" propertyNameRequired="true" propertyNameOrdered="false"
+	 * @generated
+	 */
+	Property getProperty(String propertyName) throws NotFoundException;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model propertyRequired="true" propertyOrdered="false"
+	 * @generated
+	 */
+	void addProperty(Property property);
+
+} // PropertyRegistry
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertySetter.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertySetter.java
new file mode 100755
index 0000000..62c4f3a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertySetter.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gmf.runtime.notation.View;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter#getProperty <em>Property</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter#getPropertyName <em>Property Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertySetter()
+ * @model abstract="true"
+ * @generated
+ */
+public interface PropertySetter extends EObject {
+
+
+	public static PropertySetter NULL_PROPERTY_SETTER = LayersFactory.eINSTANCE.createNullPropertySetter();
+
+	/**
+	 * Returns the value of the '<em><b>Property</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Property</em>' reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Property</em>' reference.
+	 * @see #setProperty(Property)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertySetter_Property()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	Property getProperty();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter#getProperty <em>Property</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Property</em>' reference.
+	 * @see #getProperty()
+	 * @generated
+	 */
+	void setProperty(Property value);
+
+	/**
+	 * Returns the value of the '<em><b>Property Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Property Name</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Property Name</em>' attribute.
+	 * @see #setPropertyName(String)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertySetter_PropertyName()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getPropertyName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter#getPropertyName <em>Property Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Property Name</em>' attribute.
+	 * @see #getPropertyName()
+	 * @generated
+	 */
+	void setPropertyName(String value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model viewRequired="true" viewOrdered="false" valueRequired="true" valueOrdered="false"
+	 * @generated
+	 */
+	void setValue(View view, TypeInstance value);
+
+} // PropertySetter
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertySetterRegistry.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertySetterRegistry.java
new file mode 100755
index 0000000..64fb0c7
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertySetterRegistry.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Setter Registry</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getPropertySetters <em>Property Setters</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getSetterMap <em>Setter Map</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getApplication <em>Application</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertySetterRegistry()
+ * @model
+ * @generated
+ */
+public interface PropertySetterRegistry extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Property Setters</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Property Setters</em>' containment reference list isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Property Setters</em>' reference list.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertySetterRegistry_PropertySetters()
+	 * @model
+	 * @generated
+	 */
+	EList<PropertySetter> getPropertySetters();
+
+	/**
+	 * Returns the value of the '<em><b>Setter Map</b></em>' map.
+	 * The key is of type {@link java.lang.String},
+	 * and the value is of type {@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter},
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Setter Map</em>' map isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Setter Map</em>' map.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertySetterRegistry_SetterMap()
+	 * @model mapType="org.eclipse.papyrus.layers.stackmodel.layers.StringToPropertySetter<org.eclipse.papyrus.layers.stackmodel.layers.String, org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter>" ordered="false"
+	 * @generated
+	 */
+	EMap<String, PropertySetter> getSetterMap();
+
+	/**
+	 * Returns the value of the '<em><b>Application</b></em>' container reference.
+	 * It is bidirectional and its opposite is '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getPropertySetterRegistry <em>Property Setter Registry</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Application</em>' container reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Application</em>' container reference.
+	 * @see #setApplication(LayersStackApplication)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertySetterRegistry_Application()
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication#getPropertySetterRegistry
+	 * @model opposite="propertySetterRegistry" ordered="false"
+	 * @generated
+	 */
+	LayersStackApplication getApplication();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry#getApplication <em>Application</em>}' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Application</em>' container reference.
+	 * @see #getApplication()
+	 * @generated
+	 */
+	void setApplication(LayersStackApplication value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.NotFoundException" propertyRequired="true" propertyOrdered="false"
+	 * @generated
+	 */
+	PropertySetter getPropertySetter(Property property) throws NotFoundException;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.NotFoundException" propertyDataType="org.eclipse.papyrus.layers.stackmodel.layers.String" propertyRequired="true" propertyOrdered="false"
+	 * @generated
+	 */
+	PropertySetter getPropertySetter(String property) throws NotFoundException;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model setterRequired="true" setterOrdered="false"
+	 * @generated
+	 */
+	void addPropertySetter(PropertySetter setter);
+
+} // PropertySetterRegistry
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyValue.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyValue.java
new file mode 100755
index 0000000..33cb176
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/PropertyValue.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Property Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getPropertyValue()
+ * @model abstract="true"
+ * @generated
+ */
+public interface PropertyValue extends EObject {
+} // PropertyValue
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/RegExpLayer.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/RegExpLayer.java
new file mode 100755
index 0000000..75d5d79
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/RegExpLayer.java
@@ -0,0 +1,308 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Reg Exp Layer</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getExpr <em>Expr</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getLanguage <em>Language</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#isDomainChangedEventDependant <em>Is Domain Changed Event Dependant</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getDomainChangedEventLevel <em>Domain Changed Event Level</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#isDiagramChangedEventDependant <em>Is Diagram Changed Event Dependant</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getDiagramChangedEventLevel <em>Diagram Changed Event Level</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getExpressionContextObjectType <em>Expression Context Object Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getRegExpLayer()
+ * @model
+ * @generated
+ */
+public interface RegExpLayer extends AbstractLayer {
+
+	/**
+	 * Returns the value of the '<em><b>Expr</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Expr</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Expr</em>' attribute.
+	 * @see #setExpr(String)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getRegExpLayer_Expr()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getExpr();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getExpr <em>Expr</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Expr</em>' attribute.
+	 * @see #getExpr()
+	 * @generated
+	 */
+	void setExpr(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Language</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Language</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Language</em>' attribute.
+	 * @see #setLanguage(String)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getRegExpLayer_Language()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getLanguage();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getLanguage <em>Language</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Language</em>' attribute.
+	 * @see #getLanguage()
+	 * @generated
+	 */
+	void setLanguage(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Is Domain Changed Event Dependant</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Is Domain Changed Event Dependant</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Is Domain Changed Event Dependant</em>' attribute.
+	 * @see #setIsDomainChangedEventDependant(boolean)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getRegExpLayer_IsDomainChangedEventDependant()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.boolean" required="true" ordered="false"
+	 * @generated
+	 */
+	boolean isDomainChangedEventDependant();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#isDomainChangedEventDependant <em>Is Domain Changed Event Dependant</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Is Domain Changed Event Dependant</em>' attribute.
+	 * @see #isDomainChangedEventDependant()
+	 * @generated
+	 */
+	void setIsDomainChangedEventDependant(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Domain Changed Event Level</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.papyrus.layers.stackmodel.layers.EventLevel}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Domain Changed Event Level</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Domain Changed Event Level</em>' attribute.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.EventLevel
+	 * @see #setDomainChangedEventLevel(EventLevel)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getRegExpLayer_DomainChangedEventLevel()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	EventLevel getDomainChangedEventLevel();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getDomainChangedEventLevel <em>Domain Changed Event Level</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Domain Changed Event Level</em>' attribute.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.EventLevel
+	 * @see #getDomainChangedEventLevel()
+	 * @generated
+	 */
+	void setDomainChangedEventLevel(EventLevel value);
+
+	/**
+	 * Returns the value of the '<em><b>Is Diagram Changed Event Dependant</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Is Diagram Changed Event Dependant</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Is Diagram Changed Event Dependant</em>' attribute.
+	 * @see #setIsDiagramChangedEventDependant(boolean)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getRegExpLayer_IsDiagramChangedEventDependant()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.boolean" required="true" ordered="false"
+	 * @generated
+	 */
+	boolean isDiagramChangedEventDependant();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#isDiagramChangedEventDependant <em>Is Diagram Changed Event Dependant</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Is Diagram Changed Event Dependant</em>' attribute.
+	 * @see #isDiagramChangedEventDependant()
+	 * @generated
+	 */
+	void setIsDiagramChangedEventDependant(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Diagram Changed Event Level</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.papyrus.layers.stackmodel.layers.EventLevel}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Diagram Changed Event Level</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Diagram Changed Event Level</em>' attribute.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.EventLevel
+	 * @see #setDiagramChangedEventLevel(EventLevel)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getRegExpLayer_DiagramChangedEventLevel()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	EventLevel getDiagramChangedEventLevel();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getDiagramChangedEventLevel <em>Diagram Changed Event Level</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Diagram Changed Event Level</em>' attribute.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.EventLevel
+	 * @see #getDiagramChangedEventLevel()
+	 * @generated
+	 */
+	void setDiagramChangedEventLevel(EventLevel value);
+
+	/**
+	 * Returns the value of the '<em><b>Expression Context Object Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Expression Context Object Type</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Expression Context Object Type</em>' attribute.
+	 * @see #setExpressionContextObjectType(String)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getRegExpLayer_ExpressionContextObjectType()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getExpressionContextObjectType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer#getExpressionContextObjectType <em>Expression Context Object Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Expression Context Object Type</em>' attribute.
+	 * @see #getExpressionContextObjectType()
+	 * @generated
+	 */
+	void setExpressionContextObjectType(String value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model newParentLayerRequired="true" newParentLayerOrdered="false"
+	 * @generated
+	 */
+	void activate(AbstractLayerOperator newParentLayer);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model oldParentLayerRequired="true" oldParentLayerOrdered="false"
+	 * @generated
+	 */
+	void deactivate(AbstractLayerOperator oldParentLayer);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.boolean" required="true" ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException" viewRequired="true" viewOrdered="false"
+	 * @generated
+	 */
+	boolean isDerivedView(View view) throws LayersException;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException" viewRequired="true" viewOrdered="false"
+	 * @generated
+	 */
+	void attachDerivedView(View view) throws LayersException;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException" viewsMany="true" viewsOrdered="false"
+	 * @generated
+	 */
+	void attachDerivedViews(EList<View> views) throws LayersException;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException"
+	 * @generated
+	 */
+	void attachDerivedViews() throws LayersException;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model ordered="false" exceptions="org.eclipse.papyrus.layers.stackmodel.layers.LayersException" viewsMany="true" viewsOrdered="false"
+	 * @generated
+	 */
+	EList<View> lookupDerivedViews(EList<View> views) throws LayersException;
+} // RegExpLayer
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/RegExpLayerDescriptor.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/RegExpLayerDescriptor.java
new file mode 100755
index 0000000..6e20d1a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/RegExpLayerDescriptor.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Reg Exp Layer Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getRegExpLayerDescriptor()
+ * @model
+ * @generated
+ */
+public interface RegExpLayerDescriptor extends LayerDescriptor {
+} // RegExpLayerDescriptor
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/SimpleLayerDescriptor.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/SimpleLayerDescriptor.java
new file mode 100755
index 0000000..e8fd76a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/SimpleLayerDescriptor.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Simple Layer Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getSimpleLayerDescriptor()
+ * @model
+ * @generated
+ */
+public interface SimpleLayerDescriptor extends LayerDescriptor {
+} // SimpleLayerDescriptor
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StackedLayerOperator.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StackedLayerOperator.java
new file mode 100755
index 0000000..12a2d2c
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StackedLayerOperator.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Stacked Layer Operator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getStackedLayerOperator()
+ * @model
+ * @generated
+ */
+public interface StackedLayerOperator extends AbstractLayerOperator {
+} // StackedLayerOperator
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StackedLayerOperatorDescriptor.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StackedLayerOperatorDescriptor.java
new file mode 100755
index 0000000..76c97e4
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StackedLayerOperatorDescriptor.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Stacked Layer Operator Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getStackedLayerOperatorDescriptor()
+ * @model
+ * @generated
+ */
+public interface StackedLayerOperatorDescriptor extends LayerOperatorDescriptor {
+} // StackedLayerOperatorDescriptor
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringInstance.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringInstance.java
new file mode 100755
index 0000000..543c9ee
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringInstance.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>String Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.StringInstance#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getStringInstance()
+ * @model
+ * @generated
+ */
+public interface StringInstance extends TypeInstance {
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Value</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Value</em>' attribute.
+	 * @see #setValue(String)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getStringInstance_Value()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.StringInstance#getValue <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Value</em>' attribute.
+	 * @see #getValue()
+	 * @generated
+	 */
+	void setValue(String value);
+
+} // StringInstance
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringPropertyValue.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringPropertyValue.java
new file mode 100755
index 0000000..dfaa795
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringPropertyValue.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>String Property Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.StringPropertyValue#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getStringPropertyValue()
+ * @model
+ * @generated
+ */
+public interface StringPropertyValue extends TypeInstance {
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Value</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Value</em>' attribute.
+	 * @see #setValue(String)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getStringPropertyValue_Value()
+	 * @model unique="false" dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.StringPropertyValue#getValue <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Value</em>' attribute.
+	 * @see #getValue()
+	 * @generated
+	 */
+	void setValue(String value);
+
+} // StringPropertyValue
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringToTypeInstanceMap.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringToTypeInstanceMap.java
new file mode 100755
index 0000000..b4343e6
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringToTypeInstanceMap.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>String To Type Instance Map</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.StringToTypeInstanceMap#getKey <em>Key</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.StringToTypeInstanceMap#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getStringToTypeInstanceMap()
+ * @model
+ * @generated
+ */
+public interface StringToTypeInstanceMap extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Key</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Key</em>' attribute.
+	 * @see #setKey(String)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getStringToTypeInstanceMap_Key()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getKey();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.StringToTypeInstanceMap#getKey <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Key</em>' attribute.
+	 * @see #getKey()
+	 * @generated
+	 */
+	void setKey(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Value</em>' reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Value</em>' reference.
+	 * @see #setValue(TypeInstance)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getStringToTypeInstanceMap_Value()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	TypeInstance getValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.StringToTypeInstanceMap#getValue <em>Value</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Value</em>' reference.
+	 * @see #getValue()
+	 * @generated
+	 */
+	void setValue(TypeInstance value);
+
+} // StringToTypeInstanceMap
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringType.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringType.java
new file mode 100755
index 0000000..959d4c1
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringType.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>String Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getStringType()
+ * @model
+ * @generated
+ */
+public interface StringType extends Type {
+} // StringType
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringValue.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringValue.java
new file mode 100755
index 0000000..284fed5
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/StringValue.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>String Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.StringValue#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getStringValue()
+ * @model
+ * @generated
+ */
+public interface StringValue extends TypeInstance {
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Value</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Value</em>' attribute.
+	 * @see #setValue(String)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getStringValue_Value()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.StringValue#getValue <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Value</em>' attribute.
+	 * @see #getValue()
+	 * @generated
+	 */
+	void setValue(String value);
+
+} // StringValue
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/TopLayerOperator.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/TopLayerOperator.java
new file mode 100755
index 0000000..35b004c
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/TopLayerOperator.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Top Layer Operator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getTopLayerOperator()
+ * @model
+ * @generated
+ */
+public interface TopLayerOperator extends AbstractLayerOperator {
+} // TopLayerOperator
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/TopLayerOperatorDescriptor.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/TopLayerOperatorDescriptor.java
new file mode 100755
index 0000000..dda50d2
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/TopLayerOperatorDescriptor.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Top Layer Operator Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getTopLayerOperatorDescriptor()
+ * @model
+ * @generated
+ */
+public interface TopLayerOperatorDescriptor extends LayerOperatorDescriptor {
+} // TopLayerOperatorDescriptor
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Type.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Type.java
new file mode 100755
index 0000000..9ad4996
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/Type.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Type#getMetamodel <em>Metamodel</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Type#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.Type#getDescription <em>Description</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getType()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Type extends FolderElement {
+	/**
+	 * Returns the value of the '<em><b>Metamodel</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Metamodel</em>' reference isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Metamodel</em>' reference.
+	 * @see #setMetamodel(Metamodel)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getType_Metamodel()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	Metamodel getMetamodel();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Type#getMetamodel <em>Metamodel</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Metamodel</em>' reference.
+	 * @see #getMetamodel()
+	 * @generated
+	 */
+	void setMetamodel(Metamodel value);
+
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getType_Name()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Type#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Description</em>' attribute isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Description</em>' attribute.
+	 * @see #setDescription(String)
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getType_Description()
+	 * @model dataType="org.eclipse.papyrus.layers.stackmodel.layers.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getDescription();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.layers.stackmodel.layers.Type#getDescription <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param value
+	 *            the new value of the '<em>Description</em>' attribute.
+	 * @see #getDescription()
+	 * @generated
+	 */
+	void setDescription(String value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	TypeInstance createInstance();
+
+} // Type
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/TypeInstance.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/TypeInstance.java
new file mode 100755
index 0000000..181dc1f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/TypeInstance.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Type Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getTypeInstance()
+ * @model abstract="true" superTypes="org.eclipse.papyrus.layers.stackmodel.layers.ComputePropertyValueCommandItf"
+ * @generated
+ */
+public interface TypeInstance extends EObject, ComputePropertyValueCommand {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model valueDataType="org.eclipse.papyrus.layers.stackmodel.layers.String" valueRequired="true" valueOrdered="false"
+	 * @generated
+	 */
+	void setValueFromString(String value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @model valueRequired="true" valueOrdered="false"
+	 * @generated
+	 */
+	void setValueFromInstance(TypeInstance value);
+} // TypeInstance
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/TypeRegistry.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/TypeRegistry.java
new file mode 100755
index 0000000..2f2c7f0
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/TypeRegistry.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers;
+
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Type Registry</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry#getTypes <em>Types</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getTypeRegistry()
+ * @model
+ * @generated
+ */
+public interface TypeRegistry extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Types</b></em>' map.
+	 * The key is of type {@link java.lang.String},
+	 * and the value is of type {@link org.eclipse.papyrus.layers.stackmodel.layers.Type},
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Types</em>' map isn't clear, there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the value of the '<em>Types</em>' map.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#getTypeRegistry_Types()
+	 * @model mapType="org.eclipse.papyrus.layers.stackmodel.layers.StringToTypeMap<org.eclipse.papyrus.layers.stackmodel.layers.String, org.eclipse.papyrus.layers.stackmodel.layers.Type>" ordered="false"
+	 * @generated
+	 */
+	EMap<String, Type> getTypes();
+
+} // TypeRegistry
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/AbstractLayerImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/AbstractLayerImpl.java
new file mode 100755
index 0000000..0e0041b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/AbstractLayerImpl.java
@@ -0,0 +1,858 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.eclipse.papyrus.layers.stackmodel.Activator.log;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map.Entry;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.EcoreEMap;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.BadStateException;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.NullInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Abstract Layer</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerImpl#getPropertyValues <em>Property Values</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerImpl#getPropertyValueMap <em>Property Value Map</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerImpl#getLayerDescriptor <em>Layer Descriptor</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerImpl#getViews <em>Views</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerImpl#getAttachedProperties <em>Attached Properties</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class AbstractLayerImpl extends LayerExpressionImpl implements AbstractLayer {
+	/**
+	 * The cached value of the '{@link #getPropertyValues() <em>Property Values</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getPropertyValues()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<TypeInstance> propertyValues;
+
+	/**
+	 * The cached value of the '{@link #getPropertyValueMap() <em>Property Value Map</em>}' map.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getPropertyValueMap()
+	 * @generated
+	 * @ordered
+	 */
+	protected EMap<String, TypeInstance> propertyValueMap;
+
+	/**
+	 * The cached value of the '{@link #getLayerDescriptor() <em>Layer Descriptor</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getLayerDescriptor()
+	 * @generated
+	 * @ordered
+	 */
+	protected LayerDescriptor layerDescriptor;
+
+	/**
+	 * The cached value of the '{@link #getViews() <em>Views</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getViews()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<View> views;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected AbstractLayerImpl() {
+		super();
+		// Listen on application changed and propertyValues changed
+		// This behavior is set from the constructor, has it doesn't interfered with
+		// reloading
+		Adapter adapter = new PropertyValuesSynchronizer();
+		this.eAdapters().add(adapter);
+
+	}
+
+	/**
+	 * Start the behaviors associated to this layer.
+	 * This method is called by one of the methods: {@link #startAfterReloading()} or {@link #attachToLayersStack(LayersStack)}.
+	 */
+	@Override
+	protected void startBehaviors() {
+		super.startBehaviors();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.ABSTRACT_LAYER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	@SuppressWarnings("serial")
+	public EList<TypeInstance> getPropertyValues() {
+		if (propertyValues == null) {
+			propertyValues = new EObjectResolvingEList<TypeInstance>(TypeInstance.class, this, LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUES) {
+
+				// Allows double
+				@Override
+				protected boolean isUnique() {
+					return false;
+				}
+			};
+		}
+		return propertyValues;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EMap<String, TypeInstance> getPropertyValueMap() {
+		if (propertyValueMap == null) {
+			propertyValueMap = new EcoreEMap<String, TypeInstance>(LayersPackage.Literals.STRING_TO_TYPE_INSTANCE_MAP, StringToTypeInstanceMapImpl.class, this, LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUE_MAP);
+		}
+		return propertyValueMap;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayerDescriptor getLayerDescriptor() {
+		if (layerDescriptor != null && layerDescriptor.eIsProxy()) {
+			InternalEObject oldLayerDescriptor = (InternalEObject) layerDescriptor;
+			layerDescriptor = (LayerDescriptor) eResolveProxy(oldLayerDescriptor);
+			if (layerDescriptor != oldLayerDescriptor) {
+				if (eNotificationRequired()) {
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, LayersPackage.ABSTRACT_LAYER__LAYER_DESCRIPTOR, oldLayerDescriptor, layerDescriptor));
+				}
+			}
+		}
+		return layerDescriptor;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayerDescriptor basicGetLayerDescriptor() {
+		return layerDescriptor;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setLayerDescriptor(LayerDescriptor newLayerDescriptor) {
+		LayerDescriptor oldLayerDescriptor = layerDescriptor;
+		layerDescriptor = newLayerDescriptor;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.ABSTRACT_LAYER__LAYER_DESCRIPTOR, oldLayerDescriptor, layerDescriptor));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EList<View> getViews() {
+		if (views == null) {
+			views = new EObjectResolvingEList<View>(View.class, this, LayersPackage.ABSTRACT_LAYER__VIEWS);
+		}
+		return views;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public EList<Property> getAttachedProperties() {
+
+		// Silly implementation:
+		// walk existing instance keys, and get there descriptor
+		// from the propertyRegistry.
+		// TODO: improve this method: have a list updated when an instance is
+		// added or removed.
+
+		EList<Property> res = new BasicEList<Property>();
+
+		for (Entry<String, TypeInstance> entry : getPropertyValueMap()) {
+			String propertyName = entry.getKey();
+
+			try {
+				res.add(application.getPropertyRegistry().getProperty(propertyName));
+			} catch (NotFoundException e) {
+				// This should not happen
+				res.add(null);
+				e.printStackTrace();
+			}
+
+
+		}
+
+		return res;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public TypeInstance addPropertyInstance(Property property) throws LayersException {
+
+		String name = property.getName();
+		if (name == null || name.length() == 0) {
+			throw new LayersException("The name of a property must be set.");
+		}
+
+		try {
+			TypeInstance instance = property.createInstance();
+			getPropertyValueMap().put(name, instance);
+			return instance;
+		} catch (NullPointerException e) {
+			throw new LayersException("The type of the property '"
+					+ name + "' must be set.", e);
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void removePropertyInstance(Property property) {
+		getPropertyValueMap().remove(property.getName());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public TypeInstance getPropertyInstance(Property property) throws LayersException {
+		return getPropertyInstance(property.getName());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public TypeInstance getPropertyInstance(String property) throws LayersException {
+		TypeInstance instance = getPropertyValueMap().get(property);
+
+		if (instance == null) {
+			throw new NotFoundException("Can't find instance for the specified property");
+		}
+
+		return instance;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUE_MAP:
+			return ((InternalEList<?>) getPropertyValueMap()).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 LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUES:
+			return getPropertyValues();
+		case LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUE_MAP:
+			if (coreType) {
+				return getPropertyValueMap();
+			} else {
+				return getPropertyValueMap().map();
+			}
+		case LayersPackage.ABSTRACT_LAYER__LAYER_DESCRIPTOR:
+			if (resolve) {
+				return getLayerDescriptor();
+			}
+			return basicGetLayerDescriptor();
+		case LayersPackage.ABSTRACT_LAYER__VIEWS:
+			return getViews();
+		case LayersPackage.ABSTRACT_LAYER__ATTACHED_PROPERTIES:
+			return getAttachedProperties();
+		}
+		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 LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUES:
+			getPropertyValues().clear();
+			getPropertyValues().addAll((Collection<? extends TypeInstance>) newValue);
+			return;
+		case LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUE_MAP:
+			((EStructuralFeature.Setting) getPropertyValueMap()).set(newValue);
+			return;
+		case LayersPackage.ABSTRACT_LAYER__LAYER_DESCRIPTOR:
+			setLayerDescriptor((LayerDescriptor) newValue);
+			return;
+		case LayersPackage.ABSTRACT_LAYER__VIEWS:
+			getViews().clear();
+			getViews().addAll((Collection<? extends View>) newValue);
+			return;
+		case LayersPackage.ABSTRACT_LAYER__ATTACHED_PROPERTIES:
+			getAttachedProperties().clear();
+			getAttachedProperties().addAll((Collection<? extends Property>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUES:
+			getPropertyValues().clear();
+			return;
+		case LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUE_MAP:
+			getPropertyValueMap().clear();
+			return;
+		case LayersPackage.ABSTRACT_LAYER__LAYER_DESCRIPTOR:
+			setLayerDescriptor((LayerDescriptor) null);
+			return;
+		case LayersPackage.ABSTRACT_LAYER__VIEWS:
+			getViews().clear();
+			return;
+		case LayersPackage.ABSTRACT_LAYER__ATTACHED_PROPERTIES:
+			getAttachedProperties().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUES:
+			return propertyValues != null && !propertyValues.isEmpty();
+		case LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUE_MAP:
+			return propertyValueMap != null && !propertyValueMap.isEmpty();
+		case LayersPackage.ABSTRACT_LAYER__LAYER_DESCRIPTOR:
+			return layerDescriptor != null;
+		case LayersPackage.ABSTRACT_LAYER__VIEWS:
+			return views != null && !views.isEmpty();
+		case LayersPackage.ABSTRACT_LAYER__ATTACHED_PROPERTIES:
+			return !getAttachedProperties().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 LayersPackage.ABSTRACT_LAYER___ADD_PROPERTY_INSTANCE__PROPERTY:
+			try {
+				return addPropertyInstance((Property) arguments.get(0));
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		case LayersPackage.ABSTRACT_LAYER___REMOVE_PROPERTY_INSTANCE__PROPERTY:
+			removePropertyInstance((Property) arguments.get(0));
+			return null;
+		case LayersPackage.ABSTRACT_LAYER___GET_PROPERTY_INSTANCE__PROPERTY:
+			try {
+				return getPropertyInstance((Property) arguments.get(0));
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		case LayersPackage.ABSTRACT_LAYER___GET_PROPERTY_INSTANCE__STRING:
+			try {
+				return getPropertyInstance((String) arguments.get(0));
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+	/**
+	 * Set the {@link #propertyValues} property.
+	 * The #application proerty must be set.
+	 * Set the list size to the number of availale property
+	 * Synchronize the values with instances found in {@link #propertyValueMap}.
+	 *
+	 * @throws BadStateException
+	 */
+	protected void resetAllPropertyValuesFromRegistry() throws BadStateException {
+
+		// Reset list
+		getPropertyValues().clear();
+
+		// Check application
+		LayersStackApplication application = getApplication();
+		if (application == null) {
+			// do not synchronize the list
+			return;
+			// throw new BadStateException("Property 'application' must be set for resetAllPropertyValuesFromRegistry() to work.");
+		}
+
+		List<Property> availableProperties;
+		int size;
+		try {
+			availableProperties = application.getPropertyRegistry().getProperties();
+			size = availableProperties.size();
+		} catch (NullPointerException e) {
+			throw new BadStateException("Property 'application.propertyRegistry' must be set for resetAllPropertyValuesFromRegistry() to work.");
+		}
+
+		// initialize the propertyValues
+		getPropertyValues().clear();
+		for (int i = 0; i < size; i++) {
+			String propertyName = availableProperties.get(i).getName();
+			// getPropertyValues().set(i, getPropertyValueMap().get(propertyName));
+			// Add the instance, or null if not found. This ensure
+			// That the list will have the correct size.
+			TypeInstance instance = getPropertyValueMap().get(propertyName);
+			if (instance == null) {
+				instance = NullInstance.NULLINSTANCE;
+			}
+			getPropertyValues().add(instance);
+		}
+	}
+
+	/**
+	 * Synchronize the specified propertyName with the value in the {@link #propertyValues} list.
+	 *
+	 * @param propertyName
+	 * @param value
+	 * @throws NotFoundException
+	 */
+	protected void synchronizePropertyValue(String propertyName, TypeInstance value) throws BadStateException, NotFoundException {
+
+		if (application == null) {
+			// silently fail
+			return;
+		}
+
+		try {
+			int propertyIndex = application.getPropertyRegistry().getPropertyIndex(propertyName);
+			getPropertyValues().set(propertyIndex, value);
+		} catch (NullPointerException e) {
+			throw new BadStateException("application should be set first.");
+		}
+	}
+
+	/**
+	 * This class listen to #propertyValueMap, and synchronize propertyValues accordingly.
+	 *
+	 *
+	 */
+	public class PropertyValuesSynchronizer extends AdapterImpl {
+
+		@Override
+		public void notifyChanged(Notification msg) {
+			if (log.isDebugEnabled()) {
+				log.debug("event " + msg.getEventType());
+
+			}
+
+			switch (msg.getFeatureID(AbstractLayer.class)) {
+			case LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUE_MAP:
+				notifyLayerPropertyValueMapChanged(msg);
+				break;
+
+			case LayersPackage.ABSTRACT_LAYER__APPLICATION:
+				notifyLayerApplicationFeatureChanged(msg);
+				break;
+
+			default:
+				break;
+			}
+		}
+
+		/**
+		 * The {@link LayerImpl#propertyValueMap} has changed. Synchronize the {@link LayerImpl#propertyValues} list.
+		 *
+		 * @param msg
+		 */
+		protected void notifyLayerPropertyValueMapChanged(Notification msg) {
+
+			if (log.isDebugEnabled()) {
+				log.debug("map changed " + msg.getEventType());
+			}
+
+			switch (msg.getEventType()) {
+			case Notification.SET: {
+				// A key is modified
+				// Add the value to other list
+				// An entry is added
+				StringToTypeInstanceMapImpl entry = (StringToTypeInstanceMapImpl) msg.getNewValue();
+
+				if (log.isDebugEnabled()) {
+					log.debug("SET - newValue=" + entry.getValue()
+							+ ", key=" + entry.getKey());
+				}
+
+				String newKey = entry.getKey();
+				TypeInstance value = entry.getValue();
+				if (value != null) {
+					try {
+						synchronizePropertyValue(newKey, value);
+					} catch (BadStateException e) {
+						// Show error for debug
+						e.printStackTrace();
+					} catch (NotFoundException e) {
+						// Show error for debug
+						e.printStackTrace();
+					}
+				}
+
+
+				break;
+			}
+			case Notification.UNSET:
+				// A key is added
+				break;
+			case Notification.ADD: {
+				// An entry is added
+				StringToTypeInstanceMapImpl entry = (StringToTypeInstanceMapImpl) msg.getNewValue();
+
+				if (log.isDebugEnabled()) {
+					log.debug("ADD - newValue=" + entry.getValue()
+							+ ", key=" + entry.getKey());
+				}
+
+				// Add the corresponding instance to propertyValues
+				try {
+					synchronizePropertyValue(entry.getKey(), entry.getValue());
+				} catch (LayersException e) {
+					// should not happen
+					e.printStackTrace();
+				}
+				break;
+			}
+			case Notification.REMOVE: {
+				// An entry is removed
+				StringToTypeInstanceMapImpl entry = (StringToTypeInstanceMapImpl) msg.getOldValue();
+
+				if (log.isDebugEnabled()) {
+					log.debug("REMOVE" + entry.getValue()
+							+ ", key=" + entry.getKey());
+				}
+
+				// Add the corresponding instance to propertyValues
+				try {
+					synchronizePropertyValue(entry.getKey(), NullInstance.NULLINSTANCE);
+				} catch (LayersException e) {
+					// should not happen
+					e.printStackTrace();
+				}
+				break;
+			}
+			default:
+				break;
+			}
+
+		}
+
+		/**
+		 * The {@link LayerImpl#propertyValueMap} has changed. Synchronize the {@link LayerImpl#propertyValues} list.
+		 *
+		 * @param msg
+		 */
+		protected void notifyLayerApplicationFeatureChanged(Notification msg) {
+			if (log.isDebugEnabled()) {
+				log.debug("application changed " + msg.getEventType());
+			}
+
+			switch (msg.getEventType()) {
+			case Notification.SET: {
+				// The property is set.
+				// Synchronize propertyValues
+				try {
+					resetAllPropertyValuesFromRegistry();
+				} catch (BadStateException e) {
+					// should not happen
+					e.printStackTrace();
+				}
+				break;
+			}
+			case Notification.UNSET:
+				// application is removed
+				// clear propertyValues
+				getPropertyValues().clear();
+				break;
+			}
+		}
+
+	}
+
+	/**
+	 * Get the command to compute the required property value.
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 *
+	 * @param view
+	 * @param property
+	 * @return
+	 * @throws LayersException
+	 */
+	@Override
+	public ComputePropertyValueCommand getComputePropertyValueCommand(View view, Property property) throws LayersException {
+
+		// If the layer is disabled, return a null command.
+		// If the view is not attached to the layer, stop.
+		if (!isLayerEnabledInternal() || !getViews().contains(view)) {
+			return null;
+		}
+
+		try {
+			return getPropertyInstance(property);
+		} catch (NotFoundException e) {
+			// not found ==> return null
+			return null;
+		}
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, java.util.List)
+	 *
+	 * @param view
+	 * @param property
+	 * @return
+	 * @throws LayersException
+	 */
+	@Override
+	public EList<ComputePropertyValueCommand> getPropertiesComputePropertyValueCommand(View view, List<Property> properties) throws LayersException {
+
+		// Check if the view is attached to the layer
+		if (!isLayerEnabledInternal() || !getViews().contains(view)) {
+			return null;
+		}
+
+		// the result list
+		EList<ComputePropertyValueCommand> resCmds = new BasicEList<ComputePropertyValueCommand>(properties.size());
+		boolean isCmdFound = false;
+
+		for (Property property : properties) {
+			if (property != null) {
+				// Add the cmd allowing to get the value of the Property
+				// That is, the PropertyInstance itself
+				try {
+					resCmds.add(getPropertyInstance(property));
+					isCmdFound = true;
+				} catch (NotFoundException e) {
+					// not found ==> cmd = null
+					resCmds.add(null);
+				}
+			}
+			else {
+				resCmds.add(null);
+			}
+		}
+		// Return appropriate result
+		if (isCmdFound) {
+			return resCmds;
+		}
+		else {
+			// No command ==> null
+			return null;
+		}
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getViewsComputePropertyValueCommand(java.util.List, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 *
+	 * @param view
+	 * @param property
+	 * @return
+	 * @throws LayersException
+	 */
+	@Override
+	public EList<ComputePropertyValueCommand> getViewsComputePropertyValueCommand(List<View> views, Property property) throws LayersException {
+
+
+		// If the layer is disabled, return a null command.
+		if (!isLayerEnabledInternal()) {
+			return null;
+		}
+
+		// Stop if the property is not attached to the layer
+		TypeInstance value;
+		try {
+			value = getPropertyInstance(property);
+		} catch (NotFoundException e1) {
+			// the property is not set in this layer;
+			return null;
+		}
+
+		// Now, compute the list of commands. One command for each view.
+		EList<ComputePropertyValueCommand> resCmds = new BasicEList<ComputePropertyValueCommand>(views.size());
+		boolean isCmdFound = false;
+
+		for (View view : views) {
+			if (view != null && getViews().contains(view)) {
+				isCmdFound = true;
+				resCmds.add(value);
+			}
+			else {
+				resCmds.add(null);
+			}
+		}
+
+		// Return appropriate result
+		if (isCmdFound) {
+			return resCmds;
+		}
+		else {
+			// No command ==> null
+			return null;
+		}
+	}
+
+	/**
+	 * Get the LayersStack that own directly or indirectly this Layer.
+	 * Throw an exception if no {@link LayersStack} can be found. <br>
+	 * Lookup is done recursively in parent containers.
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getLayersStack()
+	 *
+	 * @return
+	 * @throws NotFoundException
+	 */
+	// @Override
+	// public LayersStack getLayersStack() throws NotFoundException {
+	// // TODO: performance improvment. It is possible to avoid the lookup
+	// // by caching the LayersStack, or by setting a corresponding property
+	// // in the model
+	// return (LayersStack)ECoreUtils.lookupAncestorOfType(this, LayersPackage.eINSTANCE.getLayersStack());
+	// }
+
+
+} // AbstractLayerImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/AbstractLayerOperatorImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/AbstractLayerOperatorImpl.java
new file mode 100755
index 0000000..a110e66
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/AbstractLayerOperatorImpl.java
@@ -0,0 +1,511 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.eclipse.papyrus.layers.stackmodel.Activator.log;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Abstract Layer Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerOperatorImpl#getLayerOperatorDescriptor <em>Layer Operator Descriptor</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerOperatorImpl#getLayerOperatorDescriptorName <em>Layer Operator Descriptor Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class AbstractLayerOperatorImpl extends LayerOperatorImpl implements AbstractLayerOperator {
+	/**
+	 * The cached value of the '{@link #getLayerOperatorDescriptor() <em>Layer Operator Descriptor</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getLayerOperatorDescriptor()
+	 * @generated
+	 * @ordered
+	 */
+	protected LayerOperatorDescriptor layerOperatorDescriptor;
+
+	/**
+	 * The default value of the '{@link #getLayerOperatorDescriptorName() <em>Layer Operator Descriptor Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getLayerOperatorDescriptorName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String LAYER_OPERATOR_DESCRIPTOR_NAME_EDEFAULT = null;
+	/**
+	 * The cached value of the '{@link #getLayerOperatorDescriptorName() <em>Layer Operator Descriptor Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getLayerOperatorDescriptorName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String layerOperatorDescriptorName = LAYER_OPERATOR_DESCRIPTOR_NAME_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected AbstractLayerOperatorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.ABSTRACT_LAYER_OPERATOR;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayerOperatorDescriptor getLayerOperatorDescriptor() {
+		if (layerOperatorDescriptor != null && layerOperatorDescriptor.eIsProxy()) {
+			InternalEObject oldLayerOperatorDescriptor = (InternalEObject) layerOperatorDescriptor;
+			layerOperatorDescriptor = (LayerOperatorDescriptor) eResolveProxy(oldLayerOperatorDescriptor);
+			if (layerOperatorDescriptor != oldLayerOperatorDescriptor) {
+				if (eNotificationRequired()) {
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, LayersPackage.ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR, oldLayerOperatorDescriptor, layerOperatorDescriptor));
+				}
+			}
+		}
+		return layerOperatorDescriptor;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayerOperatorDescriptor basicGetLayerOperatorDescriptor() {
+		return layerOperatorDescriptor;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setLayerOperatorDescriptor(LayerOperatorDescriptor newLayerOperatorDescriptor) {
+		LayerOperatorDescriptor oldLayerOperatorDescriptor = layerOperatorDescriptor;
+		layerOperatorDescriptor = newLayerOperatorDescriptor;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR, oldLayerOperatorDescriptor, layerOperatorDescriptor));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getLayerOperatorDescriptorName() {
+		return layerOperatorDescriptorName;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void setLayerOperatorDescriptorName(String newLayerOperatorDescriptorName) {
+
+		// Avoid recursive call if name is the same
+		if (newLayerOperatorDescriptorName.equals(layerOperatorDescriptorName)) {
+			return;
+		}
+
+		String oldLayerOperatorDescriptorName = layerOperatorDescriptorName;
+		layerOperatorDescriptorName = newLayerOperatorDescriptorName;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR_NAME, oldLayerOperatorDescriptorName, layerOperatorDescriptorName));
+		}
+
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public boolean isDescriptorSet() {
+		return getLayerOperatorDescriptor() != null;
+	}
+
+	/**
+	 * Reset the descriptor accordingly to the descriptor name.
+	 * The descriptor is resseted only if the ::application and ::layerOperatorDescriptorName are set.
+	 * Nothing is done if one of the attribute is not set.
+	 * Nothing is done if the descriptor can not be found (maybe a log is issue).
+	 * <!-- begin-user-doc -->
+	 * Not used ?
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void resetDescriptor() {
+
+		if (getApplication() == null) {
+			return;
+		}
+		if (getLayerOperatorDescriptorName() == null) {
+			return;
+		}
+
+		try {
+			LayerOperatorDescriptor descriptor = application.getLayerOperatorDescriptorRegistry().getLayerOperatorDescriptor(getLayerOperatorDescriptorName());
+			setLayerOperatorDescriptor(descriptor);
+		} catch (NotFoundException e) {
+			log.error("LOG - " + this.getClass().getName() + " - " + e.getMessage(), e);
+		}
+
+	}
+
+	/**
+	 * Override in order to call {@link #resetDescriptor()}
+	 *
+	 * @param newApplication
+	 */
+	// @Override
+	// public void setApplication(LayersStackApplication newApplication) {
+	// super.setApplication(newApplication);
+	// resetDescriptor();
+	// }
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public boolean isLayerEnabledInternal() {
+		return isLayerEnabled() && isDescriptorSet();
+	}
+
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case LayersPackage.ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR:
+			if (resolve) {
+				return getLayerOperatorDescriptor();
+			}
+			return basicGetLayerOperatorDescriptor();
+		case LayersPackage.ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR_NAME:
+			return getLayerOperatorDescriptorName();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case LayersPackage.ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR:
+			setLayerOperatorDescriptor((LayerOperatorDescriptor) newValue);
+			return;
+		case LayersPackage.ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR_NAME:
+			setLayerOperatorDescriptorName((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR:
+			setLayerOperatorDescriptor((LayerOperatorDescriptor) null);
+			return;
+		case LayersPackage.ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR_NAME:
+			setLayerOperatorDescriptorName(LAYER_OPERATOR_DESCRIPTOR_NAME_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR:
+			return layerOperatorDescriptor != null;
+		case LayersPackage.ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR_NAME:
+			return LAYER_OPERATOR_DESCRIPTOR_NAME_EDEFAULT == null ? layerOperatorDescriptorName != null : !LAYER_OPERATOR_DESCRIPTOR_NAME_EDEFAULT.equals(layerOperatorDescriptorName);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+		case LayersPackage.ABSTRACT_LAYER_OPERATOR___IS_DESCRIPTOR_SET:
+			return isDescriptorSet();
+		case LayersPackage.ABSTRACT_LAYER_OPERATOR___RESET_DESCRIPTOR:
+			resetDescriptor();
+			return null;
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (layerOperatorDescriptorName: ");
+		result.append(layerOperatorDescriptorName);
+		result.append(')');
+		return result.toString();
+	}
+
+	/**
+	 * Get the command to compute the required property value.
+	 * Walk all layers and collect the non null command for the property and view.
+	 * Then return the command provided by a call to the properties'operator(collectedCmd).
+	 *
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 *
+	 * @param view
+	 * @param property
+	 * @return
+	 * @throws LayersException
+	 */
+	@Override
+	public ComputePropertyValueCommand getComputePropertyValueCommand(View view, Property property) throws LayersException {
+
+		// Do nothing if the layer is disable.
+		if (!isLayerEnabled()) {
+			return null;
+		}
+
+
+		// The list of commands provided by each layers
+		EList<ComputePropertyValueCommand> collectedCmds = new BasicEList<ComputePropertyValueCommand>(getLayers().size());
+
+		// Walk all layers and return the first cmd that is not null for specified view and proerty.
+		for (LayerExpression layer : getLayers()) {
+
+			ComputePropertyValueCommand cmd = layer.getComputePropertyValueCommand(view, property);
+			if (cmd != null) {
+				collectedCmds.add(cmd);
+			}
+		}
+
+		// If we have no subcommand, skip the value by returning null.
+		if (collectedCmds.size() == 0) {
+			return null;
+		}
+
+		// Call the corresponding operator
+		ComputePropertyValueCommand res;
+		try {
+			res = getLayerOperatorDescriptor().getPropertyOperator(property).getComputePropertyValueCommand(collectedCmds);
+		} catch (UnsupportedOperationException e) {
+			// The operator is not implemented
+			log.error(this.getClass().getSimpleName() + "WARNING - Operator not implemened for LayerOperator '"
+					+ this.getClass().getSimpleName() + "' and property '"
+					+ property.getName() + "'.", e);
+			return null;
+		}
+		return res;
+
+	}
+
+	/**
+	 * For each property, add the first property value in the list of result.
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, java.util.List)
+	 *
+	 * @param view
+	 * @param property
+	 * @return
+	 * @throws LayersException
+	 */
+	@Override
+	public EList<ComputePropertyValueCommand> getPropertiesComputePropertyValueCommand(View view, List<Property> properties) throws LayersException {
+
+		// Do nothing if the layer is disable.
+		if (!isLayerEnabled()) {
+			return null;
+		}
+
+		// Simple implementation
+		// TODO Check if we can optimize
+
+		// the result list
+		EList<ComputePropertyValueCommand> resCmds = new BasicEList<ComputePropertyValueCommand>(properties.size());
+		boolean isCmdFound = false;
+
+		// Walk each property
+		for (Property property : properties) {
+			if (property == null) {
+				resCmds.add(null);
+				continue;
+			}
+
+			ComputePropertyValueCommand cmd = getComputePropertyValueCommand(view, property);
+			if (cmd != null) {
+				isCmdFound = true;
+			}
+			resCmds.add(cmd);
+
+
+		}
+		// Return appropriate result
+		if (isCmdFound) {
+			return resCmds;
+		}
+		else {
+			// No command ==> null
+			return null;
+		}
+	}
+
+	/**
+	 * For each view, add the first property value in the list of result.
+	 *
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getViewsComputePropertyValueCommand(java.util.List, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 *
+	 * @param view
+	 * @param property
+	 * @return
+	 * @throws LayersException
+	 */
+	@Override
+	public EList<ComputePropertyValueCommand> getViewsComputePropertyValueCommand(List<View> views, Property property) throws LayersException {
+
+		// Do nothing if the layer is disable.
+		if (!isLayerEnabled()) {
+			return null;
+		}
+
+		// Simple implementation
+		// TODO Check if we can optimize
+
+		// the result list
+		EList<ComputePropertyValueCommand> resCmds = new BasicEList<ComputePropertyValueCommand>(views.size());
+		boolean isCmdFound = false;
+
+		for (View view : views) {
+			if (view == null) {
+				resCmds.add(null);
+				continue;
+			}
+
+			ComputePropertyValueCommand cmd = getComputePropertyValueCommand(view, property);
+			if (cmd != null) {
+				isCmdFound = true;
+			}
+			resCmds.add(cmd);
+		}
+
+		// Return appropriate result
+		if (isCmdFound) {
+			return resCmds;
+		}
+		else {
+			// No command ==> null
+			return null;
+		}
+	}
+
+} // AbstractLayerOperatorImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/AllViewsDerivedLayerImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/AllViewsDerivedLayerImpl.java
new file mode 100755
index 0000000..13664e0
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/AllViewsDerivedLayerImpl.java
@@ -0,0 +1,73 @@
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.eclipse.papyrus.layers.stackmodel.Activator.log;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.AllViewsDerivedLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.util.DiagramViewToListSynchronizer;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>All Views Derived Layer</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class AllViewsDerivedLayerImpl extends AbstractLayerImpl implements AllViewsDerivedLayer {
+
+	/**
+	 * Object used to synchronize a list with the diagram's views.
+	 *
+	 */
+	protected DiagramViewToListSynchronizer viewsListSynchronizer;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected AllViewsDerivedLayerImpl() {
+		super();
+		// init the synchronizer
+		viewsListSynchronizer = new DiagramViewToListSynchronizer(getViews());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.ALL_VIEWS_DERIVED_LAYER;
+	}
+
+	/**
+	 * This layer has just been added to a LayerStack.
+	 * Set the root of the expression.
+	 * Set the views to match the result of the expression.
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#initLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayersStack)
+	 *
+	 * @param owningLayersStack
+	 */
+	@Override
+	public void initLayer(LayersStack owningLayersStack) {
+		super.initLayer(owningLayersStack);
+
+		if (log.isDebugEnabled()) {
+			log.debug(this.getClass().getSimpleName() + ".initLayer(" + owningLayersStack + ")");
+		}
+
+		// Set the diagram associated to this tree of layers
+		viewsListSynchronizer.setDiagram(owningLayersStack.getDiagram());
+	}
+} // AllViewsDerivedLayerImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/AndStackedLayerOperatorDescriptorImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/AndStackedLayerOperatorDescriptorImpl.java
new file mode 100755
index 0000000..dccf2ec
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/AndStackedLayerOperatorDescriptorImpl.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.AndStackedLayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>And Stacked Layer Operator Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class AndStackedLayerOperatorDescriptorImpl extends StackedLayerOperatorDescriptorImpl implements AndStackedLayerOperatorDescriptor {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected AndStackedLayerOperatorDescriptorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.AND_STACKED_LAYER_OPERATOR_DESCRIPTOR;
+	}
+
+} // AndStackedLayerOperatorDescriptorImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/ApplicationDependantElementImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/ApplicationDependantElementImpl.java
new file mode 100755
index 0000000..23028ea
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/ApplicationDependantElementImpl.java
@@ -0,0 +1,180 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.ApplicationDependantElement;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Application Dependant Element</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.ApplicationDependantElementImpl#getApplication <em>Application</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class ApplicationDependantElementImpl extends MinimalEObjectImpl.Container implements ApplicationDependantElement {
+	/**
+	 * The cached value of the '{@link #getApplication() <em>Application</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getApplication()
+	 * @generated
+	 * @ordered
+	 */
+	protected LayersStackApplication application;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ApplicationDependantElementImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.APPLICATION_DEPENDANT_ELEMENT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayersStackApplication getApplication() {
+		if (application != null && application.eIsProxy()) {
+			InternalEObject oldApplication = (InternalEObject) application;
+			application = (LayersStackApplication) eResolveProxy(oldApplication);
+			if (application != oldApplication) {
+				if (eNotificationRequired()) {
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, LayersPackage.APPLICATION_DEPENDANT_ELEMENT__APPLICATION, oldApplication, application));
+				}
+			}
+		}
+		return application;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayersStackApplication basicGetApplication() {
+		return application;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setApplication(LayersStackApplication newApplication) {
+		LayersStackApplication oldApplication = application;
+		application = newApplication;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.APPLICATION_DEPENDANT_ELEMENT__APPLICATION, oldApplication, application));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case LayersPackage.APPLICATION_DEPENDANT_ELEMENT__APPLICATION:
+			if (resolve) {
+				return getApplication();
+			}
+			return basicGetApplication();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case LayersPackage.APPLICATION_DEPENDANT_ELEMENT__APPLICATION:
+			setApplication((LayersStackApplication) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.APPLICATION_DEPENDANT_ELEMENT__APPLICATION:
+			setApplication((LayersStackApplication) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.APPLICATION_DEPENDANT_ELEMENT__APPLICATION:
+			return application != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} // ApplicationDependantElementImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/BooleanInstanceImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/BooleanInstanceImpl.java
new file mode 100755
index 0000000..44d4011
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/BooleanInstanceImpl.java
@@ -0,0 +1,220 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Boolean Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.BooleanInstanceImpl#isValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class BooleanInstanceImpl extends TypeInstanceImpl implements BooleanInstance {
+	/**
+	 * The default value of the '{@link #isValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #isValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean VALUE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #isValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean value = VALUE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected BooleanInstanceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.BOOLEAN_INSTANCE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean isValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setValue(boolean newValue) {
+		boolean oldValue = value;
+		value = newValue;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.BOOLEAN_INSTANCE__VALUE, oldValue, value));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case LayersPackage.BOOLEAN_INSTANCE__VALUE:
+			return isValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case LayersPackage.BOOLEAN_INSTANCE__VALUE:
+			setValue((Boolean) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.BOOLEAN_INSTANCE__VALUE:
+			setValue(VALUE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.BOOLEAN_INSTANCE__VALUE:
+			return value != VALUE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void setValueFromString(String value) {
+
+		if (value == null || value.length() == 0) {
+			return;
+		}
+
+		setValue(Boolean.parseBoolean(value.trim()));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void setValueFromInstance(TypeInstance value) {
+
+		// Check if the value is of the right instance
+		if (!getClass().isInstance(value)) {
+			return;
+		}
+
+		BooleanInstance instance = (BooleanInstance) value;
+		setValue(instance.isValue());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (value: ");
+		result.append(value);
+		result.append(')');
+		return result.toString();
+	}
+
+} // BooleanInstanceImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/BooleanTypeImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/BooleanTypeImpl.java
new file mode 100755
index 0000000..2e9c806
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/BooleanTypeImpl.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanType;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Boolean Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class BooleanTypeImpl extends TypeImpl implements BooleanType {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected BooleanTypeImpl() {
+		super();
+		setName("boolean");
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public TypeInstance createInstance() {
+		return LayersFactory.eINSTANCE.createBooleanInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.BOOLEAN_TYPE;
+	}
+
+} // BooleanTypeImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/ColorImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/ColorImpl.java
new file mode 100755
index 0000000..6a27006
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/ColorImpl.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.Color;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Color</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class ColorImpl extends TypeImpl implements Color {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected ColorImpl() {
+		super();
+		setName("Color");
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public TypeInstance createInstance() {
+		return LayersFactory.eINSTANCE.createColorInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.COLOR;
+	}
+
+} // ColorImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/ColorInstanceImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/ColorInstanceImpl.java
new file mode 100755
index 0000000..e88fd76
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/ColorInstanceImpl.java
@@ -0,0 +1,224 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Color Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.ColorInstanceImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ColorInstanceImpl extends TypeInstanceImpl implements ColorInstance {
+	/**
+	 * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int VALUE_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected int value = VALUE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected ColorInstanceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.COLOR_INSTANCE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setValue(int newValue) {
+		int oldValue = value;
+		value = newValue;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.COLOR_INSTANCE__VALUE, oldValue, value));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case LayersPackage.COLOR_INSTANCE__VALUE:
+			return getValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case LayersPackage.COLOR_INSTANCE__VALUE:
+			setValue((Integer) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.COLOR_INSTANCE__VALUE:
+			setValue(VALUE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.COLOR_INSTANCE__VALUE:
+			return value != VALUE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void setValueFromString(String value) {
+
+		if (value == null || value.length() == 0) {
+			return;
+		}
+
+		try {
+			setValue(Integer.parseInt(value.trim()));
+		} catch (NumberFormatException e) {
+			// fail silently
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void setValueFromInstance(TypeInstance value) {
+
+		// Check if the value is of the right instance
+		if (!getClass().isInstance(value)) {
+			return;
+		}
+
+		ColorInstance instance = (ColorInstance) value;
+		setValue(instance.getValue());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (value: ");
+		result.append(value);
+		result.append(')');
+		return result.toString();
+	}
+
+} // ColorInstanceImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/CustomLayerOperatorImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/CustomLayerOperatorImpl.java
new file mode 100755
index 0000000..5bfc2af
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/CustomLayerOperatorImpl.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Custom Layer Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class CustomLayerOperatorImpl extends LayerOperatorImpl implements CustomLayerOperator {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected CustomLayerOperatorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.CUSTOM_LAYER_OPERATOR;
+	}
+
+} // CustomLayerOperatorImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/CustomPropertyOperatorImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/CustomPropertyOperatorImpl.java
new file mode 100755
index 0000000..e0bbbd0
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/CustomPropertyOperatorImpl.java
@@ -0,0 +1,418 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.eclipse.papyrus.layers.stackmodel.Activator.log;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.ServiceException;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Custom Property Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomPropertyOperatorImpl#getClassname <em>Classname</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomPropertyOperatorImpl#getOperatorInstance <em>Operator Instance</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomPropertyOperatorImpl#getClassBundleID <em>Class Bundle ID</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CustomPropertyOperatorImpl extends PropertyOperatorImpl implements CustomPropertyOperator {
+	/**
+	 * The default value of the '{@link #getClassname() <em>Classname</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getClassname()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String CLASSNAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getClassname() <em>Classname</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getClassname()
+	 * @generated
+	 * @ordered
+	 */
+	protected String classname = CLASSNAME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getOperatorInstance() <em>Operator Instance</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getOperatorInstance()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final CustomPropertyOperatorsInstance OPERATOR_INSTANCE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getOperatorInstance() <em>Operator Instance</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getOperatorInstance()
+	 * @generated
+	 * @ordered
+	 */
+	protected CustomPropertyOperatorsInstance operatorInstance = OPERATOR_INSTANCE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getClassBundleID() <em>Class Bundle ID</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getClassBundleID()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String CLASS_BUNDLE_ID_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getClassBundleID() <em>Class Bundle ID</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getClassBundleID()
+	 * @generated
+	 * @ordered
+	 */
+	protected String classBundleID = CLASS_BUNDLE_ID_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected CustomPropertyOperatorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.CUSTOM_PROPERTY_OPERATOR;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getClassname() {
+		return classname;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void setClassname(String newClassname) {
+		String oldClassname = classname;
+		classname = newClassname;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.CUSTOM_PROPERTY_OPERATOR__CLASSNAME, oldClassname, classname));
+		}
+		// Reset the actual instance
+		setOperatorInstance(null);
+
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public CustomPropertyOperatorsInstance getOperatorInstance() {
+		if (operatorInstance == null) {
+			try {
+				resetOperatorInstance();
+			} catch (LayersException e) {
+				// TODO log the error
+				log.error("LOG-" + this.getClass().getName()
+						+ "- Can't set custom operator instance '" + e.getMessage() + "'.", e);
+
+			}
+		}
+
+		return operatorInstance;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setOperatorInstance(CustomPropertyOperatorsInstance newOperatorInstance) {
+		CustomPropertyOperatorsInstance oldOperatorInstance = operatorInstance;
+		operatorInstance = newOperatorInstance;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.CUSTOM_PROPERTY_OPERATOR__OPERATOR_INSTANCE, oldOperatorInstance, operatorInstance));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getClassBundleID() {
+		return classBundleID;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setClassBundleID(String newClassBundleID) {
+		String oldClassBundleID = classBundleID;
+		classBundleID = newClassBundleID;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.CUSTOM_PROPERTY_OPERATOR__CLASS_BUNDLE_ID, oldClassBundleID, classBundleID));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @throws LayersException
+	 * @generated NOT
+	 */
+	@Override
+	public void resetOperatorInstance() throws LayersException {
+		if (getClassname() == null) {
+			return;
+		}
+
+		Class<?> opClass = loadClass();
+		try {
+			setOperatorInstance((CustomPropertyOperatorsInstance) opClass.newInstance());
+		} catch (Exception e) {
+			throw new LayersException("Can't create instance for CustomOperator " + getName(), e);
+		}
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyOperatorImpl#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList)
+	 *
+	 * @param property
+	 * @return
+	 * @throws LayersException
+	 * @generated NOT
+	 */
+	@Override
+	public ComputePropertyValueCommand getComputePropertyValueCommand(EList<ComputePropertyValueCommand> property) throws LayersException {
+		return getOperatorInstance().getComputePropertyValueCommand(property);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case LayersPackage.CUSTOM_PROPERTY_OPERATOR__CLASSNAME:
+			return getClassname();
+		case LayersPackage.CUSTOM_PROPERTY_OPERATOR__OPERATOR_INSTANCE:
+			return getOperatorInstance();
+		case LayersPackage.CUSTOM_PROPERTY_OPERATOR__CLASS_BUNDLE_ID:
+			return getClassBundleID();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case LayersPackage.CUSTOM_PROPERTY_OPERATOR__CLASSNAME:
+			setClassname((String) newValue);
+			return;
+		case LayersPackage.CUSTOM_PROPERTY_OPERATOR__OPERATOR_INSTANCE:
+			setOperatorInstance((CustomPropertyOperatorsInstance) newValue);
+			return;
+		case LayersPackage.CUSTOM_PROPERTY_OPERATOR__CLASS_BUNDLE_ID:
+			setClassBundleID((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.CUSTOM_PROPERTY_OPERATOR__CLASSNAME:
+			setClassname(CLASSNAME_EDEFAULT);
+			return;
+		case LayersPackage.CUSTOM_PROPERTY_OPERATOR__OPERATOR_INSTANCE:
+			setOperatorInstance(OPERATOR_INSTANCE_EDEFAULT);
+			return;
+		case LayersPackage.CUSTOM_PROPERTY_OPERATOR__CLASS_BUNDLE_ID:
+			setClassBundleID(CLASS_BUNDLE_ID_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.CUSTOM_PROPERTY_OPERATOR__CLASSNAME:
+			return CLASSNAME_EDEFAULT == null ? classname != null : !CLASSNAME_EDEFAULT.equals(classname);
+		case LayersPackage.CUSTOM_PROPERTY_OPERATOR__OPERATOR_INSTANCE:
+			return OPERATOR_INSTANCE_EDEFAULT == null ? operatorInstance != null : !OPERATOR_INSTANCE_EDEFAULT.equals(operatorInstance);
+		case LayersPackage.CUSTOM_PROPERTY_OPERATOR__CLASS_BUNDLE_ID:
+			return CLASS_BUNDLE_ID_EDEFAULT == null ? classBundleID != null : !CLASS_BUNDLE_ID_EDEFAULT.equals(classBundleID);
+		}
+		return super.eIsSet(featureID);
+	}
+
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+		case LayersPackage.CUSTOM_PROPERTY_OPERATOR___RESET_OPERATOR_INSTANCE:
+			try {
+				resetOperatorInstance();
+				return null;
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+	/**
+	 * Load the Class object. Try from current ClassLoader, then try using the
+	 * plugin referenced in the serviceDescriptor.PluginId
+	 *
+	 * @return
+	 * @throws ServiceException
+	 */
+	private Class<?> loadClass() throws LayersException {
+		String classname = getClassname();
+		Class<?> classDesc;
+		try {
+			classDesc = Class.forName(classname);
+		} catch (ClassNotFoundException e1) {
+			// Try using bundle
+			try {
+				String bundleID = getClassBundleID();
+				Bundle bundle = Platform.getBundle(bundleID);
+				classDesc = bundle.loadClass(classname);
+			} catch (ClassNotFoundException e2) {
+				throw new LayersException("Can't find class for the name '" + classname + "'.", e2);
+			} catch (NullPointerException e) {
+				throw new LayersException("Can't find bundle '" + getClassBundleID()
+						+ "' for class for the name '" + classname + "'.", e);
+			}
+		}
+
+		return classDesc;
+	}
+
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (classname: ");
+		result.append(classname);
+		result.append(", operatorInstance: ");
+		result.append(operatorInstance);
+		result.append(", classBundleID: ");
+		result.append(classBundleID);
+		result.append(')');
+		return result.toString();
+	}
+
+} // CustomPropertyOperatorImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/CustomTypeImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/CustomTypeImpl.java
new file mode 100755
index 0000000..d156edd
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/CustomTypeImpl.java
@@ -0,0 +1,185 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomType;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Custom Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomTypeImpl#getClassifier <em>Classifier</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CustomTypeImpl extends TypeImpl implements CustomType {
+	/**
+	 * The default value of the '{@link #getClassifier() <em>Classifier</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getClassifier()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String CLASSIFIER_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getClassifier() <em>Classifier</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getClassifier()
+	 * @generated
+	 * @ordered
+	 */
+	protected String classifier = CLASSIFIER_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected CustomTypeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.CUSTOM_TYPE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getClassifier() {
+		return classifier;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setClassifier(String newClassifier) {
+		String oldClassifier = classifier;
+		classifier = newClassifier;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.CUSTOM_TYPE__CLASSIFIER, oldClassifier, classifier));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case LayersPackage.CUSTOM_TYPE__CLASSIFIER:
+			return getClassifier();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case LayersPackage.CUSTOM_TYPE__CLASSIFIER:
+			setClassifier((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.CUSTOM_TYPE__CLASSIFIER:
+			setClassifier(CLASSIFIER_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.CUSTOM_TYPE__CLASSIFIER:
+			return CLASSIFIER_EDEFAULT == null ? classifier != null : !CLASSIFIER_EDEFAULT.equals(classifier);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (classifier: ");
+		result.append(classifier);
+		result.append(')');
+		return result.toString();
+	}
+
+} // CustomTypeImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/DefaultPropertyOperatorImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/DefaultPropertyOperatorImpl.java
new file mode 100755
index 0000000..d90c26f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/DefaultPropertyOperatorImpl.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Default Property Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class DefaultPropertyOperatorImpl extends PropertyOperatorImpl implements DefaultPropertyOperator {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected DefaultPropertyOperatorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.DEFAULT_PROPERTY_OPERATOR;
+	}
+
+} // DefaultPropertyOperatorImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FillImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FillImpl.java
new file mode 100755
index 0000000..752358c
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FillImpl.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.Fill;
+import org.eclipse.papyrus.layers.stackmodel.layers.FillInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Fill</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class FillImpl extends TypeImpl implements Fill {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected FillImpl() {
+		super();
+		setName("Fill");
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public TypeInstance createInstance() {
+		FillInstance instance = LayersFactory.eINSTANCE.createFillInstance();
+		ColorInstance color = LayersFactory.eINSTANCE.createColorInstance();
+		instance.setFillColor(color);
+		return instance;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.FILL;
+	}
+
+} // FillImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FillInstanceImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FillInstanceImpl.java
new file mode 100755
index 0000000..00bcc37
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FillInstanceImpl.java
@@ -0,0 +1,327 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.FillInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Fill Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FillInstanceImpl#getTransparency <em>Transparency</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FillInstanceImpl#getFillColor <em>Fill Color</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FillInstanceImpl extends TypeInstanceImpl implements FillInstance {
+	/**
+	 * The default value of the '{@link #getTransparency() <em>Transparency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getTransparency()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int TRANSPARENCY_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getTransparency() <em>Transparency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getTransparency()
+	 * @generated
+	 * @ordered
+	 */
+	protected int transparency = TRANSPARENCY_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getFillColor() <em>Fill Color</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getFillColor()
+	 * @generated
+	 * @ordered
+	 */
+	protected ColorInstance fillColor;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected FillInstanceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.FILL_INSTANCE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getTransparency() {
+		return transparency;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setTransparency(int newTransparency) {
+		int oldTransparency = transparency;
+		transparency = newTransparency;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.FILL_INSTANCE__TRANSPARENCY, oldTransparency, transparency));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ColorInstance getFillColor() {
+		return fillColor;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public NotificationChain basicSetFillColor(ColorInstance newFillColor, NotificationChain msgs) {
+		ColorInstance oldFillColor = fillColor;
+		fillColor = newFillColor;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LayersPackage.FILL_INSTANCE__FILL_COLOR, oldFillColor, newFillColor);
+			if (msgs == null) {
+				msgs = notification;
+			} else {
+				msgs.add(notification);
+			}
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setFillColor(ColorInstance newFillColor) {
+		if (newFillColor != fillColor) {
+			NotificationChain msgs = null;
+			if (fillColor != null) {
+				msgs = ((InternalEObject) fillColor).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LayersPackage.FILL_INSTANCE__FILL_COLOR, null, msgs);
+			}
+			if (newFillColor != null) {
+				msgs = ((InternalEObject) newFillColor).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LayersPackage.FILL_INSTANCE__FILL_COLOR, null, msgs);
+			}
+			msgs = basicSetFillColor(newFillColor, msgs);
+			if (msgs != null) {
+				msgs.dispatch();
+			}
+		}
+		else if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.FILL_INSTANCE__FILL_COLOR, newFillColor, newFillColor));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case LayersPackage.FILL_INSTANCE__FILL_COLOR:
+			return basicSetFillColor(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 LayersPackage.FILL_INSTANCE__TRANSPARENCY:
+			return getTransparency();
+		case LayersPackage.FILL_INSTANCE__FILL_COLOR:
+			return getFillColor();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case LayersPackage.FILL_INSTANCE__TRANSPARENCY:
+			setTransparency((Integer) newValue);
+			return;
+		case LayersPackage.FILL_INSTANCE__FILL_COLOR:
+			setFillColor((ColorInstance) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.FILL_INSTANCE__TRANSPARENCY:
+			setTransparency(TRANSPARENCY_EDEFAULT);
+			return;
+		case LayersPackage.FILL_INSTANCE__FILL_COLOR:
+			setFillColor((ColorInstance) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.FILL_INSTANCE__TRANSPARENCY:
+			return transparency != TRANSPARENCY_EDEFAULT;
+		case LayersPackage.FILL_INSTANCE__FILL_COLOR:
+			return fillColor != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void setValueFromString(String value) {
+
+		if (value == null || value.length() == 0) {
+			return;
+		}
+
+		// The value should contains the 2 values, separated by comma
+		// "transparency, fillColor"
+		String[] values = value.split(",");
+		try {
+			setTransparency(Integer.parseInt(values[0].trim()));
+			getFillColor().setValueFromString(values[1]);
+		} catch (NumberFormatException e) {
+			// fail silently
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void setValueFromInstance(TypeInstance value) {
+
+		// Check if the value is of the right instance
+		if (!getClass().isInstance(value)) {
+			return;
+		}
+
+		FillInstance instance = (FillInstance) value;
+		setTransparency(instance.getTransparency());
+		// Set by copy
+		getFillColor().setValueFromInstance(instance.getFillColor());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (transparency: ");
+		result.append(transparency);
+		result.append(')');
+		return result.toString();
+	}
+
+} // FillInstanceImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FillPropertySetterImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FillPropertySetterImpl.java
new file mode 100755
index 0000000..e623408
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FillPropertySetterImpl.java
@@ -0,0 +1,89 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.gmf.runtime.notation.FillStyle;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.layers.FillInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.FillPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Fill Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class FillPropertySetterImpl extends PropertySetterImpl implements FillPropertySetter {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected FillPropertySetterImpl() {
+		super();
+		setPropertyName("fill");
+
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.FILL_PROPERTY_SETTER;
+	}
+
+	/**
+	 * Set the property of the specified view.
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterImpl#setValue(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance)
+	 *
+	 * @param view
+	 * @param value
+	 */
+	@Override
+	public void setValue(View view, TypeInstance value) {
+
+		// Try to get the FontStyle object to modify
+		FillStyle style;
+		if (view instanceof FillStyle) {
+			// Try directly (case of Shape ...)
+			style = (FillStyle) view;
+		}
+		else {
+			// Try as additionnal style
+			style = (FillStyle) view.getStyle(NotationPackage.eINSTANCE.getFillStyle());
+		}
+
+		// Set values
+		if (style != null) {
+
+			FillInstance fillValue = (FillInstance) value;
+
+			style.setFillColor(fillValue.getFillColor().getValue());
+			style.setTransparency(fillValue.getTransparency());
+		}
+
+	}
+} // FillPropertySetterImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FolderElementImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FolderElementImpl.java
new file mode 100755
index 0000000..23d62c1
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FolderElementImpl.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.FolderElement;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Folder Element</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class FolderElementImpl extends MinimalEObjectImpl.Container implements FolderElement {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected FolderElementImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.FOLDER_ELEMENT;
+	}
+
+} // FolderElementImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FolderImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FolderImpl.java
new file mode 100755
index 0000000..e025714
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FolderImpl.java
@@ -0,0 +1,245 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.layers.stackmodel.layers.Folder;
+import org.eclipse.papyrus.layers.stackmodel.layers.FolderElement;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Folder</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FolderImpl#getElements <em>Elements</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FolderImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FolderImpl extends FolderElementImpl implements Folder {
+	/**
+	 * The cached value of the '{@link #getElements() <em>Elements</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getElements()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<FolderElement> elements;
+
+	/**
+	 * 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 cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected FolderImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.FOLDER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EList<FolderElement> getElements() {
+		if (elements == null) {
+			elements = new EObjectContainmentEList<FolderElement>(FolderElement.class, this, LayersPackage.FOLDER__ELEMENTS);
+		}
+		return elements;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.FOLDER__NAME, oldName, name));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case LayersPackage.FOLDER__ELEMENTS:
+			return ((InternalEList<?>) getElements()).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 LayersPackage.FOLDER__ELEMENTS:
+			return getElements();
+		case LayersPackage.FOLDER__NAME:
+			return getName();
+		}
+		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 LayersPackage.FOLDER__ELEMENTS:
+			getElements().clear();
+			getElements().addAll((Collection<? extends FolderElement>) newValue);
+			return;
+		case LayersPackage.FOLDER__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 LayersPackage.FOLDER__ELEMENTS:
+			getElements().clear();
+			return;
+		case LayersPackage.FOLDER__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.FOLDER__ELEMENTS:
+			return elements != null && !elements.isEmpty();
+		case LayersPackage.FOLDER__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} // FolderImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FontInstanceImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FontInstanceImpl.java
new file mode 100755
index 0000000..414f21b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FontInstanceImpl.java
@@ -0,0 +1,419 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.FontInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Font Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FontInstanceImpl#getFontColor <em>Font Color</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FontInstanceImpl#getFontName <em>Font Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FontInstanceImpl#getFontHeigh <em>Font Heigh</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FontInstanceImpl#isBold <em>Bold</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FontInstanceImpl extends TypeInstanceImpl implements FontInstance {
+	/**
+	 * 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 = 15053796;
+
+	/**
+	 * The cached value of the '{@link #getFontColor() <em>Font Color</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getFontColor()
+	 * @generated
+	 * @ordered
+	 */
+	protected int fontColor = FONT_COLOR_EDEFAULT;
+
+	/**
+	 * 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 = "Segoe UI";
+
+	/**
+	 * The cached value of the '{@link #getFontName() <em>Font Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getFontName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String fontName = FONT_NAME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getFontHeigh() <em>Font Heigh</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getFontHeigh()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int FONT_HEIGH_EDEFAULT = 9;
+
+	/**
+	 * The cached value of the '{@link #getFontHeigh() <em>Font Heigh</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getFontHeigh()
+	 * @generated
+	 * @ordered
+	 */
+	protected int fontHeigh = FONT_HEIGH_EDEFAULT;
+
+	/**
+	 * 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 = true;
+
+	/**
+	 * The cached value of the '{@link #isBold() <em>Bold</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #isBold()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean bold = BOLD_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected FontInstanceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.FONT_INSTANCE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getFontColor() {
+		return fontColor;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setFontColor(int newFontColor) {
+		int oldFontColor = fontColor;
+		fontColor = newFontColor;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.FONT_INSTANCE__FONT_COLOR, oldFontColor, fontColor));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getFontName() {
+		return fontName;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setFontName(String newFontName) {
+		String oldFontName = fontName;
+		fontName = newFontName;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.FONT_INSTANCE__FONT_NAME, oldFontName, fontName));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getFontHeigh() {
+		return fontHeigh;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setFontHeigh(int newFontHeigh) {
+		int oldFontHeigh = fontHeigh;
+		fontHeigh = newFontHeigh;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.FONT_INSTANCE__FONT_HEIGH, oldFontHeigh, fontHeigh));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean isBold() {
+		return bold;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setBold(boolean newBold) {
+		boolean oldBold = bold;
+		bold = newBold;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.FONT_INSTANCE__BOLD, oldBold, bold));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case LayersPackage.FONT_INSTANCE__FONT_COLOR:
+			return getFontColor();
+		case LayersPackage.FONT_INSTANCE__FONT_NAME:
+			return getFontName();
+		case LayersPackage.FONT_INSTANCE__FONT_HEIGH:
+			return getFontHeigh();
+		case LayersPackage.FONT_INSTANCE__BOLD:
+			return isBold();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case LayersPackage.FONT_INSTANCE__FONT_COLOR:
+			setFontColor((Integer) newValue);
+			return;
+		case LayersPackage.FONT_INSTANCE__FONT_NAME:
+			setFontName((String) newValue);
+			return;
+		case LayersPackage.FONT_INSTANCE__FONT_HEIGH:
+			setFontHeigh((Integer) newValue);
+			return;
+		case LayersPackage.FONT_INSTANCE__BOLD:
+			setBold((Boolean) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.FONT_INSTANCE__FONT_COLOR:
+			setFontColor(FONT_COLOR_EDEFAULT);
+			return;
+		case LayersPackage.FONT_INSTANCE__FONT_NAME:
+			setFontName(FONT_NAME_EDEFAULT);
+			return;
+		case LayersPackage.FONT_INSTANCE__FONT_HEIGH:
+			setFontHeigh(FONT_HEIGH_EDEFAULT);
+			return;
+		case LayersPackage.FONT_INSTANCE__BOLD:
+			setBold(BOLD_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.FONT_INSTANCE__FONT_COLOR:
+			return fontColor != FONT_COLOR_EDEFAULT;
+		case LayersPackage.FONT_INSTANCE__FONT_NAME:
+			return FONT_NAME_EDEFAULT == null ? fontName != null : !FONT_NAME_EDEFAULT.equals(fontName);
+		case LayersPackage.FONT_INSTANCE__FONT_HEIGH:
+			return fontHeigh != FONT_HEIGH_EDEFAULT;
+		case LayersPackage.FONT_INSTANCE__BOLD:
+			return bold != BOLD_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void setValueFromString(String value) {
+
+		if (value == null || value.length() == 0) {
+			return;
+		}
+
+		// The value should contains the values, separated by comma
+		// "FontName, FontHeight, FontColor, Bold"
+		String[] values = value.split(",");
+		int i = 0;
+		try {
+			setFontName(values[i++].trim());
+			setFontHeigh(Integer.parseInt(values[i++].trim()));
+			setFontColor(Integer.parseInt(values[i++].trim()));
+			setBold(Boolean.parseBoolean(values[i++].trim()));
+		} catch (NumberFormatException e) {
+			// fail silently
+			e.printStackTrace();
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void setValueFromInstance(TypeInstance value) {
+
+		// Check if the value is of the right instance
+		if (!getClass().isInstance(value)) {
+			return;
+		}
+
+		FontInstance instance = (FontInstance) value;
+		setFontName(instance.getFontName());
+		setFontHeigh(instance.getFontHeigh());
+		setFontColor(instance.getFontColor());
+		setBold(instance.isBold());
+	}
+
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (fontColor: ");
+		result.append(fontColor);
+		result.append(", fontName: ");
+		result.append(fontName);
+		result.append(", fontHeigh: ");
+		result.append(fontHeigh);
+		result.append(", bold: ");
+		result.append(bold);
+		result.append(')');
+		return result.toString();
+	}
+
+} // FontInstanceImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FontPropertySetterImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FontPropertySetterImpl.java
new file mode 100755
index 0000000..7e40f09
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FontPropertySetterImpl.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.gmf.runtime.notation.FontStyle;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.layers.FontInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.FontPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Font Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class FontPropertySetterImpl extends PropertySetterImpl implements FontPropertySetter {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected FontPropertySetterImpl() {
+		super();
+		setPropertyName("font");
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.FONT_PROPERTY_SETTER;
+	}
+
+	/**
+	 * Set the property of the specified view.
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterImpl#setValue(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance)
+	 *
+	 * @param view
+	 * @param value
+	 */
+	@Override
+	public void setValue(View view, TypeInstance value) {
+
+		// Try to get the FontStyle object to modify
+		FontStyle style;
+		if (view instanceof FontStyle) {
+			// Try directly (case of Shape ...)
+			style = (FontStyle) view;
+		}
+		else {
+			// Try as additionnal style
+			style = (FontStyle) view.getStyle(NotationPackage.eINSTANCE.getFontStyle());
+		}
+
+		// Set values
+		if (style != null) {
+			FontInstance lineValue = (FontInstance) value;
+
+			style.setFontColor(lineValue.getFontColor());
+			style.setFontName(lineValue.getFontName());
+			style.setFontHeight(lineValue.getFontHeigh());
+			style.setBold(lineValue.isBold());
+		}
+
+	}
+
+} // FontPropertySetterImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FontTypeImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FontTypeImpl.java
new file mode 100755
index 0000000..22d1cb7
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/FontTypeImpl.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.FontInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.FontType;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Font Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class FontTypeImpl extends TypeImpl implements FontType {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected FontTypeImpl() {
+		super();
+		setName("FontType");
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.FONT_TYPE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public TypeInstance createInstance() {
+		FontInstance instance = LayersFactory.eINSTANCE.createFontInstance();
+		return instance;
+	}
+
+} // FontTypeImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IntInstanceImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IntInstanceImpl.java
new file mode 100755
index 0000000..791f43f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IntInstanceImpl.java
@@ -0,0 +1,225 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.IntInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Int Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.IntInstanceImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class IntInstanceImpl extends TypeInstanceImpl implements IntInstance {
+	/**
+	 * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int VALUE_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected int value = VALUE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected IntInstanceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.INT_INSTANCE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setValue(int newValue) {
+		int oldValue = value;
+		value = newValue;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.INT_INSTANCE__VALUE, oldValue, value));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case LayersPackage.INT_INSTANCE__VALUE:
+			return getValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case LayersPackage.INT_INSTANCE__VALUE:
+			setValue((Integer) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.INT_INSTANCE__VALUE:
+			setValue(VALUE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.INT_INSTANCE__VALUE:
+			return value != VALUE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void setValueFromString(String value) {
+
+		if (value == null || value.length() == 0) {
+			return;
+		}
+
+		try {
+			setValue(Integer.parseInt(value.trim()));
+		} catch (NumberFormatException e) {
+			// fail silently
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void setValueFromInstance(TypeInstance value) {
+
+		// Check if the value is of the right instance
+		if (!getClass().isInstance(value)) {
+			return;
+		}
+
+		IntInstance instance = (IntInstance) value;
+		setValue(instance.getValue());
+	}
+
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (value: ");
+		result.append(value);
+		result.append(')');
+		return result.toString();
+	}
+
+} // IntInstanceImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IntTypeImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IntTypeImpl.java
new file mode 100755
index 0000000..ad63420
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IntTypeImpl.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.IntType;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Int Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class IntTypeImpl extends TypeImpl implements IntType {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected IntTypeImpl() {
+		super();
+		setName("int");
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public TypeInstance createInstance() {
+		return LayersFactory.eINSTANCE.createIntInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.INT_TYPE;
+	}
+
+} // IntTypeImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IsAbstractUmlSetterImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IsAbstractUmlSetterImpl.java
new file mode 100755
index 0000000..0c5d54c
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IsAbstractUmlSetterImpl.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.IsAbstractUmlSetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.eclipse.uml2.uml.Classifier;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>is Abstract Uml Setter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class IsAbstractUmlSetterImpl extends PropertySetterImpl implements IsAbstractUmlSetter {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected IsAbstractUmlSetterImpl() {
+		super();
+		setPropertyName("isAbstract");
+
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.IS_ABSTRACT_UML_SETTER;
+	}
+
+	/**
+	 * Set the property of the specified view.
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterImpl#setValue(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance)
+	 *
+	 * @param view
+	 * @param value
+	 */
+	@Override
+	public void setValue(View view, TypeInstance value) {
+
+
+		BooleanInstance boolValue = (BooleanInstance) value;
+
+		EObject ele = view.getElement();
+		if (ele instanceof Classifier) {
+			Classifier classifier = (Classifier) ele;
+			classifier.setIsAbstract(boolValue.isValue());
+		}
+
+	}
+
+} // IsAbstractUmlSetterImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IsValidPropertySetterImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IsValidPropertySetterImpl.java
new file mode 100755
index 0000000..04e100f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IsValidPropertySetterImpl.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.layers.IsValidPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Is Valid Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class IsValidPropertySetterImpl extends PropertySetterImpl implements IsValidPropertySetter {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected IsValidPropertySetterImpl() {
+		super();
+		setPropertyName("isValid");
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.IS_VALID_PROPERTY_SETTER;
+	}
+
+
+	/**
+	 * Set the value in the view
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterImpl#setValue(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance)
+	 *
+	 * @param view
+	 * @param value
+	 */
+	@Override
+	public void setValue(View view, TypeInstance value) {
+		// TODO implements this method
+	}
+} // IsValidPropertySetterImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IsVisiblePropertySetterImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IsVisiblePropertySetterImpl.java
new file mode 100755
index 0000000..799b12d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/IsVisiblePropertySetterImpl.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.gmf.runtime.notation.Connector;
+import org.eclipse.gmf.runtime.notation.Shape;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.IsVisiblePropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Is Visible Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class IsVisiblePropertySetterImpl extends PropertySetterImpl implements IsVisiblePropertySetter {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected IsVisiblePropertySetterImpl() {
+		super();
+		setPropertyName("isVisible");
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.IS_VISIBLE_PROPERTY_SETTER;
+	}
+
+	/**
+	 * Set the property of the specified view.
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterImpl#setValue(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance)
+	 *
+	 * @param view
+	 * @param value
+	 */
+	@Override
+	public void setValue(View view, TypeInstance value) {
+
+
+		BooleanInstance boolValue = (BooleanInstance) value;
+
+		if (view instanceof Shape || view instanceof Connector) {
+			// We restrict to Shape and Connector
+			view.setVisible(boolValue.isValue());
+		}
+
+	}
+
+} // IsVisiblePropertySetterImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerApplicationFactoryImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerApplicationFactoryImpl.java
new file mode 100755
index 0000000..a4cd949
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerApplicationFactoryImpl.java
@@ -0,0 +1,225 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Layer Application Factory</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerApplicationFactoryImpl#getApplication <em>Application</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LayerApplicationFactoryImpl extends MinimalEObjectImpl.Container implements LayerApplicationFactory {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerApplicationFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.LAYER_APPLICATION_FACTORY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayersStackApplication getApplication() {
+		if (eContainerFeatureID() != LayersPackage.LAYER_APPLICATION_FACTORY__APPLICATION) {
+			return null;
+		}
+		return (LayersStackApplication) eInternalContainer();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public NotificationChain basicSetApplication(LayersStackApplication newApplication, NotificationChain msgs) {
+		msgs = eBasicSetContainer((InternalEObject) newApplication, LayersPackage.LAYER_APPLICATION_FACTORY__APPLICATION, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setApplication(LayersStackApplication newApplication) {
+		if (newApplication != eInternalContainer() || (eContainerFeatureID() != LayersPackage.LAYER_APPLICATION_FACTORY__APPLICATION && newApplication != null)) {
+			if (EcoreUtil.isAncestor(this, newApplication)) {
+				throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
+			}
+			NotificationChain msgs = null;
+			if (eInternalContainer() != null) {
+				msgs = eBasicRemoveFromContainer(msgs);
+			}
+			if (newApplication != null) {
+				msgs = ((InternalEObject) newApplication).eInverseAdd(this, LayersPackage.LAYERS_STACK_APPLICATION__FACTORY, LayersStackApplication.class, msgs);
+			}
+			msgs = basicSetApplication(newApplication, msgs);
+			if (msgs != null) {
+				msgs.dispatch();
+			}
+		}
+		else if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYER_APPLICATION_FACTORY__APPLICATION, newApplication, newApplication));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case LayersPackage.LAYER_APPLICATION_FACTORY__APPLICATION:
+			if (eInternalContainer() != null) {
+				msgs = eBasicRemoveFromContainer(msgs);
+			}
+			return basicSetApplication((LayersStackApplication) 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 LayersPackage.LAYER_APPLICATION_FACTORY__APPLICATION:
+			return basicSetApplication(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+		switch (eContainerFeatureID()) {
+		case LayersPackage.LAYER_APPLICATION_FACTORY__APPLICATION:
+			return eInternalContainer().eInverseRemove(this, LayersPackage.LAYERS_STACK_APPLICATION__FACTORY, LayersStackApplication.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 LayersPackage.LAYER_APPLICATION_FACTORY__APPLICATION:
+			return getApplication();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case LayersPackage.LAYER_APPLICATION_FACTORY__APPLICATION:
+			setApplication((LayersStackApplication) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.LAYER_APPLICATION_FACTORY__APPLICATION:
+			setApplication((LayersStackApplication) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.LAYER_APPLICATION_FACTORY__APPLICATION:
+			return getApplication() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} // LayerApplicationFactoryImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerDescriptorImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerDescriptorImpl.java
new file mode 100755
index 0000000..b4f1f58
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerDescriptorImpl.java
@@ -0,0 +1,180 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Layer Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerDescriptorImpl#getPropertyRegistry <em>Property Registry</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LayerDescriptorImpl extends MinimalEObjectImpl.Container implements LayerDescriptor {
+	/**
+	 * The cached value of the '{@link #getPropertyRegistry() <em>Property Registry</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getPropertyRegistry()
+	 * @generated
+	 * @ordered
+	 */
+	protected PropertyRegistry propertyRegistry;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerDescriptorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.LAYER_DESCRIPTOR;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public PropertyRegistry getPropertyRegistry() {
+		if (propertyRegistry != null && propertyRegistry.eIsProxy()) {
+			InternalEObject oldPropertyRegistry = (InternalEObject) propertyRegistry;
+			propertyRegistry = (PropertyRegistry) eResolveProxy(oldPropertyRegistry);
+			if (propertyRegistry != oldPropertyRegistry) {
+				if (eNotificationRequired()) {
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, LayersPackage.LAYER_DESCRIPTOR__PROPERTY_REGISTRY, oldPropertyRegistry, propertyRegistry));
+				}
+			}
+		}
+		return propertyRegistry;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public PropertyRegistry basicGetPropertyRegistry() {
+		return propertyRegistry;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setPropertyRegistry(PropertyRegistry newPropertyRegistry) {
+		PropertyRegistry oldPropertyRegistry = propertyRegistry;
+		propertyRegistry = newPropertyRegistry;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYER_DESCRIPTOR__PROPERTY_REGISTRY, oldPropertyRegistry, propertyRegistry));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case LayersPackage.LAYER_DESCRIPTOR__PROPERTY_REGISTRY:
+			if (resolve) {
+				return getPropertyRegistry();
+			}
+			return basicGetPropertyRegistry();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case LayersPackage.LAYER_DESCRIPTOR__PROPERTY_REGISTRY:
+			setPropertyRegistry((PropertyRegistry) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.LAYER_DESCRIPTOR__PROPERTY_REGISTRY:
+			setPropertyRegistry((PropertyRegistry) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.LAYER_DESCRIPTOR__PROPERTY_REGISTRY:
+			return propertyRegistry != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} // LayerDescriptorImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerDescriptorRegistryImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerDescriptorRegistryImpl.java
new file mode 100755
index 0000000..0bf4658
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerDescriptorRegistryImpl.java
@@ -0,0 +1,167 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Layer Descriptor Registry</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerDescriptorRegistryImpl#getLayerDescriptors <em>Layer Descriptors</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LayerDescriptorRegistryImpl extends MinimalEObjectImpl.Container implements LayerDescriptorRegistry {
+	/**
+	 * The cached value of the '{@link #getLayerDescriptors() <em>Layer Descriptors</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getLayerDescriptors()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LayerDescriptor> layerDescriptors;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerDescriptorRegistryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.LAYER_DESCRIPTOR_REGISTRY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EList<LayerDescriptor> getLayerDescriptors() {
+		if (layerDescriptors == null) {
+			layerDescriptors = new EObjectContainmentEList<LayerDescriptor>(LayerDescriptor.class, this, LayersPackage.LAYER_DESCRIPTOR_REGISTRY__LAYER_DESCRIPTORS);
+		}
+		return layerDescriptors;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case LayersPackage.LAYER_DESCRIPTOR_REGISTRY__LAYER_DESCRIPTORS:
+			return ((InternalEList<?>) getLayerDescriptors()).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 LayersPackage.LAYER_DESCRIPTOR_REGISTRY__LAYER_DESCRIPTORS:
+			return getLayerDescriptors();
+		}
+		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 LayersPackage.LAYER_DESCRIPTOR_REGISTRY__LAYER_DESCRIPTORS:
+			getLayerDescriptors().clear();
+			getLayerDescriptors().addAll((Collection<? extends LayerDescriptor>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.LAYER_DESCRIPTOR_REGISTRY__LAYER_DESCRIPTORS:
+			getLayerDescriptors().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.LAYER_DESCRIPTOR_REGISTRY__LAYER_DESCRIPTORS:
+			return layerDescriptors != null && !layerDescriptors.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} // LayerDescriptorRegistryImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerExpressionImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerExpressionImpl.java
new file mode 100755
index 0000000..de55216
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerExpressionImpl.java
@@ -0,0 +1,862 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.BadStateException;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerState;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Layer Expression</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getDescription <em>Description</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#isLayerEnabledInternal <em>Is Layer Enabled Internal</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#isLayerEnabled <em>Is Layer Enabled</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#isBranchEnabled <em>Is Branch Enabled</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getOwningLayersStack <em>Owning Layers Stack</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getState <em>State</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class LayerExpressionImpl extends
+		ApplicationDependantElementImpl implements LayerExpression {
+	/**
+	 * 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 cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+	/**
+	 * 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 cached value of the '{@link #getDescription() <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected String description = DESCRIPTION_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isLayerEnabledInternal() <em>Is Layer Enabled Internal</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #isLayerEnabledInternal()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean IS_LAYER_ENABLED_INTERNAL_EDEFAULT = false;
+	/**
+	 * The default value of the '{@link #isLayerEnabled() <em>Is Layer Enabled</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #isLayerEnabled()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean IS_LAYER_ENABLED_EDEFAULT = true;
+	/**
+	 * The cached value of the '{@link #isLayerEnabled() <em>Is Layer Enabled</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #isLayerEnabled()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean isLayerEnabled = IS_LAYER_ENABLED_EDEFAULT;
+	/**
+	 * The default value of the '{@link #isBranchEnabled() <em>Is Branch Enabled</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #isBranchEnabled()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean IS_BRANCH_ENABLED_EDEFAULT = true;
+	/**
+	 * The cached value of the '{@link #isBranchEnabled() <em>Is Branch Enabled</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #isBranchEnabled()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean isBranchEnabled = IS_BRANCH_ENABLED_EDEFAULT;
+	/**
+	 * The cached value of the '{@link #getOwningLayersStack() <em>Owning Layers Stack</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getOwningLayersStack()
+	 * @generated
+	 * @ordered
+	 */
+	protected LayersStack owningLayersStack;
+
+	/**
+	 * The default value of the '{@link #getState() <em>State</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getState()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final LayerState STATE_EDEFAULT = LayerState.DETACHED;
+	/**
+	 * The cached value of the '{@link #getState() <em>State</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getState()
+	 * @generated
+	 * @ordered
+	 */
+	protected LayerState state = STATE_EDEFAULT;
+	/**
+	 * Listener on this object container (i.e owner) attached/detached events
+	 */
+	protected Adapter containerListener = new AdapterImpl() {
+		@Override
+		public void notifyChanged(Notification msg) {
+
+			switch (msg.getFeatureID(LayerExpression.class)) {
+			case EcorePackage.EOBJECT___ECONTAINER:
+				switch (msg.getEventType()) {
+				case Notification.SET:
+					//
+					owningLayerChanged((LayerOperator) msg.getNewValue(), (LayerOperator) msg.getOldValue());
+					break;
+
+				case Notification.UNSET:
+					owningLayerChanged((LayerOperator) msg.getNewValue(), (LayerOperator) msg.getOldValue());
+					break;
+
+				default:
+					break;
+				}
+				break;
+			}
+			;
+		}
+
+	};
+
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected LayerExpressionImpl() {
+		super();
+
+		// Listen on this object attachment / detachment from its container.
+		// When this node is atttached to a parent, the owningLayerStack property is set.
+		// This is done in owningLayerChanged.
+		eAdapters().add(containerListener);
+
+	}
+
+	/**
+	 * Start the behaviors associated to this layer.
+	 * This method is called by one of the methods: {@link #startAfterReloading()} or {@link #attachToLayersStack(LayersStack)}.
+	 */
+	protected void startBehaviors() {
+
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.LAYER_EXPRESSION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYER_EXPRESSION__NAME, oldName, name));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getDescription() {
+		return description;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setDescription(String newDescription) {
+		String oldDescription = description;
+		description = newDescription;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYER_EXPRESSION__DESCRIPTION, oldDescription, description));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public boolean isLayerEnabledInternal() {
+		return isLayerEnabled();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean isLayerEnabled() {
+		return isLayerEnabled;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void setIsLayerEnabled(boolean newIsLayerEnabled) {
+		boolean oldIsLayerEnabled = isLayerEnabled;
+		isLayerEnabled = newIsLayerEnabled;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYER_EXPRESSION__IS_LAYER_ENABLED, oldIsLayerEnabled, isLayerEnabled));
+		}
+
+		// Disable the branch
+		setIsBranchEnabled(isLayerEnabled);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean isBranchEnabled() {
+		return isBranchEnabled;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void setIsBranchEnabled(boolean newIsBranchEnabled) {
+		boolean oldIsBranchEnabled = isBranchEnabled;
+		isBranchEnabled = newIsBranchEnabled;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYER_EXPRESSION__IS_BRANCH_ENABLED, oldIsBranchEnabled, isBranchEnabled));
+		}
+
+		// Propagate to children.
+		// This is done in LayerOperation.
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayersStack getOwningLayersStack() {
+		if (owningLayersStack != null && owningLayersStack.eIsProxy()) {
+			InternalEObject oldOwningLayersStack = (InternalEObject) owningLayersStack;
+			owningLayersStack = (LayersStack) eResolveProxy(oldOwningLayersStack);
+			if (owningLayersStack != oldOwningLayersStack) {
+				if (eNotificationRequired()) {
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, LayersPackage.LAYER_EXPRESSION__OWNING_LAYERS_STACK, oldOwningLayersStack, owningLayersStack));
+				}
+			}
+		}
+		return owningLayersStack;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayersStack basicGetOwningLayersStack() {
+		return owningLayersStack;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setOwningLayersStack(LayersStack newOwningLayersStack) {
+		LayersStack oldOwningLayersStack = owningLayersStack;
+		owningLayersStack = newOwningLayersStack;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYER_EXPRESSION__OWNING_LAYERS_STACK, oldOwningLayersStack, owningLayersStack));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayerState getState() {
+		return state;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setState(LayerState newState) {
+		LayerState oldState = state;
+		state = newState == null ? STATE_EDEFAULT : newState;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYER_EXPRESSION__STATE, oldState, state));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public LayersStack getLayersStack() throws NotFoundException {
+
+		LayersStack res = getOwningLayersStack();
+		if (res != null) {
+			return res;
+		}
+
+		throw new NotFoundException("LayersStack is not set in the Layer '" + getName() + "'");
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void enterAttachedState() throws LayersException {
+		// do nothing
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void attach() throws LayersException {
+
+		// Stop if already in ATTACHED state.
+		if (getState() == LayerState.ATTACHED) {
+			return;
+		}
+
+		// Check required attributes
+		if (getApplication() == null || getOwningLayersStack() == null || eContainer() == null) {
+			throw new BadStateException("A required attribute is not set. The Layer can't be attached."
+					+ "[layerName=" + getName()
+					+ ", application=" + (getApplication() == null ? "null" : "ok")
+					+ ", owningLayersStack=" + (getOwningLayersStack() == null ? "null" : "ok")
+					+ ", container=" + (eContainer() == null ? "null" : "ok")
+					+ "]");
+		}
+
+		// Can go in attached mode
+		setState(LayerState.ATTACHED);
+		enterAttachedState();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Subclass can overload in order to stop some behaviors.
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void detach() throws LayersException {
+
+
+		// Change the state
+		exitAttachedState();
+		setState(LayerState.DETACHED);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void exitAttachedState() {
+		// do nothing.
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Start this element after its reloading by EMF
+	 * This method is called recursively by the parent of this element. <br>
+	 * This default implementation start the associated behaviors.
+	 *
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	public void startAfterReloading() {
+		startBehaviors();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ComputePropertyValueCommand getComputePropertyValueCommand(View view, Property property) throws LayersException {
+		// 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 EList<ComputePropertyValueCommand> getViewsComputePropertyValueCommand(EList<View> view, Property property) throws LayersException {
+		// 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 EList<ComputePropertyValueCommand> getPropertiesComputePropertyValueCommand(View view, EList<Property> property) throws LayersException {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * This default implementation set the layerStack, and start behaviors.
+	 * This method can be overriden by subclasses. In this case, subclass must ensure that
+	 * the {@link #owningLayersStack} is set and the behaviors are started.
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void attachToLayersStack(LayersStack owningLayersStack) {
+
+		// the owning stack
+		setOwningLayersStack(owningLayersStack);
+
+		// Start associated behavior
+		startBehaviors();
+	}
+
+	/**
+	 * Init this Layer.
+	 * Called by the LayerStack as soon as the layer is added in the tree of layers.
+	 * This method can be subclassed to init a particular layer.
+	 *
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	public void initLayer(LayersStack owningLayersStack) {
+
+		// the owning stack
+		setOwningLayersStack(owningLayersStack);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public EList<ComputePropertyValueCommand> getViewsComputePropertyValueCommand(List<View> view, Property property) throws LayersException {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public EList<ComputePropertyValueCommand> getPropertiesComputePropertyValueCommand(View view, List<Property> property) throws LayersException {
+		// 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 LayersPackage.LAYER_EXPRESSION__NAME:
+			return getName();
+		case LayersPackage.LAYER_EXPRESSION__DESCRIPTION:
+			return getDescription();
+		case LayersPackage.LAYER_EXPRESSION__IS_LAYER_ENABLED_INTERNAL:
+			return isLayerEnabledInternal();
+		case LayersPackage.LAYER_EXPRESSION__IS_LAYER_ENABLED:
+			return isLayerEnabled();
+		case LayersPackage.LAYER_EXPRESSION__IS_BRANCH_ENABLED:
+			return isBranchEnabled();
+		case LayersPackage.LAYER_EXPRESSION__OWNING_LAYERS_STACK:
+			if (resolve) {
+				return getOwningLayersStack();
+			}
+			return basicGetOwningLayersStack();
+		case LayersPackage.LAYER_EXPRESSION__STATE:
+			return getState();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case LayersPackage.LAYER_EXPRESSION__NAME:
+			setName((String) newValue);
+			return;
+		case LayersPackage.LAYER_EXPRESSION__DESCRIPTION:
+			setDescription((String) newValue);
+			return;
+		case LayersPackage.LAYER_EXPRESSION__IS_LAYER_ENABLED:
+			setIsLayerEnabled((Boolean) newValue);
+			return;
+		case LayersPackage.LAYER_EXPRESSION__IS_BRANCH_ENABLED:
+			setIsBranchEnabled((Boolean) newValue);
+			return;
+		case LayersPackage.LAYER_EXPRESSION__OWNING_LAYERS_STACK:
+			setOwningLayersStack((LayersStack) newValue);
+			return;
+		case LayersPackage.LAYER_EXPRESSION__STATE:
+			setState((LayerState) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.LAYER_EXPRESSION__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		case LayersPackage.LAYER_EXPRESSION__DESCRIPTION:
+			setDescription(DESCRIPTION_EDEFAULT);
+			return;
+		case LayersPackage.LAYER_EXPRESSION__IS_LAYER_ENABLED:
+			setIsLayerEnabled(IS_LAYER_ENABLED_EDEFAULT);
+			return;
+		case LayersPackage.LAYER_EXPRESSION__IS_BRANCH_ENABLED:
+			setIsBranchEnabled(IS_BRANCH_ENABLED_EDEFAULT);
+			return;
+		case LayersPackage.LAYER_EXPRESSION__OWNING_LAYERS_STACK:
+			setOwningLayersStack((LayersStack) null);
+			return;
+		case LayersPackage.LAYER_EXPRESSION__STATE:
+			setState(STATE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.LAYER_EXPRESSION__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		case LayersPackage.LAYER_EXPRESSION__DESCRIPTION:
+			return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+		case LayersPackage.LAYER_EXPRESSION__IS_LAYER_ENABLED_INTERNAL:
+			return isLayerEnabledInternal() != IS_LAYER_ENABLED_INTERNAL_EDEFAULT;
+		case LayersPackage.LAYER_EXPRESSION__IS_LAYER_ENABLED:
+			return isLayerEnabled != IS_LAYER_ENABLED_EDEFAULT;
+		case LayersPackage.LAYER_EXPRESSION__IS_BRANCH_ENABLED:
+			return isBranchEnabled != IS_BRANCH_ENABLED_EDEFAULT;
+		case LayersPackage.LAYER_EXPRESSION__OWNING_LAYERS_STACK:
+			return owningLayersStack != null;
+		case LayersPackage.LAYER_EXPRESSION__STATE:
+			return state != STATE_EDEFAULT;
+		}
+		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 LayersPackage.LAYER_EXPRESSION___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY:
+			try {
+				return getComputePropertyValueCommand((View) arguments.get(0), (Property) arguments.get(1));
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		case LayersPackage.LAYER_EXPRESSION___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY:
+			try {
+				return getViewsComputePropertyValueCommand((EList<View>) arguments.get(0), (Property) arguments.get(1));
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		case LayersPackage.LAYER_EXPRESSION___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST:
+			try {
+				return getPropertiesComputePropertyValueCommand((View) arguments.get(0), (EList<Property>) arguments.get(1));
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		case LayersPackage.LAYER_EXPRESSION___ATTACH_TO_LAYERS_STACK__LAYERSSTACK:
+			attachToLayersStack((LayersStack) arguments.get(0));
+			return null;
+		case LayersPackage.LAYER_EXPRESSION___GET_LAYERS_STACK:
+			try {
+				return getLayersStack();
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		case LayersPackage.LAYER_EXPRESSION___ENTER_ATTACHED_STATE:
+			try {
+				enterAttachedState();
+				return null;
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		case LayersPackage.LAYER_EXPRESSION___ATTACH:
+			try {
+				attach();
+				return null;
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		case LayersPackage.LAYER_EXPRESSION___DETACH:
+			try {
+				detach();
+				return null;
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		case LayersPackage.LAYER_EXPRESSION___EXIT_ATTACHED_STATE:
+			exitAttachedState();
+			return null;
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(", description: ");
+		result.append(description);
+		result.append(", isLayerEnabled: ");
+		result.append(isLayerEnabled);
+		result.append(", isBranchEnabled: ");
+		result.append(isBranchEnabled);
+		result.append(", state: ");
+		result.append(state);
+		result.append(')');
+		return result.toString();
+	}
+
+	/**
+	 * This method is called when the container of this parent has changed.
+	 * Set the #owningLayerStack property and the {@link #isBranchEnabled()} property
+	 *
+	 * @param newValue
+	 * @param oldValue
+	 */
+	private void owningLayerChanged(LayerOperator newParent, LayerOperator oldParent) {
+		// propagate values
+		if (newParent != null) {
+			setOwningLayersStack(newParent.getOwningLayersStack());
+			setIsBranchEnabled(newParent.isBranchEnabled());
+		}
+	};
+
+} // LayerExpressionImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerImpl.java
new file mode 100755
index 0000000..be61fa4
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerImpl.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Layer</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class LayerImpl extends AbstractLayerImpl implements Layer {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected LayerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.LAYER;
+	}
+
+
+} // LayerImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerNamedStyleImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerNamedStyleImpl.java
new file mode 100755
index 0000000..6c4685a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerNamedStyleImpl.java
@@ -0,0 +1,167 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.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.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.gmf.runtime.notation.impl.NamedStyleImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Layer Named Style</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerNamedStyleImpl#getLayersStack <em>Layers Stack</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LayerNamedStyleImpl extends NamedStyleImpl implements LayerNamedStyle {
+	/**
+	 * The cached value of the '{@link #getLayersStack() <em>Layers Stack</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getLayersStack()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LayersStack> layersStack;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerNamedStyleImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.LAYER_NAMED_STYLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EList<LayersStack> getLayersStack() {
+		if (layersStack == null) {
+			layersStack = new EObjectContainmentEList<LayersStack>(LayersStack.class, this, LayersPackage.LAYER_NAMED_STYLE__LAYERS_STACK);
+		}
+		return layersStack;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case LayersPackage.LAYER_NAMED_STYLE__LAYERS_STACK:
+			return ((InternalEList<?>) getLayersStack()).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 LayersPackage.LAYER_NAMED_STYLE__LAYERS_STACK:
+			return getLayersStack();
+		}
+		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 LayersPackage.LAYER_NAMED_STYLE__LAYERS_STACK:
+			getLayersStack().clear();
+			getLayersStack().addAll((Collection<? extends LayersStack>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.LAYER_NAMED_STYLE__LAYERS_STACK:
+			getLayersStack().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.LAYER_NAMED_STYLE__LAYERS_STACK:
+			return layersStack != null && !layersStack.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} // LayerNamedStyleImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorDescriptorImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorDescriptorImpl.java
new file mode 100755
index 0000000..1b22dcb
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorDescriptorImpl.java
@@ -0,0 +1,337 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Layer Operator Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl#getPropertyOperators <em>Property Operators</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LayerOperatorDescriptorImpl extends MinimalEObjectImpl.Container implements LayerOperatorDescriptor {
+
+	/**
+	 * The cached value of the '{@link #getPropertyOperators() <em>Property Operators</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getPropertyOperators()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<PropertyOperator> propertyOperators;
+
+	/**
+	 * 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 cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerOperatorDescriptorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public EList<PropertyOperator> getPropertyOperators() {
+		if (propertyOperators == null) {
+			propertyOperators = new EObjectResolvingEList<PropertyOperator>(PropertyOperator.class, this, LayersPackage.LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS) {
+				// Allows double
+				@Override
+				protected boolean isUnique() {
+					return false;
+				}
+
+			};
+		}
+		return propertyOperators;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYER_OPERATOR_DESCRIPTOR__NAME, oldName, name));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public PropertyOperator getPropertyOperator(Property property) throws NotFoundException {
+		try {
+			return getPropertyOperators().get(property.getIndex());
+		} catch (IndexOutOfBoundsException e) {
+			throw new NotFoundException("Can't find operator for property '" + property.getName() + "' at index " + property.getIndex());
+		}
+	}
+
+	/**
+	 * Set the operator at the property's index.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void setPropertyOperator(Property property, PropertyOperator operator) {
+
+		// Set the operator at the property's index.
+		getPropertyOperators().set(property.getIndex(), operator);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public AbstractLayerOperator createLayerOperator() {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * Initialize all list indexed by Properties'index.
+	 * Increase the actual list in order that they can contains the specified number of properties.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void setPropertyCollectionSize(int size, DefaultPropertyOperator defaultPropertyOperator) {
+
+		List<PropertyOperator> operators = getPropertyOperators();
+		int actualSize = operators.size();
+		// Check if we need to increase the size.
+		if (actualSize >= size) {
+			// do nothing
+			return;
+		}
+
+		// Add missing elements
+		for (int i = actualSize; i < size; i++) {
+			operators.add(defaultPropertyOperator);
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS:
+			return getPropertyOperators();
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR__NAME:
+			return getName();
+		}
+		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 LayersPackage.LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS:
+			getPropertyOperators().clear();
+			getPropertyOperators().addAll((Collection<? extends PropertyOperator>) newValue);
+			return;
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR__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 LayersPackage.LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS:
+			getPropertyOperators().clear();
+			return;
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS:
+			return propertyOperators != null && !propertyOperators.isEmpty();
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR___GET_PROPERTY_OPERATOR__PROPERTY:
+			try {
+				return getPropertyOperator((Property) arguments.get(0));
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_OPERATOR__PROPERTY_PROPERTYOPERATOR:
+			setPropertyOperator((Property) arguments.get(0), (PropertyOperator) arguments.get(1));
+			return null;
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR___CREATE_LAYER_OPERATOR:
+			return createLayerOperator();
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_COLLECTION_SIZE__INT_DEFAULTPROPERTYOPERATOR:
+			setPropertyCollectionSize((Integer) arguments.get(0), (DefaultPropertyOperator) arguments.get(1));
+			return null;
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} // LayerOperatorDescriptorImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorDescriptorRegistryImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorDescriptorRegistryImpl.java
new file mode 100755
index 0000000..165de11
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorDescriptorRegistryImpl.java
@@ -0,0 +1,504 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Layer Operator Descriptor Registry</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl#getDescriptors <em>Descriptors</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl#getPropertyOperators <em>Property Operators</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl#getPropertyCollectionSize <em>Property Collection Size</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl#getDefaultOperator <em>Default Operator</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LayerOperatorDescriptorRegistryImpl extends MinimalEObjectImpl.Container implements LayerOperatorDescriptorRegistry {
+	/**
+	 * The cached value of the '{@link #getDescriptors() <em>Descriptors</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getDescriptors()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LayerOperatorDescriptor> descriptors;
+
+	/**
+	 * The cached value of the '{@link #getPropertyOperators() <em>Property Operators</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getPropertyOperators()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<PropertyOperator> propertyOperators;
+
+	/**
+	 * The default value of the '{@link #getPropertyCollectionSize() <em>Property Collection Size</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getPropertyCollectionSize()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int PROPERTY_COLLECTION_SIZE_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getPropertyCollectionSize() <em>Property Collection Size</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getPropertyCollectionSize()
+	 * @generated
+	 * @ordered
+	 */
+	protected int propertyCollectionSize = PROPERTY_COLLECTION_SIZE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getDefaultOperator() <em>Default Operator</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getDefaultOperator()
+	 * @generated
+	 * @ordered
+	 */
+	protected DefaultPropertyOperator defaultOperator;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected LayerOperatorDescriptorRegistryImpl() {
+		super();
+		// Set the defaultOperator
+		defaultOperator = LayersFactory.eINSTANCE.createDefaultPropertyOperator();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.LAYER_OPERATOR_DESCRIPTOR_REGISTRY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EList<LayerOperatorDescriptor> getDescriptors() {
+		if (descriptors == null) {
+			descriptors = new EObjectContainmentEList<LayerOperatorDescriptor>(LayerOperatorDescriptor.class, this, LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS);
+		}
+		return descriptors;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EList<PropertyOperator> getPropertyOperators() {
+		if (propertyOperators == null) {
+			propertyOperators = new EObjectContainmentEList<PropertyOperator>(PropertyOperator.class, this, LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_OPERATORS);
+		}
+		return propertyOperators;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getPropertyCollectionSize() {
+		return propertyCollectionSize;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void setPropertyCollectionSize(int newPropertyCollectionSize) {
+		int oldPropertyCollectionSize = propertyCollectionSize;
+		propertyCollectionSize = newPropertyCollectionSize;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_COLLECTION_SIZE, oldPropertyCollectionSize, propertyCollectionSize));
+		}
+
+		// Propagate the size to registered LayerOperator
+		if (newPropertyCollectionSize > oldPropertyCollectionSize) {
+			for (LayerOperatorDescriptor descriptor : getDescriptors()) {
+				descriptor.setPropertyCollectionSize(newPropertyCollectionSize, getDefaultOperator());
+			}
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public DefaultPropertyOperator getDefaultOperator() {
+		if (defaultOperator != null && defaultOperator.eIsProxy()) {
+			InternalEObject oldDefaultOperator = (InternalEObject) defaultOperator;
+			defaultOperator = (DefaultPropertyOperator) eResolveProxy(oldDefaultOperator);
+			if (defaultOperator != oldDefaultOperator) {
+				if (eNotificationRequired()) {
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DEFAULT_OPERATOR, oldDefaultOperator, defaultOperator));
+				}
+			}
+		}
+		return defaultOperator;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public DefaultPropertyOperator basicGetDefaultOperator() {
+		return defaultOperator;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void addLayerOperatorDescriptor(LayerOperatorDescriptor descriptor) {
+
+		// Ensure descriptor size
+		descriptor.setPropertyCollectionSize(getPropertyCollectionSize(), getDefaultOperator());
+		// Add descriptor
+		getDescriptors().add(descriptor);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public LayerOperatorDescriptor getLayerOperatorDescriptor(String name) throws NotFoundException {
+		if (name == null) {
+			throw new NotFoundException("Can't find LayerOperatorDescriptor for name 'null'.");
+		}
+		for (LayerOperatorDescriptor descriptor : getDescriptors()) {
+			if (name.equals(descriptor.getName())) {
+				return descriptor;
+			}
+		}
+		// Not found
+		throw new NotFoundException("Can't find LayerOperatorDescriptor for name '" + name + "'.");
+
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void addPropertyOperator(PropertyOperator operator) {
+		getPropertyOperators().add(operator);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public PropertyOperator getPropertyOperator(String name) throws NotFoundException {
+
+		if (name == null) {
+			throw new NotFoundException("Can't find PropertyOperator for name 'null'.");
+		}
+		for (PropertyOperator op : getPropertyOperators()) {
+			if (name.equals(op.getName())) {
+				return op;
+			}
+		}
+		// Not found
+		throw new NotFoundException("Can't find PropertyOperator for name '" + name + "'.");
+
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @throws NotFoundException
+	 * @generated NOT
+	 */
+	@Override
+	public void attachOperatorToDescriptor(Property property, String operatorName, String layerDescriptorName) throws NotFoundException {
+
+		// Ensure that PropertiesCollectionSize can contain the property index.
+		if (getPropertyCollectionSize() <= property.getIndex()) {
+			setPropertyCollectionSize(property.getIndex());
+		}
+
+		// Attach the operator to the LayerOperator
+		PropertyOperator op = getPropertyOperator(operatorName);
+		LayerOperatorDescriptor layerOp = getLayerOperatorDescriptor(layerDescriptorName);
+
+		layerOp.setPropertyOperator(property, op);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public AbstractLayerOperator createLayerOperator(String layerOperatorID) throws LayersException {
+
+		LayerOperatorDescriptor desc = getLayerOperatorDescriptor(layerOperatorID);
+
+		AbstractLayerOperator newLayerOperator = desc.createLayerOperator();
+
+		// newLayerOperator.setApplication();
+		return newLayerOperator;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS:
+			return ((InternalEList<?>) getDescriptors()).basicRemove(otherEnd, msgs);
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_OPERATORS:
+			return ((InternalEList<?>) getPropertyOperators()).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 LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS:
+			return getDescriptors();
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_OPERATORS:
+			return getPropertyOperators();
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_COLLECTION_SIZE:
+			return getPropertyCollectionSize();
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DEFAULT_OPERATOR:
+			if (resolve) {
+				return getDefaultOperator();
+			}
+			return basicGetDefaultOperator();
+		}
+		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 LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS:
+			getDescriptors().clear();
+			getDescriptors().addAll((Collection<? extends LayerOperatorDescriptor>) newValue);
+			return;
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_OPERATORS:
+			getPropertyOperators().clear();
+			getPropertyOperators().addAll((Collection<? extends PropertyOperator>) newValue);
+			return;
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_COLLECTION_SIZE:
+			setPropertyCollectionSize((Integer) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS:
+			getDescriptors().clear();
+			return;
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_OPERATORS:
+			getPropertyOperators().clear();
+			return;
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_COLLECTION_SIZE:
+			setPropertyCollectionSize(PROPERTY_COLLECTION_SIZE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS:
+			return descriptors != null && !descriptors.isEmpty();
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_OPERATORS:
+			return propertyOperators != null && !propertyOperators.isEmpty();
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_COLLECTION_SIZE:
+			return propertyCollectionSize != PROPERTY_COLLECTION_SIZE_EDEFAULT;
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DEFAULT_OPERATOR:
+			return defaultOperator != 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 LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY___ADD_LAYER_OPERATOR_DESCRIPTOR__LAYEROPERATORDESCRIPTOR:
+			addLayerOperatorDescriptor((LayerOperatorDescriptor) arguments.get(0));
+			return null;
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY___GET_LAYER_OPERATOR_DESCRIPTOR__STRING:
+			try {
+				return getLayerOperatorDescriptor((String) arguments.get(0));
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY___ADD_PROPERTY_OPERATOR__PROPERTYOPERATOR:
+			addPropertyOperator((PropertyOperator) arguments.get(0));
+			return null;
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY___GET_PROPERTY_OPERATOR__STRING:
+			try {
+				return getPropertyOperator((String) arguments.get(0));
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY___ATTACH_OPERATOR_TO_DESCRIPTOR__PROPERTY_STRING_STRING:
+			try {
+				attachOperatorToDescriptor((Property) arguments.get(0), (String) arguments.get(1), (String) arguments.get(2));
+				return null;
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY___CREATE_LAYER_OPERATOR__STRING:
+			try {
+				return createLayerOperator((String) arguments.get(0));
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (propertyCollectionSize: ");
+		result.append(propertyCollectionSize);
+		result.append(')');
+		return result.toString();
+	}
+
+} // LayerOperatorDescriptorRegistryImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorImpl.java
new file mode 100755
index 0000000..93ace28
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorImpl.java
@@ -0,0 +1,332 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+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.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Layer Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorImpl#getLayers <em>Layers</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class LayerOperatorImpl extends LayerExpressionImpl implements LayerOperator {
+	/**
+	 * The cached value of the '{@link #getLayers() <em>Layers</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getLayers()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LayerExpression> layers;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerOperatorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.LAYER_OPERATOR;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EList<LayerExpression> getLayers() {
+		if (layers == null) {
+			layers = new EObjectContainmentEList<LayerExpression>(LayerExpression.class, this, LayersPackage.LAYER_OPERATOR__LAYERS);
+		}
+		return layers;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void addLayer(LayerExpression layer) {
+		// getLayers().add(layer);
+		// Add layer on top of the stack.
+		getLayers().add(0, layer);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case LayersPackage.LAYER_OPERATOR__LAYERS:
+			return ((InternalEList<?>) getLayers()).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 LayersPackage.LAYER_OPERATOR__LAYERS:
+			return getLayers();
+		}
+		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 LayersPackage.LAYER_OPERATOR__LAYERS:
+			getLayers().clear();
+			getLayers().addAll((Collection<? extends LayerExpression>) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.LAYER_OPERATOR__LAYERS:
+			getLayers().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.LAYER_OPERATOR__LAYERS:
+			return layers != null && !layers.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int eDerivedOperationID(int baseOperationID, Class<?> baseClass) {
+		if (baseClass == LayersContainer.class) {
+			switch (baseOperationID) {
+			case LayersPackage.LAYERS_CONTAINER___ADD_LAYER__LAYEREXPRESSION:
+				return LayersPackage.LAYER_OPERATOR___ADD_LAYER__LAYEREXPRESSION;
+			default:
+				return -1;
+			}
+		}
+		return super.eDerivedOperationID(baseOperationID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+		case LayersPackage.LAYER_OPERATOR___ADD_LAYER__LAYEREXPRESSION:
+			addLayer((LayerExpression) arguments.get(0));
+			return null;
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+	/**
+	 * Get the LayersStack that own directly or indirectly this Layer.
+	 * Throw an exception if no {@link LayersStack} can be found. <br>
+	 * Lookup is done recursively in parent containers.
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getLayersStack()
+	 *
+	 * @return
+	 * @throws NotFoundException
+	 */
+	// @Override
+	// public LayersStack getLayersStack() throws NotFoundException {
+	// // TODO: performance improvment. It is possible to avoid the lookup
+	// // by caching the LayersStack, or by setting a corresponding property
+	// // in the model
+	// return (LayersStack)ECoreUtils.lookupAncestorOfType(this, LayersPackage.eINSTANCE.getLayersStack());
+	// }
+
+	/**
+	 * Propagate the change to children
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#setIsBranchEnabled(boolean)
+	 *
+	 * @param newIsBranchEnabled
+	 */
+	@Override
+	public void setIsBranchEnabled(boolean newIsBranchEnabled) {
+		// First, set the value.
+		super.setIsBranchEnabled(newIsBranchEnabled);
+		// Now, propagate
+		boolean value = isBranchEnabled();
+		for (LayerExpression layer : getLayers()) {
+			layer.setIsBranchEnabled(value);
+		}
+	}
+
+	/**
+	 * Set the value then propagate to children nodes.
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#setOwningLayersStack(org.eclipse.papyrus.layers.stackmodel.layers.LayersStack)
+	 *
+	 * @param newOwningLayersStack
+	 */
+	@Override
+	public void setOwningLayersStack(LayersStack newOwningLayersStack) {
+		// Set the value
+		super.setOwningLayersStack(newOwningLayersStack);
+		// Now propagate to children
+		LayersStack value = getOwningLayersStack();
+		for (LayerExpression layer : getLayers()) {
+			layer.setOwningLayersStack(value);
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Start this element after its reloading by EMF
+	 * This method is called recursively by the parent of this element.
+	 *
+	 * <!-- end-user-doc -->
+	 *
+	 * @throws LayersException
+	 * @generated NOT
+	 */
+	@Override
+	public void attach() throws LayersException {
+		// Try to attach this Layer
+		super.attach();
+		// attach children
+		for (LayerExpression l : getLayers()) {
+			l.attach();
+		}
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#detach()
+	 *
+	 * @throws LayersException
+	 */
+	@Override
+	public void detach() throws LayersException {
+		// Detach this Layer
+		super.detach();
+		// detach children
+		for (LayerExpression l : getLayers()) {
+			l.detach();
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @deprecated unless we need it again
+	 * @generated NOT
+	 */
+	@Deprecated
+	@Override
+	public void attachToLayersStack(LayersStack owningLayersStack) {
+
+		// the owning stack
+		setOwningLayersStack(owningLayersStack);
+
+		// Ensure child is started, if any
+		for (LayerExpression l : getLayers()) {
+			l.attachToLayersStack(owningLayersStack);
+		}
+
+		// Start local behaviors
+		startBehaviors();
+	}
+
+
+} // LayerOperatorImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerStackDescriptorRegistryImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerStackDescriptorRegistryImpl.java
new file mode 100755
index 0000000..686974c
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerStackDescriptorRegistryImpl.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerStackDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Layer Stack Descriptor Registry</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class LayerStackDescriptorRegistryImpl extends MinimalEObjectImpl.Container implements LayerStackDescriptorRegistry {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayerStackDescriptorRegistryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.LAYER_STACK_DESCRIPTOR_REGISTRY;
+	}
+
+} // LayerStackDescriptorRegistryImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersFactoryForStackImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersFactoryForStackImpl.java
new file mode 100755
index 0000000..7af1eb2
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersFactoryForStackImpl.java
@@ -0,0 +1,209 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactoryForStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * This factory allows to create Layers dedicated to a Application and {@link LayersStack} <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayersFactoryForStackImpl implements LayersFactoryForStack {
+
+	/**
+	 * Index used to postfix the layer name.
+	 */
+	protected int newIndex = 0;
+
+	public final String LAYER_NAME_PREFIX = "layer";
+
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static LayersFactoryForStack init() {
+		return new LayersFactoryForStackImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayersFactoryForStackImpl() {
+		super();
+	}
+
+	public String findNewLayerName(LayersContainer parent) {
+
+		String proposedName = LAYER_NAME_PREFIX + newIndex++;
+
+		// Check if the name is available in the targetted container
+		if (parent instanceof LayerOperator) {
+			LayerOperator parentOperator = (LayerOperator) parent;
+			while (getLayerByName(parentOperator, proposedName) != null) {
+				proposedName = LAYER_NAME_PREFIX + newIndex++;
+			}
+		}
+		return proposedName;
+	}
+
+	/**
+	 * Get a layer by its name.
+	 *
+	 * @param parentOperator
+	 *            The container containing layers
+	 * @param name
+	 *            Name of the requested layer.
+	 * @return The requested layer, or null.
+	 */
+	private LayerExpression getLayerByName(LayerOperator parentOperator, String name) {
+
+
+		for (LayerExpression layer : parentOperator.getLayers()) {
+			if (name.equals(layer.getName())) {
+				return layer;
+			}
+		}
+		// Not found
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public LayersStack createLayersStack() {
+		throw new UnsupportedOperationException("Not yet implemented");
+	}
+
+
+	/**
+	 *
+	 * @param layer
+	 *            The layer to init
+	 * @param parentLayer
+	 *            The parent Layer to which layer is added
+	 * @param owningStack
+	 *            The {@link LayersStack} owning the tree of layers
+	 * @param application
+	 *            The application required by layer.
+	 *
+	 * @return
+	 * @throws LayersException
+	 */
+	@Override
+	public LayerExpression initLayer(LayerExpression layer, LayersContainer parentLayer, LayersStack owningStack, LayersStackApplication application) throws LayersException {
+		// Init the created layer
+		layer.setApplication(application);
+		layer.setName(findNewLayerName(parentLayer));
+		parentLayer.addLayer(layer);
+		layer.setOwningLayersStack(owningStack);
+		// Start the layer
+		layer.attach();
+
+		return layer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @throws LayersException
+	 * @generated NOT
+	 */
+	@Override
+	public Layer createLayer(LayersContainer parent, LayersStack owningStack, LayersStackApplication application) throws LayersException {
+		Layer layer = LayersFactory.eINSTANCE.createLayer();
+		// Init the created layer
+		initLayer(layer, parent, owningStack, application);
+
+		return layer;
+	}
+
+	@Override
+	public RegExpLayer createRegExpLayer(LayersContainer parent, LayersStack owningStack, LayersStackApplication application) throws LayersException {
+		RegExpLayer layer = LayersFactory.eINSTANCE.createRegExpLayer();
+		// Init the created layer
+		initLayer(layer, parent, owningStack, application);
+
+		return layer;
+	}
+
+	@Override
+	public TopLayerOperator createTopLayerOperator(LayersContainer parent, LayersStack owningStack, LayersStackApplication application) throws LayersException {
+		TopLayerOperator layer = LayersFactory.eINSTANCE.createTopLayerOperator();
+		// Init the created layer
+		initLayer(layer, parent, owningStack, application);
+
+		return layer;
+	}
+
+	@Override
+	public StackedLayerOperator createStackedLayerOperator(LayersContainer parent, LayersStack owningStack, LayersStackApplication application) throws LayersException {
+		StackedLayerOperator layer = LayersFactory.eINSTANCE.createStackedLayerOperator();
+		// Init the created layer
+		initLayer(layer, parent, owningStack, application);
+
+		return layer;
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersFactoryForStack#createLayerOperator(java.lang.String, org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack,
+	 *      org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)
+	 *
+	 * @param layerOperatorID
+	 * @param parent
+	 * @param owningStack
+	 * @param application
+	 * @return
+	 * @throws LayersException
+	 */
+	@Override
+	public AbstractLayerOperator createLayerOperator(String layerOperatorID, LayersContainer parent, LayersStack owningStack, LayersStackApplication application) throws LayersException {
+		// Create a layer !
+		AbstractLayerOperator layerOperator = application.getLayerOperatorDescriptorRegistry().createLayerOperator(layerOperatorID);
+		// Init the created layer
+		initLayer(layerOperator, parent, owningStack, application);
+
+		return layerOperator;
+	}
+
+
+
+
+} // LayersFactoryImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersFactoryImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersFactoryImpl.java
new file mode 100755
index 0000000..0c24e2f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersFactoryImpl.java
@@ -0,0 +1,1297 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.util.Map;
+
+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.layers.stackmodel.BadStateException;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.AllViewsDerivedLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.AndStackedLayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanType;
+import org.eclipse.papyrus.layers.stackmodel.layers.Color;
+import org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomType;
+import org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.EventLevel;
+import org.eclipse.papyrus.layers.stackmodel.layers.Fill;
+import org.eclipse.papyrus.layers.stackmodel.layers.FillInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.FillPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.Folder;
+import org.eclipse.papyrus.layers.stackmodel.layers.FontInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.FontPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.FontType;
+import org.eclipse.papyrus.layers.stackmodel.layers.IntInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.IntType;
+import org.eclipse.papyrus.layers.stackmodel.layers.IsAbstractUmlSetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.IsValidPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.IsVisiblePropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerStackDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerState;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.LineInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LinePropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LineType;
+import org.eclipse.papyrus.layers.stackmodel.layers.Metamodel;
+import org.eclipse.papyrus.layers.stackmodel.layers.NullInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.NullPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.OrStackedLayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayerDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.SimpleLayerDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.StringInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.StringType;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.Type;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry;
+import org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayersFactoryImpl extends EFactoryImpl implements LayersFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public static LayersFactory init() {
+		try {
+			LayersFactory theLayersFactory = (LayersFactory) EPackage.Registry.INSTANCE.getEFactory(LayersPackage.eNS_URI);
+			if (theLayersFactory != null) {
+				return theLayersFactory;
+			}
+		} catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new LayersFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayersFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+		case LayersPackage.LAYER_NAMED_STYLE:
+			return createLayerNamedStyle();
+		case LayersPackage.LAYERS_STACK:
+			return createLayersStack();
+		case LayersPackage.LAYERS_STACK_APPLICATION:
+			return createLayersStackApplication();
+		case LayersPackage.LAYER_STACK_DESCRIPTOR_REGISTRY:
+			return createLayerStackDescriptorRegistry();
+		case LayersPackage.PROPERTY_REGISTRY:
+			return createPropertyRegistry();
+		case LayersPackage.PROPERTY:
+			return createProperty();
+		case LayersPackage.METAMODEL:
+			return createMetamodel();
+		case LayersPackage.TYPE_REGISTRY:
+			return createTypeRegistry();
+		case LayersPackage.STRING_TO_TYPE_MAP:
+			return (EObject) createStringToTypeMap();
+		case LayersPackage.LAYER_DESCRIPTOR_REGISTRY:
+			return createLayerDescriptorRegistry();
+		case LayersPackage.LAYER_DESCRIPTOR:
+			return createLayerDescriptor();
+		case LayersPackage.LAYER_APPLICATION_FACTORY:
+			return createLayerApplicationFactory();
+		case LayersPackage.PROPERTY_SETTER_REGISTRY:
+			return createPropertySetterRegistry();
+		case LayersPackage.STRING_TO_PROPERTY_SETTER:
+			return (EObject) createStringToPropertySetter();
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY:
+			return createLayerOperatorDescriptorRegistry();
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR:
+			return createLayerOperatorDescriptor();
+		case LayersPackage.PROPERTY_OPERATOR:
+			return createPropertyOperator();
+		case LayersPackage.DEFAULT_PROPERTY_OPERATOR:
+			return createDefaultPropertyOperator();
+		case LayersPackage.STRING_TO_TYPE_INSTANCE_MAP:
+			return (EObject) createStringToTypeInstanceMap();
+		case LayersPackage.FOLDER:
+			return createFolder();
+		case LayersPackage.INT_INSTANCE:
+			return createIntInstance();
+		case LayersPackage.BOOLEAN_INSTANCE:
+			return createBooleanInstance();
+		case LayersPackage.STRING_INSTANCE:
+			return createStringInstance();
+		case LayersPackage.INT_TYPE:
+			return createIntType();
+		case LayersPackage.BOOLEAN_TYPE:
+			return createBooleanType();
+		case LayersPackage.STRING_TYPE:
+			return createStringType();
+		case LayersPackage.CUSTOM_TYPE:
+			return createCustomType();
+		case LayersPackage.TOP_LAYER_OPERATOR:
+			return createTopLayerOperator();
+		case LayersPackage.STACKED_LAYER_OPERATOR:
+			return createStackedLayerOperator();
+		case LayersPackage.CUSTOM_LAYER_OPERATOR:
+			return createCustomLayerOperator();
+		case LayersPackage.PROPERTY_INDEX:
+			return createPropertyIndex();
+		case LayersPackage.STRING_TO_PROPERTY_INDEX_MAP:
+			return (EObject) createStringToPropertyIndexMap();
+		case LayersPackage.SIMPLE_LAYER_DESCRIPTOR:
+			return createSimpleLayerDescriptor();
+		case LayersPackage.REG_EXP_LAYER_DESCRIPTOR:
+			return createRegExpLayerDescriptor();
+		case LayersPackage.NULL_INSTANCE:
+			return createNullInstance();
+		case LayersPackage.REG_EXP_LAYER:
+			return createRegExpLayer();
+		case LayersPackage.LAYER:
+			return createLayer();
+		case LayersPackage.COLOR:
+			return createColor();
+		case LayersPackage.COLOR_INSTANCE:
+			return createColorInstance();
+		case LayersPackage.FILL_INSTANCE:
+			return createFillInstance();
+		case LayersPackage.FILL:
+			return createFill();
+		case LayersPackage.FILL_PROPERTY_SETTER:
+			return createFillPropertySetter();
+		case LayersPackage.IS_VALID_PROPERTY_SETTER:
+			return createIsValidPropertySetter();
+		case LayersPackage.NULL_PROPERTY_SETTER:
+			return createNullPropertySetter();
+		case LayersPackage.LINE_TYPE:
+			return createLineType();
+		case LayersPackage.LINE_INSTANCE:
+			return createLineInstance();
+		case LayersPackage.LINE_PROPERTY_SETTER:
+			return createLinePropertySetter();
+		case LayersPackage.FONT_PROPERTY_SETTER:
+			return createFontPropertySetter();
+		case LayersPackage.FONT_INSTANCE:
+			return createFontInstance();
+		case LayersPackage.FONT_TYPE:
+			return createFontType();
+		case LayersPackage.IS_VISIBLE_PROPERTY_SETTER:
+			return createIsVisiblePropertySetter();
+		case LayersPackage.TOP_LAYER_OPERATOR_DESCRIPTOR:
+			return createTopLayerOperatorDescriptor();
+		case LayersPackage.STACKED_LAYER_OPERATOR_DESCRIPTOR:
+			return createStackedLayerOperatorDescriptor();
+		case LayersPackage.CUSTOM_PROPERTY_OPERATOR:
+			return createCustomPropertyOperator();
+		case LayersPackage.AND_STACKED_LAYER_OPERATOR_DESCRIPTOR:
+			return createAndStackedLayerOperatorDescriptor();
+		case LayersPackage.OR_STACKED_LAYER_OPERATOR_DESCRIPTOR:
+			return createOrStackedLayerOperatorDescriptor();
+		case LayersPackage.IS_ABSTRACT_UML_SETTER:
+			return createIsAbstractUmlSetter();
+		case LayersPackage.ALL_VIEWS_DERIVED_LAYER:
+			return createAllViewsDerivedLayer();
+		default:
+			throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object createFromString(EDataType eDataType, String initialValue) {
+		switch (eDataType.getClassifierID()) {
+		case LayersPackage.LAYER_STATE:
+			return createLayerStateFromString(eDataType, initialValue);
+		case LayersPackage.EVENT_LEVEL:
+			return createEventLevelFromString(eDataType, initialValue);
+		case LayersPackage.STRING:
+			return createStringFromString(eDataType, initialValue);
+		case LayersPackage.BOOLEAN:
+			return createbooleanFromString(eDataType, initialValue);
+		case LayersPackage.EPACKAGE:
+			return createEPackageFromString(eDataType, initialValue);
+		case LayersPackage.LAYERS_EXCEPTION:
+			return createLayersExceptionFromString(eDataType, initialValue);
+		case LayersPackage.INT:
+			return createintFromString(eDataType, initialValue);
+		case LayersPackage.BAD_STATE_EXCEPTION:
+			return createBadStateExceptionFromString(eDataType, initialValue);
+		case LayersPackage.NOT_FOUND_EXCEPTION:
+			return createNotFoundExceptionFromString(eDataType, initialValue);
+		case LayersPackage.COMPUTE_PROPERTY_VALUE_COMMAND:
+			return createComputePropertyValueCommandFromString(eDataType, initialValue);
+		case LayersPackage.OBJECT:
+			return createObjectFromString(eDataType, initialValue);
+		case LayersPackage.CUSTOM_PROPERTY_OPERTOR_INSTANCE:
+			return createCustomPropertyOpertorInstanceFromString(eDataType, initialValue);
+		default:
+			throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String convertToString(EDataType eDataType, Object instanceValue) {
+		switch (eDataType.getClassifierID()) {
+		case LayersPackage.LAYER_STATE:
+			return convertLayerStateToString(eDataType, instanceValue);
+		case LayersPackage.EVENT_LEVEL:
+			return convertEventLevelToString(eDataType, instanceValue);
+		case LayersPackage.STRING:
+			return convertStringToString(eDataType, instanceValue);
+		case LayersPackage.BOOLEAN:
+			return convertbooleanToString(eDataType, instanceValue);
+		case LayersPackage.EPACKAGE:
+			return convertEPackageToString(eDataType, instanceValue);
+		case LayersPackage.LAYERS_EXCEPTION:
+			return convertLayersExceptionToString(eDataType, instanceValue);
+		case LayersPackage.INT:
+			return convertintToString(eDataType, instanceValue);
+		case LayersPackage.BAD_STATE_EXCEPTION:
+			return convertBadStateExceptionToString(eDataType, instanceValue);
+		case LayersPackage.NOT_FOUND_EXCEPTION:
+			return convertNotFoundExceptionToString(eDataType, instanceValue);
+		case LayersPackage.COMPUTE_PROPERTY_VALUE_COMMAND:
+			return convertComputePropertyValueCommandToString(eDataType, instanceValue);
+		case LayersPackage.OBJECT:
+			return convertObjectToString(eDataType, instanceValue);
+		case LayersPackage.CUSTOM_PROPERTY_OPERTOR_INSTANCE:
+			return convertCustomPropertyOpertorInstanceToString(eDataType, instanceValue);
+		default:
+			throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayerNamedStyle createLayerNamedStyle() {
+		LayerNamedStyleImpl layerNamedStyle = new LayerNamedStyleImpl();
+		return layerNamedStyle;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayersStack createLayersStack() {
+		LayersStackImpl layersStack = new LayersStackImpl();
+		return layersStack;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayersStackApplication createLayersStackApplication() {
+		LayersStackApplicationImpl layersStackApplication = new LayersStackApplicationImpl();
+		return layersStackApplication;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayerStackDescriptorRegistry createLayerStackDescriptorRegistry() {
+		LayerStackDescriptorRegistryImpl layerStackDescriptorRegistry = new LayerStackDescriptorRegistryImpl();
+		return layerStackDescriptorRegistry;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public PropertyRegistry createPropertyRegistry() {
+		PropertyRegistryImpl propertyRegistry = new PropertyRegistryImpl();
+		return propertyRegistry;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Property createProperty() {
+		PropertyImpl property = new PropertyImpl();
+		return property;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Metamodel createMetamodel() {
+		MetamodelImpl metamodel = new MetamodelImpl();
+		return metamodel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public TypeRegistry createTypeRegistry() {
+		TypeRegistryImpl typeRegistry = new TypeRegistryImpl();
+		return typeRegistry;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public Map.Entry<String, Type> createStringToTypeMap() {
+		StringToTypeMapImpl stringToTypeMap = new StringToTypeMapImpl();
+		return stringToTypeMap;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayerDescriptorRegistry createLayerDescriptorRegistry() {
+		LayerDescriptorRegistryImpl layerDescriptorRegistry = new LayerDescriptorRegistryImpl();
+		return layerDescriptorRegistry;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayerDescriptor createLayerDescriptor() {
+		LayerDescriptorImpl layerDescriptor = new LayerDescriptorImpl();
+		return layerDescriptor;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayerApplicationFactory createLayerApplicationFactory() {
+		LayerApplicationFactoryImpl layerApplicationFactory = new LayerApplicationFactoryImpl();
+		return layerApplicationFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public PropertySetterRegistry createPropertySetterRegistry() {
+		PropertySetterRegistryImpl propertySetterRegistry = new PropertySetterRegistryImpl();
+		return propertySetterRegistry;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public Map.Entry<String, PropertySetter> createStringToPropertySetter() {
+		StringToPropertySetterImpl stringToPropertySetter = new StringToPropertySetterImpl();
+		return stringToPropertySetter;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public Map.Entry<String, TypeInstance> createStringToTypeInstanceMap() {
+		StringToTypeInstanceMapImpl stringToTypeInstanceMap = new StringToTypeInstanceMapImpl();
+		return stringToTypeInstanceMap;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Folder createFolder() {
+		FolderImpl folder = new FolderImpl();
+		return folder;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public IntInstance createIntInstance() {
+		IntInstanceImpl intInstance = new IntInstanceImpl();
+		return intInstance;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public BooleanInstance createBooleanInstance() {
+		BooleanInstanceImpl booleanInstance = new BooleanInstanceImpl();
+		return booleanInstance;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public StringInstance createStringInstance() {
+		StringInstanceImpl stringInstance = new StringInstanceImpl();
+		return stringInstance;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public IntType createIntType() {
+		IntTypeImpl intType = new IntTypeImpl();
+		return intType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public BooleanType createBooleanType() {
+		BooleanTypeImpl booleanType = new BooleanTypeImpl();
+		return booleanType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public StringType createStringType() {
+		StringTypeImpl stringType = new StringTypeImpl();
+		return stringType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public CustomType createCustomType() {
+		CustomTypeImpl customType = new CustomTypeImpl();
+		return customType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayerOperatorDescriptor createLayerOperatorDescriptor() {
+		LayerOperatorDescriptorImpl layerOperatorDescriptor = new LayerOperatorDescriptorImpl();
+		return layerOperatorDescriptor;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public PropertyOperator createPropertyOperator() {
+		PropertyOperatorImpl propertyOperator = new PropertyOperatorImpl();
+		return propertyOperator;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public DefaultPropertyOperator createDefaultPropertyOperator() {
+		DefaultPropertyOperatorImpl defaultPropertyOperator = new DefaultPropertyOperatorImpl();
+		return defaultPropertyOperator;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public TopLayerOperator createTopLayerOperator() {
+		TopLayerOperatorImpl topLayerOperator = new TopLayerOperatorImpl();
+		return topLayerOperator;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public StackedLayerOperator createStackedLayerOperator() {
+		StackedLayerOperatorImpl stackedLayerOperator = new StackedLayerOperatorImpl();
+		return stackedLayerOperator;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public CustomLayerOperator createCustomLayerOperator() {
+		CustomLayerOperatorImpl customLayerOperator = new CustomLayerOperatorImpl();
+		return customLayerOperator;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public PropertyIndex createPropertyIndex() {
+		PropertyIndexImpl propertyIndex = new PropertyIndexImpl();
+		return propertyIndex;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public Map.Entry<String, PropertyIndex> createStringToPropertyIndexMap() {
+		StringToPropertyIndexMapImpl stringToPropertyIndexMap = new StringToPropertyIndexMapImpl();
+		return stringToPropertyIndexMap;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public SimpleLayerDescriptor createSimpleLayerDescriptor() {
+		SimpleLayerDescriptorImpl simpleLayerDescriptor = new SimpleLayerDescriptorImpl();
+		return simpleLayerDescriptor;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public RegExpLayerDescriptor createRegExpLayerDescriptor() {
+		RegExpLayerDescriptorImpl regExpLayerDescriptor = new RegExpLayerDescriptorImpl();
+		return regExpLayerDescriptor;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NullInstance createNullInstance() {
+		NullInstanceImpl nullInstance = new NullInstanceImpl();
+		return nullInstance;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public RegExpLayer createRegExpLayer() {
+		RegExpLayerImpl regExpLayer = new RegExpLayerImpl();
+		return regExpLayer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Layer createLayer() {
+		LayerImpl layer = new LayerImpl();
+		return layer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Color createColor() {
+		ColorImpl color = new ColorImpl();
+		return color;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ColorInstance createColorInstance() {
+		ColorInstanceImpl colorInstance = new ColorInstanceImpl();
+		return colorInstance;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public FillInstance createFillInstance() {
+		FillInstanceImpl fillInstance = new FillInstanceImpl();
+		return fillInstance;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Fill createFill() {
+		FillImpl fill = new FillImpl();
+		return fill;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public FillPropertySetter createFillPropertySetter() {
+		FillPropertySetterImpl fillPropertySetter = new FillPropertySetterImpl();
+		return fillPropertySetter;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public IsValidPropertySetter createIsValidPropertySetter() {
+		IsValidPropertySetterImpl isValidPropertySetter = new IsValidPropertySetterImpl();
+		return isValidPropertySetter;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NullPropertySetter createNullPropertySetter() {
+		NullPropertySetterImpl nullPropertySetter = new NullPropertySetterImpl();
+		return nullPropertySetter;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LineType createLineType() {
+		LineTypeImpl lineType = new LineTypeImpl();
+		return lineType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LineInstance createLineInstance() {
+		LineInstanceImpl lineInstance = new LineInstanceImpl();
+		return lineInstance;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LinePropertySetter createLinePropertySetter() {
+		LinePropertySetterImpl linePropertySetter = new LinePropertySetterImpl();
+		return linePropertySetter;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public FontPropertySetter createFontPropertySetter() {
+		FontPropertySetterImpl fontPropertySetter = new FontPropertySetterImpl();
+		return fontPropertySetter;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public FontInstance createFontInstance() {
+		FontInstanceImpl fontInstance = new FontInstanceImpl();
+		return fontInstance;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public FontType createFontType() {
+		FontTypeImpl fontType = new FontTypeImpl();
+		return fontType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public IsVisiblePropertySetter createIsVisiblePropertySetter() {
+		IsVisiblePropertySetterImpl isVisiblePropertySetter = new IsVisiblePropertySetterImpl();
+		return isVisiblePropertySetter;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayerOperatorDescriptorRegistry createLayerOperatorDescriptorRegistry() {
+		LayerOperatorDescriptorRegistryImpl layerOperatorDescriptorRegistry = new LayerOperatorDescriptorRegistryImpl();
+		return layerOperatorDescriptorRegistry;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public TopLayerOperatorDescriptor createTopLayerOperatorDescriptor() {
+		TopLayerOperatorDescriptorImpl topLayerOperatorDescriptor = new TopLayerOperatorDescriptorImpl();
+		return topLayerOperatorDescriptor;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public StackedLayerOperatorDescriptor createStackedLayerOperatorDescriptor() {
+		StackedLayerOperatorDescriptorImpl stackedLayerOperatorDescriptor = new StackedLayerOperatorDescriptorImpl();
+		return stackedLayerOperatorDescriptor;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public CustomPropertyOperator createCustomPropertyOperator() {
+		CustomPropertyOperatorImpl customPropertyOperator = new CustomPropertyOperatorImpl();
+		return customPropertyOperator;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public AndStackedLayerOperatorDescriptor createAndStackedLayerOperatorDescriptor() {
+		AndStackedLayerOperatorDescriptorImpl andStackedLayerOperatorDescriptor = new AndStackedLayerOperatorDescriptorImpl();
+		return andStackedLayerOperatorDescriptor;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public OrStackedLayerOperatorDescriptor createOrStackedLayerOperatorDescriptor() {
+		OrStackedLayerOperatorDescriptorImpl orStackedLayerOperatorDescriptor = new OrStackedLayerOperatorDescriptorImpl();
+		return orStackedLayerOperatorDescriptor;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public IsAbstractUmlSetter createIsAbstractUmlSetter() {
+		IsAbstractUmlSetterImpl isAbstractUmlSetter = new IsAbstractUmlSetterImpl();
+		return isAbstractUmlSetter;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public AllViewsDerivedLayer createAllViewsDerivedLayer() {
+		AllViewsDerivedLayerImpl allViewsDerivedLayer = new AllViewsDerivedLayerImpl();
+		return allViewsDerivedLayer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayerState createLayerStateFromString(EDataType eDataType, String initialValue) {
+		LayerState result = LayerState.get(initialValue);
+		if (result == null) {
+			throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		}
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public String convertLayerStateToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public EventLevel createEventLevelFromString(EDataType eDataType, String initialValue) {
+		EventLevel result = EventLevel.get(initialValue);
+		if (result == null) {
+			throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		}
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public String convertEventLevelToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public String createStringFromString(EDataType eDataType, String initialValue) {
+		return (String) super.createFromString(eDataType, initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public String convertStringToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(eDataType, instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public Boolean createbooleanFromString(EDataType eDataType, String initialValue) {
+		return (Boolean) super.createFromString(eDataType, initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public String convertbooleanToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(eDataType, instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public EPackage createEPackageFromString(EDataType eDataType, String initialValue) {
+		return (EPackage) super.createFromString(eDataType, initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public String convertEPackageToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(eDataType, instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public BadStateException createBadStateExceptionFromString(EDataType eDataType, String initialValue) {
+		return (BadStateException) createLayersExceptionFromString(LayersPackage.Literals.LAYERS_EXCEPTION, initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public String convertBadStateExceptionToString(EDataType eDataType, Object instanceValue) {
+		return convertLayersExceptionToString(LayersPackage.Literals.LAYERS_EXCEPTION, instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayersException createLayersExceptionFromString(EDataType eDataType, String initialValue) {
+		return (LayersException) super.createFromString(eDataType, initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public String convertLayersExceptionToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(eDataType, instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public NotFoundException createNotFoundExceptionFromString(EDataType eDataType, String initialValue) {
+		return (NotFoundException) createLayersExceptionFromString(LayersPackage.Literals.LAYERS_EXCEPTION, initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public String convertNotFoundExceptionToString(EDataType eDataType, Object instanceValue) {
+		return convertLayersExceptionToString(LayersPackage.Literals.LAYERS_EXCEPTION, instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public ComputePropertyValueCommand createComputePropertyValueCommandFromString(EDataType eDataType, String initialValue) {
+		return (ComputePropertyValueCommand) super.createFromString(eDataType, initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public String convertComputePropertyValueCommandToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(eDataType, instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public Integer createintFromString(EDataType eDataType, String initialValue) {
+		return (Integer) super.createFromString(eDataType, initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public String convertintToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(eDataType, instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public Object createObjectFromString(EDataType eDataType, String initialValue) {
+		return super.createFromString(eDataType, initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public String convertObjectToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(eDataType, instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public CustomPropertyOperatorsInstance createCustomPropertyOpertorInstanceFromString(EDataType eDataType, String initialValue) {
+		return (CustomPropertyOperatorsInstance) super.createFromString(eDataType, initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public String convertCustomPropertyOpertorInstanceToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(eDataType, instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayersPackage getLayersPackage() {
+		return (LayersPackage) getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static LayersPackage getPackage() {
+		return LayersPackage.eINSTANCE;
+	}
+
+} // LayersFactoryImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersPackageImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersPackageImpl.java
new file mode 100755
index 0000000..fea79d3
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersPackageImpl.java
@@ -0,0 +1,4436 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.util.Map;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.papyrus.layers.stackmodel.BadStateException;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.AllViewsDerivedLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.AndStackedLayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.ApplicationDependantElement;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanType;
+import org.eclipse.papyrus.layers.stackmodel.layers.Color;
+import org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomType;
+import org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.EventLevel;
+import org.eclipse.papyrus.layers.stackmodel.layers.Fill;
+import org.eclipse.papyrus.layers.stackmodel.layers.FillInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.FillPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.Folder;
+import org.eclipse.papyrus.layers.stackmodel.layers.FolderElement;
+import org.eclipse.papyrus.layers.stackmodel.layers.FontInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.FontPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.FontType;
+import org.eclipse.papyrus.layers.stackmodel.layers.IntInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.IntType;
+import org.eclipse.papyrus.layers.stackmodel.layers.IsAbstractUmlSetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.IsValidPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.IsVisiblePropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerStackDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerState;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.LineInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LinePropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LineType;
+import org.eclipse.papyrus.layers.stackmodel.layers.Metamodel;
+import org.eclipse.papyrus.layers.stackmodel.layers.NullInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.NullPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.OrStackedLayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayerDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.SimpleLayerDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.StringInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.StringType;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.Type;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry;
+import org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LayersPackageImpl extends EPackageImpl implements LayersPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass layerNamedStyleEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass layersStackEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass layerExpressionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass applicationDependantElementEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass layersStackApplicationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass folderElementEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass layerStackDescriptorRegistryEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass propertyRegistryEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass propertyEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass typeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass metamodelEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass typeInstanceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass computePropertyValueCommandItfEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass typeRegistryEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass stringToTypeMapEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass layerDescriptorRegistryEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass layerDescriptorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass layerApplicationFactoryEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass propertySetterRegistryEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass propertySetterEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass stringToPropertySetterEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass abstractLayerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass stringToTypeInstanceMapEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass folderEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass intInstanceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass booleanInstanceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass stringInstanceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass intTypeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass booleanTypeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass stringTypeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass customTypeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass layerOperatorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass layersContainerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass abstractLayerOperatorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass layerOperatorDescriptorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass propertyOperatorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass defaultPropertyOperatorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass topLayerOperatorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass stackedLayerOperatorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass customLayerOperatorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass propertyIndexEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass stringToPropertyIndexMapEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass simpleLayerDescriptorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass regExpLayerDescriptorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass nullInstanceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass regExpLayerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass layerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass colorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass colorInstanceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass fillInstanceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass fillEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass fillPropertySetterEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass isValidPropertySetterEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass nullPropertySetterEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass lineTypeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass lineInstanceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass linePropertySetterEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass fontPropertySetterEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass fontInstanceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass fontTypeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass isVisiblePropertySetterEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass layerOperatorDescriptorRegistryEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass topLayerOperatorDescriptorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass stackedLayerOperatorDescriptorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass customPropertyOperatorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass andStackedLayerOperatorDescriptorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass orStackedLayerOperatorDescriptorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass isAbstractUmlSetterEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EClass allViewsDerivedLayerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EEnum layerStateEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EEnum eventLevelEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EDataType stringEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EDataType booleanEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EDataType ePackageEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EDataType badStateExceptionEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EDataType layersExceptionEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EDataType notFoundExceptionEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EDataType computePropertyValueCommandEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EDataType intEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EDataType objectEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private EDataType customPropertyOpertorInstanceEDataType = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>
+	 * Note: the correct way to create the package is via the static factory method {@link #init init()}, which also performs initialization of the package, or returns the registered package, if one already exists. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private LayersPackageImpl() {
+		super(eNS_URI, LayersFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>
+	 * This method is used to initialize {@link LayersPackage#eINSTANCE} when that field is accessed. Clients should not invoke it directly. Instead, they should simply access that field to obtain the package. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 *
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static LayersPackage init() {
+		if (isInited) {
+			return (LayersPackage) EPackage.Registry.INSTANCE.getEPackage(LayersPackage.eNS_URI);
+		}
+
+		// Obtain or create and register package
+		LayersPackageImpl theLayersPackage = (LayersPackageImpl) (EPackage.Registry.INSTANCE.get(eNS_URI) instanceof LayersPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new LayersPackageImpl());
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		NotationPackage.eINSTANCE.eClass();
+
+		// Create package meta-data objects
+		theLayersPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theLayersPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theLayersPackage.freeze();
+
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(LayersPackage.eNS_URI, theLayersPackage);
+		return theLayersPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getLayerNamedStyle() {
+		return layerNamedStyleEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getLayerNamedStyle_LayersStack() {
+		return (EReference) layerNamedStyleEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getLayersStack() {
+		return layersStackEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getLayersStack_Layers() {
+		return (EReference) layersStackEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLayersStack_Name() {
+		return (EAttribute) layersStackEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLayersStack_Description() {
+		return (EAttribute) layersStackEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getLayersStack_Diagram() {
+		return (EReference) layersStackEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLayersStack_State() {
+		return (EAttribute) layersStackEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayersStack__GetComputePropertyValueCommand__View_Property() {
+		return layersStackEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayersStack__GetPropertiesComputePropertyValueCommand__View_EList() {
+		return layersStackEClass.getEOperations().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayersStack__GetViewsComputePropertyValueCommand__EList_Property() {
+		return layersStackEClass.getEOperations().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayersStack__StartAfterCreation() {
+		return layersStackEClass.getEOperations().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayersStack__AttachLayers() {
+		return layersStackEClass.getEOperations().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayersStack__Attach() {
+		return layersStackEClass.getEOperations().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayersStack__Detach() {
+		return layersStackEClass.getEOperations().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayersStack__EnterAttachedState() {
+		return layersStackEClass.getEOperations().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayersStack__ExitAttachedState() {
+		return layersStackEClass.getEOperations().get(8);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getLayerExpression() {
+		return layerExpressionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLayerExpression_Name() {
+		return (EAttribute) layerExpressionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLayerExpression_Description() {
+		return (EAttribute) layerExpressionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLayerExpression_IsLayerEnabledInternal() {
+		return (EAttribute) layerExpressionEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLayerExpression_IsLayerEnabled() {
+		return (EAttribute) layerExpressionEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLayerExpression_IsBranchEnabled() {
+		return (EAttribute) layerExpressionEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getLayerExpression_OwningLayersStack() {
+		return (EReference) layerExpressionEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLayerExpression_State() {
+		return (EAttribute) layerExpressionEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayerExpression__GetComputePropertyValueCommand__View_Property() {
+		return layerExpressionEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayerExpression__GetViewsComputePropertyValueCommand__EList_Property() {
+		return layerExpressionEClass.getEOperations().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayerExpression__GetPropertiesComputePropertyValueCommand__View_EList() {
+		return layerExpressionEClass.getEOperations().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayerExpression__AttachToLayersStack__LayersStack() {
+		return layerExpressionEClass.getEOperations().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayerExpression__GetLayersStack() {
+		return layerExpressionEClass.getEOperations().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayerExpression__EnterAttachedState() {
+		return layerExpressionEClass.getEOperations().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayerExpression__Attach() {
+		return layerExpressionEClass.getEOperations().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayerExpression__Detach() {
+		return layerExpressionEClass.getEOperations().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayerExpression__ExitAttachedState() {
+		return layerExpressionEClass.getEOperations().get(8);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getApplicationDependantElement() {
+		return applicationDependantElementEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getApplicationDependantElement_Application() {
+		return (EReference) applicationDependantElementEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getLayersStackApplication() {
+		return layersStackApplicationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getLayersStackApplication_LayersStacks() {
+		return (EReference) layersStackApplicationEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getLayersStackApplication_LayerStackRegistry() {
+		return (EReference) layersStackApplicationEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getLayersStackApplication_PropertyRegistry() {
+		return (EReference) layersStackApplicationEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getLayersStackApplication_LayerDescriptorRegistry() {
+		return (EReference) layersStackApplicationEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getLayersStackApplication_Factory() {
+		return (EReference) layersStackApplicationEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getLayersStackApplication_PropertySetterRegistry() {
+		return (EReference) layersStackApplicationEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getLayersStackApplication_LayerOperatorDescriptorRegistry() {
+		return (EReference) layersStackApplicationEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayersStackApplication__GetLayersStackFor__Diagram() {
+		return layersStackApplicationEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayersStackApplication__RemoveLayersStackFor__Diagram() {
+		return layersStackApplicationEClass.getEOperations().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayersStackApplication__IsLayersStackAttachedFor__Diagram() {
+		return layersStackApplicationEClass.getEOperations().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayersStackApplication__CreateLayersStackFor__Diagram() {
+		return layersStackApplicationEClass.getEOperations().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayersStackApplication__LookupLayersStackFor__Diagram() {
+		return layersStackApplicationEClass.getEOperations().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getFolderElement() {
+		return folderElementEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getLayerStackDescriptorRegistry() {
+		return layerStackDescriptorRegistryEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getPropertyRegistry() {
+		return propertyRegistryEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getPropertyRegistry_Properties() {
+		return (EReference) propertyRegistryEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getPropertyRegistry_TypeRegistry() {
+		return (EReference) propertyRegistryEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPropertyRegistry_PropertiesCount() {
+		return (EAttribute) propertyRegistryEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getPropertyRegistry__GetPropertyIndex__String() {
+		return propertyRegistryEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getPropertyRegistry__GetProperty__String() {
+		return propertyRegistryEClass.getEOperations().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getPropertyRegistry__AddProperty__Property() {
+		return propertyRegistryEClass.getEOperations().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getProperty() {
+		return propertyEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getProperty_Type() {
+		return (EReference) propertyEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getProperty_DefaultValue() {
+		return (EReference) propertyEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getProperty_Name() {
+		return (EAttribute) propertyEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getProperty_Description() {
+		return (EAttribute) propertyEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getProperty_Index() {
+		return (EAttribute) propertyEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getProperty__CreateInstance() {
+		return propertyEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getType() {
+		return typeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getType_Metamodel() {
+		return (EReference) typeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getType_Name() {
+		return (EAttribute) typeEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getType_Description() {
+		return (EAttribute) typeEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getType__CreateInstance() {
+		return typeEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getMetamodel() {
+		return metamodelEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getMetamodel_Name() {
+		return (EAttribute) metamodelEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getMetamodel_Description() {
+		return (EAttribute) metamodelEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getMetamodel_Nsuri() {
+		return (EAttribute) metamodelEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getMetamodel_PluginID() {
+		return (EAttribute) metamodelEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getMetamodel_EPackageInstanceName() {
+		return (EAttribute) metamodelEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getMetamodel_IsTypeValid() {
+		return (EAttribute) metamodelEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getMetamodel__GetEPackage() {
+		return metamodelEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getTypeInstance() {
+		return typeInstanceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getTypeInstance__SetValueFromString__String() {
+		return typeInstanceEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getTypeInstance__SetValueFromInstance__TypeInstance() {
+		return typeInstanceEClass.getEOperations().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getComputePropertyValueCommandItf() {
+		return computePropertyValueCommandItfEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getComputePropertyValueCommandItf__GetCmdValue() {
+		return computePropertyValueCommandItfEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getTypeRegistry() {
+		return typeRegistryEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getTypeRegistry_Types() {
+		return (EReference) typeRegistryEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getStringToTypeMap() {
+		return stringToTypeMapEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getStringToTypeMap_Value() {
+		return (EReference) stringToTypeMapEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getStringToTypeMap_Key() {
+		return (EAttribute) stringToTypeMapEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getLayerDescriptorRegistry() {
+		return layerDescriptorRegistryEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getLayerDescriptorRegistry_LayerDescriptors() {
+		return (EReference) layerDescriptorRegistryEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getLayerDescriptor() {
+		return layerDescriptorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getLayerDescriptor_PropertyRegistry() {
+		return (EReference) layerDescriptorEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getLayerApplicationFactory() {
+		return layerApplicationFactoryEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getLayerApplicationFactory_Application() {
+		return (EReference) layerApplicationFactoryEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getPropertySetterRegistry() {
+		return propertySetterRegistryEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getPropertySetterRegistry_PropertySetters() {
+		return (EReference) propertySetterRegistryEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getPropertySetterRegistry_SetterMap() {
+		return (EReference) propertySetterRegistryEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getPropertySetterRegistry_Application() {
+		return (EReference) propertySetterRegistryEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getPropertySetterRegistry__GetPropertySetter__Property() {
+		return propertySetterRegistryEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getPropertySetterRegistry__GetPropertySetter__String() {
+		return propertySetterRegistryEClass.getEOperations().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getPropertySetterRegistry__AddPropertySetter__PropertySetter() {
+		return propertySetterRegistryEClass.getEOperations().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getPropertySetter() {
+		return propertySetterEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getPropertySetter_Property() {
+		return (EReference) propertySetterEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPropertySetter_PropertyName() {
+		return (EAttribute) propertySetterEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getPropertySetter__SetValue__View_TypeInstance() {
+		return propertySetterEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getStringToPropertySetter() {
+		return stringToPropertySetterEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getStringToPropertySetter_Key() {
+		return (EAttribute) stringToPropertySetterEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getStringToPropertySetter_Value() {
+		return (EReference) stringToPropertySetterEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getAbstractLayer() {
+		return abstractLayerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getAbstractLayer_PropertyValues() {
+		return (EReference) abstractLayerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getAbstractLayer_PropertyValueMap() {
+		return (EReference) abstractLayerEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getAbstractLayer_LayerDescriptor() {
+		return (EReference) abstractLayerEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getAbstractLayer_Views() {
+		return (EReference) abstractLayerEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getAbstractLayer_AttachedProperties() {
+		return (EReference) abstractLayerEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getAbstractLayer__AddPropertyInstance__Property() {
+		return abstractLayerEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getAbstractLayer__RemovePropertyInstance__Property() {
+		return abstractLayerEClass.getEOperations().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getAbstractLayer__GetPropertyInstance__Property() {
+		return abstractLayerEClass.getEOperations().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getAbstractLayer__GetPropertyInstance__String() {
+		return abstractLayerEClass.getEOperations().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getStringToTypeInstanceMap() {
+		return stringToTypeInstanceMapEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getStringToTypeInstanceMap_Key() {
+		return (EAttribute) stringToTypeInstanceMapEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getStringToTypeInstanceMap_Value() {
+		return (EReference) stringToTypeInstanceMapEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getFolder() {
+		return folderEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getFolder_Elements() {
+		return (EReference) folderEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getFolder_Name() {
+		return (EAttribute) folderEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getIntInstance() {
+		return intInstanceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getIntInstance_Value() {
+		return (EAttribute) intInstanceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getBooleanInstance() {
+		return booleanInstanceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getBooleanInstance_Value() {
+		return (EAttribute) booleanInstanceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getStringInstance() {
+		return stringInstanceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getStringInstance_Value() {
+		return (EAttribute) stringInstanceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getIntType() {
+		return intTypeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getBooleanType() {
+		return booleanTypeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getStringType() {
+		return stringTypeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getCustomType() {
+		return customTypeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getCustomType_Classifier() {
+		return (EAttribute) customTypeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getLayerOperator() {
+		return layerOperatorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getLayerOperator_Layers() {
+		return (EReference) layerOperatorEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getLayersContainer() {
+		return layersContainerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayersContainer__AddLayer__LayerExpression() {
+		return layersContainerEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getAbstractLayerOperator() {
+		return abstractLayerOperatorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getAbstractLayerOperator_LayerOperatorDescriptor() {
+		return (EReference) abstractLayerOperatorEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getAbstractLayerOperator_LayerOperatorDescriptorName() {
+		return (EAttribute) abstractLayerOperatorEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getAbstractLayerOperator__IsDescriptorSet() {
+		return abstractLayerOperatorEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getAbstractLayerOperator__ResetDescriptor() {
+		return abstractLayerOperatorEClass.getEOperations().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getLayerOperatorDescriptor() {
+		return layerOperatorDescriptorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getLayerOperatorDescriptor_PropertyOperators() {
+		return (EReference) layerOperatorDescriptorEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLayerOperatorDescriptor_Name() {
+		return (EAttribute) layerOperatorDescriptorEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayerOperatorDescriptor__GetPropertyOperator__Property() {
+		return layerOperatorDescriptorEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayerOperatorDescriptor__SetPropertyOperator__Property_PropertyOperator() {
+		return layerOperatorDescriptorEClass.getEOperations().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayerOperatorDescriptor__CreateLayerOperator() {
+		return layerOperatorDescriptorEClass.getEOperations().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayerOperatorDescriptor__SetPropertyCollectionSize__int_DefaultPropertyOperator() {
+		return layerOperatorDescriptorEClass.getEOperations().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getPropertyOperator() {
+		return propertyOperatorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPropertyOperator_Name() {
+		return (EAttribute) propertyOperatorEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getPropertyOperator__GetComputePropertyValueCommand__EList() {
+		return propertyOperatorEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getDefaultPropertyOperator() {
+		return defaultPropertyOperatorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getTopLayerOperator() {
+		return topLayerOperatorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getStackedLayerOperator() {
+		return stackedLayerOperatorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getCustomLayerOperator() {
+		return customLayerOperatorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getPropertyIndex() {
+		return propertyIndexEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getPropertyIndex_Property() {
+		return (EReference) propertyIndexEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPropertyIndex_Index() {
+		return (EAttribute) propertyIndexEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getStringToPropertyIndexMap() {
+		return stringToPropertyIndexMapEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getStringToPropertyIndexMap_Value() {
+		return (EReference) stringToPropertyIndexMapEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getStringToPropertyIndexMap_Key() {
+		return (EAttribute) stringToPropertyIndexMapEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getSimpleLayerDescriptor() {
+		return simpleLayerDescriptorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getRegExpLayerDescriptor() {
+		return regExpLayerDescriptorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getNullInstance() {
+		return nullInstanceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getNullInstance__GetInstance() {
+		return nullInstanceEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getRegExpLayer() {
+		return regExpLayerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRegExpLayer_Expr() {
+		return (EAttribute) regExpLayerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRegExpLayer_Language() {
+		return (EAttribute) regExpLayerEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRegExpLayer_IsDomainChangedEventDependant() {
+		return (EAttribute) regExpLayerEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRegExpLayer_DomainChangedEventLevel() {
+		return (EAttribute) regExpLayerEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRegExpLayer_IsDiagramChangedEventDependant() {
+		return (EAttribute) regExpLayerEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRegExpLayer_DiagramChangedEventLevel() {
+		return (EAttribute) regExpLayerEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRegExpLayer_ExpressionContextObjectType() {
+		return (EAttribute) regExpLayerEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getRegExpLayer__Activate__AbstractLayerOperator() {
+		return regExpLayerEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getRegExpLayer__Deactivate__AbstractLayerOperator() {
+		return regExpLayerEClass.getEOperations().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getRegExpLayer__IsDerivedView__View() {
+		return regExpLayerEClass.getEOperations().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getRegExpLayer__AttachDerivedView__View() {
+		return regExpLayerEClass.getEOperations().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getRegExpLayer__AttachDerivedViews__EList() {
+		return regExpLayerEClass.getEOperations().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getRegExpLayer__AttachDerivedViews() {
+		return regExpLayerEClass.getEOperations().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getRegExpLayer__LookupDerivedViews__EList() {
+		return regExpLayerEClass.getEOperations().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getLayer() {
+		return layerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getColor() {
+		return colorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getColorInstance() {
+		return colorInstanceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getColorInstance_Value() {
+		return (EAttribute) colorInstanceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getFillInstance() {
+		return fillInstanceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getFillInstance_Transparency() {
+		return (EAttribute) fillInstanceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getFillInstance_FillColor() {
+		return (EReference) fillInstanceEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getFill() {
+		return fillEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getFillPropertySetter() {
+		return fillPropertySetterEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getIsValidPropertySetter() {
+		return isValidPropertySetterEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getNullPropertySetter() {
+		return nullPropertySetterEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getLineType() {
+		return lineTypeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getLineInstance() {
+		return lineInstanceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLineInstance_LineColor() {
+		return (EAttribute) lineInstanceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLineInstance_LineWith() {
+		return (EAttribute) lineInstanceEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getLinePropertySetter() {
+		return linePropertySetterEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getFontPropertySetter() {
+		return fontPropertySetterEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getFontInstance() {
+		return fontInstanceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getFontInstance_FontColor() {
+		return (EAttribute) fontInstanceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getFontInstance_FontName() {
+		return (EAttribute) fontInstanceEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getFontInstance_FontHeigh() {
+		return (EAttribute) fontInstanceEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getFontInstance_Bold() {
+		return (EAttribute) fontInstanceEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getFontType() {
+		return fontTypeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getIsVisiblePropertySetter() {
+		return isVisiblePropertySetterEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getLayerOperatorDescriptorRegistry() {
+		return layerOperatorDescriptorRegistryEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getLayerOperatorDescriptorRegistry_Descriptors() {
+		return (EReference) layerOperatorDescriptorRegistryEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getLayerOperatorDescriptorRegistry_PropertyOperators() {
+		return (EReference) layerOperatorDescriptorRegistryEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLayerOperatorDescriptorRegistry_PropertyCollectionSize() {
+		return (EAttribute) layerOperatorDescriptorRegistryEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EReference getLayerOperatorDescriptorRegistry_DefaultOperator() {
+		return (EReference) layerOperatorDescriptorRegistryEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayerOperatorDescriptorRegistry__AddLayerOperatorDescriptor__LayerOperatorDescriptor() {
+		return layerOperatorDescriptorRegistryEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayerOperatorDescriptorRegistry__GetLayerOperatorDescriptor__String() {
+		return layerOperatorDescriptorRegistryEClass.getEOperations().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayerOperatorDescriptorRegistry__AddPropertyOperator__PropertyOperator() {
+		return layerOperatorDescriptorRegistryEClass.getEOperations().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayerOperatorDescriptorRegistry__GetPropertyOperator__String() {
+		return layerOperatorDescriptorRegistryEClass.getEOperations().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayerOperatorDescriptorRegistry__AttachOperatorToDescriptor__Property_String_String() {
+		return layerOperatorDescriptorRegistryEClass.getEOperations().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getLayerOperatorDescriptorRegistry__CreateLayerOperator__String() {
+		return layerOperatorDescriptorRegistryEClass.getEOperations().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getTopLayerOperatorDescriptor() {
+		return topLayerOperatorDescriptorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getStackedLayerOperatorDescriptor() {
+		return stackedLayerOperatorDescriptorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getCustomPropertyOperator() {
+		return customPropertyOperatorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getCustomPropertyOperator_Classname() {
+		return (EAttribute) customPropertyOperatorEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getCustomPropertyOperator_OperatorInstance() {
+		return (EAttribute) customPropertyOperatorEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EAttribute getCustomPropertyOperator_ClassBundleID() {
+		return (EAttribute) customPropertyOperatorEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EOperation getCustomPropertyOperator__ResetOperatorInstance() {
+		return customPropertyOperatorEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getAndStackedLayerOperatorDescriptor() {
+		return andStackedLayerOperatorDescriptorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getOrStackedLayerOperatorDescriptor() {
+		return orStackedLayerOperatorDescriptorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getIsAbstractUmlSetter() {
+		return isAbstractUmlSetterEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EClass getAllViewsDerivedLayer() {
+		return allViewsDerivedLayerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EEnum getLayerState() {
+		return layerStateEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EEnum getEventLevel() {
+		return eventLevelEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EDataType getString() {
+		return stringEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EDataType getboolean() {
+		return booleanEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EDataType getEPackage() {
+		return ePackageEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EDataType getBadStateException() {
+		return badStateExceptionEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EDataType getLayersException() {
+		return layersExceptionEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EDataType getNotFoundException() {
+		return notFoundExceptionEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EDataType getComputePropertyValueCommand() {
+		return computePropertyValueCommandEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EDataType getint() {
+		return intEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EDataType getObject() {
+		return objectEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EDataType getCustomPropertyOpertorInstance() {
+		return customPropertyOpertorInstanceEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayersFactory getLayersFactory() {
+		return (LayersFactory) getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package. This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) {
+			return;
+		}
+		isCreated = true;
+
+		// Create classes and their features
+		layerNamedStyleEClass = createEClass(LAYER_NAMED_STYLE);
+		createEReference(layerNamedStyleEClass, LAYER_NAMED_STYLE__LAYERS_STACK);
+
+		layersStackEClass = createEClass(LAYERS_STACK);
+		createEReference(layersStackEClass, LAYERS_STACK__LAYERS);
+		createEAttribute(layersStackEClass, LAYERS_STACK__NAME);
+		createEAttribute(layersStackEClass, LAYERS_STACK__DESCRIPTION);
+		createEReference(layersStackEClass, LAYERS_STACK__DIAGRAM);
+		createEAttribute(layersStackEClass, LAYERS_STACK__STATE);
+		createEOperation(layersStackEClass, LAYERS_STACK___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY);
+		createEOperation(layersStackEClass, LAYERS_STACK___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST);
+		createEOperation(layersStackEClass, LAYERS_STACK___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY);
+		createEOperation(layersStackEClass, LAYERS_STACK___START_AFTER_CREATION);
+		createEOperation(layersStackEClass, LAYERS_STACK___ATTACH_LAYERS);
+		createEOperation(layersStackEClass, LAYERS_STACK___ATTACH);
+		createEOperation(layersStackEClass, LAYERS_STACK___DETACH);
+		createEOperation(layersStackEClass, LAYERS_STACK___ENTER_ATTACHED_STATE);
+		createEOperation(layersStackEClass, LAYERS_STACK___EXIT_ATTACHED_STATE);
+
+		layerExpressionEClass = createEClass(LAYER_EXPRESSION);
+		createEAttribute(layerExpressionEClass, LAYER_EXPRESSION__NAME);
+		createEAttribute(layerExpressionEClass, LAYER_EXPRESSION__DESCRIPTION);
+		createEAttribute(layerExpressionEClass, LAYER_EXPRESSION__IS_LAYER_ENABLED_INTERNAL);
+		createEAttribute(layerExpressionEClass, LAYER_EXPRESSION__IS_LAYER_ENABLED);
+		createEAttribute(layerExpressionEClass, LAYER_EXPRESSION__IS_BRANCH_ENABLED);
+		createEReference(layerExpressionEClass, LAYER_EXPRESSION__OWNING_LAYERS_STACK);
+		createEAttribute(layerExpressionEClass, LAYER_EXPRESSION__STATE);
+		createEOperation(layerExpressionEClass, LAYER_EXPRESSION___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY);
+		createEOperation(layerExpressionEClass, LAYER_EXPRESSION___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY);
+		createEOperation(layerExpressionEClass, LAYER_EXPRESSION___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST);
+		createEOperation(layerExpressionEClass, LAYER_EXPRESSION___ATTACH_TO_LAYERS_STACK__LAYERSSTACK);
+		createEOperation(layerExpressionEClass, LAYER_EXPRESSION___GET_LAYERS_STACK);
+		createEOperation(layerExpressionEClass, LAYER_EXPRESSION___ENTER_ATTACHED_STATE);
+		createEOperation(layerExpressionEClass, LAYER_EXPRESSION___ATTACH);
+		createEOperation(layerExpressionEClass, LAYER_EXPRESSION___DETACH);
+		createEOperation(layerExpressionEClass, LAYER_EXPRESSION___EXIT_ATTACHED_STATE);
+
+		applicationDependantElementEClass = createEClass(APPLICATION_DEPENDANT_ELEMENT);
+		createEReference(applicationDependantElementEClass, APPLICATION_DEPENDANT_ELEMENT__APPLICATION);
+
+		layersStackApplicationEClass = createEClass(LAYERS_STACK_APPLICATION);
+		createEReference(layersStackApplicationEClass, LAYERS_STACK_APPLICATION__LAYERS_STACKS);
+		createEReference(layersStackApplicationEClass, LAYERS_STACK_APPLICATION__LAYER_STACK_REGISTRY);
+		createEReference(layersStackApplicationEClass, LAYERS_STACK_APPLICATION__PROPERTY_REGISTRY);
+		createEReference(layersStackApplicationEClass, LAYERS_STACK_APPLICATION__LAYER_DESCRIPTOR_REGISTRY);
+		createEReference(layersStackApplicationEClass, LAYERS_STACK_APPLICATION__FACTORY);
+		createEReference(layersStackApplicationEClass, LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY);
+		createEReference(layersStackApplicationEClass, LAYERS_STACK_APPLICATION__LAYER_OPERATOR_DESCRIPTOR_REGISTRY);
+		createEOperation(layersStackApplicationEClass, LAYERS_STACK_APPLICATION___GET_LAYERS_STACK_FOR__DIAGRAM);
+		createEOperation(layersStackApplicationEClass, LAYERS_STACK_APPLICATION___REMOVE_LAYERS_STACK_FOR__DIAGRAM);
+		createEOperation(layersStackApplicationEClass, LAYERS_STACK_APPLICATION___IS_LAYERS_STACK_ATTACHED_FOR__DIAGRAM);
+		createEOperation(layersStackApplicationEClass, LAYERS_STACK_APPLICATION___CREATE_LAYERS_STACK_FOR__DIAGRAM);
+		createEOperation(layersStackApplicationEClass, LAYERS_STACK_APPLICATION___LOOKUP_LAYERS_STACK_FOR__DIAGRAM);
+
+		folderElementEClass = createEClass(FOLDER_ELEMENT);
+
+		layerStackDescriptorRegistryEClass = createEClass(LAYER_STACK_DESCRIPTOR_REGISTRY);
+
+		propertyRegistryEClass = createEClass(PROPERTY_REGISTRY);
+		createEReference(propertyRegistryEClass, PROPERTY_REGISTRY__PROPERTIES);
+		createEReference(propertyRegistryEClass, PROPERTY_REGISTRY__TYPE_REGISTRY);
+		createEAttribute(propertyRegistryEClass, PROPERTY_REGISTRY__PROPERTIES_COUNT);
+		createEOperation(propertyRegistryEClass, PROPERTY_REGISTRY___GET_PROPERTY_INDEX__STRING);
+		createEOperation(propertyRegistryEClass, PROPERTY_REGISTRY___GET_PROPERTY__STRING);
+		createEOperation(propertyRegistryEClass, PROPERTY_REGISTRY___ADD_PROPERTY__PROPERTY);
+
+		propertyEClass = createEClass(PROPERTY);
+		createEReference(propertyEClass, PROPERTY__TYPE);
+		createEReference(propertyEClass, PROPERTY__DEFAULT_VALUE);
+		createEAttribute(propertyEClass, PROPERTY__NAME);
+		createEAttribute(propertyEClass, PROPERTY__DESCRIPTION);
+		createEAttribute(propertyEClass, PROPERTY__INDEX);
+		createEOperation(propertyEClass, PROPERTY___CREATE_INSTANCE);
+
+		typeEClass = createEClass(TYPE);
+		createEReference(typeEClass, TYPE__METAMODEL);
+		createEAttribute(typeEClass, TYPE__NAME);
+		createEAttribute(typeEClass, TYPE__DESCRIPTION);
+		createEOperation(typeEClass, TYPE___CREATE_INSTANCE);
+
+		metamodelEClass = createEClass(METAMODEL);
+		createEAttribute(metamodelEClass, METAMODEL__NAME);
+		createEAttribute(metamodelEClass, METAMODEL__DESCRIPTION);
+		createEAttribute(metamodelEClass, METAMODEL__NSURI);
+		createEAttribute(metamodelEClass, METAMODEL__PLUGIN_ID);
+		createEAttribute(metamodelEClass, METAMODEL__EPACKAGE_INSTANCE_NAME);
+		createEAttribute(metamodelEClass, METAMODEL__IS_TYPE_VALID);
+		createEOperation(metamodelEClass, METAMODEL___GET_EPACKAGE);
+
+		typeInstanceEClass = createEClass(TYPE_INSTANCE);
+		createEOperation(typeInstanceEClass, TYPE_INSTANCE___SET_VALUE_FROM_STRING__STRING);
+		createEOperation(typeInstanceEClass, TYPE_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE);
+
+		computePropertyValueCommandItfEClass = createEClass(COMPUTE_PROPERTY_VALUE_COMMAND_ITF);
+		createEOperation(computePropertyValueCommandItfEClass, COMPUTE_PROPERTY_VALUE_COMMAND_ITF___GET_CMD_VALUE);
+
+		typeRegistryEClass = createEClass(TYPE_REGISTRY);
+		createEReference(typeRegistryEClass, TYPE_REGISTRY__TYPES);
+
+		stringToTypeMapEClass = createEClass(STRING_TO_TYPE_MAP);
+		createEReference(stringToTypeMapEClass, STRING_TO_TYPE_MAP__VALUE);
+		createEAttribute(stringToTypeMapEClass, STRING_TO_TYPE_MAP__KEY);
+
+		layerDescriptorRegistryEClass = createEClass(LAYER_DESCRIPTOR_REGISTRY);
+		createEReference(layerDescriptorRegistryEClass, LAYER_DESCRIPTOR_REGISTRY__LAYER_DESCRIPTORS);
+
+		layerDescriptorEClass = createEClass(LAYER_DESCRIPTOR);
+		createEReference(layerDescriptorEClass, LAYER_DESCRIPTOR__PROPERTY_REGISTRY);
+
+		layerApplicationFactoryEClass = createEClass(LAYER_APPLICATION_FACTORY);
+		createEReference(layerApplicationFactoryEClass, LAYER_APPLICATION_FACTORY__APPLICATION);
+
+		propertySetterRegistryEClass = createEClass(PROPERTY_SETTER_REGISTRY);
+		createEReference(propertySetterRegistryEClass, PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS);
+		createEReference(propertySetterRegistryEClass, PROPERTY_SETTER_REGISTRY__SETTER_MAP);
+		createEReference(propertySetterRegistryEClass, PROPERTY_SETTER_REGISTRY__APPLICATION);
+		createEOperation(propertySetterRegistryEClass, PROPERTY_SETTER_REGISTRY___GET_PROPERTY_SETTER__PROPERTY);
+		createEOperation(propertySetterRegistryEClass, PROPERTY_SETTER_REGISTRY___GET_PROPERTY_SETTER__STRING);
+		createEOperation(propertySetterRegistryEClass, PROPERTY_SETTER_REGISTRY___ADD_PROPERTY_SETTER__PROPERTYSETTER);
+
+		propertySetterEClass = createEClass(PROPERTY_SETTER);
+		createEReference(propertySetterEClass, PROPERTY_SETTER__PROPERTY);
+		createEAttribute(propertySetterEClass, PROPERTY_SETTER__PROPERTY_NAME);
+		createEOperation(propertySetterEClass, PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE);
+
+		stringToPropertySetterEClass = createEClass(STRING_TO_PROPERTY_SETTER);
+		createEAttribute(stringToPropertySetterEClass, STRING_TO_PROPERTY_SETTER__KEY);
+		createEReference(stringToPropertySetterEClass, STRING_TO_PROPERTY_SETTER__VALUE);
+
+		layerOperatorDescriptorRegistryEClass = createEClass(LAYER_OPERATOR_DESCRIPTOR_REGISTRY);
+		createEReference(layerOperatorDescriptorRegistryEClass, LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DESCRIPTORS);
+		createEReference(layerOperatorDescriptorRegistryEClass, LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_OPERATORS);
+		createEAttribute(layerOperatorDescriptorRegistryEClass, LAYER_OPERATOR_DESCRIPTOR_REGISTRY__PROPERTY_COLLECTION_SIZE);
+		createEReference(layerOperatorDescriptorRegistryEClass, LAYER_OPERATOR_DESCRIPTOR_REGISTRY__DEFAULT_OPERATOR);
+		createEOperation(layerOperatorDescriptorRegistryEClass, LAYER_OPERATOR_DESCRIPTOR_REGISTRY___ADD_LAYER_OPERATOR_DESCRIPTOR__LAYEROPERATORDESCRIPTOR);
+		createEOperation(layerOperatorDescriptorRegistryEClass, LAYER_OPERATOR_DESCRIPTOR_REGISTRY___GET_LAYER_OPERATOR_DESCRIPTOR__STRING);
+		createEOperation(layerOperatorDescriptorRegistryEClass, LAYER_OPERATOR_DESCRIPTOR_REGISTRY___ADD_PROPERTY_OPERATOR__PROPERTYOPERATOR);
+		createEOperation(layerOperatorDescriptorRegistryEClass, LAYER_OPERATOR_DESCRIPTOR_REGISTRY___GET_PROPERTY_OPERATOR__STRING);
+		createEOperation(layerOperatorDescriptorRegistryEClass, LAYER_OPERATOR_DESCRIPTOR_REGISTRY___ATTACH_OPERATOR_TO_DESCRIPTOR__PROPERTY_STRING_STRING);
+		createEOperation(layerOperatorDescriptorRegistryEClass, LAYER_OPERATOR_DESCRIPTOR_REGISTRY___CREATE_LAYER_OPERATOR__STRING);
+
+		layerOperatorDescriptorEClass = createEClass(LAYER_OPERATOR_DESCRIPTOR);
+		createEReference(layerOperatorDescriptorEClass, LAYER_OPERATOR_DESCRIPTOR__PROPERTY_OPERATORS);
+		createEAttribute(layerOperatorDescriptorEClass, LAYER_OPERATOR_DESCRIPTOR__NAME);
+		createEOperation(layerOperatorDescriptorEClass, LAYER_OPERATOR_DESCRIPTOR___GET_PROPERTY_OPERATOR__PROPERTY);
+		createEOperation(layerOperatorDescriptorEClass, LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_OPERATOR__PROPERTY_PROPERTYOPERATOR);
+		createEOperation(layerOperatorDescriptorEClass, LAYER_OPERATOR_DESCRIPTOR___CREATE_LAYER_OPERATOR);
+		createEOperation(layerOperatorDescriptorEClass, LAYER_OPERATOR_DESCRIPTOR___SET_PROPERTY_COLLECTION_SIZE__INT_DEFAULTPROPERTYOPERATOR);
+
+		propertyOperatorEClass = createEClass(PROPERTY_OPERATOR);
+		createEAttribute(propertyOperatorEClass, PROPERTY_OPERATOR__NAME);
+		createEOperation(propertyOperatorEClass, PROPERTY_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST);
+
+		abstractLayerOperatorEClass = createEClass(ABSTRACT_LAYER_OPERATOR);
+		createEReference(abstractLayerOperatorEClass, ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR);
+		createEAttribute(abstractLayerOperatorEClass, ABSTRACT_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR_NAME);
+		createEOperation(abstractLayerOperatorEClass, ABSTRACT_LAYER_OPERATOR___IS_DESCRIPTOR_SET);
+		createEOperation(abstractLayerOperatorEClass, ABSTRACT_LAYER_OPERATOR___RESET_DESCRIPTOR);
+
+		layerOperatorEClass = createEClass(LAYER_OPERATOR);
+		createEReference(layerOperatorEClass, LAYER_OPERATOR__LAYERS);
+
+		layersContainerEClass = createEClass(LAYERS_CONTAINER);
+		createEOperation(layersContainerEClass, LAYERS_CONTAINER___ADD_LAYER__LAYEREXPRESSION);
+
+		defaultPropertyOperatorEClass = createEClass(DEFAULT_PROPERTY_OPERATOR);
+
+		abstractLayerEClass = createEClass(ABSTRACT_LAYER);
+		createEReference(abstractLayerEClass, ABSTRACT_LAYER__PROPERTY_VALUES);
+		createEReference(abstractLayerEClass, ABSTRACT_LAYER__PROPERTY_VALUE_MAP);
+		createEReference(abstractLayerEClass, ABSTRACT_LAYER__LAYER_DESCRIPTOR);
+		createEReference(abstractLayerEClass, ABSTRACT_LAYER__VIEWS);
+		createEReference(abstractLayerEClass, ABSTRACT_LAYER__ATTACHED_PROPERTIES);
+		createEOperation(abstractLayerEClass, ABSTRACT_LAYER___ADD_PROPERTY_INSTANCE__PROPERTY);
+		createEOperation(abstractLayerEClass, ABSTRACT_LAYER___REMOVE_PROPERTY_INSTANCE__PROPERTY);
+		createEOperation(abstractLayerEClass, ABSTRACT_LAYER___GET_PROPERTY_INSTANCE__PROPERTY);
+		createEOperation(abstractLayerEClass, ABSTRACT_LAYER___GET_PROPERTY_INSTANCE__STRING);
+
+		stringToTypeInstanceMapEClass = createEClass(STRING_TO_TYPE_INSTANCE_MAP);
+		createEAttribute(stringToTypeInstanceMapEClass, STRING_TO_TYPE_INSTANCE_MAP__KEY);
+		createEReference(stringToTypeInstanceMapEClass, STRING_TO_TYPE_INSTANCE_MAP__VALUE);
+
+		folderEClass = createEClass(FOLDER);
+		createEReference(folderEClass, FOLDER__ELEMENTS);
+		createEAttribute(folderEClass, FOLDER__NAME);
+
+		intInstanceEClass = createEClass(INT_INSTANCE);
+		createEAttribute(intInstanceEClass, INT_INSTANCE__VALUE);
+
+		booleanInstanceEClass = createEClass(BOOLEAN_INSTANCE);
+		createEAttribute(booleanInstanceEClass, BOOLEAN_INSTANCE__VALUE);
+
+		stringInstanceEClass = createEClass(STRING_INSTANCE);
+		createEAttribute(stringInstanceEClass, STRING_INSTANCE__VALUE);
+
+		intTypeEClass = createEClass(INT_TYPE);
+
+		booleanTypeEClass = createEClass(BOOLEAN_TYPE);
+
+		stringTypeEClass = createEClass(STRING_TYPE);
+
+		customTypeEClass = createEClass(CUSTOM_TYPE);
+		createEAttribute(customTypeEClass, CUSTOM_TYPE__CLASSIFIER);
+
+		topLayerOperatorEClass = createEClass(TOP_LAYER_OPERATOR);
+
+		stackedLayerOperatorEClass = createEClass(STACKED_LAYER_OPERATOR);
+
+		customLayerOperatorEClass = createEClass(CUSTOM_LAYER_OPERATOR);
+
+		propertyIndexEClass = createEClass(PROPERTY_INDEX);
+		createEReference(propertyIndexEClass, PROPERTY_INDEX__PROPERTY);
+		createEAttribute(propertyIndexEClass, PROPERTY_INDEX__INDEX);
+
+		stringToPropertyIndexMapEClass = createEClass(STRING_TO_PROPERTY_INDEX_MAP);
+		createEReference(stringToPropertyIndexMapEClass, STRING_TO_PROPERTY_INDEX_MAP__VALUE);
+		createEAttribute(stringToPropertyIndexMapEClass, STRING_TO_PROPERTY_INDEX_MAP__KEY);
+
+		simpleLayerDescriptorEClass = createEClass(SIMPLE_LAYER_DESCRIPTOR);
+
+		regExpLayerDescriptorEClass = createEClass(REG_EXP_LAYER_DESCRIPTOR);
+
+		nullInstanceEClass = createEClass(NULL_INSTANCE);
+		createEOperation(nullInstanceEClass, NULL_INSTANCE___GET_INSTANCE);
+
+		regExpLayerEClass = createEClass(REG_EXP_LAYER);
+		createEAttribute(regExpLayerEClass, REG_EXP_LAYER__EXPR);
+		createEAttribute(regExpLayerEClass, REG_EXP_LAYER__LANGUAGE);
+		createEAttribute(regExpLayerEClass, REG_EXP_LAYER__IS_DOMAIN_CHANGED_EVENT_DEPENDANT);
+		createEAttribute(regExpLayerEClass, REG_EXP_LAYER__DOMAIN_CHANGED_EVENT_LEVEL);
+		createEAttribute(regExpLayerEClass, REG_EXP_LAYER__IS_DIAGRAM_CHANGED_EVENT_DEPENDANT);
+		createEAttribute(regExpLayerEClass, REG_EXP_LAYER__DIAGRAM_CHANGED_EVENT_LEVEL);
+		createEAttribute(regExpLayerEClass, REG_EXP_LAYER__EXPRESSION_CONTEXT_OBJECT_TYPE);
+		createEOperation(regExpLayerEClass, REG_EXP_LAYER___ACTIVATE__ABSTRACTLAYEROPERATOR);
+		createEOperation(regExpLayerEClass, REG_EXP_LAYER___DEACTIVATE__ABSTRACTLAYEROPERATOR);
+		createEOperation(regExpLayerEClass, REG_EXP_LAYER___IS_DERIVED_VIEW__VIEW);
+		createEOperation(regExpLayerEClass, REG_EXP_LAYER___ATTACH_DERIVED_VIEW__VIEW);
+		createEOperation(regExpLayerEClass, REG_EXP_LAYER___ATTACH_DERIVED_VIEWS__ELIST);
+		createEOperation(regExpLayerEClass, REG_EXP_LAYER___ATTACH_DERIVED_VIEWS);
+		createEOperation(regExpLayerEClass, REG_EXP_LAYER___LOOKUP_DERIVED_VIEWS__ELIST);
+
+		layerEClass = createEClass(LAYER);
+
+		colorEClass = createEClass(COLOR);
+
+		colorInstanceEClass = createEClass(COLOR_INSTANCE);
+		createEAttribute(colorInstanceEClass, COLOR_INSTANCE__VALUE);
+
+		fillInstanceEClass = createEClass(FILL_INSTANCE);
+		createEAttribute(fillInstanceEClass, FILL_INSTANCE__TRANSPARENCY);
+		createEReference(fillInstanceEClass, FILL_INSTANCE__FILL_COLOR);
+
+		fillEClass = createEClass(FILL);
+
+		fillPropertySetterEClass = createEClass(FILL_PROPERTY_SETTER);
+
+		isValidPropertySetterEClass = createEClass(IS_VALID_PROPERTY_SETTER);
+
+		nullPropertySetterEClass = createEClass(NULL_PROPERTY_SETTER);
+
+		lineTypeEClass = createEClass(LINE_TYPE);
+
+		lineInstanceEClass = createEClass(LINE_INSTANCE);
+		createEAttribute(lineInstanceEClass, LINE_INSTANCE__LINE_COLOR);
+		createEAttribute(lineInstanceEClass, LINE_INSTANCE__LINE_WITH);
+
+		linePropertySetterEClass = createEClass(LINE_PROPERTY_SETTER);
+
+		fontPropertySetterEClass = createEClass(FONT_PROPERTY_SETTER);
+
+		fontInstanceEClass = createEClass(FONT_INSTANCE);
+		createEAttribute(fontInstanceEClass, FONT_INSTANCE__FONT_COLOR);
+		createEAttribute(fontInstanceEClass, FONT_INSTANCE__FONT_NAME);
+		createEAttribute(fontInstanceEClass, FONT_INSTANCE__FONT_HEIGH);
+		createEAttribute(fontInstanceEClass, FONT_INSTANCE__BOLD);
+
+		fontTypeEClass = createEClass(FONT_TYPE);
+
+		isVisiblePropertySetterEClass = createEClass(IS_VISIBLE_PROPERTY_SETTER);
+
+		topLayerOperatorDescriptorEClass = createEClass(TOP_LAYER_OPERATOR_DESCRIPTOR);
+
+		stackedLayerOperatorDescriptorEClass = createEClass(STACKED_LAYER_OPERATOR_DESCRIPTOR);
+
+		customPropertyOperatorEClass = createEClass(CUSTOM_PROPERTY_OPERATOR);
+		createEAttribute(customPropertyOperatorEClass, CUSTOM_PROPERTY_OPERATOR__CLASSNAME);
+		createEAttribute(customPropertyOperatorEClass, CUSTOM_PROPERTY_OPERATOR__OPERATOR_INSTANCE);
+		createEAttribute(customPropertyOperatorEClass, CUSTOM_PROPERTY_OPERATOR__CLASS_BUNDLE_ID);
+		createEOperation(customPropertyOperatorEClass, CUSTOM_PROPERTY_OPERATOR___RESET_OPERATOR_INSTANCE);
+
+		andStackedLayerOperatorDescriptorEClass = createEClass(AND_STACKED_LAYER_OPERATOR_DESCRIPTOR);
+
+		orStackedLayerOperatorDescriptorEClass = createEClass(OR_STACKED_LAYER_OPERATOR_DESCRIPTOR);
+
+		isAbstractUmlSetterEClass = createEClass(IS_ABSTRACT_UML_SETTER);
+
+		allViewsDerivedLayerEClass = createEClass(ALL_VIEWS_DERIVED_LAYER);
+
+		// Create enums
+		layerStateEEnum = createEEnum(LAYER_STATE);
+		eventLevelEEnum = createEEnum(EVENT_LEVEL);
+
+		// Create data types
+		stringEDataType = createEDataType(STRING);
+		booleanEDataType = createEDataType(BOOLEAN);
+		ePackageEDataType = createEDataType(EPACKAGE);
+		layersExceptionEDataType = createEDataType(LAYERS_EXCEPTION);
+		intEDataType = createEDataType(INT);
+		badStateExceptionEDataType = createEDataType(BAD_STATE_EXCEPTION);
+		notFoundExceptionEDataType = createEDataType(NOT_FOUND_EXCEPTION);
+		computePropertyValueCommandEDataType = createEDataType(COMPUTE_PROPERTY_VALUE_COMMAND);
+		objectEDataType = createEDataType(OBJECT);
+		customPropertyOpertorInstanceEDataType = createEDataType(CUSTOM_PROPERTY_OPERTOR_INSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model. This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) {
+			return;
+		}
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		NotationPackage theNotationPackage = (NotationPackage) EPackage.Registry.INSTANCE.getEPackage(NotationPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		layerNamedStyleEClass.getESuperTypes().add(theNotationPackage.getNamedStyle());
+		layersStackEClass.getESuperTypes().add(this.getLayersContainer());
+		layerExpressionEClass.getESuperTypes().add(this.getApplicationDependantElement());
+		layersStackApplicationEClass.getESuperTypes().add(this.getFolderElement());
+		propertyEClass.getESuperTypes().add(this.getFolderElement());
+		typeEClass.getESuperTypes().add(this.getFolderElement());
+		metamodelEClass.getESuperTypes().add(this.getFolderElement());
+		typeInstanceEClass.getESuperTypes().add(this.getComputePropertyValueCommandItf());
+		abstractLayerOperatorEClass.getESuperTypes().add(this.getLayerOperator());
+		layerOperatorEClass.getESuperTypes().add(this.getLayerExpression());
+		layerOperatorEClass.getESuperTypes().add(this.getLayersContainer());
+		defaultPropertyOperatorEClass.getESuperTypes().add(this.getPropertyOperator());
+		abstractLayerEClass.getESuperTypes().add(this.getLayerExpression());
+		folderEClass.getESuperTypes().add(this.getFolderElement());
+		intInstanceEClass.getESuperTypes().add(this.getTypeInstance());
+		booleanInstanceEClass.getESuperTypes().add(this.getTypeInstance());
+		stringInstanceEClass.getESuperTypes().add(this.getTypeInstance());
+		intTypeEClass.getESuperTypes().add(this.getType());
+		booleanTypeEClass.getESuperTypes().add(this.getType());
+		stringTypeEClass.getESuperTypes().add(this.getType());
+		customTypeEClass.getESuperTypes().add(this.getType());
+		topLayerOperatorEClass.getESuperTypes().add(this.getAbstractLayerOperator());
+		stackedLayerOperatorEClass.getESuperTypes().add(this.getAbstractLayerOperator());
+		customLayerOperatorEClass.getESuperTypes().add(this.getLayerOperator());
+		simpleLayerDescriptorEClass.getESuperTypes().add(this.getLayerDescriptor());
+		regExpLayerDescriptorEClass.getESuperTypes().add(this.getLayerDescriptor());
+		nullInstanceEClass.getESuperTypes().add(this.getTypeInstance());
+		regExpLayerEClass.getESuperTypes().add(this.getAbstractLayer());
+		layerEClass.getESuperTypes().add(this.getAbstractLayer());
+		colorEClass.getESuperTypes().add(this.getType());
+		colorInstanceEClass.getESuperTypes().add(this.getTypeInstance());
+		fillInstanceEClass.getESuperTypes().add(this.getTypeInstance());
+		fillEClass.getESuperTypes().add(this.getType());
+		fillPropertySetterEClass.getESuperTypes().add(this.getPropertySetter());
+		isValidPropertySetterEClass.getESuperTypes().add(this.getPropertySetter());
+		nullPropertySetterEClass.getESuperTypes().add(this.getPropertySetter());
+		lineTypeEClass.getESuperTypes().add(this.getType());
+		lineInstanceEClass.getESuperTypes().add(this.getTypeInstance());
+		linePropertySetterEClass.getESuperTypes().add(this.getPropertySetter());
+		fontPropertySetterEClass.getESuperTypes().add(this.getPropertySetter());
+		fontInstanceEClass.getESuperTypes().add(this.getTypeInstance());
+		fontTypeEClass.getESuperTypes().add(this.getType());
+		isVisiblePropertySetterEClass.getESuperTypes().add(this.getPropertySetter());
+		topLayerOperatorDescriptorEClass.getESuperTypes().add(this.getLayerOperatorDescriptor());
+		stackedLayerOperatorDescriptorEClass.getESuperTypes().add(this.getLayerOperatorDescriptor());
+		customPropertyOperatorEClass.getESuperTypes().add(this.getPropertyOperator());
+		andStackedLayerOperatorDescriptorEClass.getESuperTypes().add(this.getStackedLayerOperatorDescriptor());
+		orStackedLayerOperatorDescriptorEClass.getESuperTypes().add(this.getStackedLayerOperatorDescriptor());
+		isAbstractUmlSetterEClass.getESuperTypes().add(this.getPropertySetter());
+		allViewsDerivedLayerEClass.getESuperTypes().add(this.getAbstractLayer());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(layerNamedStyleEClass, LayerNamedStyle.class, "LayerNamedStyle", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLayerNamedStyle_LayersStack(), this.getLayersStack(), null, "layersStack", null, 0, -1, LayerNamedStyle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED,
+				!IS_ORDERED);
+
+		initEClass(layersStackEClass, LayersStack.class, "LayersStack", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLayersStack_Layers(), this.getLayerExpression(), null, "layers", null, 0, 1, LayersStack.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getLayersStack_Name(), this.getString(), "name", null, 1, 1, LayersStack.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getLayersStack_Description(), this.getString(), "description", null, 1, 1, LayersStack.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getLayersStack_Diagram(), theNotationPackage.getDiagram(), null, "diagram", null, 0, 1, LayersStack.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED,
+				!IS_ORDERED);
+		initEAttribute(getLayersStack_State(), this.getLayerState(), "state", "detached", 1, 1, LayersStack.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		EOperation op = initEOperation(getLayersStack__GetComputePropertyValueCommand__View_Property(), this.getComputePropertyValueCommand(), "getComputePropertyValueCommand", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, theNotationPackage.getView(), "view", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getProperty(), "property", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getLayersException());
+
+		op = initEOperation(getLayersStack__GetPropertiesComputePropertyValueCommand__View_EList(), this.getComputePropertyValueCommand(), "getPropertiesComputePropertyValueCommand", 0, -1, IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, theNotationPackage.getView(), "view", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getProperty(), "property", 1, -1, IS_UNIQUE, IS_ORDERED);
+		addEException(op, this.getLayersException());
+
+		op = initEOperation(getLayersStack__GetViewsComputePropertyValueCommand__EList_Property(), this.getComputePropertyValueCommand(), "getViewsComputePropertyValueCommand", 0, -1, IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, theNotationPackage.getView(), "view", 0, -1, IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, this.getProperty(), "property", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getLayersException());
+
+		initEOperation(getLayersStack__StartAfterCreation(), null, "startAfterCreation", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+		op = initEOperation(getLayersStack__AttachLayers(), null, "attachLayers", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getLayersException());
+
+		op = initEOperation(getLayersStack__Attach(), null, "attach", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getLayersException());
+
+		op = initEOperation(getLayersStack__Detach(), null, "detach", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getLayersException());
+
+		op = initEOperation(getLayersStack__EnterAttachedState(), null, "enterAttachedState", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getLayersException());
+
+		initEOperation(getLayersStack__ExitAttachedState(), null, "exitAttachedState", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+		initEClass(layerExpressionEClass, LayerExpression.class, "LayerExpression", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLayerExpression_Name(), this.getString(), "name", null, 1, 1, LayerExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getLayerExpression_Description(), this.getString(), "description", null, 1, 1, LayerExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getLayerExpression_IsLayerEnabledInternal(), this.getboolean(), "isLayerEnabledInternal", null, 1, 1, LayerExpression.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getLayerExpression_IsLayerEnabled(), this.getboolean(), "isLayerEnabled", "true", 1, 1, LayerExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getLayerExpression_IsBranchEnabled(), this.getboolean(), "isBranchEnabled", "true", 1, 1, LayerExpression.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getLayerExpression_OwningLayersStack(), this.getLayersStack(), null, "owningLayersStack", null, 0, 1, LayerExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE,
+				!IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getLayerExpression_State(), this.getLayerState(), "state", "detached", 1, 1, LayerExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		op = initEOperation(getLayerExpression__GetComputePropertyValueCommand__View_Property(), this.getComputePropertyValueCommand(), "getComputePropertyValueCommand", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, theNotationPackage.getView(), "view", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getProperty(), "property", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getLayersException());
+
+		op = initEOperation(getLayerExpression__GetViewsComputePropertyValueCommand__EList_Property(), this.getComputePropertyValueCommand(), "getViewsComputePropertyValueCommand", 0, -1, IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, theNotationPackage.getView(), "view", 0, -1, IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, this.getProperty(), "property", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getLayersException());
+
+		op = initEOperation(getLayerExpression__GetPropertiesComputePropertyValueCommand__View_EList(), this.getComputePropertyValueCommand(), "getPropertiesComputePropertyValueCommand", 0, -1, IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, theNotationPackage.getView(), "view", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getProperty(), "property", 1, -1, IS_UNIQUE, IS_ORDERED);
+		addEException(op, this.getLayersException());
+
+		op = initEOperation(getLayerExpression__AttachToLayersStack__LayersStack(), null, "attachToLayersStack", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getLayersStack(), "owningLayersStack", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+		op = initEOperation(getLayerExpression__GetLayersStack(), this.getLayersStack(), "getLayersStack", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getNotFoundException());
+
+		op = initEOperation(getLayerExpression__EnterAttachedState(), null, "enterAttachedState", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getLayersException());
+
+		op = initEOperation(getLayerExpression__Attach(), null, "attach", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getLayersException());
+
+		op = initEOperation(getLayerExpression__Detach(), null, "detach", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getLayersException());
+
+		initEOperation(getLayerExpression__ExitAttachedState(), null, "exitAttachedState", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+		initEClass(applicationDependantElementEClass, ApplicationDependantElement.class, "ApplicationDependantElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getApplicationDependantElement_Application(), this.getLayersStackApplication(), null, "application", null, 0, 1, ApplicationDependantElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(layersStackApplicationEClass, LayersStackApplication.class, "LayersStackApplication", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLayersStackApplication_LayersStacks(), this.getLayersStack(), null, "layersStacks", null, 0, -1, LayersStackApplication.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE,
+				!IS_DERIVED, !IS_ORDERED);
+		initEReference(getLayersStackApplication_LayerStackRegistry(), this.getLayerStackDescriptorRegistry(), null, "layerStackRegistry", null, 1, 1, LayersStackApplication.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getLayersStackApplication_PropertyRegistry(), this.getPropertyRegistry(), null, "propertyRegistry", null, 1, 1, LayersStackApplication.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
+				IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getLayersStackApplication_LayerDescriptorRegistry(), this.getLayerDescriptorRegistry(), null, "layerDescriptorRegistry", null, 1, 1, LayersStackApplication.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getLayersStackApplication_Factory(), this.getLayerApplicationFactory(), this.getLayerApplicationFactory_Application(), "factory", null, 1, 1, LayersStackApplication.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getLayersStackApplication_PropertySetterRegistry(), this.getPropertySetterRegistry(), this.getPropertySetterRegistry_Application(), "propertySetterRegistry", null, 0, 1, LayersStackApplication.class, IS_TRANSIENT, !IS_VOLATILE,
+				IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getLayersStackApplication_LayerOperatorDescriptorRegistry(), this.getLayerOperatorDescriptorRegistry(), null, "layerOperatorDescriptorRegistry", null, 0, 1, LayersStackApplication.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+				IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		op = initEOperation(getLayersStackApplication__GetLayersStackFor__Diagram(), this.getLayersStack(), "getLayersStackFor", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, theNotationPackage.getDiagram(), "diagram", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+		op = initEOperation(getLayersStackApplication__RemoveLayersStackFor__Diagram(), null, "removeLayersStackFor", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, theNotationPackage.getDiagram(), "diagram", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+		op = initEOperation(getLayersStackApplication__IsLayersStackAttachedFor__Diagram(), this.getboolean(), "isLayersStackAttachedFor", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, theNotationPackage.getDiagram(), "diagram", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+		op = initEOperation(getLayersStackApplication__CreateLayersStackFor__Diagram(), this.getLayersStack(), "createLayersStackFor", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, theNotationPackage.getDiagram(), "diagram", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+		op = initEOperation(getLayersStackApplication__LookupLayersStackFor__Diagram(), this.getLayersStack(), "lookupLayersStackFor", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, theNotationPackage.getDiagram(), "diagram", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getNotFoundException());
+
+		initEClass(folderElementEClass, FolderElement.class, "FolderElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(layerStackDescriptorRegistryEClass, LayerStackDescriptorRegistry.class, "LayerStackDescriptorRegistry", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(propertyRegistryEClass, PropertyRegistry.class, "PropertyRegistry", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getPropertyRegistry_Properties(), this.getProperty(), null, "properties", null, 0, -1, PropertyRegistry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+		initEReference(getPropertyRegistry_TypeRegistry(), this.getTypeRegistry(), null, "typeRegistry", null, 0, 1, PropertyRegistry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED,
+				!IS_ORDERED);
+		initEAttribute(getPropertyRegistry_PropertiesCount(), this.getint(), "propertiesCount", null, 1, 1, PropertyRegistry.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
+
+		op = initEOperation(getPropertyRegistry__GetPropertyIndex__String(), this.getint(), "getPropertyIndex", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getString(), "propertyName", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getNotFoundException());
+
+		op = initEOperation(getPropertyRegistry__GetProperty__String(), this.getProperty(), "getProperty", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getString(), "propertyName", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getNotFoundException());
+
+		op = initEOperation(getPropertyRegistry__AddProperty__Property(), null, "addProperty", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getProperty(), "property", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+		initEClass(propertyEClass, Property.class, "Property", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getProperty_Type(), this.getType(), null, "type", null, 1, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getProperty_DefaultValue(), this.getTypeInstance(), null, "defaultValue", null, 0, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getProperty_Name(), this.getString(), "name", null, 1, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getProperty_Description(), this.getString(), "description", null, 1, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getProperty_Index(), this.getint(), "index", "-1", 1, 1, Property.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		op = initEOperation(getProperty__CreateInstance(), this.getTypeInstance(), "createInstance", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getBadStateException());
+
+		initEClass(typeEClass, Type.class, "Type", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getType_Metamodel(), this.getMetamodel(), null, "metamodel", null, 1, 1, Type.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getType_Name(), this.getString(), "name", null, 1, 1, Type.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getType_Description(), this.getString(), "description", null, 1, 1, Type.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEOperation(getType__CreateInstance(), this.getTypeInstance(), "createInstance", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+		initEClass(metamodelEClass, Metamodel.class, "Metamodel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getMetamodel_Name(), this.getString(), "name", null, 1, 1, Metamodel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getMetamodel_Description(), this.getString(), "description", null, 1, 1, Metamodel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getMetamodel_Nsuri(), this.getString(), "nsuri", null, 1, 1, Metamodel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getMetamodel_PluginID(), this.getString(), "pluginID", null, 1, 1, Metamodel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getMetamodel_EPackageInstanceName(), this.getString(), "ePackageInstanceName", null, 1, 1, Metamodel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getMetamodel_IsTypeValid(), this.getboolean(), "isTypeValid", null, 1, 1, Metamodel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEOperation(getMetamodel__GetEPackage(), this.getEPackage(), "getEPackage", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+		initEClass(typeInstanceEClass, TypeInstance.class, "TypeInstance", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		op = initEOperation(getTypeInstance__SetValueFromString__String(), null, "setValueFromString", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getString(), "value", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+		op = initEOperation(getTypeInstance__SetValueFromInstance__TypeInstance(), null, "setValueFromInstance", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getTypeInstance(), "value", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+		initEClass(computePropertyValueCommandItfEClass, ComputePropertyValueCommand.class, "ComputePropertyValueCommandItf", IS_ABSTRACT, IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);
+
+		op = initEOperation(getComputePropertyValueCommandItf__GetCmdValue(), this.getTypeInstance(), "getCmdValue", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getLayersException());
+
+		initEClass(typeRegistryEClass, TypeRegistry.class, "TypeRegistry", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getTypeRegistry_Types(), this.getStringToTypeMap(), null, "types", null, 0, -1, TypeRegistry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(stringToTypeMapEClass, Map.Entry.class, "StringToTypeMap", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStringToTypeMap_Value(), this.getType(), null, "value", null, 1, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getStringToTypeMap_Key(), this.getString(), "key", null, 1, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(layerDescriptorRegistryEClass, LayerDescriptorRegistry.class, "LayerDescriptorRegistry", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLayerDescriptorRegistry_LayerDescriptors(), this.getLayerDescriptor(), null, "layerDescriptors", null, 0, -1, LayerDescriptorRegistry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(layerDescriptorEClass, LayerDescriptor.class, "LayerDescriptor", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLayerDescriptor_PropertyRegistry(), this.getPropertyRegistry(), null, "propertyRegistry", null, 1, 1, LayerDescriptor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE,
+				!IS_DERIVED, !IS_ORDERED);
+
+		initEClass(layerApplicationFactoryEClass, LayerApplicationFactory.class, "LayerApplicationFactory", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLayerApplicationFactory_Application(), this.getLayersStackApplication(), this.getLayersStackApplication_Factory(), "application", null, 0, 1, LayerApplicationFactory.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(propertySetterRegistryEClass, PropertySetterRegistry.class, "PropertySetterRegistry", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getPropertySetterRegistry_PropertySetters(), this.getPropertySetter(), null, "propertySetters", null, 0, -1, PropertySetterRegistry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
+				IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPropertySetterRegistry_SetterMap(), this.getStringToPropertySetter(), null, "setterMap", null, 0, -1, PropertySetterRegistry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
+				IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getPropertySetterRegistry_Application(), this.getLayersStackApplication(), this.getLayersStackApplication_PropertySetterRegistry(), "application", null, 0, 1, PropertySetterRegistry.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE,
+				!IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		op = initEOperation(getPropertySetterRegistry__GetPropertySetter__Property(), this.getPropertySetter(), "getPropertySetter", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getProperty(), "property", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getNotFoundException());
+
+		op = initEOperation(getPropertySetterRegistry__GetPropertySetter__String(), this.getPropertySetter(), "getPropertySetter", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getString(), "property", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getNotFoundException());
+
+		op = initEOperation(getPropertySetterRegistry__AddPropertySetter__PropertySetter(), null, "addPropertySetter", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getPropertySetter(), "setter", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+		initEClass(propertySetterEClass, PropertySetter.class, "PropertySetter", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getPropertySetter_Property(), this.getProperty(), null, "property", null, 0, 1, PropertySetter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getPropertySetter_PropertyName(), this.getString(), "propertyName", null, 1, 1, PropertySetter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		op = initEOperation(getPropertySetter__SetValue__View_TypeInstance(), null, "setValue", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, theNotationPackage.getView(), "view", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getTypeInstance(), "value", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+		initEClass(stringToPropertySetterEClass, Map.Entry.class, "StringToPropertySetter", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getStringToPropertySetter_Key(), this.getString(), "key", null, 1, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getStringToPropertySetter_Value(), this.getPropertySetter(), null, "value", null, 1, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(layerOperatorDescriptorRegistryEClass, LayerOperatorDescriptorRegistry.class, "LayerOperatorDescriptorRegistry", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLayerOperatorDescriptorRegistry_Descriptors(), this.getLayerOperatorDescriptor(), null, "descriptors", null, 0, -1, LayerOperatorDescriptorRegistry.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getLayerOperatorDescriptorRegistry_PropertyOperators(), this.getPropertyOperator(), null, "propertyOperators", null, 0, -1, LayerOperatorDescriptorRegistry.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
+				!IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLayerOperatorDescriptorRegistry_PropertyCollectionSize(), this.getint(), "propertyCollectionSize", null, 1, 1, LayerOperatorDescriptorRegistry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, !IS_ORDERED);
+		initEReference(getLayerOperatorDescriptorRegistry_DefaultOperator(), this.getDefaultPropertyOperator(), null, "defaultOperator", null, 1, 1, LayerOperatorDescriptorRegistry.class, IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE,
+				IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		op = initEOperation(getLayerOperatorDescriptorRegistry__AddLayerOperatorDescriptor__LayerOperatorDescriptor(), null, "addLayerOperatorDescriptor", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getLayerOperatorDescriptor(), "descriptor", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+		op = initEOperation(getLayerOperatorDescriptorRegistry__GetLayerOperatorDescriptor__String(), this.getLayerOperatorDescriptor(), "getLayerOperatorDescriptor", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getString(), "name", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getNotFoundException());
+
+		op = initEOperation(getLayerOperatorDescriptorRegistry__AddPropertyOperator__PropertyOperator(), null, "addPropertyOperator", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getPropertyOperator(), "operator", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+		op = initEOperation(getLayerOperatorDescriptorRegistry__GetPropertyOperator__String(), this.getPropertyOperator(), "getPropertyOperator", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getString(), "name", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getNotFoundException());
+
+		op = initEOperation(getLayerOperatorDescriptorRegistry__AttachOperatorToDescriptor__Property_String_String(), null, "attachOperatorToDescriptor", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getProperty(), "property", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getString(), "operatorName", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getString(), "layerDescriptorName", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getNotFoundException());
+
+		op = initEOperation(getLayerOperatorDescriptorRegistry__CreateLayerOperator__String(), this.getAbstractLayerOperator(), "createLayerOperator", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getString(), "layerOperatorID", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getLayersException());
+
+		initEClass(layerOperatorDescriptorEClass, LayerOperatorDescriptor.class, "LayerOperatorDescriptor", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLayerOperatorDescriptor_PropertyOperators(), this.getPropertyOperator(), null, "propertyOperators", null, 0, -1, LayerOperatorDescriptor.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES,
+				!IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLayerOperatorDescriptor_Name(), this.getString(), "name", null, 1, 1, LayerOperatorDescriptor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		op = initEOperation(getLayerOperatorDescriptor__GetPropertyOperator__Property(), this.getPropertyOperator(), "getPropertyOperator", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getProperty(), "property", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getNotFoundException());
+
+		op = initEOperation(getLayerOperatorDescriptor__SetPropertyOperator__Property_PropertyOperator(), null, "setPropertyOperator", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getProperty(), "property", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getPropertyOperator(), "operator", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+		initEOperation(getLayerOperatorDescriptor__CreateLayerOperator(), this.getAbstractLayerOperator(), "createLayerOperator", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+		op = initEOperation(getLayerOperatorDescriptor__SetPropertyCollectionSize__int_DefaultPropertyOperator(), null, "setPropertyCollectionSize", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getint(), "size", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getDefaultPropertyOperator(), "defaultPropertyOperator", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+		initEClass(propertyOperatorEClass, PropertyOperator.class, "PropertyOperator", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getPropertyOperator_Name(), this.getString(), "name", null, 1, 1, PropertyOperator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		op = initEOperation(getPropertyOperator__GetComputePropertyValueCommand__EList(), this.getComputePropertyValueCommand(), "getComputePropertyValueCommand", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getComputePropertyValueCommand(), "property", 0, -1, IS_UNIQUE, IS_ORDERED);
+		addEException(op, this.getLayersException());
+
+		initEClass(abstractLayerOperatorEClass, AbstractLayerOperator.class, "AbstractLayerOperator", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getAbstractLayerOperator_LayerOperatorDescriptor(), this.getLayerOperatorDescriptor(), null, "layerOperatorDescriptor", null, 1, 1, AbstractLayerOperator.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE,
+				IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getAbstractLayerOperator_LayerOperatorDescriptorName(), this.getString(), "layerOperatorDescriptorName", null, 1, 1, AbstractLayerOperator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, !IS_ORDERED);
+
+		initEOperation(getAbstractLayerOperator__IsDescriptorSet(), this.getboolean(), "isDescriptorSet", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+		initEOperation(getAbstractLayerOperator__ResetDescriptor(), null, "resetDescriptor", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+		initEClass(layerOperatorEClass, LayerOperator.class, "LayerOperator", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLayerOperator_Layers(), this.getLayerExpression(), null, "layers", null, 0, -1, LayerOperator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(layersContainerEClass, LayersContainer.class, "LayersContainer", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		op = initEOperation(getLayersContainer__AddLayer__LayerExpression(), null, "addLayer", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getLayerExpression(), "layer", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+		initEClass(defaultPropertyOperatorEClass, DefaultPropertyOperator.class, "DefaultPropertyOperator", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(abstractLayerEClass, AbstractLayer.class, "AbstractLayer", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getAbstractLayer_PropertyValues(), this.getTypeInstance(), null, "propertyValues", null, 0, -1, AbstractLayer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED,
+				IS_ORDERED);
+		initEReference(getAbstractLayer_PropertyValueMap(), this.getStringToTypeInstanceMap(), null, "propertyValueMap", null, 0, -1, AbstractLayer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE,
+				IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getAbstractLayer_LayerDescriptor(), this.getLayerDescriptor(), null, "layerDescriptor", null, 1, 1, AbstractLayer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE,
+				!IS_DERIVED, !IS_ORDERED);
+		initEReference(getAbstractLayer_Views(), theNotationPackage.getView(), null, "views", null, 0, -1, AbstractLayer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getAbstractLayer_AttachedProperties(), this.getProperty(), null, "attachedProperties", null, 0, -1, AbstractLayer.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED,
+				!IS_ORDERED);
+
+		op = initEOperation(getAbstractLayer__AddPropertyInstance__Property(), this.getTypeInstance(), "addPropertyInstance", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getProperty(), "property", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getLayersException());
+
+		op = initEOperation(getAbstractLayer__RemovePropertyInstance__Property(), null, "removePropertyInstance", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getProperty(), "property", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+		op = initEOperation(getAbstractLayer__GetPropertyInstance__Property(), this.getTypeInstance(), "getPropertyInstance", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getProperty(), "property", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getLayersException());
+
+		op = initEOperation(getAbstractLayer__GetPropertyInstance__String(), this.getTypeInstance(), "getPropertyInstance", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getString(), "property", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getLayersException());
+
+		initEClass(stringToTypeInstanceMapEClass, Map.Entry.class, "StringToTypeInstanceMap", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getStringToTypeInstanceMap_Key(), this.getString(), "key", null, 1, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getStringToTypeInstanceMap_Value(), this.getTypeInstance(), null, "value", null, 1, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(folderEClass, Folder.class, "Folder", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getFolder_Elements(), this.getFolderElement(), null, "elements", null, 0, -1, Folder.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getFolder_Name(), this.getString(), "name", null, 1, 1, Folder.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(intInstanceEClass, IntInstance.class, "IntInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getIntInstance_Value(), this.getint(), "value", null, 1, 1, IntInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(booleanInstanceEClass, BooleanInstance.class, "BooleanInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getBooleanInstance_Value(), this.getboolean(), "value", null, 1, 1, BooleanInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(stringInstanceEClass, StringInstance.class, "StringInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getStringInstance_Value(), this.getString(), "value", null, 1, 1, StringInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(intTypeEClass, IntType.class, "IntType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(booleanTypeEClass, BooleanType.class, "BooleanType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(stringTypeEClass, StringType.class, "StringType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(customTypeEClass, CustomType.class, "CustomType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getCustomType_Classifier(), this.getString(), "classifier", null, 1, 1, CustomType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(topLayerOperatorEClass, TopLayerOperator.class, "TopLayerOperator", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(stackedLayerOperatorEClass, StackedLayerOperator.class, "StackedLayerOperator", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(customLayerOperatorEClass, CustomLayerOperator.class, "CustomLayerOperator", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(propertyIndexEClass, PropertyIndex.class, "PropertyIndex", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getPropertyIndex_Property(), this.getProperty(), null, "property", null, 1, 1, PropertyIndex.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getPropertyIndex_Index(), this.getint(), "index", null, 1, 1, PropertyIndex.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(stringToPropertyIndexMapEClass, Map.Entry.class, "StringToPropertyIndexMap", !IS_ABSTRACT, !IS_INTERFACE, !IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getStringToPropertyIndexMap_Value(), this.getPropertyIndex(), null, "value", null, 0, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getStringToPropertyIndexMap_Key(), this.getString(), "key", null, 1, 1, Map.Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(simpleLayerDescriptorEClass, SimpleLayerDescriptor.class, "SimpleLayerDescriptor", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(regExpLayerDescriptorEClass, RegExpLayerDescriptor.class, "RegExpLayerDescriptor", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(nullInstanceEClass, NullInstance.class, "NullInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEOperation(getNullInstance__GetInstance(), this.getNullInstance(), "getInstance", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+		initEClass(regExpLayerEClass, RegExpLayer.class, "RegExpLayer", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getRegExpLayer_Expr(), this.getString(), "expr", null, 1, 1, RegExpLayer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getRegExpLayer_Language(), this.getString(), "language", null, 1, 1, RegExpLayer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getRegExpLayer_IsDomainChangedEventDependant(), this.getboolean(), "isDomainChangedEventDependant", null, 1, 1, RegExpLayer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getRegExpLayer_DomainChangedEventLevel(), this.getEventLevel(), "domainChangedEventLevel", null, 1, 1, RegExpLayer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getRegExpLayer_IsDiagramChangedEventDependant(), this.getboolean(), "isDiagramChangedEventDependant", null, 1, 1, RegExpLayer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getRegExpLayer_DiagramChangedEventLevel(), this.getEventLevel(), "diagramChangedEventLevel", null, 1, 1, RegExpLayer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getRegExpLayer_ExpressionContextObjectType(), this.getString(), "expressionContextObjectType", null, 1, 1, RegExpLayer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		op = initEOperation(getRegExpLayer__Activate__AbstractLayerOperator(), null, "activate", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getAbstractLayerOperator(), "newParentLayer", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+		op = initEOperation(getRegExpLayer__Deactivate__AbstractLayerOperator(), null, "deactivate", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, this.getAbstractLayerOperator(), "oldParentLayer", 1, 1, IS_UNIQUE, !IS_ORDERED);
+
+		op = initEOperation(getRegExpLayer__IsDerivedView__View(), this.getboolean(), "isDerivedView", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, theNotationPackage.getView(), "view", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getLayersException());
+
+		op = initEOperation(getRegExpLayer__AttachDerivedView__View(), null, "attachDerivedView", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, theNotationPackage.getView(), "view", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getLayersException());
+
+		op = initEOperation(getRegExpLayer__AttachDerivedViews__EList(), null, "attachDerivedViews", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, theNotationPackage.getView(), "views", 0, -1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getLayersException());
+
+		op = initEOperation(getRegExpLayer__AttachDerivedViews(), null, "attachDerivedViews", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getLayersException());
+
+		op = initEOperation(getRegExpLayer__LookupDerivedViews__EList(), theNotationPackage.getView(), "lookupDerivedViews", 0, -1, IS_UNIQUE, !IS_ORDERED);
+		addEParameter(op, theNotationPackage.getView(), "views", 0, -1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getLayersException());
+
+		initEClass(layerEClass, Layer.class, "Layer", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(colorEClass, Color.class, "Color", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(colorInstanceEClass, ColorInstance.class, "ColorInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getColorInstance_Value(), this.getint(), "value", null, 1, 1, ColorInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(fillInstanceEClass, FillInstance.class, "FillInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getFillInstance_Transparency(), this.getint(), "transparency", null, 1, 1, FillInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getFillInstance_FillColor(), this.getColorInstance(), null, "fillColor", null, 1, 1, FillInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(fillEClass, Fill.class, "Fill", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(fillPropertySetterEClass, FillPropertySetter.class, "FillPropertySetter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(isValidPropertySetterEClass, IsValidPropertySetter.class, "IsValidPropertySetter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(nullPropertySetterEClass, NullPropertySetter.class, "NullPropertySetter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(lineTypeEClass, LineType.class, "LineType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(lineInstanceEClass, LineInstance.class, "LineInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLineInstance_LineColor(), this.getint(), "lineColor", null, 1, 1, LineInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getLineInstance_LineWith(), this.getint(), "lineWith", null, 1, 1, LineInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(linePropertySetterEClass, LinePropertySetter.class, "LinePropertySetter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(fontPropertySetterEClass, FontPropertySetter.class, "FontPropertySetter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(fontInstanceEClass, FontInstance.class, "FontInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getFontInstance_FontColor(), this.getint(), "fontColor", "15053796", 1, 1, FontInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getFontInstance_FontName(), this.getString(), "fontName", "Segoe UI", 1, 1, FontInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getFontInstance_FontHeigh(), this.getint(), "fontHeigh", "9", 1, 1, FontInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getFontInstance_Bold(), this.getboolean(), "bold", "true", 1, 1, FontInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(fontTypeEClass, FontType.class, "FontType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(isVisiblePropertySetterEClass, IsVisiblePropertySetter.class, "IsVisiblePropertySetter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(topLayerOperatorDescriptorEClass, TopLayerOperatorDescriptor.class, "TopLayerOperatorDescriptor", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(stackedLayerOperatorDescriptorEClass, StackedLayerOperatorDescriptor.class, "StackedLayerOperatorDescriptor", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(customPropertyOperatorEClass, CustomPropertyOperator.class, "CustomPropertyOperator", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getCustomPropertyOperator_Classname(), this.getString(), "classname", null, 1, 1, CustomPropertyOperator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getCustomPropertyOperator_OperatorInstance(), this.getCustomPropertyOpertorInstance(), "operatorInstance", null, 1, 1, CustomPropertyOperator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE,
+				!IS_DERIVED, !IS_ORDERED);
+		initEAttribute(getCustomPropertyOperator_ClassBundleID(), this.getString(), "classBundleID", null, 1, 1, CustomPropertyOperator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		op = initEOperation(getCustomPropertyOperator__ResetOperatorInstance(), null, "resetOperatorInstance", 1, 1, IS_UNIQUE, !IS_ORDERED);
+		addEException(op, this.getLayersException());
+
+		initEClass(andStackedLayerOperatorDescriptorEClass, AndStackedLayerOperatorDescriptor.class, "AndStackedLayerOperatorDescriptor", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(orStackedLayerOperatorDescriptorEClass, OrStackedLayerOperatorDescriptor.class, "OrStackedLayerOperatorDescriptor", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(isAbstractUmlSetterEClass, IsAbstractUmlSetter.class, "IsAbstractUmlSetter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(allViewsDerivedLayerEClass, AllViewsDerivedLayer.class, "AllViewsDerivedLayer", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		// Initialize enums and add enum literals
+		initEEnum(layerStateEEnum, LayerState.class, "LayerState");
+		addEEnumLiteral(layerStateEEnum, LayerState.DETACHED);
+		addEEnumLiteral(layerStateEEnum, LayerState.ATTACHED);
+
+		initEEnum(eventLevelEEnum, EventLevel.class, "EventLevel");
+		addEEnumLiteral(eventLevelEEnum, EventLevel.LEVEL1);
+		addEEnumLiteral(eventLevelEEnum, EventLevel.ALL_LEVELS);
+
+		// Initialize data types
+		initEDataType(stringEDataType, String.class, "String", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+		initEDataType(booleanEDataType, boolean.class, "boolean", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+		initEDataType(ePackageEDataType, EPackage.class, "EPackage", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+		initEDataType(layersExceptionEDataType, LayersException.class, "LayersException", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+		initEDataType(intEDataType, int.class, "int", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+		initEDataType(badStateExceptionEDataType, BadStateException.class, "BadStateException", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+		initEDataType(notFoundExceptionEDataType, NotFoundException.class, "NotFoundException", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+		initEDataType(computePropertyValueCommandEDataType, ComputePropertyValueCommand.class, "ComputePropertyValueCommand", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+		initEDataType(objectEDataType, Object.class, "Object", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+		initEDataType(customPropertyOpertorInstanceEDataType, CustomPropertyOperatorsInstance.class, "CustomPropertyOpertorInstance", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+
+		// Create resource
+		createResource(eNS_URI);
+
+		// Create annotations
+		// http:///org/eclipse/emf/ecore/util/ExtendedMetaData
+		createExtendedMetaDataAnnotations();
+	}
+
+	/**
+	 * Initializes the annotations for <b>http:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected void createExtendedMetaDataAnnotations() {
+		String source = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData";
+		addAnnotation(badStateExceptionEDataType,
+				source,
+				new String[] {
+						"baseType", "LayersException"
+				});
+		addAnnotation(notFoundExceptionEDataType,
+				source,
+				new String[] {
+						"baseType", "LayersException"
+				});
+	}
+
+} // LayersPackageImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersStackApplicationImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersStackApplicationImpl.java
new file mode 100755
index 0000000..4f69509
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersStackApplicationImpl.java
@@ -0,0 +1,857 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerStackDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModel;
+import org.eclipse.papyrus.layers.stackmodel.layers.loaders.RegistriesLoader;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Stack Application</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#getLayersStacks <em>Layers Stacks</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#getLayerStackRegistry <em>Layer Stack Registry</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#getPropertyRegistry <em>Property Registry</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#getLayerDescriptorRegistry <em>Layer Descriptor Registry</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#getFactory <em>Factory</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#getPropertySetterRegistry <em>Property Setter Registry</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#getLayerOperatorDescriptorRegistry <em>Layer Operator Descriptor Registry</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LayersStackApplicationImpl extends
+		FolderElementImpl implements LayersStackApplication {
+	/**
+	 * The cached value of the '{@link #getLayersStacks() <em>Layers Stacks</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getLayersStacks()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LayersStack> layersStacks;
+
+	/**
+	 * The cached value of the '{@link #getLayerStackRegistry() <em>Layer Stack Registry</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getLayerStackRegistry()
+	 * @generated
+	 * @ordered
+	 */
+	protected LayerStackDescriptorRegistry layerStackRegistry;
+	/**
+	 * The cached value of the '{@link #getPropertyRegistry() <em>Property Registry</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getPropertyRegistry()
+	 * @generated
+	 * @ordered
+	 */
+	protected PropertyRegistry propertyRegistry;
+
+	/**
+	 * The cached value of the '{@link #getLayerDescriptorRegistry() <em>Layer Descriptor Registry</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getLayerDescriptorRegistry()
+	 * @generated
+	 * @ordered
+	 */
+	protected LayerDescriptorRegistry layerDescriptorRegistry;
+
+	/**
+	 * The cached value of the '{@link #getFactory() <em>Factory</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getFactory()
+	 * @generated
+	 * @ordered
+	 */
+	protected LayerApplicationFactory factory;
+
+	/**
+	 * The cached value of the '{@link #getPropertySetterRegistry() <em>Property Setter Registry</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getPropertySetterRegistry()
+	 * @generated
+	 * @ordered
+	 */
+	protected PropertySetterRegistry propertySetterRegistry;
+
+	/**
+	 * The cached value of the '{@link #getLayerOperatorDescriptorRegistry() <em>Layer Operator Descriptor Registry</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getLayerOperatorDescriptorRegistry()
+	 * @generated
+	 * @ordered
+	 */
+	protected LayerOperatorDescriptorRegistry layerOperatorDescriptorRegistry;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected LayersStackApplicationImpl() {
+		super();
+		init();
+	}
+
+	/**
+	 * Init the class
+	 * Create the internal objects : {@link PropertyRegistry}, {@link LayerStackDescriptorRegistry}.
+	 */
+	protected void init() {
+		// Create the PropertyRegistry
+		PropertyRegistry propertyRegistry = LayersFactory.eINSTANCE.createPropertyRegistry();
+		setPropertyRegistry(propertyRegistry);
+
+		// Create the LayerStackDescriptorRegistry
+		LayerStackDescriptorRegistry layerStackDescriptorRegistry = LayersFactory.eINSTANCE.createLayerStackDescriptorRegistry();
+		setLayerStackRegistry(layerStackDescriptorRegistry);
+
+		// Create the LayerDescriptorRegistry
+		LayerDescriptorRegistry layerDescriptorRegistry = LayersFactory.eINSTANCE.createLayerDescriptorRegistry();
+		setLayerDescriptorRegistry(layerDescriptorRegistry);
+
+		// Create the config model and the registries loader
+		LayersConfigModel configModel = LayersConfigModel.getInstance();
+		RegistriesLoader registriesLoader = new RegistriesLoader(configModel);
+
+		// Create the LayerOperatorDescriptorRegistry
+		LayerOperatorDescriptorRegistry layerOperatorDescriptorRegistry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+		layerOperatorDescriptorRegistry.setPropertyCollectionSize(propertyRegistry.getPropertiesCount());
+
+		registriesLoader.loadLayerOperatorDescriptorRegistry(layerOperatorDescriptorRegistry, propertyRegistry);
+		setLayerOperatorDescriptorRegistry(layerOperatorDescriptorRegistry);
+
+		// Create the LayerApplicationFactory
+		LayerApplicationFactory layerApplicationFactory = LayersFactory.eINSTANCE.createLayerApplicationFactory();
+		setFactory(layerApplicationFactory);
+
+		// Create the PropertySetterRegistry
+		PropertySetterRegistry propertySetterRegistry = LayersFactory.eINSTANCE.createPropertySetterRegistry();
+		propertySetterRegistry.setApplication(this);
+		setPropertySetterRegistry(propertySetterRegistry);
+
+	}
+
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.LAYERS_STACK_APPLICATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EList<LayersStack> getLayersStacks() {
+		if (layersStacks == null) {
+			layersStacks = new EObjectContainmentEList<LayersStack>(LayersStack.class, this, LayersPackage.LAYERS_STACK_APPLICATION__LAYERS_STACKS);
+		}
+		return layersStacks;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayerStackDescriptorRegistry getLayerStackRegistry() {
+		return layerStackRegistry;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public NotificationChain basicSetLayerStackRegistry(LayerStackDescriptorRegistry newLayerStackRegistry, NotificationChain msgs) {
+		LayerStackDescriptorRegistry oldLayerStackRegistry = layerStackRegistry;
+		layerStackRegistry = newLayerStackRegistry;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK_APPLICATION__LAYER_STACK_REGISTRY, oldLayerStackRegistry, newLayerStackRegistry);
+			if (msgs == null) {
+				msgs = notification;
+			} else {
+				msgs.add(notification);
+			}
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setLayerStackRegistry(LayerStackDescriptorRegistry newLayerStackRegistry) {
+		if (newLayerStackRegistry != layerStackRegistry) {
+			NotificationChain msgs = null;
+			if (layerStackRegistry != null) {
+				msgs = ((InternalEObject) layerStackRegistry).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LayersPackage.LAYERS_STACK_APPLICATION__LAYER_STACK_REGISTRY, null, msgs);
+			}
+			if (newLayerStackRegistry != null) {
+				msgs = ((InternalEObject) newLayerStackRegistry).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LayersPackage.LAYERS_STACK_APPLICATION__LAYER_STACK_REGISTRY, null, msgs);
+			}
+			msgs = basicSetLayerStackRegistry(newLayerStackRegistry, msgs);
+			if (msgs != null) {
+				msgs.dispatch();
+			}
+		}
+		else if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK_APPLICATION__LAYER_STACK_REGISTRY, newLayerStackRegistry, newLayerStackRegistry));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public PropertyRegistry getPropertyRegistry() {
+		return propertyRegistry;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public NotificationChain basicSetPropertyRegistry(PropertyRegistry newPropertyRegistry, NotificationChain msgs) {
+		PropertyRegistry oldPropertyRegistry = propertyRegistry;
+		propertyRegistry = newPropertyRegistry;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_REGISTRY, oldPropertyRegistry, newPropertyRegistry);
+			if (msgs == null) {
+				msgs = notification;
+			} else {
+				msgs.add(notification);
+			}
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setPropertyRegistry(PropertyRegistry newPropertyRegistry) {
+		if (newPropertyRegistry != propertyRegistry) {
+			NotificationChain msgs = null;
+			if (propertyRegistry != null) {
+				msgs = ((InternalEObject) propertyRegistry).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_REGISTRY, null, msgs);
+			}
+			if (newPropertyRegistry != null) {
+				msgs = ((InternalEObject) newPropertyRegistry).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_REGISTRY, null, msgs);
+			}
+			msgs = basicSetPropertyRegistry(newPropertyRegistry, msgs);
+			if (msgs != null) {
+				msgs.dispatch();
+			}
+		}
+		else if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_REGISTRY, newPropertyRegistry, newPropertyRegistry));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayerDescriptorRegistry getLayerDescriptorRegistry() {
+		return layerDescriptorRegistry;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public NotificationChain basicSetLayerDescriptorRegistry(LayerDescriptorRegistry newLayerDescriptorRegistry, NotificationChain msgs) {
+		LayerDescriptorRegistry oldLayerDescriptorRegistry = layerDescriptorRegistry;
+		layerDescriptorRegistry = newLayerDescriptorRegistry;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK_APPLICATION__LAYER_DESCRIPTOR_REGISTRY, oldLayerDescriptorRegistry, newLayerDescriptorRegistry);
+			if (msgs == null) {
+				msgs = notification;
+			} else {
+				msgs.add(notification);
+			}
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setLayerDescriptorRegistry(LayerDescriptorRegistry newLayerDescriptorRegistry) {
+		if (newLayerDescriptorRegistry != layerDescriptorRegistry) {
+			NotificationChain msgs = null;
+			if (layerDescriptorRegistry != null) {
+				msgs = ((InternalEObject) layerDescriptorRegistry).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LayersPackage.LAYERS_STACK_APPLICATION__LAYER_DESCRIPTOR_REGISTRY, null, msgs);
+			}
+			if (newLayerDescriptorRegistry != null) {
+				msgs = ((InternalEObject) newLayerDescriptorRegistry).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LayersPackage.LAYERS_STACK_APPLICATION__LAYER_DESCRIPTOR_REGISTRY, null, msgs);
+			}
+			msgs = basicSetLayerDescriptorRegistry(newLayerDescriptorRegistry, msgs);
+			if (msgs != null) {
+				msgs.dispatch();
+			}
+		}
+		else if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK_APPLICATION__LAYER_DESCRIPTOR_REGISTRY, newLayerDescriptorRegistry, newLayerDescriptorRegistry));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayerApplicationFactory getFactory() {
+		return factory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public NotificationChain basicSetFactory(LayerApplicationFactory newFactory, NotificationChain msgs) {
+		LayerApplicationFactory oldFactory = factory;
+		factory = newFactory;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK_APPLICATION__FACTORY, oldFactory, newFactory);
+			if (msgs == null) {
+				msgs = notification;
+			} else {
+				msgs.add(notification);
+			}
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setFactory(LayerApplicationFactory newFactory) {
+		if (newFactory != factory) {
+			NotificationChain msgs = null;
+			if (factory != null) {
+				msgs = ((InternalEObject) factory).eInverseRemove(this, LayersPackage.LAYER_APPLICATION_FACTORY__APPLICATION, LayerApplicationFactory.class, msgs);
+			}
+			if (newFactory != null) {
+				msgs = ((InternalEObject) newFactory).eInverseAdd(this, LayersPackage.LAYER_APPLICATION_FACTORY__APPLICATION, LayerApplicationFactory.class, msgs);
+			}
+			msgs = basicSetFactory(newFactory, msgs);
+			if (msgs != null) {
+				msgs.dispatch();
+			}
+		}
+		else if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK_APPLICATION__FACTORY, newFactory, newFactory));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public PropertySetterRegistry getPropertySetterRegistry() {
+		return propertySetterRegistry;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public NotificationChain basicSetPropertySetterRegistry(PropertySetterRegistry newPropertySetterRegistry, NotificationChain msgs) {
+		PropertySetterRegistry oldPropertySetterRegistry = propertySetterRegistry;
+		propertySetterRegistry = newPropertySetterRegistry;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY, oldPropertySetterRegistry, newPropertySetterRegistry);
+			if (msgs == null) {
+				msgs = notification;
+			} else {
+				msgs.add(notification);
+			}
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setPropertySetterRegistry(PropertySetterRegistry newPropertySetterRegistry) {
+		if (newPropertySetterRegistry != propertySetterRegistry) {
+			NotificationChain msgs = null;
+			if (propertySetterRegistry != null) {
+				msgs = ((InternalEObject) propertySetterRegistry).eInverseRemove(this, LayersPackage.PROPERTY_SETTER_REGISTRY__APPLICATION, PropertySetterRegistry.class, msgs);
+			}
+			if (newPropertySetterRegistry != null) {
+				msgs = ((InternalEObject) newPropertySetterRegistry).eInverseAdd(this, LayersPackage.PROPERTY_SETTER_REGISTRY__APPLICATION, PropertySetterRegistry.class, msgs);
+			}
+			msgs = basicSetPropertySetterRegistry(newPropertySetterRegistry, msgs);
+			if (msgs != null) {
+				msgs.dispatch();
+			}
+		}
+		else if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY, newPropertySetterRegistry, newPropertySetterRegistry));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayerOperatorDescriptorRegistry getLayerOperatorDescriptorRegistry() {
+		return layerOperatorDescriptorRegistry;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public NotificationChain basicSetLayerOperatorDescriptorRegistry(LayerOperatorDescriptorRegistry newLayerOperatorDescriptorRegistry, NotificationChain msgs) {
+		LayerOperatorDescriptorRegistry oldLayerOperatorDescriptorRegistry = layerOperatorDescriptorRegistry;
+		layerOperatorDescriptorRegistry = newLayerOperatorDescriptorRegistry;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK_APPLICATION__LAYER_OPERATOR_DESCRIPTOR_REGISTRY, oldLayerOperatorDescriptorRegistry, newLayerOperatorDescriptorRegistry);
+			if (msgs == null) {
+				msgs = notification;
+			} else {
+				msgs.add(notification);
+			}
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setLayerOperatorDescriptorRegistry(LayerOperatorDescriptorRegistry newLayerOperatorDescriptorRegistry) {
+		if (newLayerOperatorDescriptorRegistry != layerOperatorDescriptorRegistry) {
+			NotificationChain msgs = null;
+			if (layerOperatorDescriptorRegistry != null) {
+				msgs = ((InternalEObject) layerOperatorDescriptorRegistry).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LayersPackage.LAYERS_STACK_APPLICATION__LAYER_OPERATOR_DESCRIPTOR_REGISTRY, null, msgs);
+			}
+			if (newLayerOperatorDescriptorRegistry != null) {
+				msgs = ((InternalEObject) newLayerOperatorDescriptorRegistry).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LayersPackage.LAYERS_STACK_APPLICATION__LAYER_OPERATOR_DESCRIPTOR_REGISTRY, null, msgs);
+			}
+			msgs = basicSetLayerOperatorDescriptorRegistry(newLayerOperatorDescriptorRegistry, msgs);
+			if (msgs != null) {
+				msgs.dispatch();
+			}
+		}
+		else if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK_APPLICATION__LAYER_OPERATOR_DESCRIPTOR_REGISTRY, newLayerOperatorDescriptorRegistry, newLayerOperatorDescriptorRegistry));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void removeLayersStackFor(Diagram diagram) {
+
+		try {
+			LayersStack stack = lookupLayersStackFor(diagram);
+			getLayersStacks().remove(stack);
+		} catch (NotFoundException e) {
+			// silently fails
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public boolean isLayersStackAttachedFor(Diagram diagram) {
+		try {
+			lookupLayersStackFor(diagram);
+			return true;
+		} catch (NotFoundException e) {
+			// not found
+			return false;
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public LayersStack lookupLayersStackFor(Diagram diagram) throws NotFoundException {
+		for (LayersStack stack : getLayersStacks()) {
+			if (stack.getDiagram() == diagram) {
+				return stack;
+			}
+		}
+
+		// Not found
+		throw new NotFoundException("No LayersStack attached for diagram: " + diagram);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Get the {@link LayersStack} for the specified diagram. Create it if
+	 * necessary.
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public LayersStack getLayersStackFor(Diagram diagram) {
+		try {
+			return lookupLayersStackFor(diagram);
+		} catch (NotFoundException e) {
+			// Create a new one
+			return createLayersStackFor(diagram);
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Create a new LayersStack for the specified diagram.
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public LayersStack createLayersStackFor(Diagram diagram) {
+
+		// Create a new LayerStack and add it to application (this)
+		LayersStack layer = LayersFactory.eINSTANCE.createLayersStack();
+		layer.startAfterCreation();
+		layer.setDiagram(diagram);
+
+		// Create first layer in stack
+		TopLayerOperator rootLayer = LayersFactory.eINSTANCE.createTopLayerOperator();
+		rootLayer.setName("Top Layer");
+		rootLayer.setApplication(this);
+		layer.setLayers(rootLayer);
+
+		// attach stack to application
+		getLayersStacks().add(layer);
+
+
+		return layer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case LayersPackage.LAYERS_STACK_APPLICATION__FACTORY:
+			if (factory != null) {
+				msgs = ((InternalEObject) factory).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LayersPackage.LAYERS_STACK_APPLICATION__FACTORY, null, msgs);
+			}
+			return basicSetFactory((LayerApplicationFactory) otherEnd, msgs);
+		case LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY:
+			if (propertySetterRegistry != null) {
+				msgs = ((InternalEObject) propertySetterRegistry).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY, null, msgs);
+			}
+			return basicSetPropertySetterRegistry((PropertySetterRegistry) 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 LayersPackage.LAYERS_STACK_APPLICATION__LAYERS_STACKS:
+			return ((InternalEList<?>) getLayersStacks()).basicRemove(otherEnd, msgs);
+		case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_STACK_REGISTRY:
+			return basicSetLayerStackRegistry(null, msgs);
+		case LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_REGISTRY:
+			return basicSetPropertyRegistry(null, msgs);
+		case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_DESCRIPTOR_REGISTRY:
+			return basicSetLayerDescriptorRegistry(null, msgs);
+		case LayersPackage.LAYERS_STACK_APPLICATION__FACTORY:
+			return basicSetFactory(null, msgs);
+		case LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY:
+			return basicSetPropertySetterRegistry(null, msgs);
+		case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_OPERATOR_DESCRIPTOR_REGISTRY:
+			return basicSetLayerOperatorDescriptorRegistry(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 LayersPackage.LAYERS_STACK_APPLICATION__LAYERS_STACKS:
+			return getLayersStacks();
+		case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_STACK_REGISTRY:
+			return getLayerStackRegistry();
+		case LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_REGISTRY:
+			return getPropertyRegistry();
+		case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_DESCRIPTOR_REGISTRY:
+			return getLayerDescriptorRegistry();
+		case LayersPackage.LAYERS_STACK_APPLICATION__FACTORY:
+			return getFactory();
+		case LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY:
+			return getPropertySetterRegistry();
+		case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_OPERATOR_DESCRIPTOR_REGISTRY:
+			return getLayerOperatorDescriptorRegistry();
+		}
+		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 LayersPackage.LAYERS_STACK_APPLICATION__LAYERS_STACKS:
+			getLayersStacks().clear();
+			getLayersStacks().addAll((Collection<? extends LayersStack>) newValue);
+			return;
+		case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_STACK_REGISTRY:
+			setLayerStackRegistry((LayerStackDescriptorRegistry) newValue);
+			return;
+		case LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_REGISTRY:
+			setPropertyRegistry((PropertyRegistry) newValue);
+			return;
+		case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_DESCRIPTOR_REGISTRY:
+			setLayerDescriptorRegistry((LayerDescriptorRegistry) newValue);
+			return;
+		case LayersPackage.LAYERS_STACK_APPLICATION__FACTORY:
+			setFactory((LayerApplicationFactory) newValue);
+			return;
+		case LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY:
+			setPropertySetterRegistry((PropertySetterRegistry) newValue);
+			return;
+		case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_OPERATOR_DESCRIPTOR_REGISTRY:
+			setLayerOperatorDescriptorRegistry((LayerOperatorDescriptorRegistry) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.LAYERS_STACK_APPLICATION__LAYERS_STACKS:
+			getLayersStacks().clear();
+			return;
+		case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_STACK_REGISTRY:
+			setLayerStackRegistry((LayerStackDescriptorRegistry) null);
+			return;
+		case LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_REGISTRY:
+			setPropertyRegistry((PropertyRegistry) null);
+			return;
+		case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_DESCRIPTOR_REGISTRY:
+			setLayerDescriptorRegistry((LayerDescriptorRegistry) null);
+			return;
+		case LayersPackage.LAYERS_STACK_APPLICATION__FACTORY:
+			setFactory((LayerApplicationFactory) null);
+			return;
+		case LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY:
+			setPropertySetterRegistry((PropertySetterRegistry) null);
+			return;
+		case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_OPERATOR_DESCRIPTOR_REGISTRY:
+			setLayerOperatorDescriptorRegistry((LayerOperatorDescriptorRegistry) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.LAYERS_STACK_APPLICATION__LAYERS_STACKS:
+			return layersStacks != null && !layersStacks.isEmpty();
+		case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_STACK_REGISTRY:
+			return layerStackRegistry != null;
+		case LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_REGISTRY:
+			return propertyRegistry != null;
+		case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_DESCRIPTOR_REGISTRY:
+			return layerDescriptorRegistry != null;
+		case LayersPackage.LAYERS_STACK_APPLICATION__FACTORY:
+			return factory != null;
+		case LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY:
+			return propertySetterRegistry != null;
+		case LayersPackage.LAYERS_STACK_APPLICATION__LAYER_OPERATOR_DESCRIPTOR_REGISTRY:
+			return layerOperatorDescriptorRegistry != 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 LayersPackage.LAYERS_STACK_APPLICATION___GET_LAYERS_STACK_FOR__DIAGRAM:
+			return getLayersStackFor((Diagram) arguments.get(0));
+		case LayersPackage.LAYERS_STACK_APPLICATION___REMOVE_LAYERS_STACK_FOR__DIAGRAM:
+			removeLayersStackFor((Diagram) arguments.get(0));
+			return null;
+		case LayersPackage.LAYERS_STACK_APPLICATION___IS_LAYERS_STACK_ATTACHED_FOR__DIAGRAM:
+			return isLayersStackAttachedFor((Diagram) arguments.get(0));
+		case LayersPackage.LAYERS_STACK_APPLICATION___CREATE_LAYERS_STACK_FOR__DIAGRAM:
+			return createLayersStackFor((Diagram) arguments.get(0));
+		case LayersPackage.LAYERS_STACK_APPLICATION___LOOKUP_LAYERS_STACK_FOR__DIAGRAM:
+			try {
+				return lookupLayersStackFor((Diagram) arguments.get(0));
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+} // LayersStackApplicationImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersStackImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersStackImpl.java
new file mode 100755
index 0000000..1840dc5
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersStackImpl.java
@@ -0,0 +1,814 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.BadStateException;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerState;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.notifier.ILayersTreeEventListener;
+import org.eclipse.papyrus.layers.stackmodel.notifier.LayersTreeEventNotifier;
+import org.eclipse.papyrus.layers.stackmodel.notifier.LayersTreeEventNotifierFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Stack</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackImpl#getLayers <em>Layers</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackImpl#getDescription <em>Description</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackImpl#getDiagram <em>Diagram</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackImpl#getState <em>State</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LayersStackImpl extends
+
+		MinimalEObjectImpl.Container implements LayersStack {
+	/**
+	 * The cached value of the '{@link #getLayers() <em>Layers</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getLayers()
+	 * @generated
+	 * @ordered
+	 */
+	protected LayerExpression layers;
+
+	/**
+	 * 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 cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+	/**
+	 * 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 cached value of the '{@link #getDescription() <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected String description = DESCRIPTION_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getDiagram() <em>Diagram</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getDiagram()
+	 * @generated
+	 * @ordered
+	 */
+	protected Diagram diagram;
+
+	/**
+	 * The default value of the '{@link #getState() <em>State</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getState()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final LayerState STATE_EDEFAULT = LayerState.DETACHED;
+
+	/**
+	 * The cached value of the '{@link #getState() <em>State</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getState()
+	 * @generated
+	 * @ordered
+	 */
+	protected LayerState state = STATE_EDEFAULT;
+
+	/**
+	 * Listener on layers tree events.
+	 * This listener take in charge the initialization of added layers.
+	 */
+	private ILayersTreeEventListener layersTreeEventListener = new ILayersTreeEventListener() {
+
+		@Override
+		public void layerSet(Notification notification) {
+			LayersStackImpl.this.layerAdded((LayerExpression) notification.getNewValue());
+		}
+
+		@Override
+		public void layerRemoved(Notification notification) {
+			// nothing to do
+
+		}
+
+		@Override
+		public void layerMoved(Notification notification) {
+			// nothing to do
+
+		}
+
+		@Override
+		public void layerAdded(Notification notification) {
+			LayersStackImpl.this.layerAdded((LayerExpression) notification.getNewValue());
+		}
+
+	};
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected LayersStackImpl() {
+		super();
+
+		// Now, init should be called explicitly after creation.
+		// init();
+	}
+
+	/**
+	 * Init this object.
+	 * Create a listener on tree events.
+	 */
+	private void init() {
+
+		LayersTreeEventNotifier layersTreeEventnotifier = LayersTreeEventNotifierFactory.instance.adapt(this);
+
+		layersTreeEventnotifier.addLayersModelEventListener(layersTreeEventListener);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.LAYERS_STACK;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayerExpression getLayers() {
+		return layers;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public NotificationChain basicSetLayers(LayerExpression newLayers, NotificationChain msgs) {
+		LayerExpression oldLayers = layers;
+		layers = newLayers;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK__LAYERS, oldLayers, newLayers);
+			if (msgs == null) {
+				msgs = notification;
+			} else {
+				msgs.add(notification);
+			}
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setLayers(LayerExpression newLayers) {
+		if (newLayers != layers) {
+			NotificationChain msgs = null;
+			if (layers != null) {
+				msgs = ((InternalEObject) layers).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LayersPackage.LAYERS_STACK__LAYERS, null, msgs);
+			}
+			if (newLayers != null) {
+				msgs = ((InternalEObject) newLayers).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LayersPackage.LAYERS_STACK__LAYERS, null, msgs);
+			}
+			msgs = basicSetLayers(newLayers, msgs);
+			if (msgs != null) {
+				msgs.dispatch();
+			}
+		}
+		else if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK__LAYERS, newLayers, newLayers));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK__NAME, oldName, name));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getDescription() {
+		return description;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setDescription(String newDescription) {
+		String oldDescription = description;
+		description = newDescription;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK__DESCRIPTION, oldDescription, description));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Diagram getDiagram() {
+		if (diagram != null && diagram.eIsProxy()) {
+			InternalEObject oldDiagram = (InternalEObject) diagram;
+			diagram = (Diagram) eResolveProxy(oldDiagram);
+			if (diagram != oldDiagram) {
+				if (eNotificationRequired()) {
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, LayersPackage.LAYERS_STACK__DIAGRAM, oldDiagram, diagram));
+				}
+			}
+		}
+		return diagram;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public Diagram basicGetDiagram() {
+		return diagram;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setDiagram(Diagram newDiagram) {
+		Diagram oldDiagram = diagram;
+		diagram = newDiagram;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK__DIAGRAM, oldDiagram, diagram));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayerState getState() {
+		return state;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setState(LayerState newState) {
+		LayerState oldState = state;
+		state = newState == null ? STATE_EDEFAULT : newState;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LAYERS_STACK__STATE, oldState, state));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void addLayer(LayerExpression layer) {
+		setLayers(layer);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @throws LayersException
+	 * @generated NOT
+	 */
+	@Override
+	public ComputePropertyValueCommand getComputePropertyValueCommand(View view, Property property) throws LayersException {
+		LayerExpression layers = getLayers();
+		if (layers == null) {
+			throw new BadStateException("Layers should be set first.");
+		}
+
+		return layers.getComputePropertyValueCommand(view, property);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EList<ComputePropertyValueCommand> getPropertiesComputePropertyValueCommand(View view, EList<Property> property) throws LayersException {
+		// 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 EList<ComputePropertyValueCommand> getViewsComputePropertyValueCommand(EList<View> view, Property property) throws LayersException {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Start this LayersStack after its creation. This method should be explicitly called by
+	 * user after the creation of a LayersStack.
+	 * <!-- end-user-doc -->
+	 *
+	 * @deprecated Not used anymore
+	 * @generated NOT
+	 */
+	@Deprecated
+	@Override
+	public void startAfterCreation() {
+		// Ensure child is initialized, if any
+		if (getLayers() != null) {
+			getLayers().attachToLayersStack(this);
+		}
+
+		// Start local behaviors
+		init();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Attach recursively the tree of layers.
+	 * <!-- end-user-doc -->
+	 *
+	 * @throws LayersException
+	 * @generated NOT
+	 */
+	@Override
+	public void attachLayers() throws LayersException {
+		// Ensure child is started, if any
+		if (getLayers() != null) {
+			getLayers().attach();
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void attach() throws LayersException {
+		// Stop if already in ATTACHED state.
+		if (getState() == LayerState.ATTACHED) {
+			return;
+		}
+
+		// Check required attributes
+		if (getDiagram() == null) {
+			throw new BadStateException("A required attribute is not set. The Layer can't be attached."
+					+ "[layerName=" + getName()
+					+ ", diagram=" + (getDiagram() == null ? "null" : "ok")
+					+ "]");
+		}
+
+		// Can go in attached mode
+		setState(LayerState.ATTACHED);
+		enterAttachedState();
+		attachLayers();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void detach() throws LayersException {
+		// Change the state
+		exitAttachedState();
+		setState(LayerState.DETACHED);
+		// Ensure child is started, if any
+		if (getLayers() != null) {
+			getLayers().detach();
+		}
+
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void enterAttachedState() throws LayersException {
+		init();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void exitAttachedState() {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @throws LayersException
+	 * @generated NOT
+	 */
+	@Override
+	public EList<ComputePropertyValueCommand> getPropertiesComputePropertyValueCommand(View view, List<Property> property) throws LayersException {
+		LayerExpression layers = getLayers();
+		if (layers == null) {
+			throw new BadStateException("Layers should be set first.");
+		}
+
+		return layers.getPropertiesComputePropertyValueCommand(view, property);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @throws BadStateException
+	 * @generated NOT
+	 */
+	@Override
+	public EList<ComputePropertyValueCommand> getViewsComputePropertyValueCommand(List<View> view, Property property) throws LayersException {
+
+		LayerExpression layers = getLayers();
+		if (layers == null) {
+			throw new BadStateException("Layers should be set first.");
+		}
+
+		return layers.getViewsComputePropertyValueCommand(view, property);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case LayersPackage.LAYERS_STACK__LAYERS:
+			return basicSetLayers(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 LayersPackage.LAYERS_STACK__LAYERS:
+			return getLayers();
+		case LayersPackage.LAYERS_STACK__NAME:
+			return getName();
+		case LayersPackage.LAYERS_STACK__DESCRIPTION:
+			return getDescription();
+		case LayersPackage.LAYERS_STACK__DIAGRAM:
+			if (resolve) {
+				return getDiagram();
+			}
+			return basicGetDiagram();
+		case LayersPackage.LAYERS_STACK__STATE:
+			return getState();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case LayersPackage.LAYERS_STACK__LAYERS:
+			setLayers((LayerExpression) newValue);
+			return;
+		case LayersPackage.LAYERS_STACK__NAME:
+			setName((String) newValue);
+			return;
+		case LayersPackage.LAYERS_STACK__DESCRIPTION:
+			setDescription((String) newValue);
+			return;
+		case LayersPackage.LAYERS_STACK__DIAGRAM:
+			setDiagram((Diagram) newValue);
+			return;
+		case LayersPackage.LAYERS_STACK__STATE:
+			setState((LayerState) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.LAYERS_STACK__LAYERS:
+			setLayers((LayerExpression) null);
+			return;
+		case LayersPackage.LAYERS_STACK__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		case LayersPackage.LAYERS_STACK__DESCRIPTION:
+			setDescription(DESCRIPTION_EDEFAULT);
+			return;
+		case LayersPackage.LAYERS_STACK__DIAGRAM:
+			setDiagram((Diagram) null);
+			return;
+		case LayersPackage.LAYERS_STACK__STATE:
+			setState(STATE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.LAYERS_STACK__LAYERS:
+			return layers != null;
+		case LayersPackage.LAYERS_STACK__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		case LayersPackage.LAYERS_STACK__DESCRIPTION:
+			return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+		case LayersPackage.LAYERS_STACK__DIAGRAM:
+			return diagram != null;
+		case LayersPackage.LAYERS_STACK__STATE:
+			return state != STATE_EDEFAULT;
+		}
+		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 LayersPackage.LAYERS_STACK___ADD_LAYER__LAYEREXPRESSION:
+			addLayer((LayerExpression) arguments.get(0));
+			return null;
+		case LayersPackage.LAYERS_STACK___GET_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_PROPERTY:
+			try {
+				return getComputePropertyValueCommand((View) arguments.get(0), (Property) arguments.get(1));
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		case LayersPackage.LAYERS_STACK___GET_PROPERTIES_COMPUTE_PROPERTY_VALUE_COMMAND__VIEW_ELIST:
+			try {
+				return getPropertiesComputePropertyValueCommand((View) arguments.get(0), (EList<Property>) arguments.get(1));
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		case LayersPackage.LAYERS_STACK___GET_VIEWS_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST_PROPERTY:
+			try {
+				return getViewsComputePropertyValueCommand((EList<View>) arguments.get(0), (Property) arguments.get(1));
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		case LayersPackage.LAYERS_STACK___START_AFTER_CREATION:
+			startAfterCreation();
+			return null;
+		case LayersPackage.LAYERS_STACK___ATTACH_LAYERS:
+			try {
+				attachLayers();
+				return null;
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		case LayersPackage.LAYERS_STACK___ATTACH:
+			try {
+				attach();
+				return null;
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		case LayersPackage.LAYERS_STACK___DETACH:
+			try {
+				detach();
+				return null;
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		case LayersPackage.LAYERS_STACK___ENTER_ATTACHED_STATE:
+			try {
+				enterAttachedState();
+				return null;
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		case LayersPackage.LAYERS_STACK___EXIT_ATTACHED_STATE:
+			exitAttachedState();
+			return null;
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(", description: ");
+		result.append(description);
+		result.append(", state: ");
+		result.append(state);
+		result.append(')');
+		return result.toString();
+	}
+
+	/**
+	 * A layer has been added to the layerTree.
+	 * Init this layer.
+	 * This method is called by the listener on layerTree events.
+	 *
+	 * @param addedLayer
+	 *            The added layer.
+	 */
+	protected void layerAdded(LayerExpression addedLayer) {
+		// Stop if there is no layer
+		if (addedLayer == null) {
+			return;
+		}
+		// init the layer
+		addedLayer.attachToLayersStack(this);
+
+	}
+
+} // LayersStackImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LineInstanceImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LineInstanceImpl.java
new file mode 100755
index 0000000..be15e70
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LineInstanceImpl.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LineInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Line Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LineInstanceImpl#getLineColor <em>Line Color</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LineInstanceImpl#getLineWith <em>Line With</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LineInstanceImpl extends TypeInstanceImpl implements LineInstance {
+	/**
+	 * The default value of the '{@link #getLineColor() <em>Line Color</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getLineColor()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int LINE_COLOR_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getLineColor() <em>Line Color</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getLineColor()
+	 * @generated
+	 * @ordered
+	 */
+	protected int lineColor = LINE_COLOR_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getLineWith() <em>Line With</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getLineWith()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int LINE_WITH_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getLineWith() <em>Line With</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getLineWith()
+	 * @generated
+	 * @ordered
+	 */
+	protected int lineWith = LINE_WITH_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LineInstanceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.LINE_INSTANCE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getLineColor() {
+		return lineColor;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setLineColor(int newLineColor) {
+		int oldLineColor = lineColor;
+		lineColor = newLineColor;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LINE_INSTANCE__LINE_COLOR, oldLineColor, lineColor));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getLineWith() {
+		return lineWith;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setLineWith(int newLineWith) {
+		int oldLineWith = lineWith;
+		lineWith = newLineWith;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.LINE_INSTANCE__LINE_WITH, oldLineWith, lineWith));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case LayersPackage.LINE_INSTANCE__LINE_COLOR:
+			return getLineColor();
+		case LayersPackage.LINE_INSTANCE__LINE_WITH:
+			return getLineWith();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case LayersPackage.LINE_INSTANCE__LINE_COLOR:
+			setLineColor((Integer) newValue);
+			return;
+		case LayersPackage.LINE_INSTANCE__LINE_WITH:
+			setLineWith((Integer) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.LINE_INSTANCE__LINE_COLOR:
+			setLineColor(LINE_COLOR_EDEFAULT);
+			return;
+		case LayersPackage.LINE_INSTANCE__LINE_WITH:
+			setLineWith(LINE_WITH_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.LINE_INSTANCE__LINE_COLOR:
+			return lineColor != LINE_COLOR_EDEFAULT;
+		case LayersPackage.LINE_INSTANCE__LINE_WITH:
+			return lineWith != LINE_WITH_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void setValueFromString(String value) {
+
+		if (value == null || value.length() == 0) {
+			return;
+		}
+
+		// The value should contains the 2 values, separated by comma
+		// "lineColor, lineWith"
+		String[] values = value.split(",");
+		try {
+			setLineColor(Integer.parseInt(values[0].trim()));
+			setLineWith(Integer.parseInt(values[1].trim()));
+		} catch (NumberFormatException e) {
+			// fail silently
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void setValueFromInstance(TypeInstance value) {
+
+		// Check if the value is of the right instance
+		if (!getClass().isInstance(value)) {
+			return;
+		}
+
+		LineInstance instance = (LineInstance) value;
+		setLineColor(instance.getLineColor());
+		setLineWith(instance.getLineWith());
+	}
+
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (lineColor: ");
+		result.append(lineColor);
+		result.append(", lineWith: ");
+		result.append(lineWith);
+		result.append(')');
+		return result.toString();
+	}
+
+} // LineInstanceImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LinePropertySetterImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LinePropertySetterImpl.java
new file mode 100755
index 0000000..a53e6be
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LinePropertySetterImpl.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.gmf.runtime.notation.FontStyle;
+import org.eclipse.gmf.runtime.notation.LineStyle;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LineInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LinePropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Line Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class LinePropertySetterImpl extends PropertySetterImpl implements LinePropertySetter {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected LinePropertySetterImpl() {
+		super();
+		setPropertyName("line");
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.LINE_PROPERTY_SETTER;
+	}
+
+	/**
+	 * Set the property of the specified view.
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterImpl#setValue(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance)
+	 *
+	 * @param view
+	 * @param value
+	 */
+	@Override
+	public void setValue(View view, TypeInstance value) {
+
+
+		// Try to get the FontStyle object to modify
+		LineStyle style;
+		if (view instanceof FontStyle) {
+			// Try directly (case of Shape ...)
+			style = (LineStyle) view;
+		}
+		else {
+			// Try as additionnal style
+			style = (LineStyle) view.getStyle(NotationPackage.eINSTANCE.getLineStyle());
+		}
+
+		// Set values
+		if (style != null) {
+
+
+			LineInstance lineValue = (LineInstance) value;
+
+			style.setLineColor(lineValue.getLineColor());
+			style.setLineWidth(lineValue.getLineWith());
+		}
+
+	}
+
+} // LinePropertySetterImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LineTypeImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LineTypeImpl.java
new file mode 100755
index 0000000..3bbdd07
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LineTypeImpl.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LineInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LineType;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Line Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class LineTypeImpl extends TypeImpl implements LineType {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected LineTypeImpl() {
+		super();
+		setName("LineType");
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.LINE_TYPE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public TypeInstance createInstance() {
+		LineInstance instance = LayersFactory.eINSTANCE.createLineInstance();
+		return instance;
+	}
+
+
+} // LineTypeImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/MetamodelImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/MetamodelImpl.java
new file mode 100755
index 0000000..37d3ab3
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/MetamodelImpl.java
@@ -0,0 +1,523 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Metamodel;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Metamodel</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.MetamodelImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.MetamodelImpl#getDescription <em>Description</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.MetamodelImpl#getNsuri <em>Nsuri</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.MetamodelImpl#getPluginID <em>Plugin ID</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.MetamodelImpl#getEPackageInstanceName <em>EPackage Instance Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.MetamodelImpl#isTypeValid <em>Is Type Valid</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class MetamodelImpl extends
+		FolderElementImpl implements Metamodel {
+	/**
+	 * 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 cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * 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 cached value of the '{@link #getDescription() <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected String description = DESCRIPTION_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getNsuri() <em>Nsuri</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getNsuri()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NSURI_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getNsuri() <em>Nsuri</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getNsuri()
+	 * @generated
+	 * @ordered
+	 */
+	protected String nsuri = NSURI_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getPluginID() <em>Plugin ID</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getPluginID()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String PLUGIN_ID_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getPluginID() <em>Plugin ID</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getPluginID()
+	 * @generated
+	 * @ordered
+	 */
+	protected String pluginID = PLUGIN_ID_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getEPackageInstanceName() <em>EPackage Instance Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getEPackageInstanceName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String EPACKAGE_INSTANCE_NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getEPackageInstanceName() <em>EPackage Instance Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getEPackageInstanceName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String ePackageInstanceName = EPACKAGE_INSTANCE_NAME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isTypeValid() <em>Is Type Valid</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #isTypeValid()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean IS_TYPE_VALID_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isTypeValid() <em>Is Type Valid</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #isTypeValid()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean isTypeValid = IS_TYPE_VALID_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected MetamodelImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.METAMODEL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.METAMODEL__NAME, oldName, name));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getDescription() {
+		return description;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setDescription(String newDescription) {
+		String oldDescription = description;
+		description = newDescription;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.METAMODEL__DESCRIPTION, oldDescription, description));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getNsuri() {
+		return nsuri;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setNsuri(String newNsuri) {
+		String oldNsuri = nsuri;
+		nsuri = newNsuri;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.METAMODEL__NSURI, oldNsuri, nsuri));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getPluginID() {
+		return pluginID;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setPluginID(String newPluginID) {
+		String oldPluginID = pluginID;
+		pluginID = newPluginID;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.METAMODEL__PLUGIN_ID, oldPluginID, pluginID));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getEPackageInstanceName() {
+		return ePackageInstanceName;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setEPackageInstanceName(String newEPackageInstanceName) {
+		String oldEPackageInstanceName = ePackageInstanceName;
+		ePackageInstanceName = newEPackageInstanceName;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.METAMODEL__EPACKAGE_INSTANCE_NAME, oldEPackageInstanceName, ePackageInstanceName));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean isTypeValid() {
+		return isTypeValid;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setIsTypeValid(boolean newIsTypeValid) {
+		boolean oldIsTypeValid = isTypeValid;
+		isTypeValid = newIsTypeValid;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.METAMODEL__IS_TYPE_VALID, oldIsTypeValid, isTypeValid));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EPackage getEPackage() {
+		// 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 LayersPackage.METAMODEL__NAME:
+			return getName();
+		case LayersPackage.METAMODEL__DESCRIPTION:
+			return getDescription();
+		case LayersPackage.METAMODEL__NSURI:
+			return getNsuri();
+		case LayersPackage.METAMODEL__PLUGIN_ID:
+			return getPluginID();
+		case LayersPackage.METAMODEL__EPACKAGE_INSTANCE_NAME:
+			return getEPackageInstanceName();
+		case LayersPackage.METAMODEL__IS_TYPE_VALID:
+			return isTypeValid();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case LayersPackage.METAMODEL__NAME:
+			setName((String) newValue);
+			return;
+		case LayersPackage.METAMODEL__DESCRIPTION:
+			setDescription((String) newValue);
+			return;
+		case LayersPackage.METAMODEL__NSURI:
+			setNsuri((String) newValue);
+			return;
+		case LayersPackage.METAMODEL__PLUGIN_ID:
+			setPluginID((String) newValue);
+			return;
+		case LayersPackage.METAMODEL__EPACKAGE_INSTANCE_NAME:
+			setEPackageInstanceName((String) newValue);
+			return;
+		case LayersPackage.METAMODEL__IS_TYPE_VALID:
+			setIsTypeValid((Boolean) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.METAMODEL__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		case LayersPackage.METAMODEL__DESCRIPTION:
+			setDescription(DESCRIPTION_EDEFAULT);
+			return;
+		case LayersPackage.METAMODEL__NSURI:
+			setNsuri(NSURI_EDEFAULT);
+			return;
+		case LayersPackage.METAMODEL__PLUGIN_ID:
+			setPluginID(PLUGIN_ID_EDEFAULT);
+			return;
+		case LayersPackage.METAMODEL__EPACKAGE_INSTANCE_NAME:
+			setEPackageInstanceName(EPACKAGE_INSTANCE_NAME_EDEFAULT);
+			return;
+		case LayersPackage.METAMODEL__IS_TYPE_VALID:
+			setIsTypeValid(IS_TYPE_VALID_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.METAMODEL__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		case LayersPackage.METAMODEL__DESCRIPTION:
+			return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+		case LayersPackage.METAMODEL__NSURI:
+			return NSURI_EDEFAULT == null ? nsuri != null : !NSURI_EDEFAULT.equals(nsuri);
+		case LayersPackage.METAMODEL__PLUGIN_ID:
+			return PLUGIN_ID_EDEFAULT == null ? pluginID != null : !PLUGIN_ID_EDEFAULT.equals(pluginID);
+		case LayersPackage.METAMODEL__EPACKAGE_INSTANCE_NAME:
+			return EPACKAGE_INSTANCE_NAME_EDEFAULT == null ? ePackageInstanceName != null : !EPACKAGE_INSTANCE_NAME_EDEFAULT.equals(ePackageInstanceName);
+		case LayersPackage.METAMODEL__IS_TYPE_VALID:
+			return isTypeValid != IS_TYPE_VALID_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+		case LayersPackage.METAMODEL___GET_EPACKAGE:
+			return getEPackage();
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(", description: ");
+		result.append(description);
+		result.append(", nsuri: ");
+		result.append(nsuri);
+		result.append(", pluginID: ");
+		result.append(pluginID);
+		result.append(", ePackageInstanceName: ");
+		result.append(ePackageInstanceName);
+		result.append(", isTypeValid: ");
+		result.append(isTypeValid);
+		result.append(')');
+		return result.toString();
+	}
+
+} // MetamodelImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/NullInstanceImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/NullInstanceImpl.java
new file mode 100755
index 0000000..1acdd29
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/NullInstanceImpl.java
@@ -0,0 +1,81 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.NullInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Null Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class NullInstanceImpl extends TypeInstanceImpl implements NullInstance {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected NullInstanceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.NULL_INSTANCE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NullInstance getInstance() {
+		// 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 LayersPackage.NULL_INSTANCE___GET_INSTANCE:
+			return getInstance();
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+} // NullInstanceImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/NullPropertySetterImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/NullPropertySetterImpl.java
new file mode 100755
index 0000000..5339245
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/NullPropertySetterImpl.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.NullPropertySetter;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Null Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class NullPropertySetterImpl extends PropertySetterImpl implements NullPropertySetter {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected NullPropertySetterImpl() {
+		super();
+		setPropertyName("NullPropertySetter");
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.NULL_PROPERTY_SETTER;
+	}
+
+} // NullPropertySetterImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/OrStackedLayerOperatorDescriptorImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/OrStackedLayerOperatorDescriptorImpl.java
new file mode 100755
index 0000000..086f9e9
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/OrStackedLayerOperatorDescriptorImpl.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.OrStackedLayerOperatorDescriptor;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Or Stacked Layer Operator Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class OrStackedLayerOperatorDescriptorImpl extends StackedLayerOperatorDescriptorImpl implements OrStackedLayerOperatorDescriptor {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected OrStackedLayerOperatorDescriptorImpl() {
+		super();
+		setName("OrStackedLayerOperator");
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.OR_STACKED_LAYER_OPERATOR_DESCRIPTOR;
+	}
+
+} // OrStackedLayerOperatorDescriptorImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyImpl.java
new file mode 100755
index 0000000..44e280b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyImpl.java
@@ -0,0 +1,523 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.layers.stackmodel.BadStateException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.Type;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyImpl#getType <em>Type</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyImpl#getDefaultValue <em>Default Value</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyImpl#getDescription <em>Description</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyImpl#getIndex <em>Index</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyImpl extends
+		FolderElementImpl implements Property {
+	/**
+	 * The cached value of the '{@link #getType() <em>Type</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected Type type;
+
+	/**
+	 * The cached value of the '{@link #getDefaultValue() <em>Default Value</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getDefaultValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected TypeInstance defaultValue;
+
+	/**
+	 * 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 cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * 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 cached value of the '{@link #getDescription() <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected String description = DESCRIPTION_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getIndex() <em>Index</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getIndex()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int INDEX_EDEFAULT = -1;
+
+	/**
+	 * The cached value of the '{@link #getIndex() <em>Index</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getIndex()
+	 * @generated
+	 * @ordered
+	 */
+	protected int index = INDEX_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected PropertyImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.PROPERTY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Type getType() {
+		if (type != null && type.eIsProxy()) {
+			InternalEObject oldType = (InternalEObject) type;
+			type = (Type) eResolveProxy(oldType);
+			if (type != oldType) {
+				if (eNotificationRequired()) {
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, LayersPackage.PROPERTY__TYPE, oldType, type));
+				}
+			}
+		}
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public Type basicGetType() {
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setType(Type newType) {
+		Type oldType = type;
+		type = newType;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.PROPERTY__TYPE, oldType, type));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public TypeInstance getDefaultValue() {
+		return defaultValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public NotificationChain basicSetDefaultValue(TypeInstance newDefaultValue, NotificationChain msgs) {
+		TypeInstance oldDefaultValue = defaultValue;
+		defaultValue = newDefaultValue;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LayersPackage.PROPERTY__DEFAULT_VALUE, oldDefaultValue, newDefaultValue);
+			if (msgs == null) {
+				msgs = notification;
+			} else {
+				msgs.add(notification);
+			}
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setDefaultValue(TypeInstance newDefaultValue) {
+		if (newDefaultValue != defaultValue) {
+			NotificationChain msgs = null;
+			if (defaultValue != null) {
+				msgs = ((InternalEObject) defaultValue).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LayersPackage.PROPERTY__DEFAULT_VALUE, null, msgs);
+			}
+			if (newDefaultValue != null) {
+				msgs = ((InternalEObject) newDefaultValue).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LayersPackage.PROPERTY__DEFAULT_VALUE, null, msgs);
+			}
+			msgs = basicSetDefaultValue(newDefaultValue, msgs);
+			if (msgs != null) {
+				msgs.dispatch();
+			}
+		}
+		else if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.PROPERTY__DEFAULT_VALUE, newDefaultValue, newDefaultValue));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.PROPERTY__NAME, oldName, name));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getDescription() {
+		return description;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setDescription(String newDescription) {
+		String oldDescription = description;
+		description = newDescription;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.PROPERTY__DESCRIPTION, oldDescription, description));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getIndex() {
+		return index;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setIndex(int newIndex) {
+		int oldIndex = index;
+		index = newIndex;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.PROPERTY__INDEX, oldIndex, index));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @throws BadStateException
+	 * @generated NOT
+	 */
+	@Override
+	public TypeInstance createInstance() throws BadStateException {
+
+		if (type == null) {
+			throw new BadStateException("Property '" + getName() + "', type must be set to create an instance");
+		}
+
+		// Create an instance
+		TypeInstance instance = type.createInstance();
+		// Set the default value if needed
+		if (getDefaultValue() != null) {
+			instance.setValueFromInstance(getDefaultValue());
+		}
+
+		return instance;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case LayersPackage.PROPERTY__DEFAULT_VALUE:
+			return basicSetDefaultValue(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 LayersPackage.PROPERTY__TYPE:
+			if (resolve) {
+				return getType();
+			}
+			return basicGetType();
+		case LayersPackage.PROPERTY__DEFAULT_VALUE:
+			return getDefaultValue();
+		case LayersPackage.PROPERTY__NAME:
+			return getName();
+		case LayersPackage.PROPERTY__DESCRIPTION:
+			return getDescription();
+		case LayersPackage.PROPERTY__INDEX:
+			return getIndex();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case LayersPackage.PROPERTY__TYPE:
+			setType((Type) newValue);
+			return;
+		case LayersPackage.PROPERTY__DEFAULT_VALUE:
+			setDefaultValue((TypeInstance) newValue);
+			return;
+		case LayersPackage.PROPERTY__NAME:
+			setName((String) newValue);
+			return;
+		case LayersPackage.PROPERTY__DESCRIPTION:
+			setDescription((String) newValue);
+			return;
+		case LayersPackage.PROPERTY__INDEX:
+			setIndex((Integer) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.PROPERTY__TYPE:
+			setType((Type) null);
+			return;
+		case LayersPackage.PROPERTY__DEFAULT_VALUE:
+			setDefaultValue((TypeInstance) null);
+			return;
+		case LayersPackage.PROPERTY__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		case LayersPackage.PROPERTY__DESCRIPTION:
+			setDescription(DESCRIPTION_EDEFAULT);
+			return;
+		case LayersPackage.PROPERTY__INDEX:
+			setIndex(INDEX_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.PROPERTY__TYPE:
+			return type != null;
+		case LayersPackage.PROPERTY__DEFAULT_VALUE:
+			return defaultValue != null;
+		case LayersPackage.PROPERTY__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		case LayersPackage.PROPERTY__DESCRIPTION:
+			return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+		case LayersPackage.PROPERTY__INDEX:
+			return index != INDEX_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+		case LayersPackage.PROPERTY___CREATE_INSTANCE:
+			try {
+				return createInstance();
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(", description: ");
+		result.append(description);
+		result.append(", index: ");
+		result.append(index);
+		result.append(')');
+		return result.toString();
+	}
+
+} // PropertyImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyIndexImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyIndexImpl.java
new file mode 100755
index 0000000..6c97108
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyIndexImpl.java
@@ -0,0 +1,258 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Index</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyIndexImpl#getProperty <em>Property</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyIndexImpl#getIndex <em>Index</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyIndexImpl extends MinimalEObjectImpl.Container implements PropertyIndex {
+	/**
+	 * The cached value of the '{@link #getProperty() <em>Property</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getProperty()
+	 * @generated
+	 * @ordered
+	 */
+	protected Property property;
+
+	/**
+	 * The default value of the '{@link #getIndex() <em>Index</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getIndex()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int INDEX_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getIndex() <em>Index</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getIndex()
+	 * @generated
+	 * @ordered
+	 */
+	protected int index = INDEX_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected PropertyIndexImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.PROPERTY_INDEX;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Property getProperty() {
+		if (property != null && property.eIsProxy()) {
+			InternalEObject oldProperty = (InternalEObject) property;
+			property = (Property) eResolveProxy(oldProperty);
+			if (property != oldProperty) {
+				if (eNotificationRequired()) {
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, LayersPackage.PROPERTY_INDEX__PROPERTY, oldProperty, property));
+				}
+			}
+		}
+		return property;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public Property basicGetProperty() {
+		return property;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setProperty(Property newProperty) {
+		Property oldProperty = property;
+		property = newProperty;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.PROPERTY_INDEX__PROPERTY, oldProperty, property));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getIndex() {
+		return index;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setIndex(int newIndex) {
+		int oldIndex = index;
+		index = newIndex;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.PROPERTY_INDEX__INDEX, oldIndex, index));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case LayersPackage.PROPERTY_INDEX__PROPERTY:
+			if (resolve) {
+				return getProperty();
+			}
+			return basicGetProperty();
+		case LayersPackage.PROPERTY_INDEX__INDEX:
+			return getIndex();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case LayersPackage.PROPERTY_INDEX__PROPERTY:
+			setProperty((Property) newValue);
+			return;
+		case LayersPackage.PROPERTY_INDEX__INDEX:
+			setIndex((Integer) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.PROPERTY_INDEX__PROPERTY:
+			setProperty((Property) null);
+			return;
+		case LayersPackage.PROPERTY_INDEX__INDEX:
+			setIndex(INDEX_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.PROPERTY_INDEX__PROPERTY:
+			return property != null;
+		case LayersPackage.PROPERTY_INDEX__INDEX:
+			return index != INDEX_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (index: ");
+		result.append(index);
+		result.append(')');
+		return result.toString();
+	}
+
+} // PropertyIndexImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyOperatorImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyOperatorImpl.java
new file mode 100755
index 0000000..17d2179
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyOperatorImpl.java
@@ -0,0 +1,224 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyOperatorImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyOperatorImpl extends MinimalEObjectImpl.Container implements PropertyOperator {
+	/**
+	 * 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 cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected PropertyOperatorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.PROPERTY_OPERATOR;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.PROPERTY_OPERATOR__NAME, oldName, name));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public ComputePropertyValueCommand getComputePropertyValueCommand(EList<ComputePropertyValueCommand> property) throws LayersException {
+		// 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 LayersPackage.PROPERTY_OPERATOR__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 LayersPackage.PROPERTY_OPERATOR__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 LayersPackage.PROPERTY_OPERATOR__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.PROPERTY_OPERATOR__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		}
+		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 LayersPackage.PROPERTY_OPERATOR___GET_COMPUTE_PROPERTY_VALUE_COMMAND__ELIST:
+			try {
+				return getComputePropertyValueCommand((EList<ComputePropertyValueCommand>) arguments.get(0));
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} // PropertyOperatorImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyRegistryImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyRegistryImpl.java
new file mode 100755
index 0000000..ea34389
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyRegistryImpl.java
@@ -0,0 +1,420 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.Type;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Registry</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyRegistryImpl#getProperties <em>Properties</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyRegistryImpl#getTypeRegistry <em>Type Registry</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyRegistryImpl#getPropertiesCount <em>Properties Count</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertyRegistryImpl extends MinimalEObjectImpl.Container implements PropertyRegistry {
+	/**
+	 * The cached value of the '{@link #getProperties() <em>Properties</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getProperties()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Property> properties;
+
+	/**
+	 * The cached value of the '{@link #getTypeRegistry() <em>Type Registry</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getTypeRegistry()
+	 * @generated
+	 * @ordered
+	 */
+	protected TypeRegistry typeRegistry;
+
+	/**
+	 * The default value of the '{@link #getPropertiesCount() <em>Properties Count</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getPropertiesCount()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int PROPERTIES_COUNT_EDEFAULT = 0;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOt
+	 */
+	protected PropertyRegistryImpl() {
+		super();
+		// initialie transient ref
+		init();
+	}
+
+	/**
+	 * Init the transient references
+	 * Create the internal objects : TypeRegistry.
+	 */
+	protected void init() {
+		// Create the TypeRegistry
+		TypeRegistry typeRegistry = LayersFactory.eINSTANCE.createTypeRegistry();
+		setTypeRegistry(typeRegistry);
+
+		// Initialize the list of properties
+		// Properties to add
+		// name, type, defaultvalues
+		// colors: black=0 , fushia=15053796,
+		String[] properties = new String[] {
+				// "name", "String",
+				// "age", "int",
+				// "num", "int",
+				// "addr", "String",
+				// "isValid", "boolean", "true",
+				"isVisible", "boolean", "true",
+				"isAbstract", "boolean", "false",
+				"fill", "Fill", "0, 15053796", // "transparency, fillColor"
+				"line", "LineType", "0, -1", // "lineColor, lineWith"
+				"font", "FontType", "Segoe UI, 9, 0, false", // "FontName, FontHeight, FontColor, Bold"
+		// "bgcolor", "Color",
+				// "fgcolor", "Color",
+		};
+
+		for (int i = 0; i < properties.length; i += 3) {
+			Property property = LayersFactory.eINSTANCE.createProperty();
+			property.setName(properties[i]);
+			Type propertyType = typeRegistry.getTypes().get(properties[i + 1]);
+			property.setType(propertyType);
+			// Create Default value
+			String defaultValueStr = properties[i + 2];
+			if (defaultValueStr != null && defaultValueStr.length() > 0) {
+				TypeInstance defaultValue = propertyType.createInstance();
+				defaultValue.setValueFromString(defaultValueStr);
+				property.setDefaultValue(defaultValue);
+			}
+
+			addProperty(property);
+			// getProperties().add(property);
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.PROPERTY_REGISTRY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EList<Property> getProperties() {
+		if (properties == null) {
+			properties = new EObjectContainmentEList<Property>(Property.class, this, LayersPackage.PROPERTY_REGISTRY__PROPERTIES);
+		}
+		return properties;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public TypeRegistry getTypeRegistry() {
+		return typeRegistry;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public NotificationChain basicSetTypeRegistry(TypeRegistry newTypeRegistry, NotificationChain msgs) {
+		TypeRegistry oldTypeRegistry = typeRegistry;
+		typeRegistry = newTypeRegistry;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LayersPackage.PROPERTY_REGISTRY__TYPE_REGISTRY, oldTypeRegistry, newTypeRegistry);
+			if (msgs == null) {
+				msgs = notification;
+			} else {
+				msgs.add(notification);
+			}
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setTypeRegistry(TypeRegistry newTypeRegistry) {
+		if (newTypeRegistry != typeRegistry) {
+			NotificationChain msgs = null;
+			if (typeRegistry != null) {
+				msgs = ((InternalEObject) typeRegistry).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LayersPackage.PROPERTY_REGISTRY__TYPE_REGISTRY, null, msgs);
+			}
+			if (newTypeRegistry != null) {
+				msgs = ((InternalEObject) newTypeRegistry).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LayersPackage.PROPERTY_REGISTRY__TYPE_REGISTRY, null, msgs);
+			}
+			msgs = basicSetTypeRegistry(newTypeRegistry, msgs);
+			if (msgs != null) {
+				msgs.dispatch();
+			}
+		}
+		else if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.PROPERTY_REGISTRY__TYPE_REGISTRY, newTypeRegistry, newTypeRegistry));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public int getPropertiesCount() {
+		return getProperties().size();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public int getPropertyIndex(String propertyName) throws NotFoundException {
+
+		if (propertyName == null) {
+			throw new NotFoundException("Null not Allowed");
+		}
+		List<Property> props = getProperties();
+		for (int i = 0; i < props.size(); i++) {
+			if (propertyName.equals(props.get(i).getName())) {
+				return i;
+			}
+		}
+
+		// Not found
+		throw new NotFoundException("No property found with name '" + propertyName + "'");
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public Property getProperty(String propertyName) throws NotFoundException {
+
+		int index = getPropertyIndex(propertyName);
+		return getProperties().get(index);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void addProperty(Property property) {
+
+		// Check if the property already exist
+		try {
+			getProperty(property.getName());
+			// Already exist ==> return
+			return;
+		} catch (NotFoundException e) {
+			// ok
+		}
+
+		// set the index
+		property.setIndex(getProperties().size());
+		// Add the property
+		getProperties().add(property);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case LayersPackage.PROPERTY_REGISTRY__PROPERTIES:
+			return ((InternalEList<?>) getProperties()).basicRemove(otherEnd, msgs);
+		case LayersPackage.PROPERTY_REGISTRY__TYPE_REGISTRY:
+			return basicSetTypeRegistry(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 LayersPackage.PROPERTY_REGISTRY__PROPERTIES:
+			return getProperties();
+		case LayersPackage.PROPERTY_REGISTRY__TYPE_REGISTRY:
+			return getTypeRegistry();
+		case LayersPackage.PROPERTY_REGISTRY__PROPERTIES_COUNT:
+			return getPropertiesCount();
+		}
+		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 LayersPackage.PROPERTY_REGISTRY__PROPERTIES:
+			getProperties().clear();
+			getProperties().addAll((Collection<? extends Property>) newValue);
+			return;
+		case LayersPackage.PROPERTY_REGISTRY__TYPE_REGISTRY:
+			setTypeRegistry((TypeRegistry) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.PROPERTY_REGISTRY__PROPERTIES:
+			getProperties().clear();
+			return;
+		case LayersPackage.PROPERTY_REGISTRY__TYPE_REGISTRY:
+			setTypeRegistry((TypeRegistry) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.PROPERTY_REGISTRY__PROPERTIES:
+			return properties != null && !properties.isEmpty();
+		case LayersPackage.PROPERTY_REGISTRY__TYPE_REGISTRY:
+			return typeRegistry != null;
+		case LayersPackage.PROPERTY_REGISTRY__PROPERTIES_COUNT:
+			return getPropertiesCount() != PROPERTIES_COUNT_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+		case LayersPackage.PROPERTY_REGISTRY___GET_PROPERTY_INDEX__STRING:
+			try {
+				return getPropertyIndex((String) arguments.get(0));
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		case LayersPackage.PROPERTY_REGISTRY___GET_PROPERTY__STRING:
+			try {
+				return getProperty((String) arguments.get(0));
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		case LayersPackage.PROPERTY_REGISTRY___ADD_PROPERTY__PROPERTY:
+			addProperty((Property) arguments.get(0));
+			return null;
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+} // PropertyRegistryImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertySetterImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertySetterImpl.java
new file mode 100755
index 0000000..1ff6ac5
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertySetterImpl.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterImpl#getProperty <em>Property</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterImpl#getPropertyName <em>Property Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class PropertySetterImpl extends MinimalEObjectImpl.Container implements PropertySetter {
+	/**
+	 * The cached value of the '{@link #getProperty() <em>Property</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getProperty()
+	 * @generated
+	 * @ordered
+	 */
+	protected Property property;
+
+	/**
+	 * The default value of the '{@link #getPropertyName() <em>Property Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getPropertyName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String PROPERTY_NAME_EDEFAULT = null;
+	/**
+	 * The cached value of the '{@link #getPropertyName() <em>Property Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getPropertyName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String propertyName = PROPERTY_NAME_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected PropertySetterImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.PROPERTY_SETTER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Property getProperty() {
+		if (property != null && property.eIsProxy()) {
+			InternalEObject oldProperty = (InternalEObject) property;
+			property = (Property) eResolveProxy(oldProperty);
+			if (property != oldProperty) {
+				if (eNotificationRequired()) {
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, LayersPackage.PROPERTY_SETTER__PROPERTY, oldProperty, property));
+				}
+			}
+		}
+		return property;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public Property basicGetProperty() {
+		return property;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setProperty(Property newProperty) {
+		Property oldProperty = property;
+		property = newProperty;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.PROPERTY_SETTER__PROPERTY, oldProperty, property));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getPropertyName() {
+		return propertyName;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setPropertyName(String newPropertyName) {
+		String oldPropertyName = propertyName;
+		propertyName = newPropertyName;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.PROPERTY_SETTER__PROPERTY_NAME, oldPropertyName, propertyName));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setValue(View view, TypeInstance value) {
+		// 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 LayersPackage.PROPERTY_SETTER__PROPERTY:
+			if (resolve) {
+				return getProperty();
+			}
+			return basicGetProperty();
+		case LayersPackage.PROPERTY_SETTER__PROPERTY_NAME:
+			return getPropertyName();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case LayersPackage.PROPERTY_SETTER__PROPERTY:
+			setProperty((Property) newValue);
+			return;
+		case LayersPackage.PROPERTY_SETTER__PROPERTY_NAME:
+			setPropertyName((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.PROPERTY_SETTER__PROPERTY:
+			setProperty((Property) null);
+			return;
+		case LayersPackage.PROPERTY_SETTER__PROPERTY_NAME:
+			setPropertyName(PROPERTY_NAME_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.PROPERTY_SETTER__PROPERTY:
+			return property != null;
+		case LayersPackage.PROPERTY_SETTER__PROPERTY_NAME:
+			return PROPERTY_NAME_EDEFAULT == null ? propertyName != null : !PROPERTY_NAME_EDEFAULT.equals(propertyName);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+		case LayersPackage.PROPERTY_SETTER___SET_VALUE__VIEW_TYPEINSTANCE:
+			setValue((View) arguments.get(0), (TypeInstance) arguments.get(1));
+			return null;
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (propertyName: ");
+		result.append(propertyName);
+		result.append(')');
+		return result.toString();
+	}
+
+} // PropertySetterImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertySetterRegistryImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertySetterRegistryImpl.java
new file mode 100755
index 0000000..840fa28
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertySetterRegistryImpl.java
@@ -0,0 +1,422 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EcoreEMap;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.util.PropertyIndexedList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Property Setter Registry</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterRegistryImpl#getPropertySetters <em>Property Setters</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterRegistryImpl#getSetterMap <em>Setter Map</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterRegistryImpl#getApplication <em>Application</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PropertySetterRegistryImpl extends MinimalEObjectImpl.Container implements PropertySetterRegistry {
+	/**
+	 * The cached value of the '{@link #getPropertySetters() <em>Property Setters</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getPropertySetters()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<PropertySetter> propertySetters;
+
+	/**
+	 * The cached value of the '{@link #getSetterMap() <em>Setter Map</em>}' map.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getSetterMap()
+	 * @generated
+	 * @ordered
+	 */
+	protected EMap<String, PropertySetter> setterMap;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected PropertySetterRegistryImpl() {
+		super();
+		init();
+	}
+
+	/**
+	 * Initialize the registry with some setters
+	 */
+	protected void init() {
+
+		addPropertySetter(LayersFactory.eINSTANCE.createFillPropertySetter());
+		addPropertySetter(LayersFactory.eINSTANCE.createIsValidPropertySetter());
+		addPropertySetter(LayersFactory.eINSTANCE.createLinePropertySetter());
+		addPropertySetter(LayersFactory.eINSTANCE.createFontPropertySetter());
+		addPropertySetter(LayersFactory.eINSTANCE.createIsVisiblePropertySetter());
+		addPropertySetter(LayersFactory.eINSTANCE.createIsAbstractUmlSetter());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.PROPERTY_SETTER_REGISTRY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public EList<PropertySetter> getPropertySetters() {
+		// if (propertySetters == null) {
+		// propertySetters = new EObjectResolvingEList<PropertySetter>(PropertySetter.class, this, LayersPackage.PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS);
+		// }
+		if (propertySetters == null) {
+			propertySetters = new PropertyIndexedList<PropertySetter>(getSetterMap(), PropertySetter.class, this, LayersPackage.PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS, LayersPackage.PROPERTY_SETTER_REGISTRY__SETTER_MAP, PropertySetter.NULL_PROPERTY_SETTER);
+		}
+		return propertySetters;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EMap<String, PropertySetter> getSetterMap() {
+		if (setterMap == null) {
+			setterMap = new EcoreEMap<String, PropertySetter>(LayersPackage.Literals.STRING_TO_PROPERTY_SETTER, StringToPropertySetterImpl.class, this, LayersPackage.PROPERTY_SETTER_REGISTRY__SETTER_MAP);
+		}
+		return setterMap;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public LayersStackApplication getApplication() {
+		if (eContainerFeatureID() != LayersPackage.PROPERTY_SETTER_REGISTRY__APPLICATION) {
+			return null;
+		}
+		return (LayersStackApplication) eInternalContainer();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public NotificationChain basicSetApplication(LayersStackApplication newApplication, NotificationChain msgs) {
+		msgs = eBasicSetContainer((InternalEObject) newApplication, LayersPackage.PROPERTY_SETTER_REGISTRY__APPLICATION, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void setApplication(LayersStackApplication newApplication) {
+		if (newApplication != eInternalContainer() || (eContainerFeatureID() != LayersPackage.PROPERTY_SETTER_REGISTRY__APPLICATION && newApplication != null)) {
+			if (EcoreUtil.isAncestor(this, newApplication)) {
+				throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
+			}
+			NotificationChain msgs = null;
+			if (eInternalContainer() != null) {
+				msgs = eBasicRemoveFromContainer(msgs);
+			}
+			if (newApplication != null) {
+				msgs = ((InternalEObject) newApplication).eInverseAdd(this, LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY, LayersStackApplication.class, msgs);
+			}
+			msgs = basicSetApplication(newApplication, msgs);
+			if (msgs != null) {
+				msgs.dispatch();
+			}
+		}
+		else if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.PROPERTY_SETTER_REGISTRY__APPLICATION, newApplication, newApplication));
+		}
+
+
+		// update the list of PropertySetters
+		if (newApplication != null) {
+			List<Property> list = newApplication.getPropertyRegistry().getProperties();
+			((PropertyIndexedList<PropertySetter>) getPropertySetters()).setPropertyList(list);
+		}
+		;
+
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public PropertySetter getPropertySetter(Property property) throws NotFoundException {
+
+		try {
+			return getPropertySetters().get(property.getIndex());
+		} catch (IndexOutOfBoundsException e) {
+			// Try by name
+			PropertySetter setter = getPropertySetter(property.getName());
+			if (setter != null) {
+				return setter;
+			}
+			throw new NotFoundException("No setter found for property '" + property.getName() + "'");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public PropertySetter getPropertySetter(String property) throws NotFoundException {
+		return getSetterMap().get(property);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void addPropertySetter(PropertySetter setter) {
+
+		String key = setter.getPropertyName();
+		if (key == null || key.length() == 0) {
+			throw new UnsupportedOperationException("Setter must have a valid name.");
+		}
+
+		getSetterMap().put(key, setter);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case LayersPackage.PROPERTY_SETTER_REGISTRY__APPLICATION:
+			if (eInternalContainer() != null) {
+				msgs = eBasicRemoveFromContainer(msgs);
+			}
+			return basicSetApplication((LayersStackApplication) 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 LayersPackage.PROPERTY_SETTER_REGISTRY__SETTER_MAP:
+			return ((InternalEList<?>) getSetterMap()).basicRemove(otherEnd, msgs);
+		case LayersPackage.PROPERTY_SETTER_REGISTRY__APPLICATION:
+			return basicSetApplication(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+		switch (eContainerFeatureID()) {
+		case LayersPackage.PROPERTY_SETTER_REGISTRY__APPLICATION:
+			return eInternalContainer().eInverseRemove(this, LayersPackage.LAYERS_STACK_APPLICATION__PROPERTY_SETTER_REGISTRY, LayersStackApplication.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 LayersPackage.PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS:
+			return getPropertySetters();
+		case LayersPackage.PROPERTY_SETTER_REGISTRY__SETTER_MAP:
+			if (coreType) {
+				return getSetterMap();
+			} else {
+				return getSetterMap().map();
+			}
+		case LayersPackage.PROPERTY_SETTER_REGISTRY__APPLICATION:
+			return getApplication();
+		}
+		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 LayersPackage.PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS:
+			getPropertySetters().clear();
+			getPropertySetters().addAll((Collection<? extends PropertySetter>) newValue);
+			return;
+		case LayersPackage.PROPERTY_SETTER_REGISTRY__SETTER_MAP:
+			((EStructuralFeature.Setting) getSetterMap()).set(newValue);
+			return;
+		case LayersPackage.PROPERTY_SETTER_REGISTRY__APPLICATION:
+			setApplication((LayersStackApplication) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS:
+			getPropertySetters().clear();
+			return;
+		case LayersPackage.PROPERTY_SETTER_REGISTRY__SETTER_MAP:
+			getSetterMap().clear();
+			return;
+		case LayersPackage.PROPERTY_SETTER_REGISTRY__APPLICATION:
+			setApplication((LayersStackApplication) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.PROPERTY_SETTER_REGISTRY__PROPERTY_SETTERS:
+			return propertySetters != null && !propertySetters.isEmpty();
+		case LayersPackage.PROPERTY_SETTER_REGISTRY__SETTER_MAP:
+			return setterMap != null && !setterMap.isEmpty();
+		case LayersPackage.PROPERTY_SETTER_REGISTRY__APPLICATION:
+			return getApplication() != 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 LayersPackage.PROPERTY_SETTER_REGISTRY___GET_PROPERTY_SETTER__PROPERTY:
+			try {
+				return getPropertySetter((Property) arguments.get(0));
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		case LayersPackage.PROPERTY_SETTER_REGISTRY___GET_PROPERTY_SETTER__STRING:
+			try {
+				return getPropertySetter((String) arguments.get(0));
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		case LayersPackage.PROPERTY_SETTER_REGISTRY___ADD_PROPERTY_SETTER__PROPERTYSETTER:
+			addPropertySetter((PropertySetter) arguments.get(0));
+			return null;
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+} // PropertySetterRegistryImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/RegExpLayerDescriptorImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/RegExpLayerDescriptorImpl.java
new file mode 100755
index 0000000..9b7723b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/RegExpLayerDescriptorImpl.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayerDescriptor;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Reg Exp Layer Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class RegExpLayerDescriptorImpl extends LayerDescriptorImpl implements RegExpLayerDescriptor {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected RegExpLayerDescriptorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.REG_EXP_LAYER_DESCRIPTOR;
+	}
+
+} // RegExpLayerDescriptorImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/RegExpLayerImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/RegExpLayerImpl.java
new file mode 100755
index 0000000..c2b0ae4
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/RegExpLayerImpl.java
@@ -0,0 +1,1115 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.eclipse.papyrus.layers.stackmodel.Activator.log;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.query.conditions.eobjects.EObjectCondition;
+import org.eclipse.emf.query.statements.FROM;
+import org.eclipse.emf.query.statements.IQueryResult;
+import org.eclipse.emf.query.statements.SELECT;
+import org.eclipse.emf.query.statements.WHERE;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.ocl.ecore.OCL;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.exprmatcher.ExpressionMatcher;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.EventLevel;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer;
+import org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewEventNotifier;
+import org.eclipse.papyrus.layers.stackmodel.notifier.IDiagramViewEventListener;
+import org.eclipse.papyrus.layers.stackmodel.util.ObservableListView;
+
+import com.google.common.eventbus.Subscribe;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Reg Exp Layer</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerImpl#getExpr <em>Expr</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerImpl#getLanguage <em>Language</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerImpl#isDomainChangedEventDependant <em>Is Domain Changed Event Dependant</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerImpl#getDomainChangedEventLevel <em>Domain Changed Event Level</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerImpl#isDiagramChangedEventDependant <em>Is Diagram Changed Event Dependant</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerImpl#getDiagramChangedEventLevel <em>Diagram Changed Event Level</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerImpl#getExpressionContextObjectType <em>Expression Context Object Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class RegExpLayerImpl extends AbstractLayerImpl implements RegExpLayer {
+	/**
+	 * The default value of the '{@link #getExpr() <em>Expr</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getExpr()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String EXPR_EDEFAULT = null;
+	/**
+	 * The cached value of the '{@link #getExpr() <em>Expr</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getExpr()
+	 * @generated
+	 * @ordered
+	 */
+	protected String expr = EXPR_EDEFAULT;
+	/**
+	 * The default value of the '{@link #getLanguage() <em>Language</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getLanguage()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String LANGUAGE_EDEFAULT = null;
+	/**
+	 * The cached value of the '{@link #getLanguage() <em>Language</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getLanguage()
+	 * @generated
+	 * @ordered
+	 */
+	protected String language = LANGUAGE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isDomainChangedEventDependant() <em>Is Domain Changed Event Dependant</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #isDomainChangedEventDependant()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean IS_DOMAIN_CHANGED_EVENT_DEPENDANT_EDEFAULT = false;
+	/**
+	 * The cached value of the '{@link #isDomainChangedEventDependant() <em>Is Domain Changed Event Dependant</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #isDomainChangedEventDependant()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean isDomainChangedEventDependant = IS_DOMAIN_CHANGED_EVENT_DEPENDANT_EDEFAULT;
+	/**
+	 * The default value of the '{@link #getDomainChangedEventLevel() <em>Domain Changed Event Level</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getDomainChangedEventLevel()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final EventLevel DOMAIN_CHANGED_EVENT_LEVEL_EDEFAULT = EventLevel.LEVEL1;
+	/**
+	 * The cached value of the '{@link #getDomainChangedEventLevel() <em>Domain Changed Event Level</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getDomainChangedEventLevel()
+	 * @generated
+	 * @ordered
+	 */
+	protected EventLevel domainChangedEventLevel = DOMAIN_CHANGED_EVENT_LEVEL_EDEFAULT;
+	/**
+	 * The default value of the '{@link #isDiagramChangedEventDependant() <em>Is Diagram Changed Event Dependant</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #isDiagramChangedEventDependant()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean IS_DIAGRAM_CHANGED_EVENT_DEPENDANT_EDEFAULT = false;
+	/**
+	 * The cached value of the '{@link #isDiagramChangedEventDependant() <em>Is Diagram Changed Event Dependant</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #isDiagramChangedEventDependant()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean isDiagramChangedEventDependant = IS_DIAGRAM_CHANGED_EVENT_DEPENDANT_EDEFAULT;
+	/**
+	 * The default value of the '{@link #getDiagramChangedEventLevel() <em>Diagram Changed Event Level</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getDiagramChangedEventLevel()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final EventLevel DIAGRAM_CHANGED_EVENT_LEVEL_EDEFAULT = EventLevel.LEVEL1;
+	/**
+	 * The cached value of the '{@link #getDiagramChangedEventLevel() <em>Diagram Changed Event Level</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getDiagramChangedEventLevel()
+	 * @generated
+	 * @ordered
+	 */
+	protected EventLevel diagramChangedEventLevel = DIAGRAM_CHANGED_EVENT_LEVEL_EDEFAULT;
+	/**
+	 * The default value of the '{@link #getExpressionContextObjectType() <em>Expression Context Object Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getExpressionContextObjectType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String EXPRESSION_CONTEXT_OBJECT_TYPE_EDEFAULT = null;
+	/**
+	 * The cached value of the '{@link #getExpressionContextObjectType() <em>Expression Context Object Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getExpressionContextObjectType()
+	 * @generated
+	 * @ordered
+	 */
+	protected String expressionContextObjectType = EXPRESSION_CONTEXT_OBJECT_TYPE_EDEFAULT;
+
+	protected DiagramViewEventNotifier diagramViewEventNotifier;
+
+	/**
+	 * Expression matcher computing the expr, and firing events when the matching elements change.
+	 */
+	protected ExpressionMatcher expressionMatcher;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected RegExpLayerImpl() {
+		super();
+
+		// Initialize expressionmatcher
+		// The expression Macher use this class views list.
+		// When expressionMatcher::refreshMatchingElements() is called, the provided list is refreshed.
+		// So, views is synchronized and events are fired.
+		expressionMatcher = new ExpressionMatcher(getViews());
+		resetExpressionMatcherRoots();
+
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerImpl#startBehaviors()
+	 *
+	 */
+	@Override
+	protected void startBehaviors() {
+		// TODO Auto-generated method stub
+		super.startBehaviors();
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#startAfterReloading()
+	 *
+	 */
+	@Override
+	public void startAfterReloading() {
+		// TODO Auto-generated method stub
+		super.startAfterReloading();
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#attachToLayersStack(org.eclipse.papyrus.layers.stackmodel.layers.LayersStack)
+	 *
+	 * @param owningLayersStack
+	 */
+	@Override
+	public void attachToLayersStack(LayersStack owningLayersStack) {
+		// TODO Auto-generated method stub
+		super.attachToLayersStack(owningLayersStack);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.REG_EXP_LAYER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getExpr() {
+		return expr;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void setExpr(String newExpr) {
+		String oldExpr = expr;
+		expr = newExpr;
+		// Try to set the expression
+		try {
+			// Check synchro between RegExp::views and ExpressionMatcher::matchingElements
+			// they can be unsync after the model was loaded by EMF
+			checkViewsAndMatchingElementsSync();
+			// First, reset expr roots. Do it because actually the roots are not properly set.
+			resetExpressionMatcherRoots();
+			// Change the expression, and recompute the matching elements.
+			expressionMatcher.setExpression(newExpr);
+			expressionMatcher.refreshMatchingElements();
+		} catch (LayersException e) {
+			// silently fails, but log the error.
+			log.error("Error - " + this.getClass().getSimpleName() + " - " + e.getMessage(), e);
+		}
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.REG_EXP_LAYER__EXPR, oldExpr, expr));
+		}
+	}
+
+	/**
+	 * Check synchro between RegExp::views and ExpressionMatcher::matchingElements
+	 * they can be unsync after the model was loaded by EMF.
+	 * <b>
+	 * This method is used to correct the bug where both list are unsync after the model was loaded by EMF.
+	 *
+	 * @Deprecated Not needed anymore
+	 */
+	private void checkViewsAndMatchingElementsSync() {
+
+		// // Check if both list have the same size.
+		// // We don't to check the content, because we want a quick check
+		// // Actually, unsync appear only after the model was reloded by EMF.
+		// if( getViews().size() == expressionMatcher.getMatchingElements().size() ) {
+		// // ok
+		// return;
+		// }
+		//
+		// // Sync is required
+		// List<View> matchElements = expressionMatcher.getMatchingElements().getUnnotifyingList();
+		// matchElements.clear();
+		// matchElements.addAll(getViews());
+
+	}
+
+	/**
+	 * OCL Condition computed from the expr.
+	 */
+	protected EObjectCondition condition;
+	protected OCL ocl;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getLanguage() {
+		return language;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setLanguage(String newLanguage) {
+		String oldLanguage = language;
+		language = newLanguage;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.REG_EXP_LAYER__LANGUAGE, oldLanguage, language));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean isDomainChangedEventDependant() {
+		return isDomainChangedEventDependant;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setIsDomainChangedEventDependant(boolean newIsDomainChangedEventDependant) {
+		boolean oldIsDomainChangedEventDependant = isDomainChangedEventDependant;
+		isDomainChangedEventDependant = newIsDomainChangedEventDependant;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.REG_EXP_LAYER__IS_DOMAIN_CHANGED_EVENT_DEPENDANT, oldIsDomainChangedEventDependant, isDomainChangedEventDependant));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EventLevel getDomainChangedEventLevel() {
+		return domainChangedEventLevel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setDomainChangedEventLevel(EventLevel newDomainChangedEventLevel) {
+		EventLevel oldDomainChangedEventLevel = domainChangedEventLevel;
+		domainChangedEventLevel = newDomainChangedEventLevel == null ? DOMAIN_CHANGED_EVENT_LEVEL_EDEFAULT : newDomainChangedEventLevel;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.REG_EXP_LAYER__DOMAIN_CHANGED_EVENT_LEVEL, oldDomainChangedEventLevel, domainChangedEventLevel));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean isDiagramChangedEventDependant() {
+		return isDiagramChangedEventDependant;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setIsDiagramChangedEventDependant(boolean newIsDiagramChangedEventDependant) {
+		boolean oldIsDiagramChangedEventDependant = isDiagramChangedEventDependant;
+		isDiagramChangedEventDependant = newIsDiagramChangedEventDependant;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.REG_EXP_LAYER__IS_DIAGRAM_CHANGED_EVENT_DEPENDANT, oldIsDiagramChangedEventDependant, isDiagramChangedEventDependant));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EventLevel getDiagramChangedEventLevel() {
+		return diagramChangedEventLevel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setDiagramChangedEventLevel(EventLevel newDiagramChangedEventLevel) {
+		EventLevel oldDiagramChangedEventLevel = diagramChangedEventLevel;
+		diagramChangedEventLevel = newDiagramChangedEventLevel == null ? DIAGRAM_CHANGED_EVENT_LEVEL_EDEFAULT : newDiagramChangedEventLevel;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.REG_EXP_LAYER__DIAGRAM_CHANGED_EVENT_LEVEL, oldDiagramChangedEventLevel, diagramChangedEventLevel));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getExpressionContextObjectType() {
+		return expressionContextObjectType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setExpressionContextObjectType(String newExpressionContextObjectType) {
+		String oldExpressionContextObjectType = expressionContextObjectType;
+		expressionContextObjectType = newExpressionContextObjectType;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.REG_EXP_LAYER__EXPRESSION_CONTEXT_OBJECT_TYPE, oldExpressionContextObjectType, expressionContextObjectType));
+		}
+	}
+
+	/**
+	 * Listener on {@link ObservableListView} eventBus. This method is called each time a change occurs in the
+	 * result of the expression.
+	 * When the result change, the list of attached views is updated accordingly.
+	 *
+	 *
+	 * @param event
+	 */
+	@Subscribe
+	public void expressionResultChanged(ObservableListView<View>.ObservableListEvent event) {
+
+		if (log.isDebugEnabled()) {
+			log.debug(this.getClass().getSimpleName() + ".expressionResultChanged()");
+		}
+
+
+		if (!event.getAddedElements().isEmpty()) {
+			getViews().addAll(event.getAddedElements());
+		}
+		if (!event.getRemovedElements().isEmpty()) {
+			getViews().removeAll(event.getRemovedElements());
+		}
+
+	}
+
+	/**
+	 * This layer has just been added to a LayerStack.
+	 * Set the root of the expression.
+	 * Set the views to match the result of the expression.
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#initLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayersStack)
+	 *
+	 * @param owningLayersStack
+	 */
+	@Override
+	public void initLayer(LayersStack owningLayersStack) {
+		super.initLayer(owningLayersStack);
+
+		resetExpressionMatcherRoots();
+		checkViewsAndMatchingElementsSync();
+
+		// // Synchronize the layer views with the result of expressionMatcher.
+		// // Try to minimize the number of events.
+		// // For that, freeze temporarily the events from this layer
+		// // Refresh the result and reset the views list while events are disabled.
+		// boolean isDeliveringEvents = eDeliver();
+		// eSetDeliver(false);
+		//
+		// expressionMatcher.refreshMatchingElements();
+		// List<View> toAdd = expressionMatcher.getMatchingElements();
+		// if( !toAdd.isEmpty() ) {
+		// getViews().clear();
+		// }
+		//
+		// // Reenable events
+		// eSetDeliver(true);
+		//
+		// // Set the views
+		//
+		// if( !toAdd.isEmpty() ) {
+		// getViews().addAll(expressionMatcher.getMatchingElements());
+		// }
+		// else {
+		// // If there is nothing to add, clear the list, in order to send appropriate event.
+		// getViews().clear();
+		// }
+
+
+	}
+
+	/**
+	 * Check if the associated Diagram has changed, and if true, change it in the ExpressionMatcher.
+	 * This does not compute the result.
+	 */
+	private void resetExpressionMatcherRoots() {
+
+		try {
+			expressionMatcher.setSearchRoots(getLayersStack().getDiagram());
+		} catch (NotFoundException e) {
+			// layerStack not found ==> no roots
+			expressionMatcher.setSearchRoots(Collections.EMPTY_LIST);
+		}
+
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param newLayerParent
+	 * @generated NOT
+	 * @deprecated not used
+	 */
+	@Deprecated
+	@Override
+	public void activate(AbstractLayerOperator newLayerParent) {
+
+		// LayersStack layersStack;
+		// try {
+		// layersStack = newLayerParent.getLayersStack();
+		// } catch (NotFoundException e) {
+		// // silently fails
+		// return;
+		// }
+		//
+		// // Listen on view events
+		// if(diagramViewEventNotifier == null) {
+		// diagramViewEventNotifier = new DiagramViewEventNotifier(layersStack.getDiagram());
+		// return;
+		// }
+
+		// diagramViewEventNotifier.
+
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param oldParentLayer
+	 * @generated NOT
+	 * @deprecated
+	 */
+	@Deprecated
+	@Override
+	public void deactivate(AbstractLayerOperator oldParentLayer) {
+
+		// if( oldParentLayer == null) {
+		// return;
+		// }
+		//
+		// LayersStack layersStack;
+		// try {
+		// layersStack = oldParentLayer.getLayersStack();
+		// } catch (NotFoundException e) {
+		// // silently fails
+		// return;
+		// }
+		//
+		// layersStack.getDiagram();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public boolean isDerivedView(View view) throws LayersException {
+
+		if (condition == null) {
+			return false;
+		}
+
+		// Create the OCL statement
+		SELECT statement = new SELECT(SELECT.UNBOUNDED, false,
+				new FROM(view), new WHERE(condition),
+				new NullProgressMonitor());
+
+		// Execute the OCL statement
+		IQueryResult results = statement.execute();
+
+		// the view is derived if the condition match the view.
+		return !results.isEmpty();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Check if the view satisfy the expr condition.
+	 * If the condition is satisfied, ensure that the view is attached.
+	 * If the condition is not satisfied, ensure that the view is not attached.
+	 *
+	 *
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void attachDerivedView(View view) throws LayersException {
+		// TODO: implement this method
+		if (condition == null) {
+			return;
+		}
+
+		// Create the OCL statement
+		SELECT statement = new SELECT(SELECT.UNBOUNDED, false,
+				new FROM(view), new WHERE(condition),
+				new NullProgressMonitor());
+
+		// Execute the OCL statement
+		IQueryResult results = statement.execute();
+
+		//
+		if (!results.isEmpty()) {
+			// The condition is satisfied. Ensure the view is attached
+			List<View> attachedViews = getViews();
+			if (attachedViews.contains(view)) {
+				return;
+			}
+			attachedViews.add(view);
+		}
+		else {
+			// The condition is not satisfied. Ensure the view is not attached.
+			getViews().remove(view);
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Attach each view that satisfy the condition.
+	 * Detach each view that do not satisfy the condition.
+	 * TODO rename to updateDerivedViews() ?
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void attachDerivedViews(EList<View> views) throws LayersException {
+
+		if (condition == null) {
+			return;
+		}
+
+		// Create the OCL statement
+		SELECT statement = new SELECT(SELECT.UNBOUNDED, false,
+				new FROM(views), new WHERE(condition),
+				new NullProgressMonitor());
+
+		// Execute the OCL statement
+		IQueryResult results = statement.execute();
+
+		// viewsToCheck
+		// attachedViews -- list of views that are attached
+		// -- getViews()
+		// viewsToAttach -- list of views that should be attached
+		// -- query result
+		// toAdd - views that are in viewsToAttach, but not in attachedViews
+		// --
+		// toRemove - views that are in attachedViews, and viewsToCheck, but not in viewsToAttach
+
+		// Compute views to add
+		// This are views in the result, but not in the list of attached
+		// viewsToAdd = results - getViews()
+		List<View> viewsToAdd = new ArrayList<View>();
+		List<View> attachedViews = getViews();
+		for (Object o : results) {
+			View v = (View) o;
+			if (!attachedViews.contains(v)) {
+				viewsToAdd.add(v);
+			}
+		}
+
+		// Compute views to remove
+		// Their is two ways to compute it:
+		// - viewsToremove = diagramViews - results
+		// - or viewsToremove = getViews() - result
+		// Use the cheaper one.
+		// The computed viewsToRemove list contains also views that are not in the layer,
+		// But this is cheaper than checking for the existence.
+
+		List<View> viewsToRemove = new ArrayList<View>();
+		for (View v : (views.size() < getViews().size() ? views : getViews())) {
+			if (!results.contains(v)) {
+				viewsToRemove.add(v);
+			}
+		}
+
+		// Do operations
+		getViews().removeAll(viewsToRemove);
+		getViews().addAll(viewsToAdd);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Update all views directly own by the diagram.
+	 *
+	 * If a view satisfy the expr condition, attach it to the Layer.
+	 * Remove all others view from the layer. <br>
+	 * To avoid multiple events, we compute the list of views to remove from the layer, and the list
+	 * of views to add to layer. Then, we preform two operations; removeAll(toRemove) and addAll(toAdd);
+	 *
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void attachDerivedViews() throws LayersException {
+
+		if (condition == null) {
+			return;
+		}
+
+		// Check views from the diagram.
+		@SuppressWarnings("unchecked")
+		EList<View> diagramViews = getLayersStack().getDiagram().getChildren();
+
+		// Create the OCL statement
+		SELECT statement = new SELECT(SELECT.UNBOUNDED, false,
+				new FROM(diagramViews), new WHERE(condition),
+				new NullProgressMonitor());
+
+		// Execute the OCL statement
+		IQueryResult results = statement.execute();
+
+		// Compute views to add
+		// This are views in the result, but not in the list of attached
+		// viewsToAdd = results - getViews()
+		List<View> viewsToAdd = new ArrayList<View>();
+		List<View> attachedViews = getViews();
+		for (Object o : results) {
+			View v = (View) o;
+			if (!attachedViews.contains(v)) {
+				viewsToAdd.add(v);
+			}
+		}
+
+		// Compute views to remove
+		// Their is two ways to compute it:
+		// - viewsToremove = diagramViews - results
+		// - or viewsToremove = getViews() - result
+		// Use the cheaper one.
+		// The computed viewsToRemove list contains also views that are not in the layer,
+		// But this is cheaper than checking for the existence.
+
+		// List<View> viewsToRemove = new ArrayList<View>();
+		// for( View v : (views.size()<getViews().size()?views:getViews()) ) {
+		// if( !results.contains(v)) {
+		// viewsToRemove.add(v);
+		// }
+		// }
+
+		// Do operations
+		getViews().retainAll(results);
+		// getViews().removeAll(viewsToRemove);
+		getViews().addAll(viewsToAdd);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public EList<View> lookupDerivedViews(EList<View> views) throws LayersException {
+		// if(condition == null) {
+		// return EList.EMPTY_LIST;
+		// }
+		//
+		// // Check views from the diagram.
+		// @SuppressWarnings("unchecked")
+		// EList<View> diagramViews = (EList<View>)getLayersStack().getDiagram().getChildren();
+		//
+		// // Create the OCL statement
+		// SELECT statement = new SELECT(SELECT.UNBOUNDED, false,
+		// new FROM(diagramViews), new WHERE(condition),
+		// new NullProgressMonitor());
+		//
+		// // Execute the OCL statement
+		// IQueryResult results = statement.execute();
+		// return new ;
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case LayersPackage.REG_EXP_LAYER__EXPR:
+			return getExpr();
+		case LayersPackage.REG_EXP_LAYER__LANGUAGE:
+			return getLanguage();
+		case LayersPackage.REG_EXP_LAYER__IS_DOMAIN_CHANGED_EVENT_DEPENDANT:
+			return isDomainChangedEventDependant();
+		case LayersPackage.REG_EXP_LAYER__DOMAIN_CHANGED_EVENT_LEVEL:
+			return getDomainChangedEventLevel();
+		case LayersPackage.REG_EXP_LAYER__IS_DIAGRAM_CHANGED_EVENT_DEPENDANT:
+			return isDiagramChangedEventDependant();
+		case LayersPackage.REG_EXP_LAYER__DIAGRAM_CHANGED_EVENT_LEVEL:
+			return getDiagramChangedEventLevel();
+		case LayersPackage.REG_EXP_LAYER__EXPRESSION_CONTEXT_OBJECT_TYPE:
+			return getExpressionContextObjectType();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case LayersPackage.REG_EXP_LAYER__EXPR:
+			setExpr((String) newValue);
+			return;
+		case LayersPackage.REG_EXP_LAYER__LANGUAGE:
+			setLanguage((String) newValue);
+			return;
+		case LayersPackage.REG_EXP_LAYER__IS_DOMAIN_CHANGED_EVENT_DEPENDANT:
+			setIsDomainChangedEventDependant((Boolean) newValue);
+			return;
+		case LayersPackage.REG_EXP_LAYER__DOMAIN_CHANGED_EVENT_LEVEL:
+			setDomainChangedEventLevel((EventLevel) newValue);
+			return;
+		case LayersPackage.REG_EXP_LAYER__IS_DIAGRAM_CHANGED_EVENT_DEPENDANT:
+			setIsDiagramChangedEventDependant((Boolean) newValue);
+			return;
+		case LayersPackage.REG_EXP_LAYER__DIAGRAM_CHANGED_EVENT_LEVEL:
+			setDiagramChangedEventLevel((EventLevel) newValue);
+			return;
+		case LayersPackage.REG_EXP_LAYER__EXPRESSION_CONTEXT_OBJECT_TYPE:
+			setExpressionContextObjectType((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.REG_EXP_LAYER__EXPR:
+			setExpr(EXPR_EDEFAULT);
+			return;
+		case LayersPackage.REG_EXP_LAYER__LANGUAGE:
+			setLanguage(LANGUAGE_EDEFAULT);
+			return;
+		case LayersPackage.REG_EXP_LAYER__IS_DOMAIN_CHANGED_EVENT_DEPENDANT:
+			setIsDomainChangedEventDependant(IS_DOMAIN_CHANGED_EVENT_DEPENDANT_EDEFAULT);
+			return;
+		case LayersPackage.REG_EXP_LAYER__DOMAIN_CHANGED_EVENT_LEVEL:
+			setDomainChangedEventLevel(DOMAIN_CHANGED_EVENT_LEVEL_EDEFAULT);
+			return;
+		case LayersPackage.REG_EXP_LAYER__IS_DIAGRAM_CHANGED_EVENT_DEPENDANT:
+			setIsDiagramChangedEventDependant(IS_DIAGRAM_CHANGED_EVENT_DEPENDANT_EDEFAULT);
+			return;
+		case LayersPackage.REG_EXP_LAYER__DIAGRAM_CHANGED_EVENT_LEVEL:
+			setDiagramChangedEventLevel(DIAGRAM_CHANGED_EVENT_LEVEL_EDEFAULT);
+			return;
+		case LayersPackage.REG_EXP_LAYER__EXPRESSION_CONTEXT_OBJECT_TYPE:
+			setExpressionContextObjectType(EXPRESSION_CONTEXT_OBJECT_TYPE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.REG_EXP_LAYER__EXPR:
+			return EXPR_EDEFAULT == null ? expr != null : !EXPR_EDEFAULT.equals(expr);
+		case LayersPackage.REG_EXP_LAYER__LANGUAGE:
+			return LANGUAGE_EDEFAULT == null ? language != null : !LANGUAGE_EDEFAULT.equals(language);
+		case LayersPackage.REG_EXP_LAYER__IS_DOMAIN_CHANGED_EVENT_DEPENDANT:
+			return isDomainChangedEventDependant != IS_DOMAIN_CHANGED_EVENT_DEPENDANT_EDEFAULT;
+		case LayersPackage.REG_EXP_LAYER__DOMAIN_CHANGED_EVENT_LEVEL:
+			return domainChangedEventLevel != DOMAIN_CHANGED_EVENT_LEVEL_EDEFAULT;
+		case LayersPackage.REG_EXP_LAYER__IS_DIAGRAM_CHANGED_EVENT_DEPENDANT:
+			return isDiagramChangedEventDependant != IS_DIAGRAM_CHANGED_EVENT_DEPENDANT_EDEFAULT;
+		case LayersPackage.REG_EXP_LAYER__DIAGRAM_CHANGED_EVENT_LEVEL:
+			return diagramChangedEventLevel != DIAGRAM_CHANGED_EVENT_LEVEL_EDEFAULT;
+		case LayersPackage.REG_EXP_LAYER__EXPRESSION_CONTEXT_OBJECT_TYPE:
+			return EXPRESSION_CONTEXT_OBJECT_TYPE_EDEFAULT == null ? expressionContextObjectType != null : !EXPRESSION_CONTEXT_OBJECT_TYPE_EDEFAULT.equals(expressionContextObjectType);
+		}
+		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 LayersPackage.REG_EXP_LAYER___ACTIVATE__ABSTRACTLAYEROPERATOR:
+			activate((AbstractLayerOperator) arguments.get(0));
+			return null;
+		case LayersPackage.REG_EXP_LAYER___DEACTIVATE__ABSTRACTLAYEROPERATOR:
+			deactivate((AbstractLayerOperator) arguments.get(0));
+			return null;
+		case LayersPackage.REG_EXP_LAYER___IS_DERIVED_VIEW__VIEW:
+			try {
+				return isDerivedView((View) arguments.get(0));
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		case LayersPackage.REG_EXP_LAYER___ATTACH_DERIVED_VIEW__VIEW:
+			try {
+				attachDerivedView((View) arguments.get(0));
+				return null;
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		case LayersPackage.REG_EXP_LAYER___ATTACH_DERIVED_VIEWS__ELIST:
+			try {
+				attachDerivedViews((EList<View>) arguments.get(0));
+				return null;
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		case LayersPackage.REG_EXP_LAYER___ATTACH_DERIVED_VIEWS:
+			try {
+				attachDerivedViews();
+				return null;
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		case LayersPackage.REG_EXP_LAYER___LOOKUP_DERIVED_VIEWS__ELIST:
+			try {
+				return lookupDerivedViews((EList<View>) arguments.get(0));
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (expr: ");
+		result.append(expr);
+		result.append(", language: ");
+		result.append(language);
+		result.append(", isDomainChangedEventDependant: ");
+		result.append(isDomainChangedEventDependant);
+		result.append(", domainChangedEventLevel: ");
+		result.append(domainChangedEventLevel);
+		result.append(", isDiagramChangedEventDependant: ");
+		result.append(isDiagramChangedEventDependant);
+		result.append(", diagramChangedEventLevel: ");
+		result.append(diagramChangedEventLevel);
+		result.append(", expressionContextObjectType: ");
+		result.append(expressionContextObjectType);
+		result.append(')');
+		return result.toString();
+	}
+
+	/**
+	 * Called by the observers when a view is added.
+	 *
+	 * @param view
+	 */
+	protected void viewAdded(View view) {
+
+	}
+
+	/**
+	 * Called by the observers when a view is removed.
+	 *
+	 * @param view
+	 */
+	protected void viewRemoved(View view) {
+
+	}
+
+	// public class ViewEventAdapter extends {
+	//
+	// }
+
+	public class DiagramViewEventListener implements IDiagramViewEventListener {
+
+		@Override
+		public void diagramViewAdded(Notification msg) {
+			viewAdded((View) msg.getNewValue());
+
+		}
+
+		@Override
+		public void diagramViewRemoved(Notification msg) {
+			viewRemoved((View) msg.getNewValue());
+		}
+
+	}
+
+} // RegExpLayerImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/SimpleLayerDescriptorImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/SimpleLayerDescriptorImpl.java
new file mode 100755
index 0000000..d921225
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/SimpleLayerDescriptorImpl.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.SimpleLayerDescriptor;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Simple Layer Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class SimpleLayerDescriptorImpl extends LayerDescriptorImpl implements SimpleLayerDescriptor {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected SimpleLayerDescriptorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.SIMPLE_LAYER_DESCRIPTOR;
+	}
+
+} // SimpleLayerDescriptorImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorDescriptorImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorDescriptorImpl.java
new file mode 100755
index 0000000..ebca3bf
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorDescriptorImpl.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperatorDescriptor;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Stacked Layer Operator Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class StackedLayerOperatorDescriptorImpl extends LayerOperatorDescriptorImpl implements StackedLayerOperatorDescriptor {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated not
+	 */
+	protected StackedLayerOperatorDescriptorImpl() {
+		super();
+		init();
+	}
+
+	/**
+	 * Init the descriptor.
+	 */
+	private void init() {
+		setName("StackedLayerOperator");
+
+	}
+
+	/**
+	 * New instance creation counter.
+	 */
+	static int count = 0;
+
+	/**
+	 * Create the requested {@link StackedLayerOperator} and init it.
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl#createLayerOperator()
+	 *
+	 * @return
+	 */
+	@Override
+	public AbstractLayerOperator createLayerOperator() {
+
+
+		StackedLayerOperator layerOperator = LayersFactory.eINSTANCE.createStackedLayerOperator();
+		layerOperator.setLayerOperatorDescriptor(this);
+		layerOperator.setLayerOperatorDescriptorName(this.getName());
+		layerOperator.setName(getName() + count++);
+
+		return layerOperator;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.STACKED_LAYER_OPERATOR_DESCRIPTOR;
+	}
+
+} // StackedLayerOperatorDescriptorImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorImpl.java
new file mode 100755
index 0000000..de8feb4
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorImpl.java
@@ -0,0 +1,157 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.eclipse.papyrus.layers.stackmodel.Activator.log;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Stacked Layer Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class StackedLayerOperatorImpl extends AbstractLayerOperatorImpl implements StackedLayerOperator {
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected StackedLayerOperatorImpl() {
+		super();
+
+		// Add an observer
+		Adapter adapter = new LayerDescriptorSynchronizer();
+		this.eAdapters().add(adapter);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.STACKED_LAYER_OPERATOR;
+	}
+
+	/**
+	 * Reset the descriptor accordingly to the descriptor name.
+	 * The descriptor is resseted only if the ::application and ::layerOperatorDescriptorName are set.
+	 * Nothing is done if one of the attribute is not set.
+	 * Nothing is done if the descriptor can not be found (maybe a log is issue).
+	 * <!-- begin-user-doc -->
+	 * Not used ?
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void resetDescriptor() {
+
+		if (getApplication() == null || getLayerOperatorDescriptorName() == null) {
+			// A property is not yet set.
+			// do nothing
+			return;
+		}
+
+		try {
+			LayerOperatorDescriptor descriptor = getApplication().getLayerOperatorDescriptorRegistry().getLayerOperatorDescriptor(getLayerOperatorDescriptorName());
+			setLayerOperatorDescriptor(descriptor);
+		} catch (NotFoundException e) {
+			// Not found
+			log.error(this.getClass().getName()
+					+ "- Can't get LayerOperatorDescriptor for descriptorName '" + getLayerOperatorDescriptorName() + "'."
+					, e);
+		}
+	}
+
+	/**
+	 * This class listen to #propertyValueMap, and synchronize propertyValues accordingly.
+	 *
+	 *
+	 */
+	public class LayerDescriptorSynchronizer extends AdapterImpl {
+
+		@Override
+		public void notifyChanged(Notification msg) {
+			// System.err.println("event " + msg.getEventType());
+
+			switch (msg.getFeatureID(AbstractLayer.class)) {
+			case LayersPackage.STACKED_LAYER_OPERATOR__LAYER_OPERATOR_DESCRIPTOR_NAME:
+				notifyDescriptorNameChanged(msg);
+				break;
+
+			case LayersPackage.STACKED_LAYER_OPERATOR__APPLICATION:
+				notifyLayerApplicationFeatureChanged(msg);
+				break;
+
+			default:
+				break;
+			}
+		}
+
+		/**
+		 * The {@link LayerImpl#propertyValueMap} has changed. Synchronize the {@link LayerImpl#propertyValues} list.
+		 *
+		 * @param msg
+		 */
+		protected void notifyDescriptorNameChanged(Notification msg) {
+			// System.err.println("descriptor name changed " + msg.getEventType());
+			switch (msg.getEventType()) {
+			case Notification.SET: {
+				// Name is set
+				resetDescriptor();
+				break;
+			}
+			default:
+				break;
+			}
+
+		}
+
+		/**
+		 * The {@link LayerImpl#propertyValueMap} has changed. Synchronize the {@link LayerImpl#propertyValues} list.
+		 *
+		 * @param msg
+		 */
+		protected void notifyLayerApplicationFeatureChanged(Notification msg) {
+			// System.err.println("application changed " + msg.getEventType());
+			switch (msg.getEventType()) {
+			case Notification.SET: {
+				// Application is set
+				resetDescriptor();
+				break;
+			}
+			}
+		}
+
+	}
+
+
+} // StackedLayerOperatorImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringInstanceImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringInstanceImpl.java
new file mode 100755
index 0000000..2fcf3a0
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringInstanceImpl.java
@@ -0,0 +1,220 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.StringInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>String Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringInstanceImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StringInstanceImpl extends TypeInstanceImpl implements StringInstance {
+	/**
+	 * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String VALUE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected String value = VALUE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected StringInstanceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.STRING_INSTANCE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setValue(String newValue) {
+		String oldValue = value;
+		value = newValue;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.STRING_INSTANCE__VALUE, oldValue, value));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case LayersPackage.STRING_INSTANCE__VALUE:
+			return getValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case LayersPackage.STRING_INSTANCE__VALUE:
+			setValue((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.STRING_INSTANCE__VALUE:
+			setValue(VALUE_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.STRING_INSTANCE__VALUE:
+			return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void setValueFromString(String value) {
+
+		if (value == null || value.length() == 0) {
+			return;
+		}
+
+		setValue(value.trim());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public void setValueFromInstance(TypeInstance value) {
+
+		// Check if the value is of the right instance
+		if (!getClass().isInstance(value)) {
+			return;
+		}
+
+		StringInstance instance = (StringInstance) value;
+		setValue(instance.getValue());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (value: ");
+		result.append(value);
+		result.append(')');
+		return result.toString();
+	}
+
+} // StringInstanceImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringToPropertyIndexMapImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringToPropertyIndexMapImpl.java
new file mode 100755
index 0000000..23e90f2
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringToPropertyIndexMapImpl.java
@@ -0,0 +1,373 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.BasicEMap;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>String To Property Index Map</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToPropertyIndexMapImpl#getTypedValue <em>Value</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToPropertyIndexMapImpl#getTypedKey <em>Key</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StringToPropertyIndexMapImpl extends MinimalEObjectImpl.Container implements BasicEMap.Entry<String, PropertyIndex> {
+	/**
+	 * The cached value of the '{@link #getTypedValue() <em>Value</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getTypedValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected PropertyIndex value;
+
+	/**
+	 * The default value of the '{@link #getTypedKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getTypedKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String KEY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getTypedKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getTypedKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected String key = KEY_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected StringToPropertyIndexMapImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.STRING_TO_PROPERTY_INDEX_MAP;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public PropertyIndex getTypedValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public NotificationChain basicSetTypedValue(PropertyIndex newValue, NotificationChain msgs) {
+		PropertyIndex oldValue = value;
+		value = newValue;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__VALUE, oldValue, newValue);
+			if (msgs == null) {
+				msgs = notification;
+			} else {
+				msgs.add(notification);
+			}
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void setTypedValue(PropertyIndex newValue) {
+		if (newValue != value) {
+			NotificationChain msgs = null;
+			if (value != null) {
+				msgs = ((InternalEObject) value).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__VALUE, null, msgs);
+			}
+			if (newValue != null) {
+				msgs = ((InternalEObject) newValue).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__VALUE, null, msgs);
+			}
+			msgs = basicSetTypedValue(newValue, msgs);
+			if (msgs != null) {
+				msgs.dispatch();
+			}
+		}
+		else if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__VALUE, newValue, newValue));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public String getTypedKey() {
+		return key;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void setTypedKey(String newKey) {
+		String oldKey = key;
+		key = newKey;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__KEY, oldKey, key));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__VALUE:
+			return basicSetTypedValue(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 LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__VALUE:
+			return getTypedValue();
+		case LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__KEY:
+			return getTypedKey();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__VALUE:
+			setTypedValue((PropertyIndex) newValue);
+			return;
+		case LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__KEY:
+			setTypedKey((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__VALUE:
+			setTypedValue((PropertyIndex) null);
+			return;
+		case LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__KEY:
+			setTypedKey(KEY_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__VALUE:
+			return value != null;
+		case LayersPackage.STRING_TO_PROPERTY_INDEX_MAP__KEY:
+			return KEY_EDEFAULT == null ? key != null : !KEY_EDEFAULT.equals(key);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (key: ");
+		result.append(key);
+		result.append(')');
+		return result.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected int hash = -1;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getHash() {
+		if (hash == -1) {
+			Object theKey = getKey();
+			hash = (theKey == null ? 0 : theKey.hashCode());
+		}
+		return hash;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setHash(int hash) {
+		this.hash = hash;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getKey() {
+		return getTypedKey();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setKey(String key) {
+		setTypedKey(key);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public PropertyIndex getValue() {
+		return getTypedValue();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public PropertyIndex setValue(PropertyIndex value) {
+		PropertyIndex oldValue = getValue();
+		setTypedValue(value);
+		return oldValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	public EMap<String, PropertyIndex> getEMap() {
+		EObject container = eContainer();
+		return container == null ? null : (EMap<String, PropertyIndex>) container.eGet(eContainmentFeature());
+	}
+
+} // StringToPropertyIndexMapImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringToPropertySetterImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringToPropertySetterImpl.java
new file mode 100755
index 0000000..2c358d3
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringToPropertySetterImpl.java
@@ -0,0 +1,373 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.BasicEMap;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>String To Property Setter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToPropertySetterImpl#getTypedKey <em>Key</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToPropertySetterImpl#getTypedValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StringToPropertySetterImpl extends MinimalEObjectImpl.Container implements BasicEMap.Entry<String, PropertySetter> {
+	/**
+	 * The default value of the '{@link #getTypedKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getTypedKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String KEY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getTypedKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getTypedKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected String key = KEY_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getTypedValue() <em>Value</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getTypedValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected PropertySetter value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected StringToPropertySetterImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.STRING_TO_PROPERTY_SETTER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public String getTypedKey() {
+		return key;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void setTypedKey(String newKey) {
+		String oldKey = key;
+		key = newKey;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.STRING_TO_PROPERTY_SETTER__KEY, oldKey, key));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public PropertySetter getTypedValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public NotificationChain basicSetTypedValue(PropertySetter newValue, NotificationChain msgs) {
+		PropertySetter oldValue = value;
+		value = newValue;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LayersPackage.STRING_TO_PROPERTY_SETTER__VALUE, oldValue, newValue);
+			if (msgs == null) {
+				msgs = notification;
+			} else {
+				msgs.add(notification);
+			}
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void setTypedValue(PropertySetter newValue) {
+		if (newValue != value) {
+			NotificationChain msgs = null;
+			if (value != null) {
+				msgs = ((InternalEObject) value).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LayersPackage.STRING_TO_PROPERTY_SETTER__VALUE, null, msgs);
+			}
+			if (newValue != null) {
+				msgs = ((InternalEObject) newValue).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LayersPackage.STRING_TO_PROPERTY_SETTER__VALUE, null, msgs);
+			}
+			msgs = basicSetTypedValue(newValue, msgs);
+			if (msgs != null) {
+				msgs.dispatch();
+			}
+		}
+		else if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.STRING_TO_PROPERTY_SETTER__VALUE, newValue, newValue));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case LayersPackage.STRING_TO_PROPERTY_SETTER__VALUE:
+			return basicSetTypedValue(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 LayersPackage.STRING_TO_PROPERTY_SETTER__KEY:
+			return getTypedKey();
+		case LayersPackage.STRING_TO_PROPERTY_SETTER__VALUE:
+			return getTypedValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case LayersPackage.STRING_TO_PROPERTY_SETTER__KEY:
+			setTypedKey((String) newValue);
+			return;
+		case LayersPackage.STRING_TO_PROPERTY_SETTER__VALUE:
+			setTypedValue((PropertySetter) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.STRING_TO_PROPERTY_SETTER__KEY:
+			setTypedKey(KEY_EDEFAULT);
+			return;
+		case LayersPackage.STRING_TO_PROPERTY_SETTER__VALUE:
+			setTypedValue((PropertySetter) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.STRING_TO_PROPERTY_SETTER__KEY:
+			return KEY_EDEFAULT == null ? key != null : !KEY_EDEFAULT.equals(key);
+		case LayersPackage.STRING_TO_PROPERTY_SETTER__VALUE:
+			return value != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (key: ");
+		result.append(key);
+		result.append(')');
+		return result.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected int hash = -1;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getHash() {
+		if (hash == -1) {
+			Object theKey = getKey();
+			hash = (theKey == null ? 0 : theKey.hashCode());
+		}
+		return hash;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setHash(int hash) {
+		this.hash = hash;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getKey() {
+		return getTypedKey();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setKey(String key) {
+		setTypedKey(key);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public PropertySetter getValue() {
+		return getTypedValue();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public PropertySetter setValue(PropertySetter value) {
+		PropertySetter oldValue = getValue();
+		setTypedValue(value);
+		return oldValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	public EMap<String, PropertySetter> getEMap() {
+		EObject container = eContainer();
+		return container == null ? null : (EMap<String, PropertySetter>) container.eGet(eContainmentFeature());
+	}
+
+} // StringToPropertySetterImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringToTypeInstanceMapImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringToTypeInstanceMapImpl.java
new file mode 100755
index 0000000..d8861e9
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringToTypeInstanceMapImpl.java
@@ -0,0 +1,373 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.BasicEMap;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>String To Type Instance Map</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToTypeInstanceMapImpl#getTypedKey <em>Key</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToTypeInstanceMapImpl#getTypedValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StringToTypeInstanceMapImpl extends MinimalEObjectImpl.Container implements BasicEMap.Entry<String, TypeInstance> {
+	/**
+	 * The default value of the '{@link #getTypedKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getTypedKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String KEY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getTypedKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getTypedKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected String key = KEY_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getTypedValue() <em>Value</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getTypedValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected TypeInstance value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected StringToTypeInstanceMapImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.STRING_TO_TYPE_INSTANCE_MAP;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public String getTypedKey() {
+		return key;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void setTypedKey(String newKey) {
+		String oldKey = key;
+		key = newKey;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__KEY, oldKey, key));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public TypeInstance getTypedValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public NotificationChain basicSetTypedValue(TypeInstance newValue, NotificationChain msgs) {
+		TypeInstance oldValue = value;
+		value = newValue;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__VALUE, oldValue, newValue);
+			if (msgs == null) {
+				msgs = notification;
+			} else {
+				msgs.add(notification);
+			}
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void setTypedValue(TypeInstance newValue) {
+		if (newValue != value) {
+			NotificationChain msgs = null;
+			if (value != null) {
+				msgs = ((InternalEObject) value).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__VALUE, null, msgs);
+			}
+			if (newValue != null) {
+				msgs = ((InternalEObject) newValue).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__VALUE, null, msgs);
+			}
+			msgs = basicSetTypedValue(newValue, msgs);
+			if (msgs != null) {
+				msgs.dispatch();
+			}
+		}
+		else if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__VALUE, newValue, newValue));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__VALUE:
+			return basicSetTypedValue(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getKey() {
+		return getTypedKey();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setKey(String key) {
+		setTypedKey(key);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public TypeInstance getValue() {
+		return getTypedValue();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public TypeInstance setValue(TypeInstance value) {
+		TypeInstance oldValue = getValue();
+		setTypedValue(value);
+		return oldValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	public EMap<String, TypeInstance> getEMap() {
+		EObject container = eContainer();
+		return container == null ? null : (EMap<String, TypeInstance>) container.eGet(eContainmentFeature());
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+		case LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__KEY:
+			return getTypedKey();
+		case LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__VALUE:
+			return getTypedValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__KEY:
+			setTypedKey((String) newValue);
+			return;
+		case LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__VALUE:
+			setTypedValue((TypeInstance) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__KEY:
+			setTypedKey(KEY_EDEFAULT);
+			return;
+		case LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__VALUE:
+			setTypedValue((TypeInstance) null);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__KEY:
+			return KEY_EDEFAULT == null ? key != null : !KEY_EDEFAULT.equals(key);
+		case LayersPackage.STRING_TO_TYPE_INSTANCE_MAP__VALUE:
+			return value != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (key: ");
+		result.append(key);
+		result.append(')');
+		return result.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected int hash = -1;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getHash() {
+		if (hash == -1) {
+			Object theKey = getKey();
+			hash = (theKey == null ? 0 : theKey.hashCode());
+		}
+		return hash;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setHash(int hash) {
+		this.hash = hash;
+	}
+
+} // StringToTypeInstanceMapImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringToTypeMapImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringToTypeMapImpl.java
new file mode 100755
index 0000000..04c751d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringToTypeMapImpl.java
@@ -0,0 +1,373 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.BasicEMap;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Type;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>String To Type Map</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToTypeMapImpl#getTypedValue <em>Value</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringToTypeMapImpl#getTypedKey <em>Key</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class StringToTypeMapImpl extends MinimalEObjectImpl.Container implements BasicEMap.Entry<String, Type> {
+	/**
+	 * The cached value of the '{@link #getTypedValue() <em>Value</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getTypedValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected Type value;
+
+	/**
+	 * The default value of the '{@link #getTypedKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getTypedKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String KEY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getTypedKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getTypedKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected String key = KEY_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected StringToTypeMapImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.STRING_TO_TYPE_MAP;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public Type getTypedValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public NotificationChain basicSetTypedValue(Type newValue, NotificationChain msgs) {
+		Type oldValue = value;
+		value = newValue;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, LayersPackage.STRING_TO_TYPE_MAP__VALUE, oldValue, newValue);
+			if (msgs == null) {
+				msgs = notification;
+			} else {
+				msgs.add(notification);
+			}
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void setTypedValue(Type newValue) {
+		if (newValue != value) {
+			NotificationChain msgs = null;
+			if (value != null) {
+				msgs = ((InternalEObject) value).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - LayersPackage.STRING_TO_TYPE_MAP__VALUE, null, msgs);
+			}
+			if (newValue != null) {
+				msgs = ((InternalEObject) newValue).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - LayersPackage.STRING_TO_TYPE_MAP__VALUE, null, msgs);
+			}
+			msgs = basicSetTypedValue(newValue, msgs);
+			if (msgs != null) {
+				msgs.dispatch();
+			}
+		}
+		else if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.STRING_TO_TYPE_MAP__VALUE, newValue, newValue));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public String getTypedKey() {
+		return key;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public void setTypedKey(String newKey) {
+		String oldKey = key;
+		key = newKey;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.STRING_TO_TYPE_MAP__KEY, oldKey, key));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case LayersPackage.STRING_TO_TYPE_MAP__VALUE:
+			return basicSetTypedValue(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 LayersPackage.STRING_TO_TYPE_MAP__VALUE:
+			return getTypedValue();
+		case LayersPackage.STRING_TO_TYPE_MAP__KEY:
+			return getTypedKey();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case LayersPackage.STRING_TO_TYPE_MAP__VALUE:
+			setTypedValue((Type) newValue);
+			return;
+		case LayersPackage.STRING_TO_TYPE_MAP__KEY:
+			setTypedKey((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.STRING_TO_TYPE_MAP__VALUE:
+			setTypedValue((Type) null);
+			return;
+		case LayersPackage.STRING_TO_TYPE_MAP__KEY:
+			setTypedKey(KEY_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.STRING_TO_TYPE_MAP__VALUE:
+			return value != null;
+		case LayersPackage.STRING_TO_TYPE_MAP__KEY:
+			return KEY_EDEFAULT == null ? key != null : !KEY_EDEFAULT.equals(key);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (key: ");
+		result.append(key);
+		result.append(')');
+		return result.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected int hash = -1;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public int getHash() {
+		if (hash == -1) {
+			Object theKey = getKey();
+			hash = (theKey == null ? 0 : theKey.hashCode());
+		}
+		return hash;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setHash(int hash) {
+		this.hash = hash;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getKey() {
+		return getTypedKey();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setKey(String key) {
+		setTypedKey(key);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Type getValue() {
+		return getTypedValue();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Type setValue(Type value) {
+		Type oldValue = getValue();
+		setTypedValue(value);
+		return oldValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	public EMap<String, Type> getEMap() {
+		EObject container = eContainer();
+		return container == null ? null : (EMap<String, Type>) container.eGet(eContainmentFeature());
+	}
+
+} // StringToTypeMapImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringTypeImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringTypeImpl.java
new file mode 100755
index 0000000..20b9397
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringTypeImpl.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.StringType;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>String Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class StringTypeImpl extends TypeImpl implements StringType {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected StringTypeImpl() {
+		super();
+		setName("String");
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public TypeInstance createInstance() {
+		return LayersFactory.eINSTANCE.createStringInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.STRING_TYPE;
+	}
+
+} // StringTypeImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TopLayerOperatorDescriptorImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TopLayerOperatorDescriptorImpl.java
new file mode 100755
index 0000000..e58faf9
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TopLayerOperatorDescriptorImpl.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperatorDescriptor;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Top Layer Operator Descriptor</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class TopLayerOperatorDescriptorImpl extends LayerOperatorDescriptorImpl implements TopLayerOperatorDescriptor {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected TopLayerOperatorDescriptorImpl() {
+		super();
+		init();
+	}
+
+	/**
+	 * Init the descriptor.
+	 */
+	private void init() {
+		setName("TopLayerOperator");
+
+	}
+
+	/**
+	 * New instance creation counter.
+	 */
+	static int count = 0;
+
+	/**
+	 * Create the requested {@link StackedLayerOperator} and init it.
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl#createLayerOperator()
+	 *
+	 * @return
+	 */
+	@Override
+	public AbstractLayerOperator createLayerOperator() {
+
+
+		TopLayerOperator layerOperator = LayersFactory.eINSTANCE.createTopLayerOperator();
+		layerOperator.setLayerOperatorDescriptor(this);
+		layerOperator.setName(getName() + count++);
+
+		return layerOperator;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.TOP_LAYER_OPERATOR_DESCRIPTOR;
+	}
+
+} // TopLayerOperatorDescriptorImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TopLayerOperatorImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TopLayerOperatorImpl.java
new file mode 100755
index 0000000..4b88541
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TopLayerOperatorImpl.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.util.List;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Top Layer Operator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class TopLayerOperatorImpl extends AbstractLayerOperatorImpl implements TopLayerOperator {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected TopLayerOperatorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.TOP_LAYER_OPERATOR;
+	}
+
+	/**
+	 * Get the command to compute the required property value.
+	 * Walk all layers and return the first cmd that is not null for specified view and proerty.
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 *
+	 * @param view
+	 * @param property
+	 * @return
+	 * @throws LayersException
+	 */
+	@Override
+	public ComputePropertyValueCommand getComputePropertyValueCommand(View view, Property property) throws LayersException {
+
+		// Walk all layers and return the first cmd that is not null for specified view and proerty.
+		for (LayerExpression layer : getLayers()) {
+
+			ComputePropertyValueCommand cmd = layer.getComputePropertyValueCommand(view, property);
+			if (cmd != null) {
+				return cmd;
+			}
+		}
+		// Nothing found
+		return null;
+
+	}
+
+	/**
+	 * For each property, add the first property value in the list of result.
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, java.util.List)
+	 *
+	 * @param view
+	 * @param property
+	 * @return
+	 * @throws LayersException
+	 */
+	@Override
+	public EList<ComputePropertyValueCommand> getPropertiesComputePropertyValueCommand(View view, List<Property> properties) throws LayersException {
+
+		// Simple implementation
+		// TODO Check if we can optimize
+
+		// the result list
+		EList<ComputePropertyValueCommand> resCmds = new BasicEList<ComputePropertyValueCommand>(properties.size());
+		boolean isCmdFound = false;
+
+		for (Property property : properties) {
+			if (property == null) {
+				resCmds.add(null);
+				continue;
+			}
+
+			ComputePropertyValueCommand cmd = getComputePropertyValueCommand(view, property);
+			if (cmd != null) {
+				isCmdFound = true;
+			}
+			resCmds.add(cmd);
+
+
+		}
+		// Return appropriate result
+		if (isCmdFound) {
+			return resCmds;
+		}
+		else {
+			// No command ==> null
+			return null;
+		}
+	}
+
+	/**
+	 * For each view, add the first property value in the list of result.
+	 *
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getViewsComputePropertyValueCommand(java.util.List, org.eclipse.papyrus.layers.stackmodel.layers.Property)
+	 *
+	 * @param view
+	 * @param property
+	 * @return
+	 * @throws LayersException
+	 */
+	@Override
+	public EList<ComputePropertyValueCommand> getViewsComputePropertyValueCommand(List<View> views, Property property) throws LayersException {
+
+		// Simple implementation
+		// TODO Check if we can optimize
+
+		// the result list
+		EList<ComputePropertyValueCommand> resCmds = new BasicEList<ComputePropertyValueCommand>(views.size());
+		boolean isCmdFound = false;
+
+		for (View view : views) {
+			if (view == null) {
+				resCmds.add(null);
+				continue;
+			}
+
+			ComputePropertyValueCommand cmd = getComputePropertyValueCommand(view, property);
+			if (cmd != null) {
+				isCmdFound = true;
+			}
+			resCmds.add(cmd);
+		}
+
+		// Return appropriate result
+		if (isCmdFound) {
+			return resCmds;
+		}
+		else {
+			// No command ==> null
+			return null;
+		}
+	}
+} // TopLayerOperatorImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TypeImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TypeImpl.java
new file mode 100755
index 0000000..0c509b0
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TypeImpl.java
@@ -0,0 +1,351 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Metamodel;
+import org.eclipse.papyrus.layers.stackmodel.layers.Type;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeImpl#getMetamodel <em>Metamodel</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeImpl#getDescription <em>Description</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class TypeImpl extends
+		FolderElementImpl implements Type {
+	/**
+	 * The cached value of the '{@link #getMetamodel() <em>Metamodel</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getMetamodel()
+	 * @generated
+	 * @ordered
+	 */
+	protected Metamodel metamodel;
+
+	/**
+	 * 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 cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * 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 cached value of the '{@link #getDescription() <em>Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected String description = DESCRIPTION_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected TypeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.TYPE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Metamodel getMetamodel() {
+		if (metamodel != null && metamodel.eIsProxy()) {
+			InternalEObject oldMetamodel = (InternalEObject) metamodel;
+			metamodel = (Metamodel) eResolveProxy(oldMetamodel);
+			if (metamodel != oldMetamodel) {
+				if (eNotificationRequired()) {
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, LayersPackage.TYPE__METAMODEL, oldMetamodel, metamodel));
+				}
+			}
+		}
+		return metamodel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public Metamodel basicGetMetamodel() {
+		return metamodel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setMetamodel(Metamodel newMetamodel) {
+		Metamodel oldMetamodel = metamodel;
+		metamodel = newMetamodel;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.TYPE__METAMODEL, oldMetamodel, metamodel));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.TYPE__NAME, oldName, name));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String getDescription() {
+		return description;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setDescription(String newDescription) {
+		String oldDescription = description;
+		description = newDescription;
+		if (eNotificationRequired()) {
+			eNotify(new ENotificationImpl(this, Notification.SET, LayersPackage.TYPE__DESCRIPTION, oldDescription, description));
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public TypeInstance createInstance() {
+		// 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 LayersPackage.TYPE__METAMODEL:
+			if (resolve) {
+				return getMetamodel();
+			}
+			return basicGetMetamodel();
+		case LayersPackage.TYPE__NAME:
+			return getName();
+		case LayersPackage.TYPE__DESCRIPTION:
+			return getDescription();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case LayersPackage.TYPE__METAMODEL:
+			setMetamodel((Metamodel) newValue);
+			return;
+		case LayersPackage.TYPE__NAME:
+			setName((String) newValue);
+			return;
+		case LayersPackage.TYPE__DESCRIPTION:
+			setDescription((String) newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.TYPE__METAMODEL:
+			setMetamodel((Metamodel) null);
+			return;
+		case LayersPackage.TYPE__NAME:
+			setName(NAME_EDEFAULT);
+			return;
+		case LayersPackage.TYPE__DESCRIPTION:
+			setDescription(DESCRIPTION_EDEFAULT);
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.TYPE__METAMODEL:
+			return metamodel != null;
+		case LayersPackage.TYPE__NAME:
+			return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		case LayersPackage.TYPE__DESCRIPTION:
+			return DESCRIPTION_EDEFAULT == null ? description != null : !DESCRIPTION_EDEFAULT.equals(description);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+		case LayersPackage.TYPE___CREATE_INSTANCE:
+			return createInstance();
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) {
+			return super.toString();
+		}
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (name: ");
+		result.append(name);
+		result.append(", description: ");
+		result.append(description);
+		result.append(')');
+		return result.toString();
+	}
+
+} // TypeImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TypeInstanceImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TypeInstanceImpl.java
new file mode 100755
index 0000000..64afbb3
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TypeInstanceImpl.java
@@ -0,0 +1,119 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Type Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class TypeInstanceImpl extends MinimalEObjectImpl.Container implements TypeInstance {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected TypeInstanceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.TYPE_INSTANCE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	public TypeInstance getCmdValue() throws LayersException {
+		// By default, we return the instance itself, as there
+		// is nothing more to compute.
+		return this;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void setValueFromString(String value) {
+		// 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 void setValueFromInstance(TypeInstance value) {
+		// 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 LayersPackage.TYPE_INSTANCE___GET_CMD_VALUE:
+			try {
+				return getCmdValue();
+			} catch (Throwable throwable) {
+				throw new InvocationTargetException(throwable);
+			}
+		case LayersPackage.TYPE_INSTANCE___SET_VALUE_FROM_STRING__STRING:
+			setValueFromString((String) arguments.get(0));
+			return null;
+		case LayersPackage.TYPE_INSTANCE___SET_VALUE_FROM_INSTANCE__TYPEINSTANCE:
+			setValueFromInstance((TypeInstance) arguments.get(0));
+			return null;
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+} // TypeInstanceImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TypeRegistryImpl.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TypeRegistryImpl.java
new file mode 100755
index 0000000..03d7e2d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/TypeRegistryImpl.java
@@ -0,0 +1,202 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EcoreEMap;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Type;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Type Registry</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeRegistryImpl#getTypes <em>Types</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TypeRegistryImpl extends MinimalEObjectImpl.Container implements TypeRegistry {
+	/**
+	 * The cached value of the '{@link #getTypes() <em>Types</em>}' map.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @see #getTypes()
+	 * @generated
+	 * @ordered
+	 */
+	protected EMap<String, Type> types;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected TypeRegistryImpl() {
+		super();
+		init();
+	}
+
+	/**
+	 * Init the Registry.
+	 * Register standard types.
+	 */
+	protected void init() {
+
+		Type type = LayersFactory.eINSTANCE.createBooleanType();
+		getTypes().put(type.getName(), type);
+
+		type = LayersFactory.eINSTANCE.createIntType();
+		getTypes().put(type.getName(), type);
+
+		type = LayersFactory.eINSTANCE.createStringType();
+		getTypes().put(type.getName(), type);
+
+		addType(LayersFactory.eINSTANCE.createColor());
+		addType(LayersFactory.eINSTANCE.createFill());
+		addType(LayersFactory.eINSTANCE.createLineType());
+		addType(LayersFactory.eINSTANCE.createFontType());
+	}
+
+	/**
+	 * Add the type in the registry
+	 *
+	 * @param type
+	 */
+	public void addType(Type type) {
+		String typeName = type.getName();
+
+		getTypes().put(typeName, type);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LayersPackage.Literals.TYPE_REGISTRY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public EMap<String, Type> getTypes() {
+		if (types == null) {
+			types = new EcoreEMap<String, Type>(LayersPackage.Literals.STRING_TO_TYPE_MAP, StringToTypeMapImpl.class, this, LayersPackage.TYPE_REGISTRY__TYPES);
+		}
+		return types;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+		case LayersPackage.TYPE_REGISTRY__TYPES:
+			return ((InternalEList<?>) getTypes()).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 LayersPackage.TYPE_REGISTRY__TYPES:
+			if (coreType) {
+				return getTypes();
+			} else {
+				return getTypes().map();
+			}
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+		case LayersPackage.TYPE_REGISTRY__TYPES:
+			((EStructuralFeature.Setting) getTypes()).set(newValue);
+			return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+		case LayersPackage.TYPE_REGISTRY__TYPES:
+			getTypes().clear();
+			return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+		case LayersPackage.TYPE_REGISTRY__TYPES:
+			return types != null && !types.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} // TypeRegistryImpl
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/ILayerOperatorDescriptorRegistryLoader.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/ILayerOperatorDescriptorRegistryLoader.java
new file mode 100755
index 0000000..baed17e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/ILayerOperatorDescriptorRegistryLoader.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.loaders;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+
+
+/**
+ * Interface that a {@link LayerOperatorDescriptorRegistry} loader should implements.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public interface ILayerOperatorDescriptorRegistryLoader {
+
+	/**
+	 * Load the specified registry. Initialize its Descriptors and its Operators.
+	 *
+	 * @param layerOperatorDescriptorRegistry
+	 * @param propertyRegistry
+	 */
+	public void loadLayerOperatorDescriptorRegistry(LayerOperatorDescriptorRegistry descriptorRegistry, PropertyRegistry propertyRegistry);
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayerOperatorDescriptorRegistryLoader.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayerOperatorDescriptorRegistryLoader.java
new file mode 100755
index 0000000..33a4c8c
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayerOperatorDescriptorRegistryLoader.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.loaders;
+
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.eclipse.papyrus.layers.stackmodel.operators.BooleanAndOperator;
+import org.eclipse.papyrus.layers.stackmodel.operators.BooleanOrOperator;
+
+
+/**
+ * Class used to load a {@link LayerOperatorDescriptorRegistry}.
+ *
+ * @author cedric dumoulin
+ *
+ * @deprecated use {@link RegistriesLoader} instead.
+ *
+ */
+@Deprecated
+public class LayerOperatorDescriptorRegistryLoader implements ILayerOperatorDescriptorRegistryLoader {
+
+	/**
+	 * Load the specified registry. Initialize its Descriptors and its Operators.
+	 *
+	 * @param layerOperatorDescriptorRegistry
+	 * @param propertyRegistry
+	 */
+	public void loadRegistryOld(LayerOperatorDescriptorRegistry descriptorRegistry, PropertyRegistry propertyRegistry) {
+
+		// Custom operator declarations
+		// operatorName, operatorImplementationClass
+		String[] operatorDeclarations = new String[] {
+				"booleanOr", BooleanOrOperator.class.getName(),
+				"booleanAnd", BooleanAndOperator.class.getName(),
+
+		};
+
+		// Load operators
+		for (int i = 0; i < operatorDeclarations.length; i += 2) {
+			CustomPropertyOperator operator = LayersFactory.eINSTANCE.createCustomPropertyOperator();
+			operator.setName(operatorDeclarations[i]);
+			operator.setClassname(operatorDeclarations[i + 1]);
+			descriptorRegistry.addPropertyOperator(operator);
+		}
+
+		// AndLayerStackOperatorDescriptor
+		// propertyName, operatorName
+		String[] andDescriptorDeclarations = new String[] {
+				"isVisible", "booleanAnd",
+		};
+
+		LayerOperatorDescriptor andDescriptor = LayersFactory.eINSTANCE.createAndStackedLayerOperatorDescriptor();
+		descriptorRegistry.addLayerOperatorDescriptor(andDescriptor);
+
+		// attach operator to layer and property
+		String descriptorName = andDescriptor.getName();
+		for (int i = 0; i < andDescriptorDeclarations.length; i += 2) {
+			try {
+				descriptorRegistry.attachOperatorToDescriptor(propertyRegistry.getProperty(andDescriptorDeclarations[i]), andDescriptorDeclarations[i + 1], descriptorName);
+			} catch (NotFoundException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+		}
+
+		// OrLayerStackOperatorDescriptor
+		// propertyName, operatorName
+		String[] orDescriptorDeclarations = new String[] {
+				"isVisible", "booleanOr",
+		};
+
+		LayerOperatorDescriptor orDescriptor = LayersFactory.eINSTANCE.createOrStackedLayerOperatorDescriptor();
+		descriptorRegistry.addLayerOperatorDescriptor(orDescriptor);
+
+		// attach operator to layer and property
+		descriptorName = orDescriptor.getName();
+		for (int i = 0; i < orDescriptorDeclarations.length; i += 2) {
+			try {
+				descriptorRegistry.attachOperatorToDescriptor(propertyRegistry.getProperty(orDescriptorDeclarations[i]), orDescriptorDeclarations[i + 1], descriptorName);
+			} catch (NotFoundException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+		}
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.loaders.ILayerOperatorDescriptorRegistryLoader#loadLayerOperatorDescriptorRegistry(org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry,
+	 *      org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry)
+	 *
+	 * @param descriptorRegistry
+	 * @param propertyRegistry
+	 */
+	@Override
+	public void loadLayerOperatorDescriptorRegistry(LayerOperatorDescriptorRegistry descriptorRegistry, PropertyRegistry propertyRegistry) {
+
+		createLayersConfigModel();
+
+	}
+
+	/**
+	 * Create a Model
+	 */
+	private void createLayersConfigModel() {
+		// TODO Auto-generated method stub
+
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayersConfigModel.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayersConfigModel.java
new file mode 100755
index 0000000..285bfd2
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayersConfigModel.java
@@ -0,0 +1,257 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.loaders;
+
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createFolder;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createLayerOperatorConfig;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createLayerOperatorsMultipleBinding;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createOperatorBinding;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createPropertyId;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createPropertyOperatorConfig;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createTypeConfig;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.Folder;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigFactory;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.operators.BooleanAndOperator;
+import org.eclipse.papyrus.layers.stackmodel.operators.BooleanOrOperator;
+import org.eclipse.papyrus.layers.stackmodel.operators.FillAverageOperator;
+
+
+/**
+ * This class encapsulate an LayersConfig model.
+ * It provides a default instance initialized with a model.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersConfigModel {
+
+	/**
+	 * The default instance used by all applications.
+	 */
+	static final protected LayersConfigModel instance;
+
+	protected Resource resource;
+
+
+
+	/**
+	 * Create and initialize default instance.
+	 */
+	static {
+		instance = new LayersConfigModel();
+		instance.initDefaultModel();
+	}
+
+	/**
+	 * Constructor.
+	 *
+	 */
+	public LayersConfigModel() {
+		createResourceAndRootFolder();
+	}
+
+
+	/**
+	 * @return the instance
+	 */
+	public static LayersConfigModel getInstance() {
+		return instance;
+	}
+
+	/**
+	 * Init the object with a default model.
+	 */
+	private void initDefaultModel() {
+		// Create model
+		Folder layeropFolder = createFolder(getRootFolder(), "layerOp");
+
+		LayerOperatorConfig stackedLayersOperatorConfig = createLayerOperatorConfig(layeropFolder, "stackedLayersOperator", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+		LayerOperatorConfig stackedLayersOperatorMinimunConfig = createLayerOperatorConfig(layeropFolder, "stackedLayersOperatorMinimum", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+		createLayerOperatorConfig(layeropFolder, "stackedLayersOperatorMaximum", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+		LayerOperatorConfig stackedLayersOperatorAverage = createLayerOperatorConfig(layeropFolder, "stackedLayersOperatorAverage", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+
+		// Create Operators
+		Folder operatorFolder = createFolder(getRootFolder(), "operatorDesc");
+		OperatorConfig operatorBooleanAnd = createPropertyOperatorConfig(operatorFolder, "operatorBooleanAnd", BooleanAndOperator.class.getName());
+		OperatorConfig operatorBooleanOr = createPropertyOperatorConfig(operatorFolder, "operatorBooleanOr", BooleanOrOperator.class.getName());
+		OperatorConfig operatorFillAverage = createPropertyOperatorConfig(operatorFolder, "operatorFillAverage", FillAverageOperator.class.getName());
+
+
+		// Create basic types
+		Folder typeFolder = createFolder(getRootFolder(), "types");
+		TypeConfig typeBoolean = createTypeConfig(typeFolder, "boolean");
+		TypeConfig typeInt = createTypeConfig(typeFolder, "int");
+		TypeConfig typeString = createTypeConfig(typeFolder, "String");
+		TypeConfig typeFont = createTypeConfig(typeFolder, "Font");
+		TypeConfig typeColor = createTypeConfig(typeFolder, "Color");
+		TypeConfig typeFill = createTypeConfig(typeFolder, "Fill");
+		TypeConfig typeLine = createTypeConfig(typeFolder, "Line");
+
+		// Create properties
+		Folder propertiesFolder = createFolder(getRootFolder(), "properties");
+		PropertyId propertyIsVisible = createPropertyId(propertiesFolder, "isVisible", typeBoolean);
+		PropertyId propertyIsAbstract = createPropertyId(propertiesFolder, "isAbstract", typeBoolean);
+		PropertyId propertyFill = createPropertyId(propertiesFolder, "fill", typeFill);
+		PropertyId propertyLine = createPropertyId(propertiesFolder, "line", typeLine);
+		PropertyId propertyFont = createPropertyId(propertiesFolder, "font", typeFont);
+		PropertyId propertyBgcolor = createPropertyId(propertiesFolder, "bgcolor", typeColor);
+		PropertyId propertyFgcolor = createPropertyId(propertiesFolder, "fgcolor", typeColor);
+
+		// Bind operators to layers
+		Folder opBindingFolder = createFolder(getRootFolder(), "opBindings");
+
+		LayerOperatorMultipleBinding layerOpBindingsA = createLayerOperatorsMultipleBinding(opBindingFolder, stackedLayersOperatorConfig);
+		createOperatorBinding(layerOpBindingsA, propertyIsVisible, operatorBooleanAnd);
+		createOperatorBinding(layerOpBindingsA, propertyIsAbstract, operatorBooleanAnd);
+		createOperatorBinding(layerOpBindingsA, propertyFill, operatorFillAverage);
+
+		LayerOperatorMultipleBinding layerOpBindingsB = createLayerOperatorsMultipleBinding(opBindingFolder, stackedLayersOperatorMinimunConfig);
+		createOperatorBinding(layerOpBindingsB, propertyIsVisible, operatorBooleanOr);
+		createOperatorBinding(layerOpBindingsB, propertyIsAbstract, operatorBooleanOr);
+		createOperatorBinding(layerOpBindingsB, propertyFill, operatorFillAverage);
+
+		LayerOperatorMultipleBinding layerOpBindingsAverage = createLayerOperatorsMultipleBinding(opBindingFolder, stackedLayersOperatorAverage);
+		createOperatorBinding(layerOpBindingsAverage, propertyIsVisible, operatorBooleanOr);
+		createOperatorBinding(layerOpBindingsAverage, propertyIsAbstract, operatorBooleanOr);
+		createOperatorBinding(layerOpBindingsAverage, propertyFill, operatorFillAverage);
+
+	}
+
+	/**
+	 * Create the resource and add it the root folder.
+	 *
+	 * @return
+	 */
+	protected Folder createResourceAndRootFolder() {
+		// Create a resource set.
+		ResourceSet resourceSet = new ResourceSetImpl();
+
+		// Register the default resource factory -- only needed for stand-alone!
+		resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(
+				Resource.Factory.Registry.DEFAULT_EXTENSION, new XMIResourceFactoryImpl());
+
+		// Get the URI of the model file.
+		URI fileURI = URI.createURI("config.layersconfig");
+
+		// Create a resource for this file.
+		resource = resourceSet.createResource(fileURI);
+		Folder parent = LayersconfigFactory.eINSTANCE.createFolder();
+		resource.getContents().add(parent);
+		return parent;
+	}
+
+
+	/**
+	 * @return the resource
+	 */
+	public Resource getResource() {
+		return resource;
+	}
+
+	/**
+	 * Get the root folder of the model.
+	 * There is always a root folder
+	 *
+	 * @return
+	 */
+	public Folder getRootFolder() {
+		return (Folder) getResource().getContents().get(0);
+	}
+
+	/**
+	 * Get all {@link LayerOperatorConfig} contained in the model.
+	 *
+	 * @return
+	 */
+	public List<LayerOperatorConfig> getAllLayerOperatorConfig() {
+
+		List<LayerOperatorConfig> res = new ArrayList<LayerOperatorConfig>();
+
+		TreeIterator<EObject> iter = resource.getAllContents();
+		while (iter.hasNext()) {
+			EObject obj = iter.next();
+			if (obj instanceof LayerOperatorConfig) {
+				res.add((LayerOperatorConfig) obj);
+			}
+		}
+		return res;
+	}
+
+	/**
+	 * Get all object of the specified type contained in the model.
+	 *
+	 * @param type
+	 *            The expected type for objects
+	 *
+	 * @return A list of object with the specified type.
+	 */
+	@SuppressWarnings("unchecked")
+	public <T extends EObject> List<T> getAllOfType(Class<T> type) {
+		List<T> res = new ArrayList<T>();
+
+		TreeIterator<EObject> iter = resource.getAllContents();
+		while (iter.hasNext()) {
+			EObject obj = iter.next();
+			if (type.isInstance(obj)) {
+				res.add((T) obj);
+			}
+		}
+		return res;
+	}
+
+	/**
+	 * Get all operators config objects.
+	 *
+	 * @return
+	 */
+	public List<OperatorConfig> getAllOperatorConfig() {
+
+		return getAllOfType(OperatorConfig.class);
+	}
+
+
+	/**
+	 * Get all {@link OperatorBinding} declared in the model.
+	 *
+	 * @return
+	 */
+	public List<OperatorBinding> getAllOperatorBinding() {
+		return getAllOfType(OperatorBinding.class);
+	}
+
+
+	/**
+	 * Initialize the provided model with some defs for tests.
+	 *
+	 * @param model
+	 */
+	private void initLayersConfigModel(LayersConfigModel model) {
+
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayersConfigModelUtils.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayersConfigModelUtils.java
new file mode 100755
index 0000000..0861bb8
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayersConfigModelUtils.java
@@ -0,0 +1,113 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.loaders;
+
+import org.eclipse.papyrus.layers.configmodel.layersconfig.Folder;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigFactory;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig;
+
+
+/**
+ * Set of utility methods to create elements in a {@link LayersConfigModel}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersConfigModelUtils {
+
+	/**
+	 * Create a {@link Folder} element
+	 *
+	 * @param parent
+	 * @param name
+	 * @return
+	 */
+	static public Folder createFolder(Folder parent, String name) {
+		Folder folder = LayersconfigFactory.eINSTANCE.createFolder();
+		folder.setName(name);
+		parent.getFolderElements().add(folder);
+		return folder;
+	}
+
+	/**
+	 * Create a {@link LayerOperatorConfig} element
+	 *
+	 * @param parent
+	 * @param ID
+	 * @param classname
+	 * @return
+	 */
+	static public LayerOperatorConfig createLayerOperatorConfig(Folder parent, String ID, String classname) {
+		LayerOperatorConfig config = LayersconfigFactory.eINSTANCE.createLayerOperatorConfig();
+		config.setName(ID);
+		config.setClassname(classname);
+		parent.getFolderElements().add(config);
+		return config;
+	}
+
+	/**
+	 * Create a {@link OperatorConfig} element
+	 *
+	 * @param parent
+	 * @param ID
+	 * @param classname
+	 * @return
+	 */
+	static public OperatorConfig createPropertyOperatorConfig(Folder parent, String ID, String classname) {
+		OperatorConfig config = LayersconfigFactory.eINSTANCE.createOperatorConfig();
+		config.setName(ID);
+		config.setClassname(classname);
+		parent.getFolderElements().add(config);
+		return config;
+	}
+
+	/**
+	 *
+	 * @param owner
+	 * @param layerOperator
+	 * @return
+	 */
+	static public LayerOperatorMultipleBinding createLayerOperatorsMultipleBinding(Folder owner, LayerOperatorConfig layerOperator) {
+		LayerOperatorMultipleBinding config = LayersconfigFactory.eINSTANCE.createLayerOperatorMultipleBinding();
+		config.setLayerOperatorConfig(layerOperator);
+		owner.getFolderElements().add(config);
+		return config;
+	}
+
+	static public OperatorBinding createOperatorBinding(LayerOperatorMultipleBinding owner, PropertyId propertyId, OperatorConfig operatorConfig) {
+		OperatorBinding binding = LayersconfigFactory.eINSTANCE.createOperatorBinding();
+		binding.setPropertyId(propertyId);
+		binding.setOperator(operatorConfig);
+		binding.setOwner(owner);
+		return binding;
+	}
+
+	static public PropertyId createPropertyId(Folder parent, String ID, TypeConfig type) {
+		PropertyId propertyId = LayersconfigFactory.eINSTANCE.createPropertyId();
+		propertyId.setName(ID);
+		propertyId.setType(type);
+		parent.getFolderElements().add(propertyId);
+		return propertyId;
+	}
+
+	static public TypeConfig createTypeConfig(Folder parent, String ID) {
+		TypeConfig config = LayersconfigFactory.eINSTANCE.createTypeConfig();
+		config.setName(ID);
+		parent.getFolderElements().add(config);
+		return config;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/RegistriesLoader.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/RegistriesLoader.java
new file mode 100755
index 0000000..5d3ad7d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/loaders/RegistriesLoader.java
@@ -0,0 +1,98 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.loaders;
+
+import static org.eclipse.papyrus.layers.stackmodel.Activator.log;
+
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig;
+import org.eclipse.papyrus.layers.stackmodel.InstanciationException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+
+
+/**
+ * A loader used to load various Registries from a unique {@link LayersConfigModel}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class RegistriesLoader implements ILayerOperatorDescriptorRegistryLoader {
+
+	/**
+	 * The model used to load the registries.
+	 *
+	 */
+	protected LayersConfigModel model;
+
+	/**
+	 * Constructor.
+	 *
+	 * @param model
+	 */
+	public RegistriesLoader(LayersConfigModel model) {
+		this.model = model;
+	}
+
+	/**
+	 * Load the {@link LayerOperatorDescriptorRegistry} from the {@link LayersConfigModel}.
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.loaders.ILayerOperatorDescriptorRegistryLoader#loadLayerOperatorDescriptorRegistry(org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry,
+	 *      org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry)
+	 *
+	 * @param descriptorRegistry
+	 * @param propertyRegistry
+	 */
+	@Override
+	public void loadLayerOperatorDescriptorRegistry(LayerOperatorDescriptorRegistry descriptorRegistry, PropertyRegistry propertyRegistry) {
+
+		// Load LayerOperators
+		for (LayerOperatorConfig layerOperatorConfig : model.getAllLayerOperatorConfig()) {
+			try {
+				LayerOperatorDescriptor descriptor = layerOperatorConfig.createLayersOperatorDescriptor();
+				descriptorRegistry.addLayerOperatorDescriptor(descriptor);
+			} catch (InstanciationException e) {
+				log.error("LOG - " + this.getClass().getName() + " - " + e.getMessage(), e);
+			}
+		}
+
+		// Load operators
+		for (OperatorConfig operatorConfig : model.getAllOperatorConfig()) {
+			try {
+				PropertyOperator operator = operatorConfig.createOperatorDescriptor();
+				descriptorRegistry.addPropertyOperator(operator);
+			} catch (InstanciationException e) {
+				log.error("LOG - " + this.getClass().getName() + " - " + e.getMessage(), e);
+			}
+
+		}
+
+		// Populate LayerOperator with operators
+		for (OperatorBinding binding : model.getAllOperatorBinding()) {
+			try {
+				Property property = propertyRegistry.getProperty(binding.getPropertyId().getName());
+				String layerDescriptorName = binding.getLayerOperatorConfig().getName();
+				String operatorName = binding.getOperator().getName();
+				descriptorRegistry.attachOperatorToDescriptor(property, operatorName, layerDescriptorName);
+			} catch (NotFoundException e) {
+				log.error("LOG - " + this.getClass().getName() + " - " + e.getMessage(), e);
+			}
+
+		}
+
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/ECoreUtils.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/ECoreUtils.java
new file mode 100755
index 0000000..0abb7de
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/ECoreUtils.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.util;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class ECoreUtils {
+
+	/**
+	 * Check if one of the ancestor is instance of the specified type.
+	 * Ancestors are classes that contains this class
+	 *
+	 * @param child
+	 *            Child for which we want to check the ancestor's type
+	 * @param type
+	 *            The expected type
+	 * @return true if one of the ancestor is of the expected type. False otherwise.
+	 */
+	public static boolean isAncestorInstanceOf(EObject child, EClass type) {
+
+
+		try {
+			lookupAncestorOfType(child, type);
+			return true;
+		} catch (NotFoundException e) {
+			return false;
+		}
+
+	}
+
+	/**
+	 * Lookup if one of the ancestor is instance of the specified type.
+	 * Ancestors are classes that contains this class
+	 *
+	 * @param child
+	 *            Child for which we want to check the ancestor's type
+	 * @param type
+	 *            The expected type
+	 * @return the first ancestor of the specified type.
+	 * @throws NotFoundException
+	 *             If no ancestor is found.
+	 */
+	public static EObject lookupAncestorOfType(EObject child, EClass type) throws NotFoundException {
+		if (child != null)
+		{
+			if (type.isInstance(child)) {
+				return child;
+			}
+
+			int count = 0;
+			for (EObject parent = child.eContainer(); parent != null; parent = parent.eContainer())
+			{
+				if (++count > 100000)
+				{
+					return lookupAncestorOfType(child, type);
+				}
+				// Check if this is the correct type
+				if (type.isInstance(parent)) {
+					return parent;
+				}
+				if (parent == child)
+				{
+					throw new IllegalStateException("There is a cycle in the containment hierarchy of " + child);
+				}
+			}
+		}
+		// Nothing found
+		throw new NotFoundException("No ancestor of the specified type");
+
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/LayersAdapterFactory.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/LayersAdapterFactory.java
new file mode 100755
index 0000000..3e8e186
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/LayersAdapterFactory.java
@@ -0,0 +1,1606 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.util;
+
+import java.util.Map;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gmf.runtime.notation.NamedStyle;
+import org.eclipse.gmf.runtime.notation.Style;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.AllViewsDerivedLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.AndStackedLayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.ApplicationDependantElement;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanType;
+import org.eclipse.papyrus.layers.stackmodel.layers.Color;
+import org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomType;
+import org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.Fill;
+import org.eclipse.papyrus.layers.stackmodel.layers.FillInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.FillPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.Folder;
+import org.eclipse.papyrus.layers.stackmodel.layers.FolderElement;
+import org.eclipse.papyrus.layers.stackmodel.layers.FontInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.FontPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.FontType;
+import org.eclipse.papyrus.layers.stackmodel.layers.IntInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.IntType;
+import org.eclipse.papyrus.layers.stackmodel.layers.IsAbstractUmlSetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.IsValidPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.IsVisiblePropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerStackDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.LineInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LinePropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LineType;
+import org.eclipse.papyrus.layers.stackmodel.layers.Metamodel;
+import org.eclipse.papyrus.layers.stackmodel.layers.NullInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.NullPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.OrStackedLayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayerDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.SimpleLayerDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.StringInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.StringType;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.Type;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage
+ * @generated
+ */
+public class LayersAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected static LayersPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayersAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = LayersPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject) object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected LayersSwitch<Adapter> modelSwitch =
+			new LayersSwitch<Adapter>() {
+				@Override
+				public Adapter caseLayerNamedStyle(LayerNamedStyle object) {
+					return createLayerNamedStyleAdapter();
+				}
+
+				@Override
+				public Adapter caseLayersStack(LayersStack object) {
+					return createLayersStackAdapter();
+				}
+
+				@Override
+				public Adapter caseLayerExpression(LayerExpression object) {
+					return createLayerExpressionAdapter();
+				}
+
+				@Override
+				public Adapter caseApplicationDependantElement(ApplicationDependantElement object) {
+					return createApplicationDependantElementAdapter();
+				}
+
+				@Override
+				public Adapter caseLayersStackApplication(LayersStackApplication object) {
+					return createLayersStackApplicationAdapter();
+				}
+
+				@Override
+				public Adapter caseFolderElement(FolderElement object) {
+					return createFolderElementAdapter();
+				}
+
+				@Override
+				public Adapter caseLayerStackDescriptorRegistry(LayerStackDescriptorRegistry object) {
+					return createLayerStackDescriptorRegistryAdapter();
+				}
+
+				@Override
+				public Adapter casePropertyRegistry(PropertyRegistry object) {
+					return createPropertyRegistryAdapter();
+				}
+
+				@Override
+				public Adapter caseProperty(Property object) {
+					return createPropertyAdapter();
+				}
+
+				@Override
+				public Adapter caseType(Type object) {
+					return createTypeAdapter();
+				}
+
+				@Override
+				public Adapter caseMetamodel(Metamodel object) {
+					return createMetamodelAdapter();
+				}
+
+				@Override
+				public Adapter caseTypeInstance(TypeInstance object) {
+					return createTypeInstanceAdapter();
+				}
+
+				@Override
+				public Adapter caseComputePropertyValueCommandItf(ComputePropertyValueCommand object) {
+					return createComputePropertyValueCommandItfAdapter();
+				}
+
+				@Override
+				public Adapter caseTypeRegistry(TypeRegistry object) {
+					return createTypeRegistryAdapter();
+				}
+
+				@Override
+				public Adapter caseStringToTypeMap(Map.Entry<String, Type> object) {
+					return createStringToTypeMapAdapter();
+				}
+
+				@Override
+				public Adapter caseLayerDescriptorRegistry(LayerDescriptorRegistry object) {
+					return createLayerDescriptorRegistryAdapter();
+				}
+
+				@Override
+				public Adapter caseLayerDescriptor(LayerDescriptor object) {
+					return createLayerDescriptorAdapter();
+				}
+
+				@Override
+				public Adapter caseLayerApplicationFactory(LayerApplicationFactory object) {
+					return createLayerApplicationFactoryAdapter();
+				}
+
+				@Override
+				public Adapter casePropertySetterRegistry(PropertySetterRegistry object) {
+					return createPropertySetterRegistryAdapter();
+				}
+
+				@Override
+				public Adapter casePropertySetter(PropertySetter object) {
+					return createPropertySetterAdapter();
+				}
+
+				@Override
+				public Adapter caseStringToPropertySetter(Map.Entry<String, PropertySetter> object) {
+					return createStringToPropertySetterAdapter();
+				}
+
+				@Override
+				public Adapter caseLayerOperatorDescriptorRegistry(LayerOperatorDescriptorRegistry object) {
+					return createLayerOperatorDescriptorRegistryAdapter();
+				}
+
+				@Override
+				public Adapter caseLayerOperatorDescriptor(LayerOperatorDescriptor object) {
+					return createLayerOperatorDescriptorAdapter();
+				}
+
+				@Override
+				public Adapter casePropertyOperator(PropertyOperator object) {
+					return createPropertyOperatorAdapter();
+				}
+
+				@Override
+				public Adapter caseAbstractLayerOperator(AbstractLayerOperator object) {
+					return createAbstractLayerOperatorAdapter();
+				}
+
+				@Override
+				public Adapter caseLayerOperator(LayerOperator object) {
+					return createLayerOperatorAdapter();
+				}
+
+				@Override
+				public Adapter caseLayersContainer(LayersContainer object) {
+					return createLayersContainerAdapter();
+				}
+
+				@Override
+				public Adapter caseDefaultPropertyOperator(DefaultPropertyOperator object) {
+					return createDefaultPropertyOperatorAdapter();
+				}
+
+				@Override
+				public Adapter caseAbstractLayer(AbstractLayer object) {
+					return createAbstractLayerAdapter();
+				}
+
+				@Override
+				public Adapter caseStringToTypeInstanceMap(Map.Entry<String, TypeInstance> object) {
+					return createStringToTypeInstanceMapAdapter();
+				}
+
+				@Override
+				public Adapter caseFolder(Folder object) {
+					return createFolderAdapter();
+				}
+
+				@Override
+				public Adapter caseIntInstance(IntInstance object) {
+					return createIntInstanceAdapter();
+				}
+
+				@Override
+				public Adapter caseBooleanInstance(BooleanInstance object) {
+					return createBooleanInstanceAdapter();
+				}
+
+				@Override
+				public Adapter caseStringInstance(StringInstance object) {
+					return createStringInstanceAdapter();
+				}
+
+				@Override
+				public Adapter caseIntType(IntType object) {
+					return createIntTypeAdapter();
+				}
+
+				@Override
+				public Adapter caseBooleanType(BooleanType object) {
+					return createBooleanTypeAdapter();
+				}
+
+				@Override
+				public Adapter caseStringType(StringType object) {
+					return createStringTypeAdapter();
+				}
+
+				@Override
+				public Adapter caseCustomType(CustomType object) {
+					return createCustomTypeAdapter();
+				}
+
+				@Override
+				public Adapter caseTopLayerOperator(TopLayerOperator object) {
+					return createTopLayerOperatorAdapter();
+				}
+
+				@Override
+				public Adapter caseStackedLayerOperator(StackedLayerOperator object) {
+					return createStackedLayerOperatorAdapter();
+				}
+
+				@Override
+				public Adapter caseCustomLayerOperator(CustomLayerOperator object) {
+					return createCustomLayerOperatorAdapter();
+				}
+
+				@Override
+				public Adapter casePropertyIndex(PropertyIndex object) {
+					return createPropertyIndexAdapter();
+				}
+
+				@Override
+				public Adapter caseStringToPropertyIndexMap(Map.Entry<String, PropertyIndex> object) {
+					return createStringToPropertyIndexMapAdapter();
+				}
+
+				@Override
+				public Adapter caseSimpleLayerDescriptor(SimpleLayerDescriptor object) {
+					return createSimpleLayerDescriptorAdapter();
+				}
+
+				@Override
+				public Adapter caseRegExpLayerDescriptor(RegExpLayerDescriptor object) {
+					return createRegExpLayerDescriptorAdapter();
+				}
+
+				@Override
+				public Adapter caseNullInstance(NullInstance object) {
+					return createNullInstanceAdapter();
+				}
+
+				@Override
+				public Adapter caseRegExpLayer(RegExpLayer object) {
+					return createRegExpLayerAdapter();
+				}
+
+				@Override
+				public Adapter caseLayer(Layer object) {
+					return createLayerAdapter();
+				}
+
+				@Override
+				public Adapter caseColor(Color object) {
+					return createColorAdapter();
+				}
+
+				@Override
+				public Adapter caseColorInstance(ColorInstance object) {
+					return createColorInstanceAdapter();
+				}
+
+				@Override
+				public Adapter caseFillInstance(FillInstance object) {
+					return createFillInstanceAdapter();
+				}
+
+				@Override
+				public Adapter caseFill(Fill object) {
+					return createFillAdapter();
+				}
+
+				@Override
+				public Adapter caseFillPropertySetter(FillPropertySetter object) {
+					return createFillPropertySetterAdapter();
+				}
+
+				@Override
+				public Adapter caseIsValidPropertySetter(IsValidPropertySetter object) {
+					return createIsValidPropertySetterAdapter();
+				}
+
+				@Override
+				public Adapter caseNullPropertySetter(NullPropertySetter object) {
+					return createNullPropertySetterAdapter();
+				}
+
+				@Override
+				public Adapter caseLineType(LineType object) {
+					return createLineTypeAdapter();
+				}
+
+				@Override
+				public Adapter caseLineInstance(LineInstance object) {
+					return createLineInstanceAdapter();
+				}
+
+				@Override
+				public Adapter caseLinePropertySetter(LinePropertySetter object) {
+					return createLinePropertySetterAdapter();
+				}
+
+				@Override
+				public Adapter caseFontPropertySetter(FontPropertySetter object) {
+					return createFontPropertySetterAdapter();
+				}
+
+				@Override
+				public Adapter caseFontInstance(FontInstance object) {
+					return createFontInstanceAdapter();
+				}
+
+				@Override
+				public Adapter caseFontType(FontType object) {
+					return createFontTypeAdapter();
+				}
+
+				@Override
+				public Adapter caseIsVisiblePropertySetter(IsVisiblePropertySetter object) {
+					return createIsVisiblePropertySetterAdapter();
+				}
+
+				@Override
+				public Adapter caseTopLayerOperatorDescriptor(TopLayerOperatorDescriptor object) {
+					return createTopLayerOperatorDescriptorAdapter();
+				}
+
+				@Override
+				public Adapter caseStackedLayerOperatorDescriptor(StackedLayerOperatorDescriptor object) {
+					return createStackedLayerOperatorDescriptorAdapter();
+				}
+
+				@Override
+				public Adapter caseCustomPropertyOperator(CustomPropertyOperator object) {
+					return createCustomPropertyOperatorAdapter();
+				}
+
+				@Override
+				public Adapter caseAndStackedLayerOperatorDescriptor(AndStackedLayerOperatorDescriptor object) {
+					return createAndStackedLayerOperatorDescriptorAdapter();
+				}
+
+				@Override
+				public Adapter caseOrStackedLayerOperatorDescriptor(OrStackedLayerOperatorDescriptor object) {
+					return createOrStackedLayerOperatorDescriptorAdapter();
+				}
+
+				@Override
+				public Adapter caseIsAbstractUmlSetter(IsAbstractUmlSetter object) {
+					return createIsAbstractUmlSetterAdapter();
+				}
+
+				@Override
+				public Adapter caseAllViewsDerivedLayer(AllViewsDerivedLayer object) {
+					return createAllViewsDerivedLayerAdapter();
+				}
+
+				@Override
+				public Adapter caseStyle(Style object) {
+					return createStyleAdapter();
+				}
+
+				@Override
+				public Adapter caseNamedStyle(NamedStyle object) {
+					return createNamedStyleAdapter();
+				}
+
+				@Override
+				public Adapter defaultCase(EObject object) {
+					return createEObjectAdapter();
+				}
+			};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @param target
+	 *            the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject) target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle <em>Layer Named Style</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle
+	 * @generated
+	 */
+	public Adapter createLayerNamedStyleAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStack <em>Stack</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStack
+	 * @generated
+	 */
+	public Adapter createLayersStackAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.Layer <em>Layer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Layer
+	 * @generated
+	 */
+	public Adapter createLayerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.Color <em>Color</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Color
+	 * @generated
+	 */
+	public Adapter createColorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance <em>Color Instance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance
+	 * @generated
+	 */
+	public Adapter createColorInstanceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.FillInstance <em>Fill Instance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.FillInstance
+	 * @generated
+	 */
+	public Adapter createFillInstanceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.Fill <em>Fill</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Fill
+	 * @generated
+	 */
+	public Adapter createFillAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.FillPropertySetter <em>Fill Property Setter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.FillPropertySetter
+	 * @generated
+	 */
+	public Adapter createFillPropertySetterAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.IsValidPropertySetter <em>Is Valid Property Setter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.IsValidPropertySetter
+	 * @generated
+	 */
+	public Adapter createIsValidPropertySetterAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.NullPropertySetter <em>Null Property Setter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.NullPropertySetter
+	 * @generated
+	 */
+	public Adapter createNullPropertySetterAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LineType <em>Line Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LineType
+	 * @generated
+	 */
+	public Adapter createLineTypeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LineInstance <em>Line Instance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LineInstance
+	 * @generated
+	 */
+	public Adapter createLineInstanceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LinePropertySetter <em>Line Property Setter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LinePropertySetter
+	 * @generated
+	 */
+	public Adapter createLinePropertySetterAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.FontPropertySetter <em>Font Property Setter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.FontPropertySetter
+	 * @generated
+	 */
+	public Adapter createFontPropertySetterAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.FontInstance <em>Font Instance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.FontInstance
+	 * @generated
+	 */
+	public Adapter createFontInstanceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.FontType <em>Font Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.FontType
+	 * @generated
+	 */
+	public Adapter createFontTypeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.IsVisiblePropertySetter <em>Is Visible Property Setter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.IsVisiblePropertySetter
+	 * @generated
+	 */
+	public Adapter createIsVisiblePropertySetterAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry <em>Layer Operator Descriptor Registry</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry
+	 * @generated
+	 */
+	public Adapter createLayerOperatorDescriptorRegistryAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperatorDescriptor <em>Top Layer Operator Descriptor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperatorDescriptor
+	 * @generated
+	 */
+	public Adapter createTopLayerOperatorDescriptorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperatorDescriptor <em>Stacked Layer Operator Descriptor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperatorDescriptor
+	 * @generated
+	 */
+	public Adapter createStackedLayerOperatorDescriptorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator <em>Custom Property Operator</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator
+	 * @generated
+	 */
+	public Adapter createCustomPropertyOperatorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.AndStackedLayerOperatorDescriptor <em>And Stacked Layer Operator Descriptor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.AndStackedLayerOperatorDescriptor
+	 * @generated
+	 */
+	public Adapter createAndStackedLayerOperatorDescriptorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.OrStackedLayerOperatorDescriptor <em>Or Stacked Layer Operator Descriptor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.OrStackedLayerOperatorDescriptor
+	 * @generated
+	 */
+	public Adapter createOrStackedLayerOperatorDescriptorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.IsAbstractUmlSetter <em>Is Abstract Uml Setter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.IsAbstractUmlSetter
+	 * @generated
+	 */
+	public Adapter createIsAbstractUmlSetterAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.AllViewsDerivedLayer <em>All Views Derived Layer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.AllViewsDerivedLayer
+	 * @generated
+	 */
+	public Adapter createAllViewsDerivedLayerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance <em>Type Instance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance
+	 * @generated
+	 */
+	public Adapter createTypeInstanceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand <em>Compute Property Value Command Itf</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand
+	 * @generated
+	 */
+	public Adapter createComputePropertyValueCommandItfAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link java.util.Map.Entry <em>String To Type Instance Map</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see java.util.Map.Entry
+	 * @generated
+	 */
+	public Adapter createStringToTypeInstanceMapAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor <em>Layer Descriptor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor
+	 * @generated
+	 */
+	public Adapter createLayerDescriptorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory <em>Layer Application Factory</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory
+	 * @generated
+	 */
+	public Adapter createLayerApplicationFactoryAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry <em>Property Setter Registry</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry
+	 * @generated
+	 */
+	public Adapter createPropertySetterRegistryAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter <em>Property Setter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter
+	 * @generated
+	 */
+	public Adapter createPropertySetterAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link java.util.Map.Entry <em>String To Property Setter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see java.util.Map.Entry
+	 * @generated
+	 */
+	public Adapter createStringToPropertySetterAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer <em>Abstract Layer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer
+	 * @generated
+	 */
+	public Adapter createAbstractLayerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.Property <em>Property</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Property
+	 * @generated
+	 */
+	public Adapter createPropertyAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.FolderElement <em>Folder Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.FolderElement
+	 * @generated
+	 */
+	public Adapter createFolderElementAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression <em>Layer Expression</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression
+	 * @generated
+	 */
+	public Adapter createLayerExpressionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.ApplicationDependantElement <em>Application Dependant Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.ApplicationDependantElement
+	 * @generated
+	 */
+	public Adapter createApplicationDependantElementAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.Type <em>Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Type
+	 * @generated
+	 */
+	public Adapter createTypeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.Metamodel <em>Metamodel</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Metamodel
+	 * @generated
+	 */
+	public Adapter createMetamodelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.Folder <em>Folder</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.Folder
+	 * @generated
+	 */
+	public Adapter createFolderAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.IntInstance <em>Int Instance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.IntInstance
+	 * @generated
+	 */
+	public Adapter createIntInstanceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance <em>Boolean Instance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance
+	 * @generated
+	 */
+	public Adapter createBooleanInstanceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.StringInstance <em>String Instance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.StringInstance
+	 * @generated
+	 */
+	public Adapter createStringInstanceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.IntType <em>Int Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.IntType
+	 * @generated
+	 */
+	public Adapter createIntTypeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.BooleanType <em>Boolean Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.BooleanType
+	 * @generated
+	 */
+	public Adapter createBooleanTypeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.StringType <em>String Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.StringType
+	 * @generated
+	 */
+	public Adapter createStringTypeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomType <em>Custom Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.CustomType
+	 * @generated
+	 */
+	public Adapter createCustomTypeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication <em>Stack Application</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication
+	 * @generated
+	 */
+	public Adapter createLayersStackApplicationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerStackDescriptorRegistry <em>Layer Stack Descriptor Registry</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerStackDescriptorRegistry
+	 * @generated
+	 */
+	public Adapter createLayerStackDescriptorRegistryAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry <em>Property Registry</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry
+	 * @generated
+	 */
+	public Adapter createPropertyRegistryAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link java.util.Map.Entry <em>String To Property Index Map</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see java.util.Map.Entry
+	 * @generated
+	 */
+	public Adapter createStringToPropertyIndexMapAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.SimpleLayerDescriptor <em>Simple Layer Descriptor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.SimpleLayerDescriptor
+	 * @generated
+	 */
+	public Adapter createSimpleLayerDescriptorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayerDescriptor <em>Reg Exp Layer Descriptor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayerDescriptor
+	 * @generated
+	 */
+	public Adapter createRegExpLayerDescriptorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.NullInstance <em>Null Instance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.NullInstance
+	 * @generated
+	 */
+	public Adapter createNullInstanceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer <em>Reg Exp Layer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer
+	 * @generated
+	 */
+	public Adapter createRegExpLayerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex <em>Property Index</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex
+	 * @generated
+	 */
+	public Adapter createPropertyIndexAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry <em>Type Registry</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry
+	 * @generated
+	 */
+	public Adapter createTypeRegistryAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link java.util.Map.Entry <em>String To Type Map</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see java.util.Map.Entry
+	 * @generated
+	 */
+	public Adapter createStringToTypeMapAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry <em>Layer Descriptor Registry</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry
+	 * @generated
+	 */
+	public Adapter createLayerDescriptorRegistryAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator <em>Layer Operator</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator
+	 * @generated
+	 */
+	public Adapter createLayerOperatorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer <em>Container</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer
+	 * @generated
+	 */
+	public Adapter createLayersContainerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator <em>Abstract Layer Operator</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator
+	 * @generated
+	 */
+	public Adapter createAbstractLayerOperatorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor <em>Layer Operator Descriptor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor
+	 * @generated
+	 */
+	public Adapter createLayerOperatorDescriptorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator <em>Property Operator</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator
+	 * @generated
+	 */
+	public Adapter createPropertyOperatorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator <em>Default Property Operator</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator
+	 * @generated
+	 */
+	public Adapter createDefaultPropertyOperatorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator <em>Top Layer Operator</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator
+	 * @generated
+	 */
+	public Adapter createTopLayerOperatorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator <em>Stacked Layer Operator</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator
+	 * @generated
+	 */
+	public Adapter createStackedLayerOperatorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.layers.stackmodel.layers.CustomLayerOperator <em>Custom Layer Operator</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.layers.stackmodel.layers.CustomLayerOperator
+	 * @generated
+	 */
+	public Adapter createCustomLayerOperatorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.gmf.runtime.notation.Style <em>Style</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.gmf.runtime.notation.Style
+	 * @generated
+	 */
+	public Adapter createStyleAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.gmf.runtime.notation.NamedStyle <em>Named Style</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @see org.eclipse.gmf.runtime.notation.NamedStyle
+	 * @generated
+	 */
+	public Adapter createNamedStyleAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} // LayersAdapterFactory
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/LayersSwitch.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/LayersSwitch.java
new file mode 100755
index 0000000..b0502c0
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/LayersSwitch.java
@@ -0,0 +1,2209 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.util;
+
+import java.util.Map;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.gmf.runtime.notation.NamedStyle;
+import org.eclipse.gmf.runtime.notation.Style;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.AllViewsDerivedLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.AndStackedLayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.ApplicationDependantElement;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanType;
+import org.eclipse.papyrus.layers.stackmodel.layers.Color;
+import org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomType;
+import org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.Fill;
+import org.eclipse.papyrus.layers.stackmodel.layers.FillInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.FillPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.Folder;
+import org.eclipse.papyrus.layers.stackmodel.layers.FolderElement;
+import org.eclipse.papyrus.layers.stackmodel.layers.FontInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.FontPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.FontType;
+import org.eclipse.papyrus.layers.stackmodel.layers.IntInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.IntType;
+import org.eclipse.papyrus.layers.stackmodel.layers.IsAbstractUmlSetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.IsValidPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.IsVisiblePropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerApplicationFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerNamedStyle;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerStackDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.LineInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LinePropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LineType;
+import org.eclipse.papyrus.layers.stackmodel.layers.Metamodel;
+import org.eclipse.papyrus.layers.stackmodel.layers.NullInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.NullPropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.OrStackedLayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyIndex;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayerDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.SimpleLayerDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.StringInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.StringType;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.Type;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)} to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ *
+ * @see org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage
+ * @generated
+ */
+public class LayersSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	protected static LayersPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated
+	 */
+	public LayersSwitch() {
+		if (modelPackage == null) {
+			modelPackage = LayersPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @parameter ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+		case LayersPackage.LAYER_NAMED_STYLE: {
+			LayerNamedStyle layerNamedStyle = (LayerNamedStyle) theEObject;
+			T result = caseLayerNamedStyle(layerNamedStyle);
+			if (result == null) {
+				result = caseNamedStyle(layerNamedStyle);
+			}
+			if (result == null) {
+				result = caseStyle(layerNamedStyle);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.LAYERS_STACK: {
+			LayersStack layersStack = (LayersStack) theEObject;
+			T result = caseLayersStack(layersStack);
+			if (result == null) {
+				result = caseLayersContainer(layersStack);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.LAYER_EXPRESSION: {
+			LayerExpression layerExpression = (LayerExpression) theEObject;
+			T result = caseLayerExpression(layerExpression);
+			if (result == null) {
+				result = caseApplicationDependantElement(layerExpression);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.APPLICATION_DEPENDANT_ELEMENT: {
+			ApplicationDependantElement applicationDependantElement = (ApplicationDependantElement) theEObject;
+			T result = caseApplicationDependantElement(applicationDependantElement);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.LAYERS_STACK_APPLICATION: {
+			LayersStackApplication layersStackApplication = (LayersStackApplication) theEObject;
+			T result = caseLayersStackApplication(layersStackApplication);
+			if (result == null) {
+				result = caseFolderElement(layersStackApplication);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.FOLDER_ELEMENT: {
+			FolderElement folderElement = (FolderElement) theEObject;
+			T result = caseFolderElement(folderElement);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.LAYER_STACK_DESCRIPTOR_REGISTRY: {
+			LayerStackDescriptorRegistry layerStackDescriptorRegistry = (LayerStackDescriptorRegistry) theEObject;
+			T result = caseLayerStackDescriptorRegistry(layerStackDescriptorRegistry);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.PROPERTY_REGISTRY: {
+			PropertyRegistry propertyRegistry = (PropertyRegistry) theEObject;
+			T result = casePropertyRegistry(propertyRegistry);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.PROPERTY: {
+			Property property = (Property) theEObject;
+			T result = caseProperty(property);
+			if (result == null) {
+				result = caseFolderElement(property);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.TYPE: {
+			Type type = (Type) theEObject;
+			T result = caseType(type);
+			if (result == null) {
+				result = caseFolderElement(type);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.METAMODEL: {
+			Metamodel metamodel = (Metamodel) theEObject;
+			T result = caseMetamodel(metamodel);
+			if (result == null) {
+				result = caseFolderElement(metamodel);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.TYPE_INSTANCE: {
+			TypeInstance typeInstance = (TypeInstance) theEObject;
+			T result = caseTypeInstance(typeInstance);
+			if (result == null) {
+				result = caseComputePropertyValueCommandItf(typeInstance);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.COMPUTE_PROPERTY_VALUE_COMMAND_ITF: {
+			ComputePropertyValueCommand computePropertyValueCommandItf = (ComputePropertyValueCommand) theEObject;
+			T result = caseComputePropertyValueCommandItf(computePropertyValueCommandItf);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.TYPE_REGISTRY: {
+			TypeRegistry typeRegistry = (TypeRegistry) theEObject;
+			T result = caseTypeRegistry(typeRegistry);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.STRING_TO_TYPE_MAP: {
+			@SuppressWarnings("unchecked")
+			Map.Entry<String, Type> stringToTypeMap = (Map.Entry<String, Type>) theEObject;
+			T result = caseStringToTypeMap(stringToTypeMap);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.LAYER_DESCRIPTOR_REGISTRY: {
+			LayerDescriptorRegistry layerDescriptorRegistry = (LayerDescriptorRegistry) theEObject;
+			T result = caseLayerDescriptorRegistry(layerDescriptorRegistry);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.LAYER_DESCRIPTOR: {
+			LayerDescriptor layerDescriptor = (LayerDescriptor) theEObject;
+			T result = caseLayerDescriptor(layerDescriptor);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.LAYER_APPLICATION_FACTORY: {
+			LayerApplicationFactory layerApplicationFactory = (LayerApplicationFactory) theEObject;
+			T result = caseLayerApplicationFactory(layerApplicationFactory);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.PROPERTY_SETTER_REGISTRY: {
+			PropertySetterRegistry propertySetterRegistry = (PropertySetterRegistry) theEObject;
+			T result = casePropertySetterRegistry(propertySetterRegistry);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.PROPERTY_SETTER: {
+			PropertySetter propertySetter = (PropertySetter) theEObject;
+			T result = casePropertySetter(propertySetter);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.STRING_TO_PROPERTY_SETTER: {
+			@SuppressWarnings("unchecked")
+			Map.Entry<String, PropertySetter> stringToPropertySetter = (Map.Entry<String, PropertySetter>) theEObject;
+			T result = caseStringToPropertySetter(stringToPropertySetter);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR_REGISTRY: {
+			LayerOperatorDescriptorRegistry layerOperatorDescriptorRegistry = (LayerOperatorDescriptorRegistry) theEObject;
+			T result = caseLayerOperatorDescriptorRegistry(layerOperatorDescriptorRegistry);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.LAYER_OPERATOR_DESCRIPTOR: {
+			LayerOperatorDescriptor layerOperatorDescriptor = (LayerOperatorDescriptor) theEObject;
+			T result = caseLayerOperatorDescriptor(layerOperatorDescriptor);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.PROPERTY_OPERATOR: {
+			PropertyOperator propertyOperator = (PropertyOperator) theEObject;
+			T result = casePropertyOperator(propertyOperator);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.ABSTRACT_LAYER_OPERATOR: {
+			AbstractLayerOperator abstractLayerOperator = (AbstractLayerOperator) theEObject;
+			T result = caseAbstractLayerOperator(abstractLayerOperator);
+			if (result == null) {
+				result = caseLayerOperator(abstractLayerOperator);
+			}
+			if (result == null) {
+				result = caseLayerExpression(abstractLayerOperator);
+			}
+			if (result == null) {
+				result = caseLayersContainer(abstractLayerOperator);
+			}
+			if (result == null) {
+				result = caseApplicationDependantElement(abstractLayerOperator);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.LAYER_OPERATOR: {
+			LayerOperator layerOperator = (LayerOperator) theEObject;
+			T result = caseLayerOperator(layerOperator);
+			if (result == null) {
+				result = caseLayerExpression(layerOperator);
+			}
+			if (result == null) {
+				result = caseLayersContainer(layerOperator);
+			}
+			if (result == null) {
+				result = caseApplicationDependantElement(layerOperator);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.LAYERS_CONTAINER: {
+			LayersContainer layersContainer = (LayersContainer) theEObject;
+			T result = caseLayersContainer(layersContainer);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.DEFAULT_PROPERTY_OPERATOR: {
+			DefaultPropertyOperator defaultPropertyOperator = (DefaultPropertyOperator) theEObject;
+			T result = caseDefaultPropertyOperator(defaultPropertyOperator);
+			if (result == null) {
+				result = casePropertyOperator(defaultPropertyOperator);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.ABSTRACT_LAYER: {
+			AbstractLayer abstractLayer = (AbstractLayer) theEObject;
+			T result = caseAbstractLayer(abstractLayer);
+			if (result == null) {
+				result = caseLayerExpression(abstractLayer);
+			}
+			if (result == null) {
+				result = caseApplicationDependantElement(abstractLayer);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.STRING_TO_TYPE_INSTANCE_MAP: {
+			@SuppressWarnings("unchecked")
+			Map.Entry<String, TypeInstance> stringToTypeInstanceMap = (Map.Entry<String, TypeInstance>) theEObject;
+			T result = caseStringToTypeInstanceMap(stringToTypeInstanceMap);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.FOLDER: {
+			Folder folder = (Folder) theEObject;
+			T result = caseFolder(folder);
+			if (result == null) {
+				result = caseFolderElement(folder);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.INT_INSTANCE: {
+			IntInstance intInstance = (IntInstance) theEObject;
+			T result = caseIntInstance(intInstance);
+			if (result == null) {
+				result = caseTypeInstance(intInstance);
+			}
+			if (result == null) {
+				result = caseComputePropertyValueCommandItf(intInstance);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.BOOLEAN_INSTANCE: {
+			BooleanInstance booleanInstance = (BooleanInstance) theEObject;
+			T result = caseBooleanInstance(booleanInstance);
+			if (result == null) {
+				result = caseTypeInstance(booleanInstance);
+			}
+			if (result == null) {
+				result = caseComputePropertyValueCommandItf(booleanInstance);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.STRING_INSTANCE: {
+			StringInstance stringInstance = (StringInstance) theEObject;
+			T result = caseStringInstance(stringInstance);
+			if (result == null) {
+				result = caseTypeInstance(stringInstance);
+			}
+			if (result == null) {
+				result = caseComputePropertyValueCommandItf(stringInstance);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.INT_TYPE: {
+			IntType intType = (IntType) theEObject;
+			T result = caseIntType(intType);
+			if (result == null) {
+				result = caseType(intType);
+			}
+			if (result == null) {
+				result = caseFolderElement(intType);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.BOOLEAN_TYPE: {
+			BooleanType booleanType = (BooleanType) theEObject;
+			T result = caseBooleanType(booleanType);
+			if (result == null) {
+				result = caseType(booleanType);
+			}
+			if (result == null) {
+				result = caseFolderElement(booleanType);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.STRING_TYPE: {
+			StringType stringType = (StringType) theEObject;
+			T result = caseStringType(stringType);
+			if (result == null) {
+				result = caseType(stringType);
+			}
+			if (result == null) {
+				result = caseFolderElement(stringType);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.CUSTOM_TYPE: {
+			CustomType customType = (CustomType) theEObject;
+			T result = caseCustomType(customType);
+			if (result == null) {
+				result = caseType(customType);
+			}
+			if (result == null) {
+				result = caseFolderElement(customType);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.TOP_LAYER_OPERATOR: {
+			TopLayerOperator topLayerOperator = (TopLayerOperator) theEObject;
+			T result = caseTopLayerOperator(topLayerOperator);
+			if (result == null) {
+				result = caseAbstractLayerOperator(topLayerOperator);
+			}
+			if (result == null) {
+				result = caseLayerOperator(topLayerOperator);
+			}
+			if (result == null) {
+				result = caseLayerExpression(topLayerOperator);
+			}
+			if (result == null) {
+				result = caseLayersContainer(topLayerOperator);
+			}
+			if (result == null) {
+				result = caseApplicationDependantElement(topLayerOperator);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.STACKED_LAYER_OPERATOR: {
+			StackedLayerOperator stackedLayerOperator = (StackedLayerOperator) theEObject;
+			T result = caseStackedLayerOperator(stackedLayerOperator);
+			if (result == null) {
+				result = caseAbstractLayerOperator(stackedLayerOperator);
+			}
+			if (result == null) {
+				result = caseLayerOperator(stackedLayerOperator);
+			}
+			if (result == null) {
+				result = caseLayerExpression(stackedLayerOperator);
+			}
+			if (result == null) {
+				result = caseLayersContainer(stackedLayerOperator);
+			}
+			if (result == null) {
+				result = caseApplicationDependantElement(stackedLayerOperator);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.CUSTOM_LAYER_OPERATOR: {
+			CustomLayerOperator customLayerOperator = (CustomLayerOperator) theEObject;
+			T result = caseCustomLayerOperator(customLayerOperator);
+			if (result == null) {
+				result = caseLayerOperator(customLayerOperator);
+			}
+			if (result == null) {
+				result = caseLayerExpression(customLayerOperator);
+			}
+			if (result == null) {
+				result = caseLayersContainer(customLayerOperator);
+			}
+			if (result == null) {
+				result = caseApplicationDependantElement(customLayerOperator);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.PROPERTY_INDEX: {
+			PropertyIndex propertyIndex = (PropertyIndex) theEObject;
+			T result = casePropertyIndex(propertyIndex);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.STRING_TO_PROPERTY_INDEX_MAP: {
+			@SuppressWarnings("unchecked")
+			Map.Entry<String, PropertyIndex> stringToPropertyIndexMap = (Map.Entry<String, PropertyIndex>) theEObject;
+			T result = caseStringToPropertyIndexMap(stringToPropertyIndexMap);
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.SIMPLE_LAYER_DESCRIPTOR: {
+			SimpleLayerDescriptor simpleLayerDescriptor = (SimpleLayerDescriptor) theEObject;
+			T result = caseSimpleLayerDescriptor(simpleLayerDescriptor);
+			if (result == null) {
+				result = caseLayerDescriptor(simpleLayerDescriptor);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.REG_EXP_LAYER_DESCRIPTOR: {
+			RegExpLayerDescriptor regExpLayerDescriptor = (RegExpLayerDescriptor) theEObject;
+			T result = caseRegExpLayerDescriptor(regExpLayerDescriptor);
+			if (result == null) {
+				result = caseLayerDescriptor(regExpLayerDescriptor);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.NULL_INSTANCE: {
+			NullInstance nullInstance = (NullInstance) theEObject;
+			T result = caseNullInstance(nullInstance);
+			if (result == null) {
+				result = caseTypeInstance(nullInstance);
+			}
+			if (result == null) {
+				result = caseComputePropertyValueCommandItf(nullInstance);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.REG_EXP_LAYER: {
+			RegExpLayer regExpLayer = (RegExpLayer) theEObject;
+			T result = caseRegExpLayer(regExpLayer);
+			if (result == null) {
+				result = caseAbstractLayer(regExpLayer);
+			}
+			if (result == null) {
+				result = caseLayerExpression(regExpLayer);
+			}
+			if (result == null) {
+				result = caseApplicationDependantElement(regExpLayer);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.LAYER: {
+			Layer layer = (Layer) theEObject;
+			T result = caseLayer(layer);
+			if (result == null) {
+				result = caseAbstractLayer(layer);
+			}
+			if (result == null) {
+				result = caseLayerExpression(layer);
+			}
+			if (result == null) {
+				result = caseApplicationDependantElement(layer);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.COLOR: {
+			Color color = (Color) theEObject;
+			T result = caseColor(color);
+			if (result == null) {
+				result = caseType(color);
+			}
+			if (result == null) {
+				result = caseFolderElement(color);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.COLOR_INSTANCE: {
+			ColorInstance colorInstance = (ColorInstance) theEObject;
+			T result = caseColorInstance(colorInstance);
+			if (result == null) {
+				result = caseTypeInstance(colorInstance);
+			}
+			if (result == null) {
+				result = caseComputePropertyValueCommandItf(colorInstance);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.FILL_INSTANCE: {
+			FillInstance fillInstance = (FillInstance) theEObject;
+			T result = caseFillInstance(fillInstance);
+			if (result == null) {
+				result = caseTypeInstance(fillInstance);
+			}
+			if (result == null) {
+				result = caseComputePropertyValueCommandItf(fillInstance);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.FILL: {
+			Fill fill = (Fill) theEObject;
+			T result = caseFill(fill);
+			if (result == null) {
+				result = caseType(fill);
+			}
+			if (result == null) {
+				result = caseFolderElement(fill);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.FILL_PROPERTY_SETTER: {
+			FillPropertySetter fillPropertySetter = (FillPropertySetter) theEObject;
+			T result = caseFillPropertySetter(fillPropertySetter);
+			if (result == null) {
+				result = casePropertySetter(fillPropertySetter);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.IS_VALID_PROPERTY_SETTER: {
+			IsValidPropertySetter isValidPropertySetter = (IsValidPropertySetter) theEObject;
+			T result = caseIsValidPropertySetter(isValidPropertySetter);
+			if (result == null) {
+				result = casePropertySetter(isValidPropertySetter);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.NULL_PROPERTY_SETTER: {
+			NullPropertySetter nullPropertySetter = (NullPropertySetter) theEObject;
+			T result = caseNullPropertySetter(nullPropertySetter);
+			if (result == null) {
+				result = casePropertySetter(nullPropertySetter);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.LINE_TYPE: {
+			LineType lineType = (LineType) theEObject;
+			T result = caseLineType(lineType);
+			if (result == null) {
+				result = caseType(lineType);
+			}
+			if (result == null) {
+				result = caseFolderElement(lineType);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.LINE_INSTANCE: {
+			LineInstance lineInstance = (LineInstance) theEObject;
+			T result = caseLineInstance(lineInstance);
+			if (result == null) {
+				result = caseTypeInstance(lineInstance);
+			}
+			if (result == null) {
+				result = caseComputePropertyValueCommandItf(lineInstance);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.LINE_PROPERTY_SETTER: {
+			LinePropertySetter linePropertySetter = (LinePropertySetter) theEObject;
+			T result = caseLinePropertySetter(linePropertySetter);
+			if (result == null) {
+				result = casePropertySetter(linePropertySetter);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.FONT_PROPERTY_SETTER: {
+			FontPropertySetter fontPropertySetter = (FontPropertySetter) theEObject;
+			T result = caseFontPropertySetter(fontPropertySetter);
+			if (result == null) {
+				result = casePropertySetter(fontPropertySetter);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.FONT_INSTANCE: {
+			FontInstance fontInstance = (FontInstance) theEObject;
+			T result = caseFontInstance(fontInstance);
+			if (result == null) {
+				result = caseTypeInstance(fontInstance);
+			}
+			if (result == null) {
+				result = caseComputePropertyValueCommandItf(fontInstance);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.FONT_TYPE: {
+			FontType fontType = (FontType) theEObject;
+			T result = caseFontType(fontType);
+			if (result == null) {
+				result = caseType(fontType);
+			}
+			if (result == null) {
+				result = caseFolderElement(fontType);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.IS_VISIBLE_PROPERTY_SETTER: {
+			IsVisiblePropertySetter isVisiblePropertySetter = (IsVisiblePropertySetter) theEObject;
+			T result = caseIsVisiblePropertySetter(isVisiblePropertySetter);
+			if (result == null) {
+				result = casePropertySetter(isVisiblePropertySetter);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.TOP_LAYER_OPERATOR_DESCRIPTOR: {
+			TopLayerOperatorDescriptor topLayerOperatorDescriptor = (TopLayerOperatorDescriptor) theEObject;
+			T result = caseTopLayerOperatorDescriptor(topLayerOperatorDescriptor);
+			if (result == null) {
+				result = caseLayerOperatorDescriptor(topLayerOperatorDescriptor);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.STACKED_LAYER_OPERATOR_DESCRIPTOR: {
+			StackedLayerOperatorDescriptor stackedLayerOperatorDescriptor = (StackedLayerOperatorDescriptor) theEObject;
+			T result = caseStackedLayerOperatorDescriptor(stackedLayerOperatorDescriptor);
+			if (result == null) {
+				result = caseLayerOperatorDescriptor(stackedLayerOperatorDescriptor);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.CUSTOM_PROPERTY_OPERATOR: {
+			CustomPropertyOperator customPropertyOperator = (CustomPropertyOperator) theEObject;
+			T result = caseCustomPropertyOperator(customPropertyOperator);
+			if (result == null) {
+				result = casePropertyOperator(customPropertyOperator);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.AND_STACKED_LAYER_OPERATOR_DESCRIPTOR: {
+			AndStackedLayerOperatorDescriptor andStackedLayerOperatorDescriptor = (AndStackedLayerOperatorDescriptor) theEObject;
+			T result = caseAndStackedLayerOperatorDescriptor(andStackedLayerOperatorDescriptor);
+			if (result == null) {
+				result = caseStackedLayerOperatorDescriptor(andStackedLayerOperatorDescriptor);
+			}
+			if (result == null) {
+				result = caseLayerOperatorDescriptor(andStackedLayerOperatorDescriptor);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.OR_STACKED_LAYER_OPERATOR_DESCRIPTOR: {
+			OrStackedLayerOperatorDescriptor orStackedLayerOperatorDescriptor = (OrStackedLayerOperatorDescriptor) theEObject;
+			T result = caseOrStackedLayerOperatorDescriptor(orStackedLayerOperatorDescriptor);
+			if (result == null) {
+				result = caseStackedLayerOperatorDescriptor(orStackedLayerOperatorDescriptor);
+			}
+			if (result == null) {
+				result = caseLayerOperatorDescriptor(orStackedLayerOperatorDescriptor);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.IS_ABSTRACT_UML_SETTER: {
+			IsAbstractUmlSetter isAbstractUmlSetter = (IsAbstractUmlSetter) theEObject;
+			T result = caseIsAbstractUmlSetter(isAbstractUmlSetter);
+			if (result == null) {
+				result = casePropertySetter(isAbstractUmlSetter);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		case LayersPackage.ALL_VIEWS_DERIVED_LAYER: {
+			AllViewsDerivedLayer allViewsDerivedLayer = (AllViewsDerivedLayer) theEObject;
+			T result = caseAllViewsDerivedLayer(allViewsDerivedLayer);
+			if (result == null) {
+				result = caseAbstractLayer(allViewsDerivedLayer);
+			}
+			if (result == null) {
+				result = caseLayerExpression(allViewsDerivedLayer);
+			}
+			if (result == null) {
+				result = caseApplicationDependantElement(allViewsDerivedLayer);
+			}
+			if (result == null) {
+				result = defaultCase(theEObject);
+			}
+			return result;
+		}
+		default:
+			return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Layer Named Style</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Layer Named Style</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLayerNamedStyle(LayerNamedStyle object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Stack</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Stack</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLayersStack(LayersStack object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Layer</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Layer</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLayer(Layer object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Color</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Color</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseColor(Color object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Color Instance</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Color Instance</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseColorInstance(ColorInstance object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Fill Instance</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Fill Instance</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFillInstance(FillInstance object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Fill</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Fill</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFill(Fill object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Fill Property Setter</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Fill Property Setter</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFillPropertySetter(FillPropertySetter object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Is Valid Property Setter</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Is Valid Property Setter</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseIsValidPropertySetter(IsValidPropertySetter object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Null Property Setter</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Null Property Setter</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseNullPropertySetter(NullPropertySetter object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Line Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Line Type</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLineType(LineType object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Line Instance</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Line Instance</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLineInstance(LineInstance object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Line Property Setter</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Line Property Setter</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLinePropertySetter(LinePropertySetter object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Font Property Setter</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Font Property Setter</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFontPropertySetter(FontPropertySetter object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Font Instance</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Font Instance</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFontInstance(FontInstance object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Font Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Font Type</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFontType(FontType object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Is Visible Property Setter</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Is Visible Property Setter</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseIsVisiblePropertySetter(IsVisiblePropertySetter object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Layer Operator Descriptor Registry</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Layer Operator Descriptor Registry</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLayerOperatorDescriptorRegistry(LayerOperatorDescriptorRegistry object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Top Layer Operator Descriptor</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Top Layer Operator Descriptor</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTopLayerOperatorDescriptor(TopLayerOperatorDescriptor object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Stacked Layer Operator Descriptor</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Stacked Layer Operator Descriptor</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStackedLayerOperatorDescriptor(StackedLayerOperatorDescriptor object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Custom Property Operator</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Custom Property Operator</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCustomPropertyOperator(CustomPropertyOperator object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>And Stacked Layer Operator Descriptor</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>And Stacked Layer Operator Descriptor</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAndStackedLayerOperatorDescriptor(AndStackedLayerOperatorDescriptor object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Or Stacked Layer Operator Descriptor</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Or Stacked Layer Operator Descriptor</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseOrStackedLayerOperatorDescriptor(OrStackedLayerOperatorDescriptor object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Is Abstract Uml Setter</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Is Abstract Uml Setter</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseIsAbstractUmlSetter(IsAbstractUmlSetter object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>All Views Derived Layer</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>All Views Derived Layer</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAllViewsDerivedLayer(AllViewsDerivedLayer object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Type Instance</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Type Instance</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTypeInstance(TypeInstance object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Compute Property Value Command Itf</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Compute Property Value Command Itf</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseComputePropertyValueCommandItf(ComputePropertyValueCommand object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>String To Type Instance Map</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>String To Type Instance Map</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStringToTypeInstanceMap(Map.Entry<String, TypeInstance> object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Layer Descriptor</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Layer Descriptor</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLayerDescriptor(LayerDescriptor object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Layer Application Factory</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Layer Application Factory</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLayerApplicationFactory(LayerApplicationFactory object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property Setter Registry</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Property Setter Registry</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePropertySetterRegistry(PropertySetterRegistry object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property Setter</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Property Setter</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePropertySetter(PropertySetter object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>String To Property Setter</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>String To Property Setter</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStringToPropertySetter(Map.Entry<String, PropertySetter> object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Abstract Layer</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Abstract Layer</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAbstractLayer(AbstractLayer object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Property</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseProperty(Property object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Folder Element</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Folder Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFolderElement(FolderElement object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Layer Expression</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Layer Expression</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLayerExpression(LayerExpression object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Application Dependant Element</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Application Dependant Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseApplicationDependantElement(ApplicationDependantElement object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Type</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseType(Type object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Metamodel</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Metamodel</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseMetamodel(Metamodel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Folder</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Folder</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFolder(Folder object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Int Instance</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Int Instance</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseIntInstance(IntInstance object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Boolean Instance</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Boolean Instance</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseBooleanInstance(BooleanInstance object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>String Instance</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>String Instance</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStringInstance(StringInstance object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Int Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Int Type</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseIntType(IntType object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Boolean Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Boolean Type</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseBooleanType(BooleanType object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>String Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>String Type</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStringType(StringType object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Custom Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Custom Type</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCustomType(CustomType object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Stack Application</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Stack Application</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLayersStackApplication(LayersStackApplication object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Layer Stack Descriptor Registry</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Layer Stack Descriptor Registry</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLayerStackDescriptorRegistry(LayerStackDescriptorRegistry object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property Registry</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Property Registry</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePropertyRegistry(PropertyRegistry object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>String To Property Index Map</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>String To Property Index Map</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStringToPropertyIndexMap(Map.Entry<String, PropertyIndex> object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Simple Layer Descriptor</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Simple Layer Descriptor</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSimpleLayerDescriptor(SimpleLayerDescriptor object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Reg Exp Layer Descriptor</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Reg Exp Layer Descriptor</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseRegExpLayerDescriptor(RegExpLayerDescriptor object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Null Instance</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Null Instance</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseNullInstance(NullInstance object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Reg Exp Layer</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Reg Exp Layer</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseRegExpLayer(RegExpLayer object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property Index</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Property Index</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePropertyIndex(PropertyIndex object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Type Registry</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Type Registry</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTypeRegistry(TypeRegistry object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>String To Type Map</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>String To Type Map</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStringToTypeMap(Map.Entry<String, Type> object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Layer Descriptor Registry</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Layer Descriptor Registry</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLayerDescriptorRegistry(LayerDescriptorRegistry object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Layer Operator</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Layer Operator</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLayerOperator(LayerOperator object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Container</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Container</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLayersContainer(LayersContainer object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Abstract Layer Operator</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Abstract Layer Operator</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAbstractLayerOperator(AbstractLayerOperator object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Layer Operator Descriptor</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Layer Operator Descriptor</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLayerOperatorDescriptor(LayerOperatorDescriptor object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Property Operator</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Property Operator</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePropertyOperator(PropertyOperator object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Default Property Operator</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Default Property Operator</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDefaultPropertyOperator(DefaultPropertyOperator object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Top Layer Operator</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Top Layer Operator</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTopLayerOperator(TopLayerOperator object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Stacked Layer Operator</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Stacked Layer Operator</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStackedLayerOperator(StackedLayerOperator object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Custom Layer Operator</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Custom Layer Operator</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCustomLayerOperator(CustomLayerOperator object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Style</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Style</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseStyle(Style object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Named Style</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Named Style</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseNamedStyle(NamedStyle object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 *
+	 * @param object
+	 *            the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} // LayersSwitch
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/PropertyIndexedList.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/PropertyIndexedList.java
new file mode 100755
index 0000000..df28049
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/PropertyIndexedList.java
@@ -0,0 +1,407 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.util;
+
+import static org.eclipse.papyrus.layers.stackmodel.Activator.log;
+
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.papyrus.layers.stackmodel.BadStateException;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+
+
+/**
+ * An EMF {@link EObjectResolvingEList} that automaticaly reflect a
+ * Map of (String, T). The keys are the names of the Property.
+ * The list also know the list of Properties, and use it to indexing
+ * the types of the Map. <br>
+ * usage: <br>
+ * list = new PropertyIndexedList<type>(...);
+ * list.setPropertyList( propertyRegistry.getProperties() );
+ *
+ * @author cedric dumoulin
+ *
+ * @param <T>
+ *            The type of the objects contained in the list. The type should be
+ *            the same as the type of the values in the backuped Map.
+ */
+public class PropertyIndexedList<T> extends EObjectResolvingEList<T> {
+
+
+	/**
+	 *
+	 */
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * The backuped Map. The implementation should be an Observable Map from EMF.
+	 *
+	 */
+	protected EMap<String, T> map;
+
+	/**
+	 * The ordered list of Property, used to indexing this List.
+	 * The Property::index should be set.
+	 */
+	protected List<Property> propertyList;
+
+	/**
+	 * The classtype of the owner of the map
+	 */
+	protected Class<?> mapParentClasstype;
+
+	/**
+	 * The id of the map property in its parent.
+	 */
+	final protected int MAP_FEATURE_ID;
+
+	/**
+	 * The value that is used as a "null value".
+	 * We can't use 'null' because the list don't support it (even
+	 * if we set canSupportNull to true).
+	 */
+	final protected T NULL_VALUE;
+
+	/**
+	 * Constructor.
+	 *
+	 * @param dataClass
+	 *            Type of the element of the list
+	 * @param layer
+	 *            The owner of this list and of the map
+	 * @param featureID
+	 *            The feature Id of this list in the owner
+	 *
+	 * @param mapFeatureID
+	 *            The map feature id in the owner
+	 */
+	public PropertyIndexedList(EMap<String, T> map, Class<T> dataClass, InternalEObject layer, int featureID, int mapFeatureID, T nullValue) {
+		super(dataClass, layer, featureID);
+		MAP_FEATURE_ID = mapFeatureID;
+		NULL_VALUE = nullValue;
+		mapParentClasstype = layer.getClass();
+		this.map = map;
+		init();
+	}
+
+	/**
+	 * Constructor.
+	 *
+	 * @param dataClass
+	 *            Type of the element of the list
+	 * @param layer
+	 *            The owner of this list and of the map
+	 * @param featureID
+	 *            The feature Id of this list in the owner
+	 *
+	 * @param mapFeatureID
+	 *            The map feature id in the owner
+	 */
+	public PropertyIndexedList(Map<String, T> map, Class<T> dataClass, InternalEObject layer, int featureID, int mapFeatureID, T nullValue) {
+		super(dataClass, layer, featureID);
+		MAP_FEATURE_ID = mapFeatureID;
+		NULL_VALUE = nullValue;
+		mapParentClasstype = layer.getClass();
+		this.map = (EMap<String, T>) map;
+		init();
+	}
+
+	/**
+	 * Listen on the map for addition/deletion.
+	 *
+	 */
+	protected void init() {
+		getEObject().eAdapters().add(new PropertyValuesSynchronizer());
+
+	}
+
+	/**
+	 * Allows double
+	 *
+	 * @see org.eclipse.emf.ecore.util.EObjectEList#isUnique()
+	 *
+	 * @return
+	 */
+	//
+	@Override
+	protected boolean isUnique() {
+		return false;
+	}
+
+	/**
+	 * Allow null values in the list.
+	 *
+	 * @see org.eclipse.emf.ecore.util.EObjectEList#canContainNull()
+	 *
+	 * @return
+	 */
+	// @Override
+	// protected boolean canContainNull() {
+	// return true;
+	// }
+
+
+	/**
+	 * @param propertyList
+	 *            the propertyList to set
+	 */
+	public void setPropertyList(List<Property> propertyList) {
+		this.propertyList = propertyList;
+		try {
+			resetListElements();
+		} catch (BadStateException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+	}
+
+	/**
+	 * Reset the elements of the list, according to the map and the
+	 * propertyList.
+	 *
+	 * @throws BadStateException
+	 *
+	 */
+	private void resetListElements() throws BadStateException {
+		// Reset list
+		this.clear();
+
+		// Check application
+		if (propertyList == null) {
+			// do not synchronize the list
+			return;
+			// throw new BadStateException("Property 'application' must be set for resetAllPropertyValuesFromRegistry() to work.");
+		}
+
+		List<Property> availableProperties;
+		int size;
+		try {
+			availableProperties = propertyList;
+			size = availableProperties.size();
+		} catch (NullPointerException e) {
+			throw new BadStateException("Property 'application.propertyRegistry' must be set for resetAllPropertyValuesFromRegistry() to work.");
+		}
+
+		// initialize the list
+		for (int i = 0; i < size; i++) {
+			String propertyName = availableProperties.get(i).getName();
+			// Add the value, or null if not found. This ensure
+			// That the list will have the correct size.
+			T value = map.get(propertyName);
+			if (value == null) {
+				value = NULL_VALUE;
+			}
+			this.add(value);
+		}
+	}
+
+	/**
+	 * Get an element by its property.
+	 *
+	 * @param property
+	 * @return
+	 * @throws NotFoundException
+	 *             If the index of the property is not found.
+	 */
+	public T get(Property property) throws NotFoundException {
+		try {
+			return get(property.getIndex());
+		} catch (IndexOutOfBoundsException e) {
+			throw new NotFoundException("Can't get element for Property '" + property.getName()
+					+ "'. ", e);
+		}
+	}
+
+	/**
+	 * Set the element for the specified Property.
+	 *
+	 * @param property
+	 * @param ele
+	 * @throws BadStateException
+	 *             When the associated map is not set.
+	 */
+	public void set(Property property, T value) throws BadStateException {
+		if (map == null) {
+			throw new BadStateException("Can't set element for Property '" + property.getName()
+					+ "'. The associated map should be set first");
+
+		}
+
+		// Set the element in the map
+		map.put(property.getName(), value);
+	}
+
+	/**
+	 * Synchronize the specified propertyName with the value in the {@link #propertyValues} list.
+	 *
+	 * @param propertyName
+	 * @param value
+	 * @throws NotFoundException
+	 */
+	protected void synchronizePropertyValue(String propertyName, T value) throws BadStateException, NotFoundException {
+
+		if (propertyList == null) {
+			// silently fail
+			return;
+		}
+
+		try {
+			int propertyIndex = getPropertyIndex(propertyName);
+			set(propertyIndex, value);
+		} catch (NullPointerException e) {
+			throw new BadStateException("propertyList should be set first.");
+		}
+	}
+
+
+	/**
+	 * Get a Property by its name.
+	 * Lookup in the {@link #propertyList} property.
+	 *
+	 * @param propertyName
+	 * @return
+	 * @throws NotFoundException
+	 */
+	protected int getPropertyIndex(String propertyName) throws NotFoundException {
+
+		if (propertyName == null) {
+			throw new NotFoundException("Null name not Allowed");
+		}
+		for (int i = 0; i < propertyList.size(); i++) {
+			if (propertyName.equals(propertyList.get(i).getName())) {
+				return i;
+			}
+		}
+
+		// Not found
+		throw new NotFoundException("No property found under name '" + propertyName + "'");
+
+
+	}
+
+	/**
+	 * This class listen to #propertyValueMap, and synchronize propertyValues accordingly.
+	 *
+	 * This adapter listen on the map's parent to know if a Property key is
+	 * added or removed.
+	 *
+	 */
+	public class PropertyValuesSynchronizer extends AdapterImpl {
+
+
+		@Override
+		public void notifyChanged(Notification msg) {
+			if (log.isDebugEnabled()) {
+				log.debug("event " + msg.getEventType());
+			}
+
+			// Check if the notification comes from the map
+			if (msg.getFeatureID(mapParentClasstype) == MAP_FEATURE_ID) {
+				notifyLayerPropertyValueMapChanged(msg);
+			}
+		}
+
+		/**
+		 * The {@link PropertyIndexedList#map} has changed. Synchronize this list.
+		 *
+		 * @param msg
+		 */
+		protected void notifyLayerPropertyValueMapChanged(Notification msg) {
+			if (log.isDebugEnabled()) {
+				log.debug("map changed " + msg.getEventType());
+			}
+
+			switch (msg.getEventType()) {
+			case Notification.SET: {
+				// A key is modified
+				// Add the value to other list
+				@SuppressWarnings("unchecked")
+				Map.Entry<String, T> entry = (Map.Entry<String, T>) msg.getNewValue();
+
+				if (log.isDebugEnabled()) {
+					log.debug("SET - newValue=" + entry.getValue()
+							+ ", key=" + entry.getKey());
+				}
+
+				// String newKey = (String)msg.getNewValue();
+				T value = entry.getValue();
+				if (value != null) {
+					try {
+						synchronizePropertyValue(entry.getKey(), value);
+						// synchronizePropertyValue(newKey, value);
+					} catch (BadStateException e) {
+						// Show error for debug
+						e.printStackTrace();
+					} catch (NotFoundException e) {
+						// Show error for debug
+						e.printStackTrace();
+					}
+				}
+
+
+				break;
+			}
+			case Notification.UNSET:
+				// A key is added
+				break;
+			case Notification.ADD: {
+				// An entry is added
+				@SuppressWarnings("unchecked")
+				Map.Entry<String, T> entry = (Map.Entry<String, T>) msg.getNewValue();
+				if (log.isDebugEnabled()) {
+					log.debug("ADD - newValue=" + entry.getValue()
+							+ ", key=" + entry.getKey());
+				}
+
+				// Add the corresponding instance to propertyValues
+				try {
+					synchronizePropertyValue(entry.getKey(), entry.getValue());
+				} catch (LayersException e) {
+					// should not happen
+					e.printStackTrace();
+				}
+				break;
+			}
+			case Notification.REMOVE: {
+				// An entry is removed
+				@SuppressWarnings("unchecked")
+				Map.Entry<String, T> entry = (Map.Entry<String, T>) msg.getNewValue();
+				if (log.isDebugEnabled()) {
+					log.debug("REMOVE" + entry.getValue()
+							+ ", key=" + entry.getKey());
+				}
+
+				// Add the corresponding instance to propertyValues
+				try {
+					synchronizePropertyValue(entry.getKey(), NULL_VALUE);
+				} catch (LayersException e) {
+					// should not happen
+					e.printStackTrace();
+				}
+				break;
+			}
+			default:
+				break;
+			}
+
+		}
+
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/PropertyUtils.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/PropertyUtils.java
new file mode 100755
index 0000000..f0531c6
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/util/PropertyUtils.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.util;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.Type;
+
+
+/**
+ * Utility for {@link Property}
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class PropertyUtils {
+
+	protected static final PropertyUtils INSTANCE;
+
+	/**
+	 * Initialize the instance
+	 */
+	static {
+		INSTANCE = new PropertyUtils();
+	}
+
+	/**
+	 * Get an instance of the class.
+	 *
+	 * @return
+	 */
+	public static PropertyUtils getInstance() {
+		return INSTANCE;
+	}
+
+	/**
+	 * Create a property with the specified name and type.
+	 *
+	 * @param name
+	 * @param typeClass
+	 * @return
+	 */
+	public Property createProperty(String name, EClass typeClass) {
+
+		Property property = LayersFactory.eINSTANCE.createProperty();
+		property.setName(name);
+		Type type = (Type) LayersFactory.eINSTANCE.create(typeClass);
+		property.setType(type);
+		return property;
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewChangedEventNotifier.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewChangedEventNotifier.java
new file mode 100755
index 0000000..5de2d83
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewChangedEventNotifier.java
@@ -0,0 +1,208 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+
+/**
+ * An EMF {@link Adapter} listening on notation::diagram::view added and removed.
+ *
+ * This class listen to a {@link Diagram} and send following events to listeners:
+ * <ul>
+ * <li>view removed</li>
+ * <li>view added</li>
+ * </ul>
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class DiagramViewChangedEventNotifier extends EContentAdapter {
+
+	boolean isDisposed = false;
+
+	/**
+	 * List of listener to notify.
+	 */
+	protected List<IDiagramViewEventListener> listeners = new ArrayList<IDiagramViewEventListener>();
+
+	/**
+	 * Something happen on the tree of object
+	 *
+	 * @see org.eclipse.emf.ecore.util.EContentAdapter#notifyChanged(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param msg
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+
+		// Self atttach
+		super.notifyChanged(notification);
+
+		// We are only interested in views (from newValue if set, or oldValue if removed)
+		// TODO Use an appropriate filter / Predicate to filter views.
+		Object newValue = notification.getNewValue();
+		if (!(newValue instanceof View || notification.getOldValue() instanceof View)) {
+			return;
+		}
+		// Check diagram modification
+		// There is 4 sources: View::persistedChildren and View::transientChildren
+		// Diagram::persistedChildren and Diagram::transientChildren
+		Object feature = notification.getFeature();
+		if (feature == NotationPackage.eINSTANCE.getView_PersistedChildren()
+				|| feature == NotationPackage.eINSTANCE.getView_TransientChildren()
+				|| feature == NotationPackage.eINSTANCE.getDiagram_PersistedEdges()
+				|| feature == NotationPackage.eINSTANCE.getDiagram_TransientEdges()) {
+			// LayerOperator::layers || LayersStack::layers
+			// check the event type.
+			switch (notification.getEventType()) {
+			case Notification.SET:
+
+				break;
+			case Notification.ADD:
+				// A view is added
+				fireDiagramViewAddedEvent(notification);
+				break;
+			case Notification.REMOVE:
+				// A layer is removed
+				fireDiagramViewRemovedEvent(notification);
+				break;
+			}
+		}
+
+	};
+
+	/**
+	 * This Adapter is for {@link LayersTreeEventNotifier}.
+	 *
+	 * @see org.eclipse.emf.common.notify.impl.AdapterImpl#isAdapterForType(java.lang.Object)
+	 *
+	 * @param type
+	 * @return
+	 */
+	@Override
+	public boolean isAdapterForType(Object type) {
+		return type == DiagramViewChangedEventNotifier.class;
+	}
+
+	/**
+	 * Constructor.
+	 *
+	 * @param layersModel
+	 */
+	public DiagramViewChangedEventNotifier() {
+	}
+
+	/**
+	 * Dispose the synchronizer
+	 */
+	public void dispose() {
+
+		if (isDisposed()) {
+			return;
+		}
+
+		isDisposed = true;
+		listeners.clear();
+	}
+
+	/**
+	 * Return true if the object is disposed.
+	 *
+	 * @return
+	 */
+	public boolean isDisposed() {
+		return isDisposed == true;
+	}
+
+	/**
+	 * Add the specified listener to the list of listener.
+	 * Do not add it if the listener is already in the list.
+	 *
+	 * @param listener
+	 */
+	public void addEventListener(IDiagramViewEventListener listener) {
+
+		if (listener == null) {
+			return;
+		}
+
+		// Check if exist
+		if (listeners.contains(listener)) {
+			return;
+		}
+
+		listeners.add(listener);
+	}
+
+	/**
+	 * Remove the specified listener from the list of listeners.
+	 *
+	 * @param listener
+	 */
+	public void removeEventListener(IDiagramViewEventListener listener) {
+
+		listeners.remove(listener);
+	}
+
+	/**
+	 * Called by events when a {@link LayersStack} is added to the {@link LayersStackApplication}
+	 *
+	 * @param msg
+	 */
+	protected void fireDiagramViewAddedEvent(Notification msg) {
+		for (IDiagramViewEventListener listener : listeners) {
+			listener.diagramViewAdded(msg);
+		}
+	}
+
+	/**
+	 * Called by events when a {@link LayersStack} is added to the {@link LayersStackApplication}
+	 *
+	 * @param msg
+	 */
+	protected void fireDiagramViewRemovedEvent(Notification msg) {
+		for (IDiagramViewEventListener listener : listeners) {
+			listener.diagramViewRemoved(msg);
+		}
+	}
+
+	/**
+	 * Get the removed diagram in case of diagramRemoved event
+	 *
+	 * @param msg
+	 * @return
+	 */
+	public static View viewAddedEvent_getAddedView(Notification msg) {
+		return (View) msg.getNewValue();
+	}
+
+	/**
+	 * Get the removed diagram in case of diagramRemoved event
+	 *
+	 * @param msg
+	 * @return
+	 */
+	public static View viewAddedEvent_getRemovedView(Notification msg) {
+		return (View) msg.getOldValue();
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewChangedEventNotifierFactory.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewChangedEventNotifierFactory.java
new file mode 100755
index 0000000..6f49804
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewChangedEventNotifierFactory.java
@@ -0,0 +1,70 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+
+/**
+ * Factory used to create a {@link DiagramViewChangedEventNotifier}.
+ * The factory ensures that there is only one Notifier for a given {@link LayersStack}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class DiagramViewChangedEventNotifierFactory extends AdapterFactoryImpl {
+
+	/**
+	 * Global factory.
+	 */
+	static public DiagramViewChangedEventNotifierFactory instance = new DiagramViewChangedEventNotifierFactory();
+
+	/**
+	 * Convenience method.
+	 *
+	 * @param target
+	 * @return
+	 */
+	public DiagramViewChangedEventNotifier adapt(Notifier target) {
+		return (DiagramViewChangedEventNotifier) adapt(target, DiagramViewChangedEventNotifier.class);
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#createAdapter(org.eclipse.emf.common.notify.Notifier)
+	 *
+	 * @param target
+	 * @return
+	 */
+	@Override
+	protected Adapter createAdapter(Notifier target) {
+		return new DiagramViewChangedEventNotifier();
+	}
+
+	/**
+	 * This Factory is for {@link DiagramViewChangedEventNotifier}.
+	 *
+	 * @see org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#isFactoryForType(java.lang.Object)
+	 *
+	 * @param type
+	 * @return
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return type == DiagramViewChangedEventNotifier.class;
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewEventNotifier.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewEventNotifier.java
new file mode 100755
index 0000000..e71deab
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewEventNotifier.java
@@ -0,0 +1,211 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+
+/**
+ * This class listen to a {@link Diagram} and send following events to listeners:
+ * <ul>
+ * <li>view removed</li>
+ * <li>view added</li>
+ * </ul>
+ *
+ * @author cedric dumoulin
+ * @deprecated use {@link DiagramViewChangedEventNotifier} instead.
+ */
+@Deprecated
+public class DiagramViewEventNotifier {
+
+	protected Diagram diagram;
+
+	/**
+	 * List of listener to notify.
+	 */
+	protected List<IDiagramViewEventListener> listeners = new ArrayList<IDiagramViewEventListener>();
+
+	protected Adapter diagramViewListener = new EContentAdapter() {
+
+		/**
+		 * Something happen on the tree of object
+		 *
+		 * @see org.eclipse.emf.ecore.util.EContentAdapter#notifyChanged(org.eclipse.emf.common.notify.Notification)
+		 *
+		 * @param msg
+		 */
+		@Override
+		public void notifyChanged(Notification notification) {
+
+			// Self atttach
+			super.notifyChanged(notification);
+
+			// We are only interested in views (from newValue if set, or oldValue if removed)
+			Object newValue = notification.getNewValue();
+			if (!(newValue instanceof View || notification.getOldValue() instanceof View)) {
+				return;
+			}
+			// Check diagram modification
+			// There is 4 sources: View::persistedChildren and View::transientChildren
+			// Diagram::persistedChildren and Diagram::transientChildren
+			Object feature = notification.getFeature();
+			if (feature == NotationPackage.eINSTANCE.getView_PersistedChildren()
+					|| feature == NotationPackage.eINSTANCE.getView_TransientChildren()
+					|| feature == NotationPackage.eINSTANCE.getDiagram_PersistedEdges()
+					|| feature == NotationPackage.eINSTANCE.getDiagram_TransientEdges()) {
+				// LayerOperator::layers || LayersStack::layers
+				// check the event type.
+				switch (notification.getEventType()) {
+				case Notification.SET:
+
+					break;
+				case Notification.ADD:
+					// A view is added
+					fireDiagramViewAddedEvent(notification);
+					break;
+				case Notification.REMOVE:
+					// A layer is removed
+					fireDiagramViewRemovedEvent(notification);
+					break;
+				}
+			}
+		}
+
+	};
+
+	/**
+	 * Constructor.
+	 *
+	 * @param layersModel
+	 */
+	public DiagramViewEventNotifier(Diagram diagram) {
+		this.diagram = diagram;
+		activate();
+	}
+
+	/**
+	 * Activate the listeners.
+	 *
+	 */
+	protected void activate() {
+		// Listen on diagram removed events
+		diagram.eAdapters().add(diagramViewListener);
+	}
+
+	/**
+	 * Deactivate listeners
+	 */
+	protected void deactivate() {
+		// Listen on diagram removed events
+		diagram.eAdapters().remove(diagramViewListener);
+	}
+
+	/**
+	 * Dispose the synchronizer
+	 */
+	public void dispose() {
+		// Deactivate listeners
+		deactivate();
+		diagram = null;
+	}
+
+	/**
+	 * Return true if the object is disposed.
+	 *
+	 * @return
+	 */
+	public boolean isDisposed() {
+		return diagram == null;
+	}
+
+	/**
+	 * Add the specified listener to the list of listener.
+	 * Do not add it if the listener is already in the list.
+	 *
+	 * @param listener
+	 */
+	public void addEventListener(IDiagramViewEventListener listener) {
+
+		if (listener == null) {
+			return;
+		}
+
+		// Check if exist
+		if (listeners.contains(listener)) {
+			return;
+		}
+
+		listeners.add(listener);
+	}
+
+	/**
+	 * Remove the specified listener from the list of listeners.
+	 *
+	 * @param listener
+	 */
+	public void removeEventListener(IDiagramViewEventListener listener) {
+
+		listeners.remove(listener);
+	}
+
+	/**
+	 * Called by events when a {@link LayersStack} is added to the {@link LayersStackApplication}
+	 *
+	 * @param msg
+	 */
+	protected void fireDiagramViewAddedEvent(Notification msg) {
+		for (IDiagramViewEventListener listener : listeners) {
+			listener.diagramViewAdded(msg);
+		}
+	}
+
+	/**
+	 * Called by events when a {@link LayersStack} is added to the {@link LayersStackApplication}
+	 *
+	 * @param msg
+	 */
+	protected void fireDiagramViewRemovedEvent(Notification msg) {
+		for (IDiagramViewEventListener listener : listeners) {
+			listener.diagramViewRemoved(msg);
+		}
+	}
+
+	/**
+	 * Get the removed diagram in case of diagramRemoved event
+	 *
+	 * @param msg
+	 * @return
+	 */
+	public static View viewAddedEvent_getAddedView(Notification msg) {
+		return (View) msg.getNewValue();
+	}
+
+	/**
+	 * Get the removed diagram in case of diagramRemoved event
+	 *
+	 * @param msg
+	 * @return
+	 */
+	public static View viewAddedEvent_getRemovedView(Notification msg) {
+		return (View) msg.getOldValue();
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/IDiagramViewEventListener.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/IDiagramViewEventListener.java
new file mode 100755
index 0000000..79782f7
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/IDiagramViewEventListener.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+
+/**
+ * Class implementing this interface can listen to event from a {@link LayersStackApplication}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public interface IDiagramViewEventListener {
+
+	/**
+	 * Called by events when a {@link View} is added to the {@link Diagram} or one of its contained
+	 * elements.
+	 *
+	 * @param msg
+	 */
+	public void diagramViewAdded(Notification msg);
+
+	/**
+	 * Called by events when a {@link View} is removed from the {@link Diagram} or one of its contained
+	 * elements.
+	 *
+	 * @param msg
+	 */
+	public void diagramViewRemoved(Notification msg);
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/ILayersTreeEventListener.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/ILayersTreeEventListener.java
new file mode 100755
index 0000000..3972192
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/ILayersTreeEventListener.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+
+
+/**
+ * Class implementing this interface can listen to event from a {@link LayersStack}.
+ * Interface for listeners whising to be informed of change in the Tree of Layers structure. <br>
+ * Listeners of such events should register themself to the notifier {@link LayersTreeEventNotifier}. <br>
+ * The following events are fired:
+ * <ul>
+ * <li>LayerAdded</li>
+ * <li>LayerRemoved</li>
+ * <li>LayerMoved</li>
+ * <li>LayerSet</li>
+ * </ul>
+ *
+ * @author cedric dumoulin
+ *
+ */
+public interface ILayersTreeEventListener {
+
+	/**
+	 * Method called when a layer is added to one layer.
+	 * The event contains: the layer.
+	 *
+	 * @param notification
+	 */
+	public void layerAdded(Notification notification);
+
+	/**
+	 * Method called when a layer is removed from one layer.
+	 * The event contains: the layer.
+	 *
+	 * @param notification
+	 */
+	public void layerRemoved(Notification notification);
+
+	/**
+	 * Method called when a layer is moved inside a {@link LayerOperator}.
+	 * The event contains: the layer.
+	 *
+	 * @param notification
+	 */
+	public void layerMoved(Notification notification);
+
+	/**
+	 * Method called when a layer is set.
+	 * The event contains: the layer.
+	 *
+	 * @param notification
+	 */
+	public void layerSet(Notification notification);
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/IUmlNamedElementChangedEventListener.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/IUmlNamedElementChangedEventListener.java
new file mode 100755
index 0000000..96a47e4
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/IUmlNamedElementChangedEventListener.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.uml2.uml.NamedElement;
+
+
+/**
+ * Class implementing this interface can listen to event from a {@link NamedElement}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public interface IUmlNamedElementChangedEventListener {
+
+	/**
+	 * Called by events when a property is changed in a {@link NamedElement}
+	 *
+	 * @param msg
+	 */
+	public void valueChanged(Notification msg);
+
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/LayersTreeEventNotifier.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/LayersTreeEventNotifier.java
new file mode 100755
index 0000000..7781487
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/LayersTreeEventNotifier.java
@@ -0,0 +1,207 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import static org.eclipse.papyrus.layers.stackmodel.Activator.log;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+
+
+/**
+ * Notifier/observers firing events concerning the structure of the tree of layers.
+ * Obeserver should implements {@link ILayersTreeEventListener} and register themself to this
+ * notifier.
+ *
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersTreeEventNotifier extends EContentAdapter {
+
+	/**
+	 * List of listener to notify.
+	 */
+	protected List<ILayersTreeEventListener> listeners = new ArrayList<ILayersTreeEventListener>();
+
+	/**
+	 * Constructor.
+	 *
+	 * @param layersStack
+	 *            The observed {@link LayersStack}.
+	 */
+	public LayersTreeEventNotifier() {
+	}
+
+	/**
+	 * Dispose this object.
+	 */
+	public void dispose() {
+		if (isDisposed()) {
+			return;
+		}
+		listeners.clear();
+		listeners = null;
+	}
+
+	/**
+	 * Return true if the object is disposed.
+	 *
+	 * @return
+	 */
+	public boolean isDisposed() {
+		return listeners == null;
+	}
+
+	/**
+	 * Called when something happen on the tree.
+	 *
+	 * @see org.eclipse.emf.ecore.util.EContentAdapter#notifyChanged(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		if (log.isDebugEnabled()) {
+			log.debug(this.getClass().getSimpleName() + ".notifyChanged( "
+					+ notification.getFeature() + ")");
+		}
+
+		// Self atttach
+		super.notifyChanged(notification);
+
+		// Check layers modification
+		// There is two sources: LayerOperator::layers and LayersStack::layers
+		if (notification.getFeature() == LayersPackage.eINSTANCE.getLayerOperator_Layers()
+				|| notification.getFeature() == LayersPackage.eINSTANCE.getLayersStack_Layers()) {
+			// LayerOperator::layers || LayersStack::layers
+			// check the event type.
+			switch (notification.getEventType()) {
+			case Notification.SET:
+				fireLayerSet(notification);
+				break;
+			case Notification.ADD:
+				// A layer is added
+				fireLayerAdded(notification);
+				break;
+			case Notification.REMOVE:
+				// A layer is removed
+				fireLayerRemoved(notification);
+				break;
+			case Notification.MOVE:
+				// A layer is moved
+				fireLayerMoved(notification);
+				break;
+			}
+		}
+	}
+
+	/**
+	 * This Adapter is for {@link LayersTreeEventNotifier}.
+	 *
+	 * @see org.eclipse.emf.common.notify.impl.AdapterImpl#isAdapterForType(java.lang.Object)
+	 *
+	 * @param type
+	 * @return
+	 */
+	@Override
+	public boolean isAdapterForType(Object type) {
+		return type == LayersTreeEventNotifier.class;
+	}
+
+	/**
+	 * Add the specified listener to the list of listener.
+	 * Do not add it if the listener is already in the list.
+	 *
+	 * @param listener
+	 */
+	public void addLayersModelEventListener(ILayersTreeEventListener listener) {
+
+		if (listener == null) {
+			return;
+		}
+
+		// Check if exist
+		if (listeners.contains(listener)) {
+			return;
+		}
+
+		listeners.add(listener);
+	}
+
+	/**
+	 * Remove the specified listener from the list of listeners.
+	 *
+	 * @param listener
+	 */
+	public void removeLayersModelEventListener(ILayersTreeEventListener listener) {
+
+		listeners.remove(listener);
+	}
+
+	/**
+	 * Method called when a layer is added to one layer.
+	 * The event contains: the layer.
+	 *
+	 * @param notification
+	 */
+	public void fireLayerSet(Notification notification) {
+
+		for (ILayersTreeEventListener listener : listeners) {
+			listener.layerSet(notification);
+		}
+	}
+
+	/**
+	 * Method called when a layer is added to one layer.
+	 * The event contains: the layer.
+	 *
+	 * @param notification
+	 */
+	public void fireLayerAdded(Notification notification) {
+
+		for (ILayersTreeEventListener listener : listeners) {
+			listener.layerAdded(notification);
+		}
+	}
+
+	/**
+	 * Method called when a layer is removed from one layer.
+	 * The event contains: the layer.
+	 *
+	 * @param notification
+	 */
+	public void fireLayerRemoved(Notification notification) {
+
+		for (ILayersTreeEventListener listener : listeners) {
+			listener.layerRemoved(notification);
+		}
+	}
+
+	/**
+	 * Method called when a layer is moved in LayerStack.
+	 * The event contains: the layer.
+	 *
+	 * @param notification
+	 */
+	public void fireLayerMoved(Notification notification) {
+
+		for (ILayersTreeEventListener listener : listeners) {
+			listener.layerMoved(notification);
+		}
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/LayersTreeEventNotifierFactory.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/LayersTreeEventNotifierFactory.java
new file mode 100755
index 0000000..3024221
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/LayersTreeEventNotifierFactory.java
@@ -0,0 +1,70 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+
+/**
+ * Factory used to create a {@link LayersTreeEventNotifier}.
+ * The factory ensures that there is only one Notifier for a given {@link LayersStack}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersTreeEventNotifierFactory extends AdapterFactoryImpl {
+
+	/**
+	 * Global factory.
+	 */
+	static public LayersTreeEventNotifierFactory instance = new LayersTreeEventNotifierFactory();
+
+	/**
+	 * Convenience method.
+	 *
+	 * @param target
+	 * @return
+	 */
+	public LayersTreeEventNotifier adapt(Notifier target) {
+		return (LayersTreeEventNotifier) adapt(target, LayersTreeEventNotifier.class);
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#createAdapter(org.eclipse.emf.common.notify.Notifier)
+	 *
+	 * @param target
+	 * @return
+	 */
+	@Override
+	protected Adapter createAdapter(Notifier target) {
+		return new LayersTreeEventNotifier();
+	}
+
+	/**
+	 * This Factory is for {@link LayersTreeEventNotifier}.
+	 *
+	 * @see org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#isFactoryForType(java.lang.Object)
+	 *
+	 * @param type
+	 * @return
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return type == LayersTreeEventNotifier.class;
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/UmlNamedElementChangedEventNotifier.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/UmlNamedElementChangedEventNotifier.java
new file mode 100755
index 0000000..f2c2e84
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/UmlNamedElementChangedEventNotifier.java
@@ -0,0 +1,181 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.util.EContentAdapter;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.uml2.uml.NamedElement;
+
+
+/**
+ * An EMF {@link Adapter} listening on uml::NamedElement properties changes.
+ *
+ * This class listen to a {@link NamedElement} and send following events to listeners:
+ * <ul>
+ * <li>valueChanged</li>
+ * </ul>
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class UmlNamedElementChangedEventNotifier extends EContentAdapter {
+
+	boolean isDisposed = false;
+
+	/**
+	 * List of listener to notify.
+	 */
+	protected List<IUmlNamedElementChangedEventListener> listeners = new ArrayList<IUmlNamedElementChangedEventListener>();
+
+	/**
+	 * Something happen on the tree of object
+	 *
+	 * @see org.eclipse.emf.ecore.util.EContentAdapter#notifyChanged(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param msg
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+
+		// Self atttach
+		super.notifyChanged(notification);
+
+		// Retain only NamedElement
+		if (!(notification.getNotifier() instanceof NamedElement)) {
+			return;
+		}
+
+		// No more filter: all events are forwarded
+		fireValueChangedEvent(notification);
+
+		// // We are only interested in NamedElement (from newValue if set, or oldValue if removed)
+		// Object newValue = notification.getNewValue();
+		// if( ! (newValue instanceof NamedElement || notification.getOldValue() instanceof NamedElement ) ) {
+		// return;
+		// }
+		// // Check diagram modification
+		// // There is 4 sources: View::persistedChildren and View::transientChildren
+		// // Diagram::persistedChildren and Diagram::transientChildren
+		// Object feature = notification.getFeature();
+		// if( feature == UMLPackage.eINSTANCE.getNamedElement()
+		// || feature == NotationPackage.eINSTANCE.getView_TransientChildren()
+		// || feature == NotationPackage.eINSTANCE.getDiagram_PersistedEdges()
+		// || feature == NotationPackage.eINSTANCE.getDiagram_TransientEdges() ) {
+		// // LayerOperator::layers || LayersStack::layers
+		// // check the event type.
+		// switch(notification.getEventType()) {
+		// case Notification.SET:
+		//
+		// break;
+		// case Notification.ADD:
+		// // A view is added
+		// fireValueChangedEvent(notification);
+		// break;
+		// case Notification.REMOVE:
+		// // A layer is removed
+		// fireDiagramViewRemovedEvent(notification);
+		// break;
+		// }
+		// }
+
+	};
+
+	/**
+	 * This Adapter is for {@link LayersTreeEventNotifier}.
+	 *
+	 * @see org.eclipse.emf.common.notify.impl.AdapterImpl#isAdapterForType(java.lang.Object)
+	 *
+	 * @param type
+	 * @return
+	 */
+	@Override
+	public boolean isAdapterForType(Object type) {
+		return type == UmlNamedElementChangedEventNotifier.class;
+	}
+
+	/**
+	 * Constructor.
+	 *
+	 * @param layersModel
+	 */
+	public UmlNamedElementChangedEventNotifier() {
+	}
+
+	/**
+	 * Dispose the synchronizer
+	 */
+	public void dispose() {
+
+		if (isDisposed()) {
+			return;
+		}
+
+		isDisposed = true;
+		listeners.clear();
+	}
+
+	/**
+	 * Return true if the object is disposed.
+	 *
+	 * @return
+	 */
+	public boolean isDisposed() {
+		return isDisposed == true;
+	}
+
+	/**
+	 * Add the specified listener to the list of listener.
+	 * Do not add it if the listener is already in the list.
+	 *
+	 * @param listener
+	 */
+	public void addEventListener(IUmlNamedElementChangedEventListener listener) {
+
+		if (listener == null) {
+			return;
+		}
+
+		// Check if exist
+		if (listeners.contains(listener)) {
+			return;
+		}
+
+		listeners.add(listener);
+	}
+
+	/**
+	 * Remove the specified listener from the list of listeners.
+	 *
+	 * @param listener
+	 */
+	public void removeEventListener(IUmlNamedElementChangedEventListener listener) {
+
+		listeners.remove(listener);
+	}
+
+	/**
+	 * Called by events when a {@link LayersStack} is added to the {@link LayersStackApplication}
+	 *
+	 * @param msg
+	 */
+	protected void fireValueChangedEvent(Notification msg) {
+		for (IUmlNamedElementChangedEventListener listener : listeners) {
+			listener.valueChanged(msg);
+		}
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/UmlNamedElementChangedEventNotifierFactory.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/UmlNamedElementChangedEventNotifierFactory.java
new file mode 100755
index 0000000..916646d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/UmlNamedElementChangedEventNotifierFactory.java
@@ -0,0 +1,70 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+
+/**
+ * Factory used to create a {@link UmlNamedElementChangedEventNotifier}.
+ * The factory ensures that there is only one Notifier for a given {@link LayersStack}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class UmlNamedElementChangedEventNotifierFactory extends AdapterFactoryImpl {
+
+	/**
+	 * Global factory.
+	 */
+	static public UmlNamedElementChangedEventNotifierFactory instance = new UmlNamedElementChangedEventNotifierFactory();
+
+	/**
+	 * Convenience method.
+	 *
+	 * @param target
+	 * @return
+	 */
+	public UmlNamedElementChangedEventNotifier adapt(Notifier target) {
+		return (UmlNamedElementChangedEventNotifier) adapt(target, UmlNamedElementChangedEventNotifier.class);
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#createAdapter(org.eclipse.emf.common.notify.Notifier)
+	 *
+	 * @param target
+	 * @return
+	 */
+	@Override
+	protected Adapter createAdapter(Notifier target) {
+		return new UmlNamedElementChangedEventNotifier();
+	}
+
+	/**
+	 * This Factory is for {@link UmlNamedElementChangedEventNotifier}.
+	 *
+	 * @see org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#isFactoryForType(java.lang.Object)
+	 *
+	 * @param type
+	 * @return
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return type == UmlNamedElementChangedEventNotifier.class;
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/package-info.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/package-info.java
new file mode 100755
index 0000000..07765ad
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/notifier/package-info.java
@@ -0,0 +1,18 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ * This package provides reusable event notifiers.
+ *
+ * @author cedric dumoulin
+ *
+ */
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/operators/BooleanAndOperator.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/operators/BooleanAndOperator.java
new file mode 100755
index 0000000..bf5e19a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/operators/BooleanAndOperator.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.operators;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class BooleanAndOperator implements CustomPropertyOperatorsInstance {
+
+	public static final BooleanInstance FALSE_INSTANCE;
+	public static final BooleanInstance TRUE_INSTANCE;
+
+	static {
+		FALSE_INSTANCE = LayersFactory.eINSTANCE.createBooleanInstance();
+		FALSE_INSTANCE.setValue(false);
+		TRUE_INSTANCE = LayersFactory.eINSTANCE.createBooleanInstance();
+		TRUE_INSTANCE.setValue(true);
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList)
+	 *
+	 * @param property
+	 * @return
+	 * @throws LayersException
+	 */
+	@Override
+	public ComputePropertyValueCommand getComputePropertyValueCommand(EList<ComputePropertyValueCommand> nestedCommand) throws LayersException {
+		return new BooleanAndOperatorCommand(nestedCommand);
+	}
+
+
+	/**
+	 * Class implementing an And command.
+	 *
+	 */
+	class BooleanAndOperatorCommand implements ComputePropertyValueCommand {
+
+		EList<ComputePropertyValueCommand> nestedCommand;
+
+		/**
+		 *
+		 * Constructor.
+		 *
+		 * @param nestedCommand
+		 */
+		public BooleanAndOperatorCommand(EList<ComputePropertyValueCommand> nestedCommand) {
+			this.nestedCommand = nestedCommand;
+		}
+
+		/**
+		 * Compute the value.
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand#getCmdValue()
+		 *
+		 * @return
+		 * @throws LayersException
+		 */
+		@Override
+		public TypeInstance getCmdValue() throws LayersException {
+
+			// Do an boolean and: all value should be true.
+			// Return as soon as a false is encountered
+			for (ComputePropertyValueCommand curCmd : nestedCommand) {
+				boolean curCmdRes = ((BooleanInstance) curCmd.getCmdValue()).isValue();
+				if (curCmdRes == false) {
+					return FALSE_INSTANCE;
+				}
+			}
+
+			return TRUE_INSTANCE;
+		}
+
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/operators/BooleanOrOperator.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/operators/BooleanOrOperator.java
new file mode 100755
index 0000000..ea98490
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/operators/BooleanOrOperator.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.operators;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class BooleanOrOperator implements CustomPropertyOperatorsInstance {
+
+	public static final BooleanInstance FALSE_INSTANCE;
+	public static final BooleanInstance TRUE_INSTANCE;
+
+	static {
+		FALSE_INSTANCE = LayersFactory.eINSTANCE.createBooleanInstance();
+		FALSE_INSTANCE.setValue(false);
+		TRUE_INSTANCE = LayersFactory.eINSTANCE.createBooleanInstance();
+		TRUE_INSTANCE.setValue(true);
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList)
+	 *
+	 * @param property
+	 * @return
+	 * @throws LayersException
+	 */
+	@Override
+	public ComputePropertyValueCommand getComputePropertyValueCommand(EList<ComputePropertyValueCommand> nestedCommand) throws LayersException {
+		return new BooleanOrOperatorCommand(nestedCommand);
+	}
+
+
+	/**
+	 * Class implementing an And command.
+	 *
+	 */
+	class BooleanOrOperatorCommand implements ComputePropertyValueCommand {
+
+		EList<ComputePropertyValueCommand> nestedCommand;
+
+		/**
+		 *
+		 * Constructor.
+		 *
+		 * @param nestedCommand
+		 */
+		public BooleanOrOperatorCommand(EList<ComputePropertyValueCommand> nestedCommand) {
+			this.nestedCommand = nestedCommand;
+		}
+
+		/**
+		 * Compute the value.
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand#getCmdValue()
+		 *
+		 * @return
+		 * @throws LayersException
+		 */
+		@Override
+		public TypeInstance getCmdValue() throws LayersException {
+
+			// Do an boolean or: at least one value should be true.
+			// Return as soon as a true is encountered
+			for (ComputePropertyValueCommand curCmd : nestedCommand) {
+				boolean curCmdRes = ((BooleanInstance) curCmd.getCmdValue()).isValue();
+				if (curCmdRes == true) {
+					return TRUE_INSTANCE;
+				}
+			}
+
+			return FALSE_INSTANCE;
+		}
+
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/operators/CustomPropertyOperatorsInstance.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/operators/CustomPropertyOperatorsInstance.java
new file mode 100755
index 0000000..5fe8d42
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/operators/CustomPropertyOperatorsInstance.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.operators;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+
+
+/**
+ * Interface to be implemented by operators declared as "custom".
+ *
+ * @author cedric dumoulin
+ *
+ */
+public interface CustomPropertyOperatorsInstance {
+
+	/**
+	 * Return the command allowing to compute the value resulting on applying this operator on the specified properties.
+	 *
+	 * @param property
+	 * @return The command returning the result
+	 * @throws LayersException
+	 */
+	public ComputePropertyValueCommand getComputePropertyValueCommand(EList<ComputePropertyValueCommand> property) throws LayersException;
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/operators/FillAverageOperator.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/operators/FillAverageOperator.java
new file mode 100755
index 0000000..58e5c0a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/operators/FillAverageOperator.java
@@ -0,0 +1,101 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.operators;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.ColorInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.FillInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class FillAverageOperator implements CustomPropertyOperatorsInstance {
+
+	public static final BooleanInstance FALSE_INSTANCE;
+	public static final BooleanInstance TRUE_INSTANCE;
+
+	static {
+		FALSE_INSTANCE = LayersFactory.eINSTANCE.createBooleanInstance();
+		FALSE_INSTANCE.setValue(false);
+		TRUE_INSTANCE = LayersFactory.eINSTANCE.createBooleanInstance();
+		TRUE_INSTANCE.setValue(true);
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList)
+	 *
+	 * @param property
+	 * @return
+	 * @throws LayersException
+	 */
+	@Override
+	public ComputePropertyValueCommand getComputePropertyValueCommand(EList<ComputePropertyValueCommand> nestedCommand) throws LayersException {
+		return new FillAverageCommand(nestedCommand);
+	}
+
+
+	/**
+	 * Class implementing an And command.
+	 *
+	 */
+	class FillAverageCommand implements ComputePropertyValueCommand {
+
+		EList<ComputePropertyValueCommand> nestedCommand;
+
+		/**
+		 *
+		 * Constructor.
+		 *
+		 * @param nestedCommand
+		 */
+		public FillAverageCommand(EList<ComputePropertyValueCommand> nestedCommand) {
+			this.nestedCommand = nestedCommand;
+		}
+
+		/**
+		 * Compute the value.
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand#getCmdValue()
+		 *
+		 * @return
+		 * @throws LayersException
+		 */
+		@Override
+		public TypeInstance getCmdValue() throws LayersException {
+
+			int fill = 0;
+			int color = 0;
+			// compute the average values
+			for (ComputePropertyValueCommand curCmd : nestedCommand) {
+				FillInstance curValue = ((FillInstance) curCmd.getCmdValue());
+				fill += curValue.getTransparency();
+				color += curValue.getFillColor().getValue();
+			}
+
+			// Create a result
+			FillInstance res = LayersFactory.eINSTANCE.createFillInstance();
+			ColorInstance colorInstance = LayersFactory.eINSTANCE.createColorInstance();
+			res.setFillColor(colorInstance);
+			res.setTransparency(fill / nestedCommand.size());
+			res.getFillColor().setValue(color / nestedCommand.size());
+			return res;
+		}
+
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/Collections3.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/Collections3.java
new file mode 100755
index 0000000..feac627
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/Collections3.java
@@ -0,0 +1,76 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.util;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import com.google.common.collect.Collections2;
+
+/**
+ * Set of utility methods for Collections.
+ *
+ * @see Collections2
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class Collections3 {
+
+	/**
+	 * Reset the toChange list to the content of the newContent list.
+	 * Minimize the change calls on the toChange list.
+	 * This method ensure that there is at most 2 writing calls to the list to modify: one
+	 * removeAll(toBeRemoved) and one addAll(toBeAdded).
+	 *
+	 * @param toChange
+	 * @param newContent
+	 */
+	public static <E> void resetListTo(Collection<E> toChange, Collection<E> newContent) {
+
+		// Compute removed and added
+		Collection<E> elementsToRemove = new ArrayList<E>();
+		Collection<E> elementsToAdd = new ArrayList<E>();
+
+		// Compute added and removed elements. Walk both list 2 times.
+		// This could certainly be improved.
+		// TODO improve the algorithm
+
+		// Compute added elements
+		for (E o : newContent) {
+			if (!toChange.contains(o)) {
+				elementsToAdd.add(o);
+				continue;
+			}
+		}
+
+		// Compute removed elements
+		for (E o : toChange) {
+			if (!newContent.contains(o)) {
+				elementsToRemove.add(o);
+				continue;
+			}
+		}
+
+		// Change the list
+		if (!elementsToRemove.isEmpty()) {
+			toChange.removeAll(elementsToRemove);
+		}
+		if (!elementsToAdd.isEmpty()) {
+			toChange.addAll(elementsToAdd);
+		}
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/DiagramViewToListSynchronizer.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/DiagramViewToListSynchronizer.java
new file mode 100755
index 0000000..f043654
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/DiagramViewToListSynchronizer.java
@@ -0,0 +1,118 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.util;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewChangedEventNotifier;
+import org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewChangedEventNotifierFactory;
+import org.eclipse.papyrus.layers.stackmodel.notifier.IDiagramViewEventListener;
+
+import com.google.common.collect.Iterables;
+
+/**
+ * This class allows to synchronize a specfied list with {@link View} elements from the specified {@link Diagram}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class DiagramViewToListSynchronizer {
+
+	protected Diagram diagram;
+
+	protected Collection<View> synchronizedList;
+
+	/**
+	 * Listener on Diagram's View event.
+	 * Synchronize the associated list according to the event.
+	 */
+	private IDiagramViewEventListener viewEventListener = new IDiagramViewEventListener() {
+
+		@Override
+		public void diagramViewRemoved(Notification msg) {
+			// Add the removed view from the list
+			synchronizedList.remove(msg.getOldValue());
+
+		}
+
+		@Override
+		public void diagramViewAdded(Notification msg) {
+
+			View view = (View) msg.getNewValue();
+			if (synchronizedList.contains(view)) {
+				return;
+			}
+			// add element
+			synchronizedList.add(view);
+		}
+	};
+
+	/**
+	 * Constructor.
+	 *
+	 * @param diagram
+	 * @param synchronizedList
+	 */
+	public DiagramViewToListSynchronizer(Diagram diagram, Collection<View> synchronizedList) {
+		this.synchronizedList = synchronizedList;
+
+		// Listen to diagram's view event
+		setDiagram(diagram);
+	}
+
+	/**
+	 * The diagram should be set later.
+	 * Constructor.
+	 *
+	 * @param synchronizedList
+	 */
+	public DiagramViewToListSynchronizer(Collection<View> synchronizedList) {
+		this.synchronizedList = synchronizedList;
+	}
+
+	/**
+	 * Set the diagram synchronized to the list.
+	 *
+	 * @param diagram
+	 */
+	public void setDiagram(Diagram diagram) {
+
+		DiagramViewChangedEventNotifier notifier;
+		// stop listening on old diagram if any
+		Diagram oldDiagram = this.diagram;
+		if (oldDiagram != null) {
+			notifier = DiagramViewChangedEventNotifierFactory.instance.adapt(oldDiagram);
+			notifier.removeEventListener(viewEventListener);
+		}
+		// Reset the list and add view responding to the predicate
+		synchronizedList.clear();
+
+		Iterable<View> filteredList = Iterables.filter(diagram.getChildren(), LayerDiagramViewPredicate.instance);
+		for (View view : filteredList) {
+			synchronizedList.add(view);
+		}
+
+		// attach to new diagram
+		this.diagram = diagram;
+		if (diagram != null) {
+			notifier = DiagramViewChangedEventNotifierFactory.instance.adapt(diagram);
+			notifier.addEventListener(viewEventListener);
+		}
+
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/LayerDiagramViewPredicate.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/LayerDiagramViewPredicate.java
new file mode 100755
index 0000000..f456624
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/LayerDiagramViewPredicate.java
@@ -0,0 +1,64 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gmf.runtime.notation.Edge;
+import org.eclipse.gmf.runtime.notation.Shape;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.uml2.uml.NamedElement;
+
+import com.google.common.base.Predicate;
+
+/**
+ * A Predicate used to filter {@link View} allowed by {@link Layer}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayerDiagramViewPredicate implements Predicate<View> {
+
+	/**
+	 * Singleton instnace.
+	 */
+	public static final LayerDiagramViewPredicate instance = new LayerDiagramViewPredicate();
+
+	/**
+	 * Return true if the view is allowed by Layers.
+	 *
+	 * @see com.google.common.base.Predicate#apply(java.lang.Object)
+	 *
+	 * @param view
+	 * @return
+	 */
+	@Override
+	public boolean apply(View view) {
+
+		// View should be Shape or Edge
+		if (!(view instanceof Shape || view instanceof Edge)) {
+			return false;
+		}
+
+		// Domain element should be set and should be NamedElement
+		EObject ele = view.getElement();
+		if (ele == null || !(ele instanceof NamedElement)) {
+			return false;
+		}
+		// ok
+		return true;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/ObservableListView.java b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/ObservableListView.java
new file mode 100755
index 0000000..4f4d604
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/ObservableListView.java
@@ -0,0 +1,359 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.util;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import com.google.common.collect.ForwardingList;
+import com.google.common.collect.Lists;
+import com.google.common.eventbus.EventBus;
+
+/**
+ * An observable list notifying of events on the delegated list.
+ * This view allows to observe a provided list.
+ * The following events are notified:
+ * <ul>
+ * <li>elements added</li>
+ * <li>elements removed</li>
+ * <li></li>
+ * <li></li>
+ * </ul>
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class ObservableListView<E> extends ForwardingList<E> {
+
+	protected List<E> delegate;
+
+	protected EventBus eventBus = new EventBus(ObservableListView.class.getName());
+
+	/**
+	 * Construct an observable list with a {@link ArrayList} as delegate.
+	 * Constructor.
+	 *
+	 */
+	public ObservableListView() {
+		this(new ArrayList<E>());
+	}
+
+	/**
+	 * Constructor.
+	 * Build an observable list based on the provided list.
+	 *
+	 * @param delegate
+	 */
+	public ObservableListView(List<E> delegate) {
+		this.delegate = delegate;
+	}
+
+	@Override
+	protected List<E> delegate() {
+		return delegate;
+	}
+
+	/**
+	 * @return the eventBus
+	 */
+	public EventBus getEventBus() {
+		return eventBus;
+	}
+
+	@Override
+	public boolean add(E element) {
+		boolean isModified = delegate().add(element);
+		if (isModified) {
+			eventBus.post(new ObservableListEvent(element));
+		}
+
+		return isModified;
+	}
+
+	@Override
+	public boolean addAll(Collection<? extends E> collection) {
+		boolean isModified = delegate().addAll(collection);
+		if (isModified) {
+			eventBus.post(new ObservableListEvent(collection));
+		}
+
+		return isModified;
+	}
+
+	@Override
+	public void add(int index, E element) {
+		delegate().add(index, element);
+		eventBus.post(new ObservableListEvent(element));
+	}
+
+	@Override
+	public boolean addAll(int index, Collection<? extends E> elements) {
+		// TODO Auto-generated method stub
+		boolean isModified = delegate().addAll(index, elements);
+		if (isModified) {
+			eventBus.post(new ObservableListEvent(elements));
+		}
+
+		return isModified;
+	}
+
+	@Override
+	public E remove(int index) {
+		E removed = super.remove(index);
+		getEventBus().post(new ObservableListEvent(null, removed));
+
+		return removed;
+	}
+
+	@SuppressWarnings("unchecked")
+	@Override
+	public boolean remove(Object object) {
+		boolean isRemoved = super.remove(object);
+		if (isRemoved) {
+			getEventBus().post(new ObservableListEvent(null, (E) object));
+		}
+		return isRemoved;
+	}
+
+	/**
+	 *
+	 * @see com.google.common.collect.ForwardingCollection#removeAll(java.util.Collection)
+	 *
+	 * @param collection
+	 * @return
+	 */
+	@Override
+	public boolean removeAll(Collection<?> collection) {
+		// Compute the removed elements (for the events)
+		List<E> removedElements = Lists.newArrayList(delegate());
+		removedElements.retainAll(collection);
+
+		// Do remove
+		boolean isRemoved = super.removeAll(collection);
+		if (isRemoved) {
+			getEventBus().post(new ObservableListEvent(null, removedElements));
+		}
+		return isRemoved;
+	}
+
+	/**
+	 * Reset the collection to the specified collection.
+	 * Throw events containing the added and removed elements.
+	 *
+	 * @param collection
+	 * @return
+	 */
+	public boolean resetTo(Collection<? extends E> collection) {
+
+		// Compute removed and added
+		Collection<E> elementsToRemove = new ArrayList<E>();
+		Collection<E> elementsToAdd = new ArrayList<E>();
+
+		// Cached list of attached elements
+		Collection<? extends E> attachedElements = delegate();
+
+		// Compute added and removed elements. Walk both list 2 times.
+		// This could certainly be improved.
+		// TODO improve the algorithm
+
+		// Compute added elements
+		for (E o : collection) {
+			if (!attachedElements.contains(o)) {
+				elementsToAdd.add(o);
+				continue;
+			}
+		}
+
+		// Compute removed elements
+		for (E o : attachedElements) {
+			if (!collection.contains(o)) {
+				elementsToRemove.add(o);
+				continue;
+			}
+		}
+
+		// Change the list
+		delegate().clear();
+		delegate().addAll(collection);
+
+		// Fire event
+		boolean isModified = !(elementsToAdd.isEmpty() && elementsToRemove.isEmpty());
+		if (isModified) {
+			getEventBus().post(new ObservableListEvent(elementsToAdd, elementsToRemove));
+		}
+
+		return isModified;
+	}
+
+	/**
+	 * Event used to specify that the list is changed
+	 *
+	 * @author cedric dumoulin
+	 *
+	 */
+	public class ObservableListEvent {
+
+		Collection<? extends E> addedElements = Collections.emptyList();
+		Collection<? extends E> removedElements = Collections.emptyList();
+
+		/**
+		 *
+		 * Constructor.
+		 *
+		 */
+		public ObservableListEvent() {
+			this.addedElements = Collections.emptyList();
+			this.removedElements = Collections.emptyList();
+		}
+
+		/**
+		 *
+		 * Constructor.
+		 *
+		 */
+		public ObservableListEvent(Collection<? extends E> addedElements) {
+			if (addedElements != null) {
+				this.addedElements = addedElements;
+			}
+			else {
+				this.addedElements = Collections.emptyList();
+			}
+
+			this.removedElements = Collections.emptyList();
+		}
+
+		/**
+		 * Constructor.
+		 *
+		 * @param addedElements
+		 *            added elements or null
+		 * @param removedElements
+		 *            removed elements or null
+		 */
+		public ObservableListEvent(Collection<? extends E> addedElements, Collection<? extends E> removedElements) {
+			if (addedElements != null) {
+				this.addedElements = addedElements;
+			}
+			else {
+				this.addedElements = Collections.emptyList();
+			}
+
+			if (removedElements != null) {
+				this.removedElements = removedElements;
+			}
+			else {
+				this.removedElements = Collections.emptyList();
+			}
+		}
+
+		/**
+		 *
+		 * Constructor.
+		 *
+		 * @param addedElement
+		 *            An element added or null;
+		 * @param removedElement
+		 *            An element added or null
+		 */
+		public ObservableListEvent(E addedElement, E removedElement) {
+
+			if (addedElement != null) {
+				addedElements = Collections.singletonList(addedElement);
+			}
+			else {
+				addedElements = Collections.emptyList();
+			}
+
+			if (removedElement != null) {
+				removedElements = Collections.singletonList(removedElement);
+			}
+			else {
+				removedElements = Collections.emptyList();
+			}
+		}
+
+		/**
+		 *
+		 * Constructor.
+		 *
+		 * @param addedElement
+		 *            An element added or null;
+		 */
+		public ObservableListEvent(E addedElement) {
+
+			if (addedElement != null) {
+				addedElements = Collections.singletonList(addedElement);
+			}
+			else {
+				addedElements = Collections.emptyList();
+			}
+			removedElements = Collections.emptyList();
+		}
+
+		/**
+		 * @return the addedElements
+		 */
+		public Collection<? extends E> getAddedElements() {
+			return addedElements;
+		}
+
+		// /**
+		// * @param addedElements the addedElements to set
+		// */
+		// public void setAddedElements(List<E> addedElements) {
+		// this.addedElements = addedElements;
+		// }
+		//
+		// /**
+		// * @param addedElements the addedElements to set
+		// */
+		// public void setAddedElements(E addedElement) {
+		// this.addedElements = Collections.singletonList(addedElement);
+		// }
+
+		/**
+		 * @return the removedElements
+		 */
+		public Collection<? extends E> getRemovedElements() {
+			return removedElements;
+		}
+
+		// /**
+		// * @param removedElements the removedElements to set
+		// */
+		// public void setRemovedElements(List<E> removedElements) {
+		// this.removedElements = removedElements;
+		// }
+		//
+		// /**
+		// * @param removedElements the removedElements to set
+		// */
+		// public void setRemovedElements(E removedElement) {
+		// this.removedElements = Collections.singletonList(removedElement);
+		// }
+	}
+
+	/**
+	 * Return the underlying list. This can be used as an unnotifying version of the list.
+	 *
+	 * @return
+	 */
+	public List<E> getUnnotifyingList() {
+		return delegate();
+
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/models/model1.notation b/layers/org.eclipse.papyrus.layers.stackmodel/test/models/model1.notation
new file mode 100755
index 0000000..64bce01
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/models/model1.notation
@@ -0,0 +1,5508 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+  <notation:Diagram xmi:id="_mmXS0LcqEeK8_t7Rpq6ZJA" type="PapyrusUMLClassDiagram" name="overview" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_xbaJwLcqEeK8_t7Rpq6ZJA" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xbaJwrcqEeK8_t7Rpq6ZJA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xbaJw7cqEeK8_t7Rpq6ZJA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xbaJxLcqEeK8_t7Rpq6ZJA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xbaJxbcqEeK8_t7Rpq6ZJA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YsPE0LcrEeK8_t7Rpq6ZJA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YsPE0bcrEeK8_t7Rpq6ZJA" key="QualifiedNameDepth" value="0"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_xbaJyLcqEeK8_t7Rpq6ZJA" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_xbaJybcqEeK8_t7Rpq6ZJA" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_xbaJyrcqEeK8_t7Rpq6ZJA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_xbaJy7cqEeK8_t7Rpq6ZJA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_xbaJzLcqEeK8_t7Rpq6ZJA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xbaJzbcqEeK8_t7Rpq6ZJA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_xbaJzrcqEeK8_t7Rpq6ZJA" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_xbaJz7cqEeK8_t7Rpq6ZJA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_xbaJ0LcqEeK8_t7Rpq6ZJA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_xbaJ0bcqEeK8_t7Rpq6ZJA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xbaJ0rcqEeK8_t7Rpq6ZJA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_xbaJ07cqEeK8_t7Rpq6ZJA" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_xbaJ1LcqEeK8_t7Rpq6ZJA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_xbaJ1bcqEeK8_t7Rpq6ZJA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_xbaJ1rcqEeK8_t7Rpq6ZJA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xbaJ17cqEeK8_t7Rpq6ZJA"/>
+      </children>
+      <element xmi:type="uml:Class" href="notation/notation.uml#_AziHercnEeKeLJDBCBPhPw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xbaJwbcqEeK8_t7Rpq6ZJA" x="30" y="-24"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_yPB_ELcqEeK8_t7Rpq6ZJA" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yPB_ErcqEeK8_t7Rpq6ZJA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yPB_E7cqEeK8_t7Rpq6ZJA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yPB_FLcqEeK8_t7Rpq6ZJA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yPB_FbcqEeK8_t7Rpq6ZJA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yPB_FrcqEeK8_t7Rpq6ZJA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yPB_F7cqEeK8_t7Rpq6ZJA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_yPB_GLcqEeK8_t7Rpq6ZJA" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_yPB_GbcqEeK8_t7Rpq6ZJA" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_yPB_GrcqEeK8_t7Rpq6ZJA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_yPB_G7cqEeK8_t7Rpq6ZJA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_yPB_HLcqEeK8_t7Rpq6ZJA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yPB_HbcqEeK8_t7Rpq6ZJA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_yPB_HrcqEeK8_t7Rpq6ZJA" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_yPB_H7cqEeK8_t7Rpq6ZJA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_yPB_ILcqEeK8_t7Rpq6ZJA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_yPB_IbcqEeK8_t7Rpq6ZJA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yPB_IrcqEeK8_t7Rpq6ZJA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_yPB_I7cqEeK8_t7Rpq6ZJA" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_yPB_JLcqEeK8_t7Rpq6ZJA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_yPB_JbcqEeK8_t7Rpq6ZJA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_yPB_JrcqEeK8_t7Rpq6ZJA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yPB_J7cqEeK8_t7Rpq6ZJA"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_yN_dQLcqEeK8_t7Rpq6ZJA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yPB_EbcqEeK8_t7Rpq6ZJA" x="24" y="108" width="134" height="61"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_eO9nANa7EeKPiuTfpuvqHA" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eO9nAta7EeKPiuTfpuvqHA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eO9nA9a7EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eO9nBNa7EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eO9nBda7EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eO9nBta7EeKPiuTfpuvqHA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eO9nB9a7EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_eO9nCNa7EeKPiuTfpuvqHA" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_eO9nCda7EeKPiuTfpuvqHA" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_eO9nCta7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_eO9nC9a7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_eO9nDNa7EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eO9nDda7EeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_eO9nDta7EeKPiuTfpuvqHA" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_eO9nD9a7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_eO9nENa7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_eO9nEda7EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eO9nEta7EeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ePGw8Na7EeKPiuTfpuvqHA" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ePGw8da7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ePGw8ta7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ePGw89a7EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ePGw9Na7EeKPiuTfpuvqHA"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_eNnjMNa7EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eO9nAda7EeKPiuTfpuvqHA" x="120" y="768"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_gUHVoNa7EeKPiuTfpuvqHA" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gUHVota7EeKPiuTfpuvqHA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gUHVo9a7EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gUHVpNa7EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gUHVpda7EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gUHVpta7EeKPiuTfpuvqHA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gUHVp9a7EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_gUHVqNa7EeKPiuTfpuvqHA" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gUHVqda7EeKPiuTfpuvqHA" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gUHVqta7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gUHVq9a7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gUHVrNa7EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gUHVrda7EeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gUHVrta7EeKPiuTfpuvqHA" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gUHVr9a7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gUHVsNa7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gUHVsda7EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gUHVsta7EeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gUHVs9a7EeKPiuTfpuvqHA" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gUHVtNa7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gUHVtda7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gUHVtta7EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gUHVt9a7EeKPiuTfpuvqHA"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_gT0asNa7EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gUHVoda7EeKPiuTfpuvqHA" x="437" y="84" width="122" height="391"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_DOnbMNjhEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DOnbMtjhEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DOnbM9jhEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DOnbNNjhEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DOnbNdjhEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DOnbNtjhEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DOnbN9jhEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_DOnbONjhEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_DOnbOdjhEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_DOnbOtjhEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_DOnbO9jhEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_DOnbPNjhEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DOnbPdjhEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_DOnbPtjhEeKQqZMBCFd2Uw" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_jpOsYNjhEeKQqZMBCFd2Uw" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_jo2R4NjhEeKQqZMBCFd2Uw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_jpOsYdjhEeKQqZMBCFd2Uw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_QDJocN0lEeKwptaAAanMDg" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_8QO3kN0kEeKwptaAAanMDg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_QDJocd0lEeKwptaAAanMDg" x="43" y="27"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_QDV1sN0lEeKwptaAAanMDg" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_H4FrgN0lEeKwptaAAanMDg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_QDV1sd0lEeKwptaAAanMDg" x="43" y="27"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_jM4SYN0lEeKwptaAAanMDg" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_ZJ8N0N0lEeKwptaAAanMDg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_jM4SYd0lEeKwptaAAanMDg" x="56" y="77"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_jM78wN0lEeKwptaAAanMDg" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_ZdgqEN0lEeKwptaAAanMDg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_jM78wd0lEeKwptaAAanMDg" x="56" y="77"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_DOnbP9jhEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_DOnbQNjhEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_DOnbQdjhEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DOnbQtjhEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_DOnbQ9jhEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_DOnbRNjhEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_DOnbRdjhEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_DOnbRtjhEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DOnbR9jhEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_DN8s0NjhEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DOnbMdjhEeKQqZMBCFd2Uw" x="168" y="210" width="166" height="199"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_WHUKENjiEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WHUKEtjiEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WHUKE9jiEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WHUKFNjiEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WHUKFdjiEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WHUKFtjiEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WHUKF9jiEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_WHUKGNjiEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_WHUKGdjiEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_WHUKGtjiEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_WHUKG9jiEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_WHUKHNjiEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WHUKHdjiEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_WHUKHtjiEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_WHUKH9jiEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_WHUKINjiEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_WHUKIdjiEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WHUKItjiEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_WHUKI9jiEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_WHUKJNjiEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_WHUKJdjiEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_WHUKJtjiEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WHUKJ9jiEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_51zAINa7EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WHUKEdjiEeKQqZMBCFd2Uw" x="660" y="84"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Y0q5cNjoEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Y0q5ctjoEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Y0q5c9joEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Y0q5dNjoEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Y0q5ddjoEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Y0q5dtjoEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Y0q5d9joEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Y0q5eNjoEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Y0q5edjoEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Y0q5etjoEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Y0q5e9joEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Y0q5fNjoEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y0q5fdjoEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Y0q5ftjoEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Y0q5f9joEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Y0q5gNjoEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Y0q5gdjoEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y0q5gtjoEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Y0xAENjoEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Y0xAEdjoEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Y0xAEtjoEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Y0xAE9joEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y0xAFNjoEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_ggM80NhbEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y0q5cdjoEeKQqZMBCFd2Uw" x="12" y="216" height="67"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_8O26INjoEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8O26ItjoEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8O26I9joEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8O26JNjoEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8O26JdjoEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8O26JtjoEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8O26J9joEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_8O26KNjoEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8O26KdjoEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8O26KtjoEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8O26K9joEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8O26LNjoEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8O26LdjoEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8O26LtjoEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8O26L9joEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8O26MNjoEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8O26MdjoEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8O26MtjoEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8O26M9joEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8O26NNjoEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8O26NdjoEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8O26NtjoEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8O26N9joEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_8OefoNjoEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8O26IdjoEeKQqZMBCFd2Uw" x="312" y="462" width="120" height="67"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_AToXINjpEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AToXItjpEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AToXI9jpEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AToXJNjpEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AToXJdjpEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AToXJtjpEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AToXJ9jpEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_AToXKNjpEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AToXKdjpEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AToXKtjpEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AToXK9jpEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AToXLNjpEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AToXLdjpEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AToXLtjpEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AToXL9jpEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AToXMNjpEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AToXMdjpEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AToXMtjpEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AToXM9jpEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AToXNNjpEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AToXNdjpEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AToXNtjpEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AToXN9jpEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_uMYd4NjoEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AToXIdjpEeKQqZMBCFd2Uw" x="12" y="462" height="67"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_di3-ENkhEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_di3-EtkhEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_di3-E9khEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_di3-FNkhEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_di3-FdkhEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_di3-FtkhEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_di3-F9khEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_di3-GNkhEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_di3-GdkhEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_di3-GtkhEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_di3-G9khEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_di3-HNkhEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_di3-HdkhEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_di3-HtkhEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_di3-H9khEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_di3-INkhEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_di3-IdkhEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_di3-ItkhEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_di-EsNkhEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_di-EsdkhEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_di-EstkhEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_di-Es9khEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_di-EtNkhEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="notation/notation.uml#_AziHhrcnEeKeLJDBCBPhPw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_di3-EdkhEeKQqZMBCFd2Uw" x="660" y="384"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_zYYY0NqBEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zYefcNqBEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zYefcdqBEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zYefctqBEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zYefc9qBEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zYefdNqBEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zYefddqBEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_zYfGgNqBEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_zYfGgdqBEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_zYfGgtqBEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_zYfGg9qBEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_zYfGhNqBEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zYfGhdqBEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_zYfGhtqBEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_zYfGh9qBEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_zYfGiNqBEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_zYfGidqBEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zYfGitqBEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_zYfGi9qBEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_zYfGjNqBEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_zYfGjdqBEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_zYfGjtqBEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zYfGj9qBEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_zYGE8NqBEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zYYY0dqBEeKQqZMBCFd2Uw" x="48" y="588"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_33RakNt0EeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_33Raktt0EeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_33Rak9t0EeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_33RalNt0EeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_33Raldt0EeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_33Raltt0EeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_33Ral9t0EeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_33RamNt0EeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_33Ramdt0EeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_33Ramtt0EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_33Ram9t0EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_33RanNt0EeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_33Randt0EeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_33Rantt0EeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_33Ran9t0EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_33RaoNt0EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_33Raodt0EeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_33Raott0EeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_33Rao9t0EeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_33RapNt0EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_33Rapdt0EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_33Raptt0EeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_33Rap9t0EeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_325AENt0EeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_33Rakdt0EeKQqZMBCFd2Uw" x="174" y="-12" width="217" height="97"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_IPOrANt2EeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IPOrAtt2EeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IPOrA9t2EeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IPOrBNt2EeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IPOrBdt2EeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IPOrBtt2EeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IPOrB9t2EeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_IPOrCNt2EeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_IPOrCdt2EeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_IPOrCtt2EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_IPOrC9t2EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_IPOrDNt2EeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IPOrDdt2EeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_IPOrDtt2EeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_IPOrD9t2EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_IPOrENt2EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_IPOrEdt2EeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IPOrEtt2EeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_IPOrE9t2EeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_IPOrFNt2EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_IPOrFdt2EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_IPOrFtt2EeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IPOrF9t2EeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_IOwJ4Nt2EeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IPOrAdt2EeKQqZMBCFd2Uw" x="312" y="588" width="193"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_q9LiYO3uEeKwLp35IbAIig" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_q9RpAO3uEeKwLp35IbAIig" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q9RpAe3uEeKwLp35IbAIig" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_q9RpAu3uEeKwLp35IbAIig" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q9RpA-3uEeKwLp35IbAIig" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_q9RpBO3uEeKwLp35IbAIig" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q9RpBe3uEeKwLp35IbAIig" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_q9RpBu3uEeKwLp35IbAIig" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_q9RpB-3uEeKwLp35IbAIig" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_q9RpCO3uEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_q9RpCe3uEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_q9RpCu3uEeKwLp35IbAIig"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q9RpC-3uEeKwLp35IbAIig"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_q9RpDO3uEeKwLp35IbAIig" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_q9RpDe3uEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_q9RpDu3uEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_q9RpD-3uEeKwLp35IbAIig"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q9RpEO3uEeKwLp35IbAIig"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_q9RpEe3uEeKwLp35IbAIig" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_q9RpEu3uEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_q9RpE-3uEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_q9RpFO3uEeKwLp35IbAIig"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q9RpFe3uEeKwLp35IbAIig"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_q85OgO3uEeKwLp35IbAIig"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q9LiYe3uEeKwLp35IbAIig" x="316" y="760"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_-jCeEAw_EeOjX-JbGFEH7w" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-jCeEgw_EeOjX-JbGFEH7w" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-jCeEww_EeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-jCeFAw_EeOjX-JbGFEH7w" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-jCeFQw_EeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-jCeFgw_EeOjX-JbGFEH7w" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-jCeFww_EeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_-jCeGAw_EeOjX-JbGFEH7w" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_-jCeGQw_EeOjX-JbGFEH7w" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_-jCeGgw_EeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_-jCeGww_EeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_-jCeHAw_EeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-jCeHQw_EeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_-jCeHgw_EeOjX-JbGFEH7w" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_-jCeHww_EeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_-jCeIAw_EeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_-jCeIQw_EeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-jCeIgw_EeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_-jCeIww_EeOjX-JbGFEH7w" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_-jCeJAw_EeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_-jCeJQw_EeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_-jCeJgw_EeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-jCeJww_EeOjX-JbGFEH7w"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_T5we4AkdEeOnVqX9VcfeWQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-jCeEQw_EeOjX-JbGFEH7w" x="312" y="894" width="229"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_mmXS0bcqEeK8_t7Rpq6ZJA"/>
+    <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+    <edges xmi:type="notation:Connector" xmi:id="_0PIOkLcqEeK8_t7Rpq6ZJA" type="4002" source="_yPB_ELcqEeK8_t7Rpq6ZJA" target="_xbaJwLcqEeK8_t7Rpq6ZJA" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_0PIOk7cqEeK8_t7Rpq6ZJA" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_0PIOlLcqEeK8_t7Rpq6ZJA" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_0PIOkbcqEeK8_t7Rpq6ZJA" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_0NyKwLcqEeK8_t7Rpq6ZJA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0PIOkrcqEeK8_t7Rpq6ZJA" points="[-1, -6, 16, 197]$[-15, -195, 2, 8]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0REIQLcqEeK8_t7Rpq6ZJA" id="(0.38,0.06)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0REIQbcqEeK8_t7Rpq6ZJA" id="(0.47,0.95)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_jWjy8Na7EeKPiuTfpuvqHA" type="4001" source="_yPB_ELcqEeK8_t7Rpq6ZJA" target="_gUHVoNa7EeKPiuTfpuvqHA" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_jWjy89a7EeKPiuTfpuvqHA" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jWjy9Na7EeKPiuTfpuvqHA" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jWjy9da7EeKPiuTfpuvqHA" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jWjy9ta7EeKPiuTfpuvqHA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jWjy99a7EeKPiuTfpuvqHA" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jWjy-Na7EeKPiuTfpuvqHA" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jWjy-da7EeKPiuTfpuvqHA" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jWjy-ta7EeKPiuTfpuvqHA" x="-25" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jWjy-9a7EeKPiuTfpuvqHA" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jWjy_Na7EeKPiuTfpuvqHA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jWjy_da7EeKPiuTfpuvqHA" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jWjy_ta7EeKPiuTfpuvqHA" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_jWjy8da7EeKPiuTfpuvqHA" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_jWQ4ANa7EeKPiuTfpuvqHA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jWjy8ta7EeKPiuTfpuvqHA" points="[16, 0, -128, 0]$[133, -1, -11, -1]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jW2t4Na7EeKPiuTfpuvqHA" id="(0.8620689655172413,0.38)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jW2t4da7EeKPiuTfpuvqHA" id="(0.08,0.11253196930946291)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_akk1ANjhEeKQqZMBCFd2Uw" type="4001" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_gUHVoNa7EeKPiuTfpuvqHA" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_akk1A9jhEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_akk1BNjhEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_akk1BdjhEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_akk1BtjhEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_akk1B9jhEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_akk1CNjhEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_akk1CdjhEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_akk1CtjhEeKQqZMBCFd2Uw" x="-25" y="22"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_akk1C9jhEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_akk1DNjhEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_akk1DdjhEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_akk1DtjhEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_akk1AdjhEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_akGT4NjhEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_akk1AtjhEeKQqZMBCFd2Uw" points="[7, 15, -46, -102]$[50, 115, -3, -2]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_akxCQNjhEeKQqZMBCFd2Uw" id="(0.9759036144578314,0.15577889447236182)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_akxCQdjhEeKQqZMBCFd2Uw" id="(0.11,0.4194373401534527)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_bwi0sNjoEeKQqZMBCFd2Uw" type="4002" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_Y0q5cNjoEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_bwi0s9joEeKQqZMBCFd2Uw" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bwi0tNjoEeKQqZMBCFd2Uw" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_bwi0sdjoEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_bwKaMNjoEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bwi0stjoEeKQqZMBCFd2Uw" points="[2, -5, 0, 49]$[-1, -46, -3, 8]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bwo7UNjoEeKQqZMBCFd2Uw" id="(0.42771084337349397,0.04807692307692308)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bwo7UdjoEeKQqZMBCFd2Uw" id="(0.43,0.8805970149253731)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_DY7UINjpEeKQqZMBCFd2Uw" type="4001" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_AToXINjpEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_DY7UI9jpEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_DY7UJNjpEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_DY7UJdjpEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_DY7UJtjpEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_DY7UJ9jpEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_DY7UKNjpEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_DZBawNjpEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_DZBawdjpEeKQqZMBCFd2Uw" x="25" y="59"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_DZBawtjpEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_DZBaw9jpEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_DZBaxNjpEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_DZBaxdjpEeKQqZMBCFd2Uw" x="-20" y="-19"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_DY7UIdjpEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_DYi5oNjpEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DY7UItjpEeKQqZMBCFd2Uw" points="[-6, 7, 55, -70]$[-61, 77, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DZHhYNjpEeKQqZMBCFd2Uw" id="(0.19879518072289157,0.9326923076923077)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DZHhYdjpEeKQqZMBCFd2Uw" id="(0.5483870967741935,0.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_EE7egNjpEeKQqZMBCFd2Uw" type="4001" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_8O26INjoEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_EE7eg9jpEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_EE7ehNjpEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_EE7ehdjpEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_EE7ehtjpEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_EE7eh9jpEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_EFBlINjpEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_EFBlIdjpEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_EFBlItjpEeKQqZMBCFd2Uw" x="-35" y="33"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_EFBlI9jpEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_EFBlJNjpEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_EFBlJdjpEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_EFBlJtjpEeKQqZMBCFd2Uw" x="16" y="-48"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_EE7egdjpEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_EEjEANjpEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_EE7egtjpEeKQqZMBCFd2Uw" points="[3, 8, -32, -76]$[36, 78, 1, -6]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EFHrwNjpEeKQqZMBCFd2Uw" id="(0.6867469879518072,0.9230769230769231)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EFHrwdjpEeKQqZMBCFd2Uw" id="(0.5416666666666666,0.08955223880597014)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_hRFVMNkhEeKQqZMBCFd2Uw" type="4001" source="_gUHVoNa7EeKPiuTfpuvqHA" target="_di3-ENkhEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_hRFVM9khEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hRFVNNkhEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_hRFVNdkhEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hRFVNtkhEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_hRFVN9khEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hRFVONkhEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_hRFVOdkhEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hRFVOtkhEeKQqZMBCFd2Uw" x="-41" y="23"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_hRFVO9khEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hRFVPNkhEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_hRFVPdkhEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hRFVPtkhEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_hRFVMdkhEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_hQam0NkhEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hRFVMtkhEeKQqZMBCFd2Uw" points="[9, -1, -134, 0]$[132, -6, -11, -5]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hRLb0NkhEeKQqZMBCFd2Uw" id="(0.91,0.8593350383631714)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hRLb0dkhEeKQqZMBCFd2Uw" id="(0.11,0.35)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_5sUcENqBEeKQqZMBCFd2Uw" type="4001" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_zYYY0NqBEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_5sUcE9qBEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5sUcFNqBEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5sUcFdqBEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5sUcFtqBEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5sUcF9qBEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5sUcGNqBEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5sUcGdqBEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5sUcGtqBEeKQqZMBCFd2Uw" x="9" y="104"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5sUcG9qBEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5saisNqBEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5saisdqBEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5saistqBEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_5sUcEdqBEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_5r8BkNqBEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5sUcEtqBEeKQqZMBCFd2Uw" points="[0, 13, 28, -195]$[0, 168, 28, -40]$[-17, 192, 11, -16]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5sgpUNqBEeKQqZMBCFd2Uw" id="(0.27710843373493976,0.9346733668341709)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5sgpUdqBEeKQqZMBCFd2Uw" id="(0.8734177215189873,0.16)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_T0VGwNqCEeKQqZMBCFd2Uw" type="4001" source="_zYYY0NqBEeKQqZMBCFd2Uw" target="_eO9nANa7EeKPiuTfpuvqHA" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_T0VGw9qCEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_T0VGxNqCEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_T0VGxdqCEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_T0VGxtqCEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_T0VGx9qCEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_T0VGyNqCEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_T0VGydqCEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_T0VGytqCEeKQqZMBCFd2Uw" x="3" y="78"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_T0VGy9qCEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_T0VGzNqCEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_T0VGzdqCEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_T0VGztqCEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_T0VGwdqCEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_Tz2loNqCEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_T0VGwtqCEeKQqZMBCFd2Uw" points="[1, 9, 0, -64]$[-1, 65, -2, -8]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_T0bNYNqCEeKQqZMBCFd2Uw" id="(0.5063291139240507,0.91)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_T0bNYdqCEeKQqZMBCFd2Uw" id="(0.42857142857142855,0.08)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="__sH28Nt0EeKQqZMBCFd2Uw" type="4001" source="_33RakNt0EeKQqZMBCFd2Uw" target="_DOnbMNjhEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="__sH289t0EeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__sH29Nt0EeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="__sH29dt0EeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__sH29tt0EeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="__sH299t0EeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__sH2-Nt0EeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="__sH2-dt0EeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__sH2-tt0EeKQqZMBCFd2Uw" x="-1" y="58"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="__sH2-9t0EeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__sH2_Nt0EeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="__sH2_dt0EeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__sH2_tt0EeKQqZMBCFd2Uw" x="-1" y="-35"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="__sH28dt0EeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#__rpV0Nt0EeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__sH28tt0EeKQqZMBCFd2Uw" points="[-9, 4, 0, -131]$[-9, 129, 0, -6]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__sN9kNt0EeKQqZMBCFd2Uw" id="(0.4147465437788018,0.9587628865979382)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__sN9kdt0EeKQqZMBCFd2Uw" id="(0.5240963855421686,0.057692307692307696)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_wRtFcNt2EeKQqZMBCFd2Uw" type="4001" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_IPOrANt2EeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_wRtFc9t2EeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_wRtFdNt2EeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_wRtFddt2EeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_wRtFdtt2EeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_wRtFd9t2EeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_wRtFeNt2EeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_wRtFedt2EeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_wRtFett2EeKQqZMBCFd2Uw" x="22" y="-39"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_wRtFe9t2EeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_wRtFfNt2EeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_wRtFfdt2EeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_wRtFftt2EeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_wRtFcdt2EeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_wROkUNt2EeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_wRtFctt2EeKQqZMBCFd2Uw" points="[17, 96, -39, -213]$[46, 304, -10, -5]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wRzMENt2EeKQqZMBCFd2Uw" id="(0.40963855421686746,0.07692307692307693)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wRzMEdt2EeKQqZMBCFd2Uw" id="(0.05181347150259067,0.11)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_3GnZYO3uEeKwLp35IbAIig" type="4001" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_q9LiYO3uEeKwLp35IbAIig" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_3GnZY-3uEeKwLp35IbAIig" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3GnZZO3uEeKwLp35IbAIig" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_3GnZZe3uEeKwLp35IbAIig" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3GnZZu3uEeKwLp35IbAIig" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_3GnZZ-3uEeKwLp35IbAIig" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3GnZaO3uEeKwLp35IbAIig" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_3GnZae3uEeKwLp35IbAIig" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3GnZau3uEeKwLp35IbAIig" x="72" y="-98"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_3GnZa-3uEeKwLp35IbAIig" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3GnZbO3uEeKwLp35IbAIig" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_3GnZbe3uEeKwLp35IbAIig" visible="false" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3GnZbu3uEeKwLp35IbAIig" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_3GnZYe3uEeKwLp35IbAIig" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_3GHqIO3uEeKwLp35IbAIig"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3GnZYu3uEeKwLp35IbAIig" points="[3, 22, -77, -351]$[47, 321, -33, -52]$[80, 373, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3GzmoO3uEeKwLp35IbAIig" id="(0.4759036144578313,0.8894472361809045)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Gzmoe3uEeKwLp35IbAIig" id="(0.0738255033557047,0.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_FETysAxAEeOjX-JbGFEH7w" type="4001" source="_DOnbMNjhEeKQqZMBCFd2Uw" target="_-jCeEAw_EeOjX-JbGFEH7w" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_FEVA0AxAEeOjX-JbGFEH7w" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_FEVA0QxAEeOjX-JbGFEH7w" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_FEVn4AxAEeOjX-JbGFEH7w" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_FEVn4QxAEeOjX-JbGFEH7w" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_FEVn4gxAEeOjX-JbGFEH7w" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_FEVn4wxAEeOjX-JbGFEH7w" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_FEVn5AxAEeOjX-JbGFEH7w" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_FEVn5QxAEeOjX-JbGFEH7w" x="70" y="-137"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_FEVn5gxAEeOjX-JbGFEH7w" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_FEVn5wxAEeOjX-JbGFEH7w" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_FEWO8AxAEeOjX-JbGFEH7w" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_FEWO8QxAEeOjX-JbGFEH7w" x="52" y="29"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_FETysQxAEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_FDpEUAxAEeOjX-JbGFEH7w"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_FETysgxAEeOjX-JbGFEH7w" points="[0, 5, -99, -495]$[19, 112, -80, -388]$[67, 472, -32, -28]$[87, 490, -12, -10]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FEh1IAxAEeOjX-JbGFEH7w" id="(0.35542168674698793,0.9748743718592965)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FEh1IQxAEeOjX-JbGFEH7w" id="(0.06422018348623854,0.1)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_y-BQANa7EeKPiuTfpuvqHA" type="PapyrusUMLClassDiagram" name="LayersExpression" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_zpKewNa7EeKPiuTfpuvqHA" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zpKewta7EeKPiuTfpuvqHA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zpKew9a7EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zpKexNa7EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zpKexda7EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zpKexta7EeKPiuTfpuvqHA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zpKex9a7EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_zpKeyNa7EeKPiuTfpuvqHA" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_zpKeyda7EeKPiuTfpuvqHA" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_hEYzQNjwEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_ctvjINjwEeKQqZMBCFd2Uw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_hEYzQdjwEeKQqZMBCFd2Uw" x="58" y="16"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_hEe54NjwEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_ct7wYNjwEeKQqZMBCFd2Uw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_hEe54djwEeKQqZMBCFd2Uw" x="58" y="16"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_zpKeyta7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_zpKey9a7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_zpKezNa7EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zpKezda7EeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_zpKezta7EeKPiuTfpuvqHA" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_zpKez9a7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_zpKe0Na7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_zpKe0da7EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zpKe0ta7EeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_zpKe09a7EeKPiuTfpuvqHA" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_zpKe1Na7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_zpKe1da7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_zpKe1ta7EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zpKe19a7EeKPiuTfpuvqHA"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_gT0asNa7EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zpKewda7EeKPiuTfpuvqHA" x="6" y="120" height="133"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_52F7ENa7EeKPiuTfpuvqHA" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_52F7Eta7EeKPiuTfpuvqHA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_52F7E9a7EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_52F7FNa7EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_52F7Fda7EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_52F7Fta7EeKPiuTfpuvqHA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_52F7F9a7EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_52F7GNa7EeKPiuTfpuvqHA" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_52F7Gda7EeKPiuTfpuvqHA" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_52F7Gta7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_52F7G9a7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_52F7HNa7EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_52F7Hda7EeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_52F7Hta7EeKPiuTfpuvqHA" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_52F7H9a7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_52F7INa7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_52F7Ida7EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_52F7Ita7EeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_52F7I9a7EeKPiuTfpuvqHA" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_52F7JNa7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_52F7Jda7EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_52F7Jta7EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_52F7J9a7EeKPiuTfpuvqHA"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_51zAINa7EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_52F7Eda7EeKPiuTfpuvqHA" x="414" y="330" height="115"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_AjwF4Na8EeKPiuTfpuvqHA" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AjwF4ta8EeKPiuTfpuvqHA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AjwF49a8EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AjwF5Na8EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AjwF5da8EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AjwF5ta8EeKPiuTfpuvqHA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AjwF59a8EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_AjwF6Na8EeKPiuTfpuvqHA" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AjwF6da8EeKPiuTfpuvqHA" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AjwF6ta8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AjwF69a8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AjwF7Na8EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AjwF7da8EeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AjwF7ta8EeKPiuTfpuvqHA" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AjwF79a8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AjwF8Na8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AjwF8da8EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AjwF8ta8EeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AjwF89a8EeKPiuTfpuvqHA" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AjwF9Na8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AjwF9da8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AjwF9ta8EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AjwF99a8EeKPiuTfpuvqHA"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_AjTZ8Na8EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AjwF4da8EeKPiuTfpuvqHA" x="747" y="349"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_T7HNENbFEeKPiuTfpuvqHA" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T7HNEtbFEeKPiuTfpuvqHA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T7HNE9bFEeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T7HNFNbFEeKPiuTfpuvqHA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T7HNFdbFEeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T7HNFtbFEeKPiuTfpuvqHA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T7HNF9bFEeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_T7HNGNbFEeKPiuTfpuvqHA" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_T7HNGdbFEeKPiuTfpuvqHA" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_T7HNGtbFEeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_T7HNG9bFEeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_T7HNHNbFEeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T7HNHdbFEeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_T7HNHtbFEeKPiuTfpuvqHA" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_T7HNH9bFEeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_T7QXANbFEeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_T7QXAdbFEeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T7QXAtbFEeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_T7QXA9bFEeKPiuTfpuvqHA" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_T7QXBNbFEeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_T7QXBdbFEeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_T7QXBtbFEeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T7QXB9bFEeKPiuTfpuvqHA"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_eNnjMNa7EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T7HNEdbFEeKPiuTfpuvqHA" x="744" y="228"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_vMekkNjKEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vMkrMNjKEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vMkrMdjKEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vMkrMtjKEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vMkrM9jKEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vMkrNNjKEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vMkrNdjKEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_vMkrNtjKEeKgkM6XJF9t4A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_vMkrN9jKEeKgkM6XJF9t4A" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_1CU9oNjKEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_1B8jINjKEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_1CU9odjKEeKgkM6XJF9t4A"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_4gTgYNjKEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_4f0_QNjKEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_4gTgYdjKEeKgkM6XJF9t4A"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_vMkrONjKEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_vMkrOdjKEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_vMkrOtjKEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vMkrO9jKEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_vMkrPNjKEeKgkM6XJF9t4A" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_vMkrPdjKEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_vMkrPtjKEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_vMkrP9jKEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vMkrQNjKEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_vMkrQdjKEeKgkM6XJF9t4A" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_vMkrQtjKEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_vMkrQ9jKEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_vMkrRNjKEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vMkrRdjKEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_vMMQsNjKEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vMekkdjKEeKgkM6XJF9t4A" x="732" y="474" width="203"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_9IsT4NjiEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9IsT4tjiEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9IsT49jiEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9IsT5NjiEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9IsT5djiEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9IsT5tjiEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9IyagNjiEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_9IyagdjiEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_9IyagtjiEeKQqZMBCFd2Uw" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_R8Lv8NjuEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_AWx_gNjuEeKQqZMBCFd2Uw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_R8Lv8djuEeKQqZMBCFd2Uw" x="47" y="9"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_R8Lv8tjuEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_AW-MwNjuEeKQqZMBCFd2Uw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_R8Lv89juEeKQqZMBCFd2Uw" x="47" y="9"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_mCypIAxEEeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_B5cxgAxGEeOjX-JbGFEH7w" source="Stereotype_Annotation">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B5dYkAxGEeOjX-JbGFEH7w" key="StereotypeWithQualifiedNameList" value=""/>
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B5dYkQxGEeOjX-JbGFEH7w" key="StereotypeList" value="Ecore::EAttribute"/>
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B5dYkgxGEeOjX-JbGFEH7w" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B5dYkwxGEeOjX-JbGFEH7w" key="PropStereoDisplay" value=""/>
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B5dYlAxGEeOjX-JbGFEH7w" key="StereotypePropertyLocation" value="Compartment"/>
+          </eAnnotations>
+          <element xmi:type="uml:Property" href="layers.uml#_mCUIAAxEEeOjX-JbGFEH7w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_mCypIQxEEeOjX-JbGFEH7w"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_qa7HAAxEEeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_qaozIAxEEeOjX-JbGFEH7w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_qa7HAQxEEeOjX-JbGFEH7w"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_9Iyag9jiEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_9IyahNjiEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_9IyahdjiEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9IyahtjiEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_9Iyah9jiEeKQqZMBCFd2Uw" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_VdqgMO7HEeK0p4PkXjd-_Q" type="3013" fontName="Segoe UI" lineColor="0">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dUmVUO7JEeK0p4PkXjd-_Q" source="CustomAppearance_Annotation">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fNQgEO7JEeK0p4PkXjd-_Q" key="CustomAppearance_MaskValue" value="17160"/>
+          </eAnnotations>
+          <element xmi:type="uml:Operation" href="layers.uml#_VdSFsO7HEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_VdqgMe7HEeK0p4PkXjd-_Q"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_fOx_gO7IEeK0p4PkXjd-_Q" type="3013" fontName="Segoe UI" lineColor="0">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dUmVUu7JEeK0p4PkXjd-_Q" source="CustomAppearance_Annotation">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fNQgEe7JEeK0p4PkXjd-_Q" key="CustomAppearance_MaskValue" value="17160"/>
+          </eAnnotations>
+          <element xmi:type="uml:Operation" href="layers.uml#_xfz8UO7HEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_fOx_ge7IEeK0p4PkXjd-_Q" x="93" y="23"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_fO4GIO7IEeK0p4PkXjd-_Q" type="3013" fontName="Segoe UI" lineColor="0">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dUmVVO7JEeK0p4PkXjd-_Q" source="CustomAppearance_Annotation">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fNQgEu7JEeK0p4PkXjd-_Q" key="CustomAppearance_MaskValue" value="17160"/>
+          </eAnnotations>
+          <element xmi:type="uml:Operation" href="layers.uml#_x2PfUO7HEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_fO4GIe7IEeK0p4PkXjd-_Q" x="93" y="23"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_yKXQQPMcEeKJ5-vFCuMpLA" type="3013" fontName="Segoe UI" lineColor="0">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Do9OEPMdEeKJ5-vFCuMpLA" source="CustomAppearance_Annotation">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Do9OEfMdEeKJ5-vFCuMpLA" key="CustomAppearance_MaskValue" value="776"/>
+          </eAnnotations>
+          <element xmi:type="uml:Operation" href="layers.uml#_yI1mQPMcEeKJ5-vFCuMpLA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_yKXQQfMcEeKJ5-vFCuMpLA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_9IyaiNjiEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_9IyaidjiEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_9IyaitjiEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9Iyai9jiEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_9IyajNjiEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_9IyajdjiEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_9IyajtjiEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_9Iyaj9jiEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9IyakNjiEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_9IaAANjiEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9IsT4djiEeKQqZMBCFd2Uw" x="252" y="108" width="475" height="184"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Hoi98NjjEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Hoi98tjjEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Hoi989jjEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Hoi99NjjEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Hoi99djjEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Hoi99tjjEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Hoi999jjEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Hoi9-NjjEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Hoi9-djjEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Hoi9-tjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Hoi9-9jjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Hoi9_NjjEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hoi9_djjEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Hoi9_tjjEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Hoi9_9jjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Hoi-ANjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Hoi-AdjjEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hoi-AtjjEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Hoi-A9jjEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Hoi-BNjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Hoi-BdjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Hoi-BtjjEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hoi-B9jjEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_HoKjcNjjEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hoi98djjEeKQqZMBCFd2Uw" x="144" y="330" width="115"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_WunlMNjjEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wutr0NjjEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wutr0djjEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wutr0tjjEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wutr09jjEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wutr1NjjEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wutr1djjEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Wutr1tjjEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Wutr19jjEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Wutr2NjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Wutr2djjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Wutr2tjjEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wutr29jjEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Wutr3NjjEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Wutr3djjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Wutr3tjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Wutr39jjEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wutr4NjjEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Wutr4djjEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Wutr4tjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Wutr49jjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Wutr5NjjEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wutr5djjEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_WuVRUNjjEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WunlMdjjEeKQqZMBCFd2Uw" x="240" y="504" width="157"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_gqpJcNjjEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gqvQENjjEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gqvQEdjjEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gqvQEtjjEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gqvQE9jjEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gqvQFNjjEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gqvQFdjjEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_gqvQFtjjEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gqvQF9jjEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gqvQGNjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gqvQGdjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gqvQGtjjEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gqvQG9jjEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gqvQHNjjEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gqvQHdjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gqvQHtjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gqvQH9jjEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gqvQINjjEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gqvQIdjjEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gqvQItjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gqvQI9jjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gqvQJNjjEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gqvQJdjjEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_gqW1kNjjEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gqpJcdjjEeKQqZMBCFd2Uw" x="366" y="642"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_wpUMoNjjEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wpUMotjjEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wpUMo9jjEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wpUMpNjjEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wpUMpdjjEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wpUMptjjEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wpUMp9jjEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_wpUMqNjjEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_wpUMqdjjEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_wpUMqtjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_wpUMq9jjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_wpUMrNjjEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wpUMrdjjEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_wpUMrtjjEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_wpUMr9jjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_wpUMsNjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_wpUMsdjjEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wpUMstjjEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_wpUMs9jjEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_wpUMtNjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_wpUMtdjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_wpUMttjjEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wpUMt9jjEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_wpB4wNjjEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wpUModjjEeKQqZMBCFd2Uw" x="156" y="642" width="169"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_1xfAUNjjEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1xfnYNjjEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1xfnYdjjEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1xgOcNjjEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1xgOcdjjEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1xgOctjjEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1xgOc9jjEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_1xgOdNjjEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1xgOddjjEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1xgOdtjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1xgOd9jjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1xgOeNjjEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1xgOedjjEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1xgOetjjEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1xgOe9jjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1xgOfNjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1xgOfdjjEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1xgOftjjEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1xgOf9jjEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1xgOgNjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1xgOgdjjEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1xgOgtjjEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1xgOg9jjEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_1xJCENjjEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1xfAUdjjEeKQqZMBCFd2Uw" x="6" y="504" width="163"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_zT_qYNt5EeKwptaAAanMDg" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zT_qYtt5EeKwptaAAanMDg" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zT_qY9t5EeKwptaAAanMDg" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zT_qZNt5EeKwptaAAanMDg" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zT_qZdt5EeKwptaAAanMDg" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zT_qZtt5EeKwptaAAanMDg" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zT_qZ9t5EeKwptaAAanMDg" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_zT_qaNt5EeKwptaAAanMDg" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_zT_qadt5EeKwptaAAanMDg" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_zT_qatt5EeKwptaAAanMDg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_zT_qa9t5EeKwptaAAanMDg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_zT_qbNt5EeKwptaAAanMDg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zT_qbdt5EeKwptaAAanMDg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_zT_qbtt5EeKwptaAAanMDg" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_zT_qb9t5EeKwptaAAanMDg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_zT_qcNt5EeKwptaAAanMDg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_zT_qcdt5EeKwptaAAanMDg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zT_qctt5EeKwptaAAanMDg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_zT_qc9t5EeKwptaAAanMDg" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_zT_qdNt5EeKwptaAAanMDg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_zT_qddt5EeKwptaAAanMDg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_zT_qdtt5EeKwptaAAanMDg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zT_qd9t5EeKwptaAAanMDg"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_325AENt0EeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zT_qYdt5EeKwptaAAanMDg" x="234" y="24" height="45"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_z-jdcOHTEeKCZbxNW-U3VQ" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z-jdcuHTEeKCZbxNW-U3VQ" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z-jdc-HTEeKCZbxNW-U3VQ" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z-jddOHTEeKCZbxNW-U3VQ" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z-jddeHTEeKCZbxNW-U3VQ" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z-jdduHTEeKCZbxNW-U3VQ" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z-jdd-HTEeKCZbxNW-U3VQ" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_z-jdeOHTEeKCZbxNW-U3VQ" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_z-jdeeHTEeKCZbxNW-U3VQ" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_BnajsBZ1EeOZwp016gnCFQ" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_Bm93wBZ1EeOZwp016gnCFQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_BnajsRZ1EeOZwp016gnCFQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_FqR8MBZ1EeOZwp016gnCFQ" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_Fp_BQBZ1EeOZwp016gnCFQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_FqR8MRZ1EeOZwp016gnCFQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_NA_bwFCkEeO_9LQ4jZWm3w" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_NAa0AFCkEeO_9LQ4jZWm3w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_NA_bwVCkEeO_9LQ4jZWm3w"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_X_qIwVCkEeO_9LQ4jZWm3w" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_X_qIwFCkEeO_9LQ4jZWm3w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_X_qIwlCkEeO_9LQ4jZWm3w"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_uJr68VCkEeO_9LQ4jZWm3w" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_uJr68FCkEeO_9LQ4jZWm3w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_uJr68lCkEeO_9LQ4jZWm3w"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_y220sVCkEeO_9LQ4jZWm3w" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_y220sFCkEeO_9LQ4jZWm3w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_y220slCkEeO_9LQ4jZWm3w"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_sPbYQVClEeO_9LQ4jZWm3w" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_sPbYQFClEeO_9LQ4jZWm3w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_sPbYQlClEeO_9LQ4jZWm3w"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_z-jdeuHTEeKCZbxNW-U3VQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_z-jde-HTEeKCZbxNW-U3VQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_z-jdfOHTEeKCZbxNW-U3VQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z-jdfeHTEeKCZbxNW-U3VQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_z-jdfuHTEeKCZbxNW-U3VQ" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_kKAqgBZ0EeOZwp016gnCFQ" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_kI0XsBZ0EeOZwp016gnCFQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kKAqgRZ0EeOZwp016gnCFQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_lphVcBZ0EeOZwp016gnCFQ" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_lpOagBZ0EeOZwp016gnCFQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_lphVcRZ0EeOZwp016gnCFQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_pKeTsBZ0EeOZwp016gnCFQ" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_pKKxsBZ0EeOZwp016gnCFQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_pKeTsRZ0EeOZwp016gnCFQ"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_z-jdf-HTEeKCZbxNW-U3VQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_z-jdgOHTEeKCZbxNW-U3VQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_z-jdgeHTEeKCZbxNW-U3VQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z-jdguHTEeKCZbxNW-U3VQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_z-jdg-HTEeKCZbxNW-U3VQ" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_z-jdhOHTEeKCZbxNW-U3VQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_z-jdheHTEeKCZbxNW-U3VQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_z-jdhuHTEeKCZbxNW-U3VQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z-jdh-HTEeKCZbxNW-U3VQ"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_z9aN8OHTEeKCZbxNW-U3VQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z-jdceHTEeKCZbxNW-U3VQ" x="558" y="642"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="__1eoIOHTEeKCZbxNW-U3VQ" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__1eoIuHTEeKCZbxNW-U3VQ" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__1eoI-HTEeKCZbxNW-U3VQ" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__1eoJOHTEeKCZbxNW-U3VQ" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__1eoJeHTEeKCZbxNW-U3VQ" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__1eoJuHTEeKCZbxNW-U3VQ" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__1eoJ-HTEeKCZbxNW-U3VQ" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="__1eoKOHTEeKCZbxNW-U3VQ" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__1eoKeHTEeKCZbxNW-U3VQ" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__1eoKuHTEeKCZbxNW-U3VQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__1eoK-HTEeKCZbxNW-U3VQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__1eoLOHTEeKCZbxNW-U3VQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__1eoLeHTEeKCZbxNW-U3VQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__1eoLuHTEeKCZbxNW-U3VQ" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__1eoL-HTEeKCZbxNW-U3VQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__1eoMOHTEeKCZbxNW-U3VQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__1eoMeHTEeKCZbxNW-U3VQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__1eoMuHTEeKCZbxNW-U3VQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__1eoM-HTEeKCZbxNW-U3VQ" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__1eoNOHTEeKCZbxNW-U3VQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__1eoNeHTEeKCZbxNW-U3VQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__1eoNuHTEeKCZbxNW-U3VQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__1eoN-HTEeKCZbxNW-U3VQ"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#__1GNoOHTEeKCZbxNW-U3VQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__1eoIeHTEeKCZbxNW-U3VQ" x="984" y="642"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_y-BQAda7EeKPiuTfpuvqHA"/>
+    <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+    <edges xmi:type="notation:Connector" xmi:id="_5ZBIENa8EeKPiuTfpuvqHA" type="4001" source="_52F7ENa7EeKPiuTfpuvqHA" target="_AjwF4Na8EeKPiuTfpuvqHA" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_5ZKSANa8EeKPiuTfpuvqHA" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5ZKSAda8EeKPiuTfpuvqHA" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5ZKSAta8EeKPiuTfpuvqHA" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5ZKSA9a8EeKPiuTfpuvqHA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5ZKSBNa8EeKPiuTfpuvqHA" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5ZKSBda8EeKPiuTfpuvqHA" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5ZKSBta8EeKPiuTfpuvqHA" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5ZKSB9a8EeKPiuTfpuvqHA" x="-35" y="18"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5ZKSCNa8EeKPiuTfpuvqHA" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5ZKSCda8EeKPiuTfpuvqHA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5ZKSCta8EeKPiuTfpuvqHA" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5ZKSC9a8EeKPiuTfpuvqHA" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_5ZBIEda8EeKPiuTfpuvqHA" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_5YuNINa8EeKPiuTfpuvqHA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5ZBIEta8EeKPiuTfpuvqHA" points="[7, 4, -241, 0]$[240, 4, -8, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5ZUDANa8EeKPiuTfpuvqHA" id="(0.95,0.3941908713692946)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5ZUDAda8EeKPiuTfpuvqHA" id="(0.03,0.73)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_cH3WoNbGEeKPiuTfpuvqHA" type="4001" source="_zpKewNa7EeKPiuTfpuvqHA" target="_9IsT4NjiEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_cH3Wo9bGEeKPiuTfpuvqHA" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_cH3WpNbGEeKPiuTfpuvqHA" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_cH3WpdbGEeKPiuTfpuvqHA" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_cH3WptbGEeKPiuTfpuvqHA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_cH3Wp9bGEeKPiuTfpuvqHA" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_cH3WqNbGEeKPiuTfpuvqHA" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_cH3WqdbGEeKPiuTfpuvqHA" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_cH3WqtbGEeKPiuTfpuvqHA" x="-48" y="10"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_cH3Wq9bGEeKPiuTfpuvqHA" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_cH3WrNbGEeKPiuTfpuvqHA" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_cH3WrdbGEeKPiuTfpuvqHA" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_cH3WrtbGEeKPiuTfpuvqHA" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_cH3WodbGEeKPiuTfpuvqHA" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_cHkbsNbGEeKPiuTfpuvqHA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_cH3WotbGEeKPiuTfpuvqHA" points="[5, -6, -94, 0]$[97, -7, -2, -1]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cIBHoNbGEeKPiuTfpuvqHA" id="(0.95,0.49)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cIBHodbGEeKPiuTfpuvqHA" id="(0.022900763358778626,0.31756756756756754)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_A2AAANjLEeKgkM6XJF9t4A" type="4001" source="_52F7ENa7EeKPiuTfpuvqHA" target="_vMekkNjKEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_A2AAA9jLEeKgkM6XJF9t4A" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_A2AABNjLEeKgkM6XJF9t4A" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_A2AABdjLEeKgkM6XJF9t4A" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_A2AABtjLEeKgkM6XJF9t4A" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_A2GGoNjLEeKgkM6XJF9t4A" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_A2GGodjLEeKgkM6XJF9t4A" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_A2GGotjLEeKgkM6XJF9t4A" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_A2GGo9jLEeKgkM6XJF9t4A" x="-52" y="17"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_A2GGpNjLEeKgkM6XJF9t4A" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_A2GGpdjLEeKgkM6XJF9t4A" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_A2GGptjLEeKgkM6XJF9t4A" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_A2GGp9jLEeKgkM6XJF9t4A" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_A2AAAdjLEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_A1nlgNjLEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_A2AAAtjLEeKgkM6XJF9t4A" points="[4, 2, -221, 0]$[222, 1, -3, -1]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_A2MNQNjLEeKgkM6XJF9t4A" id="(0.96,0.820627802690583)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_A2MNQdjLEeKgkM6XJF9t4A" id="(0.014778325123152709,0.47580645161290325)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="__u7_YNjMEeKgkM6XJF9t4A" type="4002" source="_52F7ENa7EeKPiuTfpuvqHA" target="_9IsT4NjiEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="__vCGANjMEeKgkM6XJF9t4A" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__vCGAdjMEeKgkM6XJF9t4A" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="__u7_YdjMEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#__ujk4NjMEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__u7_YtjMEeKgkM6XJF9t4A" points="[25, -12, -69, 32]$[88, -42, -6, 2]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__vCGAtjMEeKgkM6XJF9t4A" id="(0.62,0.053811659192825115)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__vCGA9jMEeKgkM6XJF9t4A" id="(0.08396946564885496,0.59)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_LBg6UNjiEeKQqZMBCFd2Uw" type="4001" source="_52F7ENa7EeKPiuTfpuvqHA" target="_T7HNENbFEeKPiuTfpuvqHA" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_LBg6U9jiEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_LBg6VNjiEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_LBg6VdjiEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_LBg6VtjiEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_LBg6V9jiEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_LBg6WNjiEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_LBg6WdjiEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_LBg6WtjiEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_LBg6W9jiEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_LBg6XNjiEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_LBg6XdjiEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_LBg6XtjiEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_LBg6UdjiEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_LBIf0NjiEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LBg6UtjiEeKQqZMBCFd2Uw" points="[4, -1, -236, 26]$[234, -23, -6, 4]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LBtHkNjiEeKQqZMBCFd2Uw" id="(0.96,0.05394190871369295)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LBtHkdjiEeKQqZMBCFd2Uw" id="(0.05714285714285714,0.88)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_OJgwkNjjEeKQqZMBCFd2Uw" type="4002" source="_Hoi98NjjEeKQqZMBCFd2Uw" target="_9IsT4NjiEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_OJgwk9jjEeKQqZMBCFd2Uw" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_OJgwlNjjEeKQqZMBCFd2Uw" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_OJgwkdjjEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_OJCPcNjjEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OJgwktjjEeKQqZMBCFd2Uw" points="[2, -2, -91, 72]$[90, -64, -3, 10]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OJm3MNjjEeKQqZMBCFd2Uw" id="(0.6,0.02)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OJm3MdjjEeKQqZMBCFd2Uw" id="(0.4122137404580153,0.9)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_zMPcYNjjEeKQqZMBCFd2Uw" type="4002" source="_wpUMoNjjEeKQqZMBCFd2Uw" target="_WunlMNjjEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_zMPcY9jjEeKQqZMBCFd2Uw" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_zMPcZNjjEeKQqZMBCFd2Uw" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_zMPcYdjjEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_zL9IgNjjEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_zMPcYtjjEeKQqZMBCFd2Uw" points="[12, -9, -58, 43]$[67, -47, -3, 5]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zMVjANjjEeKQqZMBCFd2Uw" id="(0.4319526627218935,0.09)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zMVjAdjjEeKQqZMBCFd2Uw" id="(0.37579617834394907,0.95)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_zpCtINjjEeKQqZMBCFd2Uw" type="4002" source="_gqpJcNjjEeKQqZMBCFd2Uw" target="_WunlMNjjEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_zpIzwNjjEeKQqZMBCFd2Uw" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_zpIzwdjjEeKQqZMBCFd2Uw" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_zpCtIdjjEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_zoqSoNjjEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_zpCtItjjEeKQqZMBCFd2Uw" points="[-16, -13, 53, 45]$[-65, -51, 4, 7]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zpIzwtjjEeKQqZMBCFd2Uw" id="(0.4262295081967213,0.13)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zpIzw9jjEeKQqZMBCFd2Uw" id="(0.6942675159235668,0.93)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_0mKcsNjjEeKQqZMBCFd2Uw" type="4002" source="_WunlMNjjEeKQqZMBCFd2Uw" target="_Hoi98NjjEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_0mLq0NjjEeKQqZMBCFd2Uw" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_0mLq0djjEeKQqZMBCFd2Uw" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_0mKcsdjjEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_0lwNANjjEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0mKcstjjEeKQqZMBCFd2Uw" points="[-19, -17, 88, 82]$[-105, -91, 2, 8]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0mOuINjjEeKQqZMBCFd2Uw" id="(0.5031847133757962,0.17)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0mPVMNjjEeKQqZMBCFd2Uw" id="(0.591304347826087,0.92)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_4cX5QNjjEeKQqZMBCFd2Uw" type="4002" source="_1xfAUNjjEeKQqZMBCFd2Uw" target="_Hoi98NjjEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_4cX5Q9jjEeKQqZMBCFd2Uw" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_4cX5RNjjEeKQqZMBCFd2Uw" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_4cX5QdjjEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_4b_ewNjjEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4cX5QtjjEeKQqZMBCFd2Uw" points="[0, 0, -98, 79]$[96, -74, -2, 5]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4cd_4NjjEeKQqZMBCFd2Uw" id="(0.49693251533742333,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4cd_4djjEeKQqZMBCFd2Uw" id="(0.3565217391304348,0.95)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_endM4NjnEeKQqZMBCFd2Uw" type="4001" source="_Hoi98NjjEeKQqZMBCFd2Uw" target="_9IsT4NjiEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_endM49jnEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_endM5NjnEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_endM5djnEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_endM5tjnEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_endM59jnEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_endM6NjnEeKQqZMBCFd2Uw" x="-34" y="-41"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_endM6djnEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_endM6tjnEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_endM69jnEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_endM7NjnEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_endM7djnEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_endM7tjnEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_endM4djnEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_em-rwNjnEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_endM4tjnEeKQqZMBCFd2Uw" points="[0, -4, -89, 78]$[0, -76, -89, 6]$[87, -76, -2, 6]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_enjTgNjnEeKQqZMBCFd2Uw" id="(0.1826086956521739,0.04)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_enjTgdjnEeKQqZMBCFd2Uw" id="(0.015267175572519083,0.84)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_18hy4Nt5EeKwptaAAanMDg" type="4002" source="_9IsT4NjiEeKQqZMBCFd2Uw" target="_zT_qYNt5EeKwptaAAanMDg" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_18hy49t5EeKwptaAAanMDg" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_18hy5Nt5EeKwptaAAanMDg" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_18hy4dt5EeKwptaAAanMDg" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_18JYYNt5EeKwptaAAanMDg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_18hy4tt5EeKwptaAAanMDg" points="[-3, -5, 0, 82]$[-11, -80, -8, 7]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_18n5gNt5EeKwptaAAanMDg" id="(0.5114503816793893,0.033783783783783786)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_18n5gdt5EeKwptaAAanMDg" id="(0.41624365482233505,0.8444444444444444)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_R9IxEOHUEeKCZbxNW-U3VQ" type="4002" source="_z-jdcOHTEeKCZbxNW-U3VQ" target="_52F7ENa7EeKPiuTfpuvqHA" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_R9IxE-HUEeKCZbxNW-U3VQ" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_R9IxFOHUEeKCZbxNW-U3VQ" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_R9IxEeHUEeKCZbxNW-U3VQ" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_R8qP8OHUEeKCZbxNW-U3VQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_R9IxEuHUEeKCZbxNW-U3VQ" points="[-5, -9, 106, 209]$[-109, -206, 2, 12]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_R9O3sOHUEeKCZbxNW-U3VQ" id="(0.25,0.09)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_R9O3seHUEeKCZbxNW-U3VQ" id="(0.58,0.8956521739130435)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_anKh8OHUEeKCZbxNW-U3VQ" type="4002" source="__1eoIOHTEeKCZbxNW-U3VQ" target="_52F7ENa7EeKPiuTfpuvqHA" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_anQokOHUEeKCZbxNW-U3VQ" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_anQokeHUEeKCZbxNW-U3VQ" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_anKh8eHUEeKCZbxNW-U3VQ" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_am4OEOHUEeKCZbxNW-U3VQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_anKh8uHUEeKCZbxNW-U3VQ" points="[-14, -11, 258, 211]$[-263, -208, 9, 14]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_anQokuHUEeKCZbxNW-U3VQ" id="(0.32,0.11)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_anQok-HUEeKCZbxNW-U3VQ" id="(0.78,0.8782608695652174)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_C_qusNa8EeKPiuTfpuvqHA" type="PapyrusUMLClassDiagram" name="property values" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_EH9zgNa8EeKPiuTfpuvqHA" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EH9zgta8EeKPiuTfpuvqHA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EH9zg9a8EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EH9zhNa8EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EH9zhda8EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EH9zhta8EeKPiuTfpuvqHA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EH9zh9a8EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_EH9ziNa8EeKPiuTfpuvqHA" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_EH9zida8EeKPiuTfpuvqHA" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_EH9zita8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_EH9zi9a8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_EH9zjNa8EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EH9zjda8EeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_EH9zjta8EeKPiuTfpuvqHA" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_EH9zj9a8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_EH9zkNa8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_EH9zkda8EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EH9zkta8EeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_EH9zk9a8EeKPiuTfpuvqHA" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_EH9zlNa8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_EH9zlda8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_EH9zlta8EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EH9zl9a8EeKPiuTfpuvqHA"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_AjTZ8Na8EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EH9zgda8EeKPiuTfpuvqHA" x="168" y="252" width="130"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_VpXS4O8UEeK0p4PkXjd-_Q" type="2009" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VpYhAO8UEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VpZIEO8UEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VpZIEe8UEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VpZIEu8UEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VpZIE-8UEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VpZvIO8UEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_VpZvIe8UEeK0p4PkXjd-_Q" type="5032"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_VpZvIu8UEeK0p4PkXjd-_Q" type="7039">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_VpZvI-8UEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_VpZvJO8UEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_VpZvJe8UEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VpZvJu8UEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_VpaWMO8UEeK0p4PkXjd-_Q" type="7040">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_VpaWMe8UEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_VpaWMu8UEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_VpaWM-8UEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VpaWNO8UEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:PrimitiveType" href="layers.uml#_Qeyn4O7GEeK0p4PkXjd-_Q"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VpXS4e8UEeK0p4PkXjd-_Q" x="384" y="66" width="241"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_XZo9sO8UEeK0p4PkXjd-_Q" type="2004" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZpkwO8UEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZpkwe8UEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZpkwu8UEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZpkw-8UEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZpkxO8UEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZpkxe8UEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZENCEO8UEeK0p4PkXjd-_Q" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZENCEe8UEeK0p4PkXjd-_Q" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZENpIO8UEeK0p4PkXjd-_Q" key="StereotypeList" value="Ecore::EClass"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZENpIe8UEeK0p4PkXjd-_Q" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZENpIu8UEeK0p4PkXjd-_Q" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZENpI-8UEeK0p4PkXjd-_Q" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_XZpkxu8UEeK0p4PkXjd-_Q" type="5011"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_XZpkx-8UEeK0p4PkXjd-_Q" type="7006">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_XZpkyO8UEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_XZpkye8UEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_XZqL0O8UEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XZqL0e8UEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_XZqL0u8UEeK0p4PkXjd-_Q" type="7007">
+        <children xmi:type="notation:Shape" xmi:id="_uYj-QO8ZEeK0p4PkXjd-_Q" type="3007" fontName="Segoe UI" lineColor="0">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1Bdk4O8ZEeK0p4PkXjd-_Q" source="CustomAppearance_Annotation">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1Bdk4e8ZEeK0p4PkXjd-_Q" key="CustomAppearance_MaskValue" value="776"/>
+          </eAnnotations>
+          <element xmi:type="uml:Operation" href="layers.uml#_uYMx4O8ZEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_uYj-Qe8ZEeK0p4PkXjd-_Q"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_XZqL0-8UEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_XZqL1O8UEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_XZqL1e8UEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XZqL1u8UEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_XZqL1-8UEeK0p4PkXjd-_Q" type="7008">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_XZqL2O8UEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_XZqL2e8UEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_XZqL2u8UEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XZqL2-8UEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:Interface" href="layers.uml#_XZJOcO8UEeK0p4PkXjd-_Q"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XZo9se8UEeK0p4PkXjd-_Q" x="384" y="234" width="259"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_C_qusda8EeKPiuTfpuvqHA"/>
+    <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+    <edges xmi:type="notation:Connector" xmi:id="_g3VDUO8YEeK0p4PkXjd-_Q" type="4003" source="_EH9zgNa8EeKPiuTfpuvqHA" target="_XZo9sO8UEeK0p4PkXjd-_Q" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_g3WRcO8YEeK0p4PkXjd-_Q" visible="false" type="6008">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_g3WRce8YEeK0p4PkXjd-_Q" y="40"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_g3WRcu8YEeK0p4PkXjd-_Q" visible="false" type="6009">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_g3WRc-8YEeK0p4PkXjd-_Q" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_g3VDUe8YEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+      <element xmi:type="uml:InterfaceRealization" href="layers.uml#_g2QFQO8YEeK0p4PkXjd-_Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_g3VDUu8YEeK0p4PkXjd-_Q" points="[8, -7, -96, 0]$[94, -10, -10, -3]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_g3bJ8O8YEeK0p4PkXjd-_Q" id="(0.9384615384615385,0.31)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_g3bJ8e8YEeK0p4PkXjd-_Q" id="(0.04219409282700422,0.3157894736842105)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_QLWs4Na8EeKPiuTfpuvqHA" type="PapyrusUMLClassDiagram" name="datatypes" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_RJ_fYNa8EeKPiuTfpuvqHA" type="2009" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RJ_fYta8EeKPiuTfpuvqHA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RJ_fY9a8EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RJ_fZNa8EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RJ_fZda8EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RJ_fZta8EeKPiuTfpuvqHA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RJ_fZ9a8EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_RJ_faNa8EeKPiuTfpuvqHA" type="5032"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_RKJQYNa8EeKPiuTfpuvqHA" type="7039">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_RKJQYda8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_RKJQYta8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_RKJQY9a8EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RKJQZNa8EeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_RKJQZda8EeKPiuTfpuvqHA" type="7040">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_RKJQZta8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_RKJQZ9a8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_RKJQaNa8EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RKJQada8EeKPiuTfpuvqHA"/>
+      </children>
+      <element xmi:type="uml:PrimitiveType" href="layers.uml#_OyQ5QL1xEeKKJJ5BmR3W3Q"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RJ_fYda8EeKPiuTfpuvqHA" x="36" y="30"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_SukQgNa8EeKPiuTfpuvqHA" type="2009" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SukQgta8EeKPiuTfpuvqHA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SukQg9a8EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SukQhNa8EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SukQhda8EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SukQhta8EeKPiuTfpuvqHA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SukQh9a8EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wy62w9a8EeKPiuTfpuvqHA" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wy62xNa8EeKPiuTfpuvqHA" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wy62xda8EeKPiuTfpuvqHA" key="StereotypeList" value="Ecore::EDataType"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wy62xta8EeKPiuTfpuvqHA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wy62x9a8EeKPiuTfpuvqHA" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wy62yNa8EeKPiuTfpuvqHA" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_SukQiNa8EeKPiuTfpuvqHA" type="5032"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_SukQida8EeKPiuTfpuvqHA" type="7039">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_SukQita8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_SukQi9a8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_SukQjNa8EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SukQjda8EeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_SukQjta8EeKPiuTfpuvqHA" type="7040">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_SukQj9a8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_SukQkNa8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_SukQkda8EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SukQkta8EeKPiuTfpuvqHA"/>
+      </children>
+      <element xmi:type="uml:PrimitiveType" href="layers.uml#_SuHkkNa8EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SukQgda8EeKPiuTfpuvqHA" x="192" y="30"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Tq9nUNa8EeKPiuTfpuvqHA" type="2009" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Tq9nUta8EeKPiuTfpuvqHA" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Tq9nU9a8EeKPiuTfpuvqHA" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Tq9nVNa8EeKPiuTfpuvqHA" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Tq9nVda8EeKPiuTfpuvqHA" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Tq9nVta8EeKPiuTfpuvqHA" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Tq9nV9a8EeKPiuTfpuvqHA" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZD0iYNa8EeKPiuTfpuvqHA" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZD0iYda8EeKPiuTfpuvqHA" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZD0iYta8EeKPiuTfpuvqHA" key="StereotypeList" value="Ecore::EDataType"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZD0iY9a8EeKPiuTfpuvqHA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZD0iZNa8EeKPiuTfpuvqHA" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZD0iZda8EeKPiuTfpuvqHA" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Tq9nWNa8EeKPiuTfpuvqHA" type="5032"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Tq9nWda8EeKPiuTfpuvqHA" type="7039">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Tq9nWta8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Tq9nW9a8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Tq9nXNa8EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Tq9nXda8EeKPiuTfpuvqHA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Tq9nXta8EeKPiuTfpuvqHA" type="7040">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Tq9nX9a8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Tq9nYNa8EeKPiuTfpuvqHA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Tq9nYda8EeKPiuTfpuvqHA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Tq9nYta8EeKPiuTfpuvqHA"/>
+      </children>
+      <element xmi:type="uml:PrimitiveType" href="layers.uml#_TqqsYNa8EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Tq9nUda8EeKPiuTfpuvqHA" x="348" y="30"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_c1uu0NheEeKgkM6XJF9t4A" type="2009" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_c1uu0theEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_c1uu09heEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_c1uu1NheEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_c1uu1dheEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_c1uu1theEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_c1uu19heEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_g91zsNheEeKgkM6XJF9t4A" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g91zsdheEeKgkM6XJF9t4A" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g91zstheEeKgkM6XJF9t4A" key="StereotypeList" value="Ecore::EDataType"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g91zs9heEeKgkM6XJF9t4A" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g91ztNheEeKgkM6XJF9t4A" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g91ztdheEeKgkM6XJF9t4A" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_c1uu2NheEeKgkM6XJF9t4A" type="5032"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_c1uu2dheEeKgkM6XJF9t4A" type="7039">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_c1uu2theEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_c1uu29heEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_c1uu3NheEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_c1uu3dheEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_c1uu3theEeKgkM6XJF9t4A" type="7040">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_c1uu39heEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_c1uu4NheEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_c1uu4dheEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_c1uu4theEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:PrimitiveType" href="layers.uml#_c1QNsNheEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_c1uu0dheEeKgkM6XJF9t4A" x="36" y="198"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_lV_fsNheEeKgkM6XJF9t4A" type="2009" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lV_fstheEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lV_fs9heEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lV_ftNheEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lV_ftdheEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lV_fttheEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lV_ft9heEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qH1eENheEeKgkM6XJF9t4A" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qH1eEdheEeKgkM6XJF9t4A" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qH1eEtheEeKgkM6XJF9t4A" key="StereotypeList" value="Ecore::EDataType"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qH1eE9heEeKgkM6XJF9t4A" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qH1eFNheEeKgkM6XJF9t4A" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qH1eFdheEeKgkM6XJF9t4A" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_lV_fuNheEeKgkM6XJF9t4A" type="5032"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_lV_fudheEeKgkM6XJF9t4A" type="7039">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_lV_futheEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_lV_fu9heEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_lV_fvNheEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lV_fvdheEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_lV_fvtheEeKgkM6XJF9t4A" type="7040">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_lV_fv9heEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_lV_fwNheEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_lV_fwdheEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lV_fwtheEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:PrimitiveType" href="layers.uml#_lVnFMNheEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lV_fsdheEeKgkM6XJF9t4A" x="240" y="198" height="103"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_QfRJAO7GEeK0p4PkXjd-_Q" type="2009" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QfRJAu7GEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QfRJA-7GEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QfRJBO7GEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QfRJBe7GEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QfRJBu7GEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QfRJB-7GEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Udvww-7GEeK0p4PkXjd-_Q" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UdvwxO7GEeK0p4PkXjd-_Q" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Udvwxe7GEeK0p4PkXjd-_Q" key="StereotypeList" value="Ecore::EDataType"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Udvwxu7GEeK0p4PkXjd-_Q" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Udvwx-7GEeK0p4PkXjd-_Q" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UdvwyO7GEeK0p4PkXjd-_Q" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_QfRJCO7GEeK0p4PkXjd-_Q" type="5032"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_QfRJCe7GEeK0p4PkXjd-_Q" type="7039">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_QfRJCu7GEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_QfRJC-7GEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_QfRJDO7GEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QfRJDe7GEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_QfRJDu7GEeK0p4PkXjd-_Q" type="7040">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_QfRJD-7GEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_QfRJEO7GEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_QfRJEe7GEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QfRJEu7GEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:PrimitiveType" href="layers.uml#_Qeyn4O7GEeK0p4PkXjd-_Q"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QfRJAe7GEeK0p4PkXjd-_Q" x="60" y="366" width="241"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_QLWs4da8EeKPiuTfpuvqHA"/>
+    <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_XXUswNhbEeKgkM6XJF9t4A" type="PapyrusUMLClassDiagram" name="Property" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_bHaTMNhbEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bHaTMthbEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bHgZ0NhbEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bHgZ0dhbEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bHgZ0thbEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bHgZ09hbEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bHgZ1NhbEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bHgZ1dhbEeKgkM6XJF9t4A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bHgZ1thbEeKgkM6XJF9t4A" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_sdoisNhcEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_sdWO0NhcEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_sdoisdhcEeKgkM6XJF9t4A"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_hUWEoNhdEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_hT9qINhdEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_hUWEodhdEeKgkM6XJF9t4A"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_HlSkkO3qEeKwLp35IbAIig" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_HjktUO3qEeKwLp35IbAIig"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_HlSkke3qEeKwLp35IbAIig"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bHgZ19hbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bHgZ2NhbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bHgZ2dhbEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bHgZ2thbEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bHgZ29hbEeKgkM6XJF9t4A" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_9LXrUNhcEeKgkM6XJF9t4A" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_9LLeENhcEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_9LXrUdhcEeKgkM6XJF9t4A"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bHgZ3NhbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bHgZ3dhbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bHgZ3thbEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bHgZ39hbEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bHgZ4NhbEeKgkM6XJF9t4A" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bHgZ4dhbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bHgZ4thbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bHgZ49hbEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bHgZ5NhbEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_-vaacNa7EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bHaTMdhbEeKgkM6XJF9t4A" x="96" y="150" height="385"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_bvJBkNhbEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bvJBkthbEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bvJBk9hbEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bvJBlNhbEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bvJBldhbEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bvJBlthbEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bvJBl9hbEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bvJBmNhbEeKgkM6XJF9t4A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bvJBmdhbEeKgkM6XJF9t4A" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bvJBmthbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bvJBm9hbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bvJBnNhbEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bvJBndhbEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bvJBnthbEeKgkM6XJF9t4A" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_ZGIS4EczEeOEBJ2PxFQgyQ" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_ZFFKAEczEeOEBJ2PxFQgyQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_ZGIS4UczEeOEBJ2PxFQgyQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_oKCn4Ec8EeOEBJ2PxFQgyQ" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_oJwUAEc8EeOEBJ2PxFQgyQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_oKCn4Uc8EeOEBJ2PxFQgyQ"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bvJBn9hbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bvJBoNhbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bvJBodhbEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bvJBothbEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_bvJBo9hbEeKgkM6XJF9t4A" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_bvJBpNhbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_bvJBpdhbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_bvJBpthbEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bvJBp9hbEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_AjTZ8Na8EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bvJBkdhbEeKgkM6XJF9t4A" x="378" y="426" width="205"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_EoeLgNhcEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EoeLgthcEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EoeLg9hcEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EoeLhNhcEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EoeLhdhcEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EoeLhthcEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EoeLh9hcEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_EoeLiNhcEeKgkM6XJF9t4A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_EoeLidhcEeKgkM6XJF9t4A" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_oT_MwNhcEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_oTs44NhcEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_oT_MwdhcEeKgkM6XJF9t4A"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_kq6-4NhdEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_kquxoNhdEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kq6-4dhdEeKgkM6XJF9t4A"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_EoeLithcEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_EoeLi9hcEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_EoeLjNhcEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EoeLjdhcEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_EoeLjthcEeKgkM6XJF9t4A" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_YqkrENhgEeKgkM6XJF9t4A" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_VRDxkNhgEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_YqkrEdhgEeKgkM6XJF9t4A" x="79" y="4"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_EoeLj9hcEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_EoeLkNhcEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_EoeLkdhcEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EoeLkthcEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_EoeLk9hcEeKgkM6XJF9t4A" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_EoeLlNhcEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_EoeLldhcEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_EoeLlthcEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EoeLl9hcEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_EoL3oNhcEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EoeLgdhcEeKgkM6XJF9t4A" x="378" y="144"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_I4Ip4NhcEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_I4Ip4thcEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_I4Ip49hcEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_I4Ip5NhcEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_I4Ip5dhcEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_I4Ip5thcEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_I4Ip59hcEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_I4Ip6NhcEeKgkM6XJF9t4A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_I4Ip6dhcEeKgkM6XJF9t4A" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_r6sYQNhdEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_r6aEYNhdEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_r6sYQdhdEeKgkM6XJF9t4A"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_viIZANhdEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_vhv-gNhdEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_viIZAdhdEeKgkM6XJF9t4A"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_i5_scNhgEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_i5nR8NhgEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_i5_scdhgEeKgkM6XJF9t4A"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_mSjjsNhgEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_mR_jANhgEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_mSjjsdhgEeKgkM6XJF9t4A"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_pk2a4NhgEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_pkeAYNhgEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_pk2a4dhgEeKgkM6XJF9t4A"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="__M_A8NhgEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#__MsGANhgEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="__M_A8dhgEeKgkM6XJF9t4A"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_I4Ip6thcEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_I4Ip69hcEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_I4Ip7NhcEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_I4Ip7dhcEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_I4Ip7thcEeKgkM6XJF9t4A" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_K3ckUNheEeKgkM6XJF9t4A" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_K3KQcNheEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_K3ckUdheEeKgkM6XJF9t4A"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_I4Ip79hcEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_I4Ip8NhcEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_I4Ip8dhcEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_I4Ip8thcEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_I4Ip89hcEeKgkM6XJF9t4A" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_I4Ip9NhcEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_I4Ip9dhcEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_I4Ip9thcEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_I4Ip99hcEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_I3wPYNhcEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_I4Ip4dhcEeKgkM6XJF9t4A" x="924" y="144"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_RF_msNhdEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RF_msthdEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RF_ms9hdEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RF_mtNhdEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RF_mtdhdEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RF_mtthdEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RF_mt9hdEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_RF_muNhdEeKgkM6XJF9t4A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_RF_mudhdEeKgkM6XJF9t4A" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_RF_muthdEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_RF_mu9hdEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_RF_mvNhdEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RF_mvdhdEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_RF_mvthdEeKgkM6XJF9t4A" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_RF_mv9hdEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_RF_mwNhdEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_RF_mwdhdEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RF_mwthdEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_RF_mw9hdEeKgkM6XJF9t4A" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_RF_mxNhdEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_RF_mxdhdEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_RF_mxthdEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RF_mx9hdEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_ggM80NhbEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RF_msdhdEeKgkM6XJF9t4A" x="96" y="12" width="169"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_6SDikNhhEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6SDikthhEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6SDik9hhEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6SDilNhhEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6SDildhhEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6SDilthhEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6SDil9hhEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_6SDimNhhEeKgkM6XJF9t4A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_6SDimdhhEeKgkM6XJF9t4A" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_HJqRsNhjEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_HJX90NhjEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_HJqRsdhjEeKgkM6XJF9t4A"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_6SDimthhEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_6SDim9hhEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_6SDinNhhEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6SDindhhEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_6SDinthhEeKgkM6XJF9t4A" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_6SDin9hhEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_6SDioNhhEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_6SDiodhhEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6SDiothhEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_6SDio9hhEeKgkM6XJF9t4A" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_6SDipNhhEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_6SDipdhhEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_6SDipthhEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6SDip9hhEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_6RrIENhhEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6SDikdhhEeKgkM6XJF9t4A" x="300" y="582"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_-zGr4NhhEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-zGr4thhEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-zGr49hhEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-zGr5NhhEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-zGr5dhhEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-zGr5thhEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-zGr59hhEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_-zGr6NhhEeKgkM6XJF9t4A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_-zGr6dhhEeKgkM6XJF9t4A" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_lMxgANhjEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_lMfMINhjEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_lMxgAdhjEeKgkM6XJF9t4A"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_-zGr6thhEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_-zGr69hhEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_-zGr7NhhEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-zGr7dhhEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_-zGr7thhEeKgkM6XJF9t4A" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_-zGr79hhEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_-zGr8NhhEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_-zGr8dhhEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-zGr8thhEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_-zGr89hhEeKgkM6XJF9t4A" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_-zGr9NhhEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_-zGr9dhhEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_-zGr9thhEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-zGr99hhEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_-yuRYNhhEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-zGr4dhhEeKgkM6XJF9t4A" x="444" y="582"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_CxJOwNhiEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CxJOwthiEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CxJOw9hiEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CxJOxNhiEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CxJOxdhiEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CxJOxthiEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CxJOx9hiEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_CxPVYNhiEeKgkM6XJF9t4A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CxPVYdhiEeKgkM6XJF9t4A" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_oRl74NhjEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_oRNhYNhjEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_oRl74dhjEeKgkM6XJF9t4A"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_CxPVYthiEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_CxPVY9hiEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_CxPVZNhiEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CxPVZdhiEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CxPVZthiEeKgkM6XJF9t4A" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_CxPVZ9hiEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_CxPVaNhiEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_CxPVadhiEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CxPVathiEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CxPVa9hiEeKgkM6XJF9t4A" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_CxPVbNhiEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_CxPVbdhiEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_CxPVbthiEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CxPVb9hiEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_Cww0QNhiEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CxJOwdhiEeKgkM6XJF9t4A" x="594" y="582"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_6xipANhjEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6xipAthjEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6xipA9hjEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6xipBNhjEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6xipBdhjEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6xipBthjEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6xipB9hjEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_6xipCNhjEeKgkM6XJF9t4A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_6xipCdhjEeKgkM6XJF9t4A" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_6xipCthjEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_6xipC9hjEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_6xipDNhjEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6xipDdhjEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_6xipDthjEeKgkM6XJF9t4A" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_6xipD9hjEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_6xipENhjEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_6xipEdhjEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6xipEthjEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_6xipE9hjEeKgkM6XJF9t4A" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_6xipFNhjEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_6xipFdhjEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_6xipFthjEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6xipF9hjEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_6xEH4NhjEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6xipAdhjEeKgkM6XJF9t4A" x="300" y="318" height="55"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="__i1NwNhjEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__i7UYNhjEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__i7UYdhjEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__i7UYthjEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__i7UY9hjEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__i7UZNhjEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__i7UZdhjEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="__i7UZthjEeKgkM6XJF9t4A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__i7UZ9hjEeKgkM6XJF9t4A" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__i7UaNhjEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__i7UadhjEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__i7UathjEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__i7Ua9hjEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__i7UbNhjEeKgkM6XJF9t4A" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__i7UbdhjEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__i7UbthjEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__i7Ub9hjEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__i7UcNhjEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__i7UcdhjEeKgkM6XJF9t4A" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__i7UcthjEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__i7Uc9hjEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__i7UdNhjEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__i7UddhjEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#__iczQNhjEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__i1NwdhjEeKgkM6XJF9t4A" x="420" y="318" height="55"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_E4NXANhkEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_E4NXAthkEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_E4NXA9hkEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_E4NXBNhkEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_E4NXBdhkEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_E4NXBthkEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_E4NXB9hkEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_E4NXCNhkEeKgkM6XJF9t4A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_E4NXCdhkEeKgkM6XJF9t4A" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_E4NXCthkEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_E4NXC9hkEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_E4NXDNhkEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E4NXDdhkEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_E4NXDthkEeKgkM6XJF9t4A" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_E4NXD9hkEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_E4NXENhkEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_E4NXEdhkEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E4NXEthkEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_E4NXE9hkEeKgkM6XJF9t4A" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_E4NXFNhkEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_E4NXFdhkEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_E4NXFthkEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E4NXF9hkEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_E308gNhkEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E4NXAdhkEeKgkM6XJF9t4A" x="540" y="318" height="48"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_J6bTsNhkEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_J6bTsthkEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_J6bTs9hkEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_J6bTtNhkEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_J6bTtdhkEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_J6bTtthkEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_J6bTt9hkEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_J6bTuNhkEeKgkM6XJF9t4A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_J6bTudhkEeKgkM6XJF9t4A" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_U0-VsNhkEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_U0l7MNhkEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_U0-VsdhkEeKgkM6XJF9t4A"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_J6bTuthkEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_J6bTu9hkEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_J6bTvNhkEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J6bTvdhkEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_J6bTvthkEeKgkM6XJF9t4A" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_J6bTv9hkEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_J6bTwNhkEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_J6bTwdhkEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J6bTwthkEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_J6bTw9hkEeKgkM6XJF9t4A" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_J6bTxNhkEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_J6bTxdhkEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_J6bTxthkEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J6bTx9hkEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_J6C5MNhkEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J6bTsdhkEeKgkM6XJF9t4A" x="660" y="318" width="181" height="73"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_agYdYNxWEeKwptaAAanMDg" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_agekANxWEeKwptaAAanMDg" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_agekAdxWEeKwptaAAanMDg" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_agekAtxWEeKwptaAAanMDg" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_agekA9xWEeKwptaAAanMDg" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_agekBNxWEeKwptaAAanMDg" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_agekBdxWEeKwptaAAanMDg" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_agekBtxWEeKwptaAAanMDg" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_agekB9xWEeKwptaAAanMDg" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_agekCNxWEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_agekCdxWEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_agekCtxWEeKwptaAAanMDg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_agekC9xWEeKwptaAAanMDg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_agekDNxWEeKwptaAAanMDg" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_OVcVENxXEeKwptaAAanMDg" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_OU7XsNxXEeKwptaAAanMDg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_OVcVEdxXEeKwptaAAanMDg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_agekDdxWEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_agekDtxWEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_agekD9xWEeKwptaAAanMDg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_agekENxWEeKwptaAAanMDg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_agekEdxWEeKwptaAAanMDg" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_agekEtxWEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_agekE9xWEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_agekFNxWEeKwptaAAanMDg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_agekFdxWEeKwptaAAanMDg"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_agAC4NxWEeKwptaAAanMDg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_agYdYdxWEeKwptaAAanMDg" x="174" y="582"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_XXUswdhbEeKgkM6XJF9t4A"/>
+    <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+    <edges xmi:type="notation:Connector" xmi:id="_L2wXINhcEeKgkM6XJF9t4A" type="4001" source="_bHaTMNhbEeKgkM6XJF9t4A" target="_EoeLgNhcEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_L2wXI9hcEeKgkM6XJF9t4A" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_L2wXJNhcEeKgkM6XJF9t4A" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_L2wXJdhcEeKgkM6XJF9t4A" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_L2wXJthcEeKgkM6XJF9t4A" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_L2wXJ9hcEeKgkM6XJF9t4A" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_L2wXKNhcEeKgkM6XJF9t4A" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_L2wXKdhcEeKgkM6XJF9t4A" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_L2wXKthcEeKgkM6XJF9t4A" x="-33" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_L2wXK9hcEeKgkM6XJF9t4A" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_L2wXLNhcEeKgkM6XJF9t4A" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_L2wXLdhcEeKgkM6XJF9t4A" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_L2wXLthcEeKgkM6XJF9t4A" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_L2wXIdhcEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_L2X8oNhcEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_L2wXIthcEeKgkM6XJF9t4A" points="[4, 6, -164, 0]$[160, 5, -8, -1]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_L28kYNhcEeKgkM6XJF9t4A" id="(0.9682539682539683,0.16591928251121077)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_L28kYdhcEeKgkM6XJF9t4A" id="(0.011764705882352941,0.3709677419354839)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_O7bCANhcEeKgkM6XJF9t4A" type="4001" source="_bHaTMNhbEeKgkM6XJF9t4A" target="_bvJBkNhbEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7bCA9hcEeKgkM6XJF9t4A" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_O7bCBNhcEeKgkM6XJF9t4A" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7bCBdhcEeKgkM6XJF9t4A" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_O7bCBthcEeKgkM6XJF9t4A" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7bCB9hcEeKgkM6XJF9t4A" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_O7bCCNhcEeKgkM6XJF9t4A" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7bCCdhcEeKgkM6XJF9t4A" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_O7bCCthcEeKgkM6XJF9t4A" x="-47" y="17"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7hIoNhcEeKgkM6XJF9t4A" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_O7hIodhcEeKgkM6XJF9t4A" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7hIothcEeKgkM6XJF9t4A" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_O7hIo9hcEeKgkM6XJF9t4A" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_O7bCAdhcEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_O7IuINhcEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_O7bCAthcEeKgkM6XJF9t4A" points="[7, 2, -165, 0]$[163, 5, -9, 3]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7nPQNhcEeKgkM6XJF9t4A" id="(0.9764705882352941,0.8859934853420195)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7nPQdhcEeKgkM6XJF9t4A" id="(0.09,0.65)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_khaTANhcEeKgkM6XJF9t4A" type="4001" source="_J6bTsNhkEeKgkM6XJF9t4A" target="_I4Ip4NhcEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_khaTA9hcEeKgkM6XJF9t4A" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_khaTBNhcEeKgkM6XJF9t4A" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_khaTBdhcEeKgkM6XJF9t4A" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_khaTBthcEeKgkM6XJF9t4A" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_khaTB9hcEeKgkM6XJF9t4A" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_khaTCNhcEeKgkM6XJF9t4A" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_khaTCdhcEeKgkM6XJF9t4A" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_khaTCthcEeKgkM6XJF9t4A" x="-32" y="23"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_khaTC9hcEeKgkM6XJF9t4A" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_khaTDNhcEeKgkM6XJF9t4A" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_khaTDdhcEeKgkM6XJF9t4A" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_khaTDthcEeKgkM6XJF9t4A" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_khaTAdhcEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_khB4gNhcEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_khaTAthcEeKgkM6XJF9t4A" points="[7, -6, -114, 103]$[118, -107, -3, 2]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_khmgQNhcEeKgkM6XJF9t4A" id="(0.96,0.28)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_khmgQdhcEeKgkM6XJF9t4A" id="(0.039525691699604744,0.8604651162790697)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_YRoG8NhdEeKgkM6XJF9t4A" type="4002" source="_bHaTMNhbEeKgkM6XJF9t4A" target="_RF_msNhdEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_YRuNkNhdEeKgkM6XJF9t4A" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_YRuNkdhdEeKgkM6XJF9t4A" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_YRoG8dhdEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_YRb5sNhdEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YRoG8thdEeKgkM6XJF9t4A" points="[0, -4, 0, 48]$[-2, -42, -2, 10]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YRuNkthdEeKgkM6XJF9t4A" id="(0.47368421052631576,0.017937219730941704)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YRuNk9hdEeKgkM6XJF9t4A" id="(0.45323741007194246,0.9)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_5UPMQNhdEeKgkM6XJF9t4A" type="4002" source="_EoeLgNhcEeKgkM6XJF9t4A" target="_RF_msNhdEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_5UPMQ9hdEeKgkM6XJF9t4A" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5UPMRNhdEeKgkM6XJF9t4A" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_5UPMQdhdEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_5T84YNhdEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5UPMQthdEeKgkM6XJF9t4A" points="[-13, -4, 179, 58]$[-177, -57, 15, 5]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5UV58NhdEeKgkM6XJF9t4A" id="(0.3764705882352941,0.03225806451612903)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5UV58dhdEeKgkM6XJF9t4A" id="(0.9112426035502958,0.74)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_7u0_YNhdEeKgkM6XJF9t4A" type="4002" source="_I4Ip4NhcEeKgkM6XJF9t4A" target="_RF_msNhdEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_7u0_Y9hdEeKgkM6XJF9t4A" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_7u0_ZNhdEeKgkM6XJF9t4A" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_7u0_YdhdEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_7uWeQNhdEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7u0_YthdEeKgkM6XJF9t4A" points="[-24, -5, 419, 89]$[-432, -96, 11, -2]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7u0_ZdhdEeKgkM6XJF9t4A" id="(0.2529411764705882,0.04032258064516129)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7u7GANhdEeKgkM6XJF9t4A" id="(0.9349112426035503,0.43)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_g5zEYNhiEeKgkM6XJF9t4A" type="4002" source="_6SDikNhhEeKgkM6XJF9t4A" target="_bvJBkNhbEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_g5zEY9hiEeKgkM6XJF9t4A" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_g5zEZNhiEeKgkM6XJF9t4A" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_g5zEYdhiEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_g5ap4NhiEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_g5zEYthiEeKgkM6XJF9t4A" points="[3, -3, -68, 60]$[70, -59, -1, 4]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_g55LANhiEeKgkM6XJF9t4A" id="(0.51,0.03)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_g55LAdhiEeKgkM6XJF9t4A" id="(0.44,0.96)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_klsuYNhiEeKgkM6XJF9t4A" type="4002" source="_-zGr4NhhEeKgkM6XJF9t4A" target="_bvJBkNhbEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_klsuY9hiEeKgkM6XJF9t4A" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_klsuZNhiEeKgkM6XJF9t4A" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_klsuYdhiEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_klghINhiEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_klsuYthiEeKgkM6XJF9t4A" points="[-3, -3, 52, 61]$[-55, -59, 0, 5]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kly1ANhiEeKgkM6XJF9t4A" id="(0.44,0.03)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kly1AdhiEeKgkM6XJF9t4A" id="(0.55,0.95)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_mlyW0NhiEeKgkM6XJF9t4A" type="4002" source="_CxJOwNhiEeKgkM6XJF9t4A" target="_bvJBkNhbEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_mlyW09hiEeKgkM6XJF9t4A" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_mlyW1NhiEeKgkM6XJF9t4A" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_mlyW0dhiEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_mlgC8NhiEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_mlyW0thiEeKgkM6XJF9t4A" points="[-23, -12, 136, 67]$[-150, -67, 9, 12]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ml4dcNhiEeKgkM6XJF9t4A" id="(0.23,0.11)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ml4dcdhiEeKgkM6XJF9t4A" id="(0.8,0.88)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_n32JsNhkEeKgkM6XJF9t4A" type="4002" source="_6xipANhjEeKgkM6XJF9t4A" target="_EoeLgNhcEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_n38QUNhkEeKgkM6XJF9t4A" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_n38QUdhkEeKgkM6XJF9t4A" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_n32JsdhkEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_n3p8cNhkEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_n32JsthkEeKgkM6XJF9t4A" points="[7, -5, -63, 44]$[66, -44, -4, 5]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_n38QUthkEeKgkM6XJF9t4A" id="(0.52,0.09090909090909091)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_n38QU9hkEeKgkM6XJF9t4A" id="(0.25882352941176473,0.9629629629629629)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_rg2QsNhkEeKgkM6XJF9t4A" type="4002" source="__i1NwNhjEeKgkM6XJF9t4A" target="_EoeLgNhcEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_rg23wNhkEeKgkM6XJF9t4A" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_rg23wdhkEeKgkM6XJF9t4A" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_rg2QsdhkEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_rgmZENhkEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rg2QsthkEeKgkM6XJF9t4A" points="[0, -7, 0, 48]$[0, -46, 0, 9]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rg7JMNhkEeKgkM6XJF9t4A" id="(0.43,0.12727272727272726)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rg7JMdhkEeKgkM6XJF9t4A" id="(0.5,0.9333333333333333)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_tdN2wNhkEeKgkM6XJF9t4A" type="4002" source="_E4NXANhkEeKgkM6XJF9t4A" target="_EoeLgNhcEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_tdN2w9hkEeKgkM6XJF9t4A" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_tdN2xNhkEeKgkM6XJF9t4A" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_tdN2wdhkEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_tdBpgNhkEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_tdN2wthkEeKgkM6XJF9t4A" points="[-10, -11, 39, 45]$[-45, -50, 4, 6]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tdT9YNhkEeKgkM6XJF9t4A" id="(0.23,0.22916666666666666)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tdT9YdhkEeKgkM6XJF9t4A" id="(0.8,0.9555555555555556)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_wLqaANhkEeKgkM6XJF9t4A" type="4002" source="_J6bTsNhkEeKgkM6XJF9t4A" target="_EoeLgNhcEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_wLqaA9hkEeKgkM6XJF9t4A" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_wLqaBNhkEeKgkM6XJF9t4A" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_wLqaAdhkEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_wLYGINhkEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_wLqaAthkEeKgkM6XJF9t4A" points="[-19, -7, 128, 48]$[-142, -52, 5, 3]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wLqaBdhkEeKgkM6XJF9t4A" id="(0.19607843137254902,0.12727272727272726)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wLqaBthkEeKgkM6XJF9t4A" id="(0.9705882352941176,0.9333333333333333)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_drg8oNxWEeKwptaAAanMDg" type="4002" source="_agYdYNxWEeKwptaAAanMDg" target="_bvJBkNhbEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_drg8o9xWEeKwptaAAanMDg" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_drg8pNxWEeKwptaAAanMDg" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_drg8odxWEeKwptaAAanMDg" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_drCbgNxWEeKwptaAAanMDg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_drg8otxWEeKwptaAAanMDg" points="[9, -4, -135, 59]$[141, -60, -3, 3]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_drnqUNxWEeKwptaAAanMDg" id="(0.7,0.04)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_drnqUdxWEeKwptaAAanMDg" id="(0.1,0.97)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_ePKuUNhbEeKgkM6XJF9t4A" type="PapyrusUMLClassDiagram" name="packages" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_fBRgsNhbEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fBRgsthbEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fBRgs9hbEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fBRgtNhbEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fBRgtdhbEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fBRgtthbEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fBRgt9hbEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_fBRguNhbEeKgkM6XJF9t4A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_fBRgudhbEeKgkM6XJF9t4A" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_pSg0ENhoEeKgkM6XJF9t4A" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_pSIZkNhoEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_pSg0EdhoEeKgkM6XJF9t4A"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_fBRguthbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_fBRgu9hbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_fBRgvNhbEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fBRgvdhbEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_fBXnUNhbEeKgkM6XJF9t4A" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_fBXnUdhbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_fBXnUthbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_fBXnU9hbEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fBXnVNhbEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_fBXnVdhbEeKgkM6XJF9t4A" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_fBXnVthbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_fBXnV9hbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_fBXnWNhbEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fBXnWdhbEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_fAmyUNhbEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fBRgsdhbEeKgkM6XJF9t4A" x="212" y="111"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_gglXUNhbEeKgkM6XJF9t4A" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gglXUthbEeKgkM6XJF9t4A" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gglXU9hbEeKgkM6XJF9t4A" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gglXVNhbEeKgkM6XJF9t4A" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gglXVdhbEeKgkM6XJF9t4A" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gglXVthbEeKgkM6XJF9t4A" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gglXV9hbEeKgkM6XJF9t4A" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_gglXWNhbEeKgkM6XJF9t4A" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gglXWdhbEeKgkM6XJF9t4A" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gglXWthbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gglXW9hbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gglXXNhbEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gglXXdhbEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gglXXthbEeKgkM6XJF9t4A" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gglXX9hbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gglXYNhbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gglXYdhbEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gglXYthbEeKgkM6XJF9t4A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gglXY9hbEeKgkM6XJF9t4A" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gglXZNhbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gglXZdhbEeKgkM6XJF9t4A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gglXZthbEeKgkM6XJF9t4A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gglXZ9hbEeKgkM6XJF9t4A"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_ggM80NhbEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gglXUdhbEeKgkM6XJF9t4A" x="510" y="108" width="145" height="103"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_ePKuUdhbEeKgkM6XJF9t4A"/>
+    <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+    <edges xmi:type="notation:Connector" xmi:id="_jtwd8NhbEeKgkM6XJF9t4A" type="4001" source="_fBRgsNhbEeKgkM6XJF9t4A" target="_gglXUNhbEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_jtwd89hbEeKgkM6XJF9t4A" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jtwd9NhbEeKgkM6XJF9t4A" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jtwd9dhbEeKgkM6XJF9t4A" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jtwd9thbEeKgkM6XJF9t4A" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jtwd99hbEeKgkM6XJF9t4A" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jtwd-NhbEeKgkM6XJF9t4A" x="13" y="-19"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jtwd-dhbEeKgkM6XJF9t4A" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jtwd-thbEeKgkM6XJF9t4A" x="-21" y="17"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jtwd-9hbEeKgkM6XJF9t4A" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jtwd_NhbEeKgkM6XJF9t4A" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_jtwd_dhbEeKgkM6XJF9t4A" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jtwd_thbEeKgkM6XJF9t4A" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_jtwd8dhbEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_jtR80NhbEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jtwd8thbEeKgkM6XJF9t4A" points="[10, -7, -200, 0]$[208, -8, -2, -1]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_juCx0NhbEeKgkM6XJF9t4A" id="(0.9,0.45)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_juCx0dhbEeKgkM6XJF9t4A" id="(0.013793103448275862,0.41)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_6nHbUNhbEeKgkM6XJF9t4A" type="4002" source="_fBRgsNhbEeKgkM6XJF9t4A" target="_gglXUNhbEeKgkM6XJF9t4A" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_6nNh8NhbEeKgkM6XJF9t4A" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_6nNh8dhbEeKgkM6XJF9t4A" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_6nHbUdhbEeKgkM6XJF9t4A" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_6l23ENhbEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_6nHbUthbEeKgkM6XJF9t4A" points="[9, 2, -202, 0]$[207, 3, -4, 1]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6nTokNhbEeKgkM6XJF9t4A" id="(0.91,0.79)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6nTokdhbEeKgkM6XJF9t4A" id="(0.027586206896551724,0.8155339805825242)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_Dtu4wNjkEeKQqZMBCFd2Uw" type="PapyrusUMLClassDiagram" name="Layer" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_Uvsk8NjkEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uvsk8tjkEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uvsk89jkEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uvsk9NjkEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uvsk9djkEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uvsk9tjkEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uvsk99jkEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Uvsk-NjkEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Uvsk-djkEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Uvsk-tjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Uvsk-9jkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Uvsk_NjkEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uvsk_djkEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Uvsk_tjkEeKQqZMBCFd2Uw" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_gjkCIOKIEeKOWoLMe41Aew" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_gfah8OKIEeKOWoLMe41Aew"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_gjkCIeKIEeKOWoLMe41Aew"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_vMCucOKIEeKOWoLMe41Aew" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_sJkb8OKIEeKOWoLMe41Aew"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_vMCuceKIEeKOWoLMe41Aew" x="61" y="63"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_wyp-kOKWEeKOWoLMe41Aew" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_ldtfkOKWEeKOWoLMe41Aew"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_wyp-keKWEeKOWoLMe41Aew" x="70" y="64"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_NC0BgOKXEeKOWoLMe41Aew" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_IR-vwOKXEeKOWoLMe41Aew"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_NC0BgeKXEeKOWoLMe41Aew" x="68" y="90"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Uvsk_9jkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_UvslANjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_UvslAdjkEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UvslAtjkEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_UvslA9jkEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_UvslBNjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_UvslBdjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_UvslBtjkEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UvslB9jkEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_51zAINa7EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uvsk8djkEeKQqZMBCFd2Uw" x="126" y="114" width="295" height="511"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_UvyrkNjkEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uv4yMNjkEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uv4yMdjkEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uv4yMtjkEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uv4yM9jkEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uv4yNNjkEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uv4yNdjkEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Uv4yNtjkEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Uv4yN9jkEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Uv4yONjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Uv4yOdjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Uv4yOtjkEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uv4yO9jkEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Uv4yPNjkEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Uv4yPdjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Uv4yPtjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Uv4yP9jkEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uv4yQNjkEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Uv4yQdjkEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Uv4yQtjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Uv4yQ9jkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Uv4yRNjkEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uv4yRdjkEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_AjTZ8Na8EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UvyrkdjkEeKQqZMBCFd2Uw" x="606" y="246" height="145"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_blTK0NjkEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_blTK0tjkEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_blTK09jkEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_blTK1NjkEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_blTK1djkEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_blTK1tjkEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_blTK19jkEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_blTK2NjkEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_blTK2djkEeKQqZMBCFd2Uw" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_uF4KENjkEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_1B8jINjKEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_uF4KEdjkEeKQqZMBCFd2Uw" x="58" y="4"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_uF-QsNjkEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_4f0_QNjKEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_uF-QsdjkEeKQqZMBCFd2Uw" x="58" y="4"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_blTK2tjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_blTK29jkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_blTK3NjkEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_blTK3djkEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_blTK3tjkEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_blTK39jkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_blTK4NjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_blTK4djkEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_blTK4tjkEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_blTK49jkEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_blTK5NjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_blTK5djkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_blTK5tjkEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_blTK59jkEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_vMMQsNjKEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_blTK0djkEeKQqZMBCFd2Uw" x="600" y="414"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_cs2BsNjkEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cs2BstjkEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cs2Bs9jkEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cs2BtNjkEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cs2BtdjkEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cs2BttjkEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cs2Bt9jkEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_cs2BuNjkEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cs8IUNjkEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cs8IUdjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cs8IUtjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cs8IU9jkEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cs8IVNjkEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cs8IVdjkEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cs8IVtjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cs8IV9jkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cs8IWNjkEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cs8IWdjkEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cs8IWtjkEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cs8IW9jkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cs8IXNjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cs8IXdjkEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cs8IXtjkEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_eNnjMNa7EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cs2BsdjkEeKQqZMBCFd2Uw" x="600" y="114"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_1pN_sNjkEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1pN_stjkEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1pN_s9jkEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1pN_tNjkEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1pN_tdjkEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1pN_ttjkEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1pN_t9jkEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_1pN_uNjkEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1pN_udjkEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1pN_utjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1pN_u9jkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1pN_vNjkEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1pN_vdjkEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1pN_vtjkEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1pN_v9jkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1pN_wNjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1pN_wdjkEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1pN_wtjkEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1pN_w9jkEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1pN_xNjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1pN_xdjkEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1pN_xtjkEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1pN_x9jkEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="notation/notation.uml#_AziHOrcnEeKeLJDBCBPhPw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1pN_sdjkEeKQqZMBCFd2Uw" x="600" y="576"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_o64RUO-MEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_o65fcO-MEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_o65fce-MEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_o65fcu-MEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_o65fc--MEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_o65fdO-MEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_o66GgO-MEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_o66Gge-MEeK0p4PkXjd-_Q" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_o66Ggu-MEeK0p4PkXjd-_Q" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_o66Gg--MEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_o66GhO-MEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_o66Ghe-MEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o66Ghu-MEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_o66Gh--MEeK0p4PkXjd-_Q" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_o66GiO-MEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_o66Gie-MEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_o66Giu-MEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o66Gi--MEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_o66GjO-MEeK0p4PkXjd-_Q" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_o66Gje-MEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_o66Gju-MEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_o66Gj--MEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o66GkO-MEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_-vaacNa7EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o64RUe-MEeK0p4PkXjd-_Q" x="600" y="696"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_Dtu4wdjkEeKQqZMBCFd2Uw"/>
+    <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+    <edges xmi:type="notation:Connector" xmi:id="_Uv-40NjkEeKQqZMBCFd2Uw" type="4001" source="_Uvsk8NjkEeKQqZMBCFd2Uw" target="_UvyrkNjkEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Uv-409jkEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Uv-41NjkEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Uv-41djkEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Uv-41tjkEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Uv-419jkEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Uv-42NjkEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Uv-42djkEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Uv-42tjkEeKQqZMBCFd2Uw" x="-41" y="23"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Uv-429jkEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Uv-43NjkEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Uv-43djkEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Uv-43tjkEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_Uv-40djkEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_5YuNINa8EeKPiuTfpuvqHA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Uv-40tjkEeKQqZMBCFd2Uw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YMwhsNjkEeKQqZMBCFd2Uw" id="(0.9469026548672567,0.3131115459882583)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hiwAsNjkEeKQqZMBCFd2Uw" id="(0.06,0.16)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_blfYENjkEeKQqZMBCFd2Uw" type="4001" source="_Uvsk8NjkEeKQqZMBCFd2Uw" target="_blTK0NjkEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_bllesNjkEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bllesdjkEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bllestjkEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_blles9jkEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_blletNjkEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_blletdjkEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_bllettjkEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_bllet9jkEeKQqZMBCFd2Uw" x="-36" y="26"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_blleuNjkEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_blleudjkEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_blleutjkEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_blleu9jkEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_blfYEdjkEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_A1nlgNjLEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_blfYEtjkEeKQqZMBCFd2Uw" points="[-113, -124, 126, 137]$[-239, -261, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_f6SOENjkEeKQqZMBCFd2Uw" id="(0.9601769911504425,0.6986301369863014)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uuS08NjkEeKQqZMBCFd2Uw" id="(0.0,0.41935483870967744)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_ctIVkNjkEeKQqZMBCFd2Uw" type="4001" source="_Uvsk8NjkEeKQqZMBCFd2Uw" target="_cs2BsNjkEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ctIVk9jkEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ctIVlNjkEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ctIVldjkEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ctIVltjkEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ctIVl9jkEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ctIVmNjkEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ctIVmdjkEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ctIVmtjkEeKQqZMBCFd2Uw" x="-47" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ctIVm9jkEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ctIVnNjkEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ctIVndjkEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ctIVntjkEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_ctIVkdjkEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_LBIf0NjiEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ctIVktjkEeKQqZMBCFd2Uw" points="[-113, -124, 126, 137]$[-239, -261, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ewVjcNjkEeKQqZMBCFd2Uw" id="(0.9513274336283186,0.09784735812133072)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_3rXdoNjkEeKQqZMBCFd2Uw" type="4001" source="_Uvsk8NjkEeKQqZMBCFd2Uw" target="_1pN_sNjkEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_3rdkQNjkEeKQqZMBCFd2Uw" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3rdkQdjkEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_3rdkQtjkEeKQqZMBCFd2Uw" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3rdkQ9jkEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_3rdkRNjkEeKQqZMBCFd2Uw" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3rdkRdjkEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_3rdkRtjkEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3rdkR9jkEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_3rdkSNjkEeKQqZMBCFd2Uw" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3rdkSdjkEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_3rdkStjkEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3rdkS9jkEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_3rXdodjkEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_3q_DINjkEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3rXdotjkEeKQqZMBCFd2Uw" points="[6, 2, -253, 0]$[254, 0, -5, -2]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3rjq4NjkEeKQqZMBCFd2Uw" id="(0.9734513274336283,0.974559686888454)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3rjq4djkEeKQqZMBCFd2Uw" id="(0.05,0.38)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_rE_YcO-MEeK0p4PkXjd-_Q" type="4001" source="_Uvsk8NjkEeKQqZMBCFd2Uw" target="_o64RUO-MEeK0p4PkXjd-_Q" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_rE__gO-MEeK0p4PkXjd-_Q" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_rE__ge-MEeK0p4PkXjd-_Q" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_rFAmkO-MEeK0p4PkXjd-_Q" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_rFAmke-MEeK0p4PkXjd-_Q" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_rFAmku-MEeK0p4PkXjd-_Q" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_rFAmk--MEeK0p4PkXjd-_Q" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_rFAmlO-MEeK0p4PkXjd-_Q" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_rFAmle-MEeK0p4PkXjd-_Q" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_rFAmlu-MEeK0p4PkXjd-_Q" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_rFAml--MEeK0p4PkXjd-_Q" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_rFBNoO-MEeK0p4PkXjd-_Q" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_rFBNoe-MEeK0p4PkXjd-_Q" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_rE_Yce-MEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_rEb-0O-MEeK0p4PkXjd-_Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rE_Ycu-MEeK0p4PkXjd-_Q" points="[0, 4, -308, -115]$[0, 127, -308, 8]$[301, 127, -7, 8]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rFKXkO-MEeK0p4PkXjd-_Q" id="(0.7654867256637168,0.9921722113502935)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rFK-oO-MEeK0p4PkXjd-_Q" id="(0.07,0.44)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_-aAtoNjpEeKQqZMBCFd2Uw" type="PapyrusUMLClassDiagram" name="Registries" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_Atmg4NjqEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Atmg4tjqEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Atmg49jqEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Atmg5NjqEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Atmg5djqEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Atmg5tjqEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Atmg59jqEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Atmg6NjqEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Atmg6djqEeKQqZMBCFd2Uw" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_RruhsA2qEeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_idRzUA2qEeOjX-JbGFEH7w" source="Stereotype_Annotation">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_idRzUQ2qEeOjX-JbGFEH7w" key="StereotypeWithQualifiedNameList" value=""/>
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_idSaYA2qEeOjX-JbGFEH7w" key="StereotypeList" value="Ecore::EAttribute"/>
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_idSaYQ2qEeOjX-JbGFEH7w" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_idSaYg2qEeOjX-JbGFEH7w" key="PropStereoDisplay" value=""/>
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_idSaYw2qEeOjX-JbGFEH7w" key="StereotypePropertyLocation" value="Compartment"/>
+          </eAnnotations>
+          <element xmi:type="uml:Property" href="layers.uml#_RrX8YA2qEeOjX-JbGFEH7w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_RruhsQ2qEeOjX-JbGFEH7w"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Atmg6tjqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Atmg69jqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Atmg7NjqEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Atmg7djqEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Atmg7tjqEeKQqZMBCFd2Uw" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_1YYywNkCEeKQqZMBCFd2Uw" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_1X6RoNkCEeKQqZMBCFd2Uw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_1YYywdkCEeKQqZMBCFd2Uw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_lJ0JoOT7EeKSDdPH_NXL-g" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_dcjjAOT7EeKSDdPH_NXL-g"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_lJ0JoeT7EeKSDdPH_NXL-g" x="53" y="64"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_KmAZMA3LEeOjX-JbGFEH7w" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_Klpz4A3LEeOjX-JbGFEH7w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_KmAZMQ3LEeOjX-JbGFEH7w"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Atmg79jqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Atmg8NjqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Atmg8djqEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Atmg8tjqEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Atmg89jqEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Atmg9NjqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Atmg9djqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Atmg9tjqEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Atmg99jqEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_8OefoNjoEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Atmg4djqEeKQqZMBCFd2Uw" y="96" width="179" height="277"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_ERoBQNjqEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ERoBQtjqEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ERoBQ9jqEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ERoBRNjqEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ERoBRdjqEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ERoBRtjqEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ERoBR9jqEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ERoBSNjqEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ERoBSdjqEeKQqZMBCFd2Uw" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_G8FcYNjqEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_sdWO0NhcEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_G8FcYdjqEeKQqZMBCFd2Uw" x="36" y="12"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_G8LjANjqEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_hT9qINhdEeKgkM6XJF9t4A"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_G8LjAdjqEeKQqZMBCFd2Uw" x="36" y="12"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ERoBStjqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ERoBS9jqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ERoBTNjqEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ERoBTdjqEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ERoBTtjqEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ERoBT9jqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ERoBUNjqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ERoBUdjqEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ERoBUtjqEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ERoBU9jqEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ERoBVNjqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ERoBVdjqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ERoBVtjqEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ERoBV9jqEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_-vaacNa7EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ERoBQdjqEeKQqZMBCFd2Uw" x="678" y="96"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_ItfvoNjqEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ItfvotjqEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Itfvo9jqEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ItfvpNjqEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ItfvpdjqEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ItfvptjqEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Itfvp9jqEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ItfvqNjqEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ItfvqdjqEeKQqZMBCFd2Uw" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_j-VYsNjsEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_j-DE0NjsEeKQqZMBCFd2Uw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_j-VYsdjsEeKQqZMBCFd2Uw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ItfvqtjqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Itfvq9jqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ItfvrNjqEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ItfvrdjqEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ItfvrtjqEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Itfvr9jqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ItfvsNjqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ItfvsdjqEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ItfvstjqEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Itfvs9jqEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ItfvtNjqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ItfvtdjqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ItfvttjqEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Itfvt9jqEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_ItBOgNjqEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ItfvodjqEeKQqZMBCFd2Uw" x="504" y="96" width="115" height="115"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_hhHaQNjqEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hhHaQtjqEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hhHaQ9jqEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hhHaRNjqEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hhHaRdjqEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hhHaRtjqEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hhHaR9jqEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XtJ68NjsEeKQqZMBCFd2Uw" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XtJ68djsEeKQqZMBCFd2Uw" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XtJ68tjsEeKQqZMBCFd2Uw" key="StereotypeList" value="Ecore::EClass"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XtJ689jsEeKQqZMBCFd2Uw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XtJ69NjsEeKQqZMBCFd2Uw" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XtJ69djsEeKQqZMBCFd2Uw" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_hhHaSNjqEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_hhHaSdjqEeKQqZMBCFd2Uw" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_fQvoMNjsEeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_fQXNsNjsEeKQqZMBCFd2Uw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_fQvoMdjsEeKQqZMBCFd2Uw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_hhHaStjqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_hhHaS9jqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_hhHaTNjqEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hhHaTdjqEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_hhHaTtjqEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_hhHaT9jqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_hhHaUNjqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_hhHaUdjqEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hhHaUtjqEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_hhHaU9jqEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_hhHaVNjqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_hhHaVdjqEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_hhHaVtjqEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hhHaV9jqEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_hgu_wNjqEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hhHaQdjqEeKQqZMBCFd2Uw" x="294" y="96" width="139" height="115"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_HTfqQNj_EeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HTfqQtj_EeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HTfqQ9j_EeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HTfqRNj_EeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HTfqRdj_EeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HTfqRtj_EeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HTfqR9j_EeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_HTfqSNj_EeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_HTfqSdj_EeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_HTfqStj_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_HTfqS9j_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_HTfqTNj_EeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTfqTdj_EeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_HTfqTtj_EeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_HTfqT9j_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_HTfqUNj_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_HTfqUdj_EeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTfqUtj_EeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_HTlw4Nj_EeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_HTlw4dj_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_HTlw4tj_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_HTlw49j_EeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTlw5Nj_EeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_tLip8Nj-EeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTfqQdj_EeKQqZMBCFd2Uw" x="312" y="324"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_HTlw5dj_EeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HTlw59j_EeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HTr3gNj_EeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HTr3gdj_EeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HTr3gtj_EeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HTr3g9j_EeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HTr3hNj_EeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_HTr3hdj_EeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_HTr3htj_EeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_HTr3h9j_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_HTr3iNj_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_HTr3idj_EeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTr3itj_EeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_HTr3i9j_EeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_HTr3jNj_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_HTr3jdj_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_HTr3jtj_EeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTr3j9j_EeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_HTr3kNj_EeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_HTr3kdj_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_HTr3ktj_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_HTr3k9j_EeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTr3lNj_EeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_EoL3oNhcEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTlw5tj_EeKQqZMBCFd2Uw" x="768" y="329"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_P5J4gNj_EeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_P5J4gtj_EeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_P5J4g9j_EeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_P5J4hNj_EeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_P5J4hdj_EeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_P5J4htj_EeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_P5J4h9j_EeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gxnDYNj_EeKQqZMBCFd2Uw" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gxnDYdj_EeKQqZMBCFd2Uw" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gxnDYtj_EeKQqZMBCFd2Uw" key="StereotypeList" value="Ecore::EClass"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gxnDY9j_EeKQqZMBCFd2Uw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gxnDZNj_EeKQqZMBCFd2Uw" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gxnqcNj_EeKQqZMBCFd2Uw" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_P5J4iNj_EeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_P5J4idj_EeKQqZMBCFd2Uw" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_kayJgNj_EeKQqZMBCFd2Uw" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_kaf1oNj_EeKQqZMBCFd2Uw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kayJgdj_EeKQqZMBCFd2Uw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_P5J4itj_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_P5J4i9j_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_P5J4jNj_EeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P5J4jdj_EeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_P5J4jtj_EeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_P5J4j9j_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_P5J4kNj_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_P5J4kdj_EeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P5J4ktj_EeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_P5J4k9j_EeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_P5J4lNj_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_P5J4ldj_EeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_P5J4ltj_EeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P5J4l9j_EeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_P4xeANj_EeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P5J4gdj_EeKQqZMBCFd2Uw" x="528" y="324"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_M3hWsNkDEeKQqZMBCFd2Uw" type="2012" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_M3hWstkDEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_M3hWs9kDEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_M3hWtNkDEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_M3hWtdkDEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_M3hWttkDEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_M3hWt9kDEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_M3hWuNkDEeKQqZMBCFd2Uw" type="5038"/>
+      <element xmi:type="uml:Comment" href="layers.uml#_M28u8NkDEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_M3hWsdkDEeKQqZMBCFd2Uw" x="246" y="180"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_a8TPANqCEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a8TPAtqCEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a8TPA9qCEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a8ZVoNqCEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a8ZVodqCEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a8ZVotqCEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a8ZVo9qCEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_a8ZVpNqCEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_a8ZVpdqCEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_a8ZVptqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_a8ZVp9qCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_a8ZVqNqCEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8ZVqdqCEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_a8ZVqtqCEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_a8ZVq9qCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_a8ZVrNqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_a8ZVrdqCEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8ZVrtqCEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_a8ZVr9qCEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_a8ZVsNqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_a8ZVsdqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_a8ZVstqCEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8ZVs9qCEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_zYGE8NqBEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8TPAdqCEeKQqZMBCFd2Uw" x="24" y="540"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_a8fcQNqCEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a8fcQtqCEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a8fcQ9qCEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a8fcRNqCEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a8fcRdqCEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a8fcRtqCEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a8fcR9qCEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_a8fcSNqCEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_a8fcSdqCEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_a8fcStqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_a8fcS9qCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_a8fcTNqCEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8fcTdqCEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_a8fcTtqCEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_a8fcT9qCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_a8fcUNqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_a8fcUdqCEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8fcUtqCEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_a8fcU9qCEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_a8fcVNqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_a8fcVdqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_a8fcVtqCEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8fcV9qCEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_eNnjMNa7EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a8fcQdqCEeKQqZMBCFd2Uw" x="384" y="540" width="181"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_xiCs0NqCEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xiCs0tqCEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xiCs09qCEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xiCs1NqCEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xiCs1dqCEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xiCs1tqCEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xiCs19qCEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_xiCs2NqCEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_xiCs2dqCEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_xiCs2tqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_xiCs29qCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_xiCs3NqCEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xiCs3dqCEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_xiCs3tqCEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_xiCs39qCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_xiCs4NqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_xiCs4dqCEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xiCs4tqCEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_xiCs49qCEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_xiCs5NqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_xiCs5dqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_xiCs5tqCEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xiCs59qCEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_xhwY8NqCEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xiCs0dqCEeKQqZMBCFd2Uw" x="258" y="681" width="179"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_z5FcsNqCEeKQqZMBCFd2Uw" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z5FcstqCEeKQqZMBCFd2Uw" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z5Fcs9qCEeKQqZMBCFd2Uw" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z5FctNqCEeKQqZMBCFd2Uw" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z5FctdqCEeKQqZMBCFd2Uw" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z5FcttqCEeKQqZMBCFd2Uw" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z5Fct9qCEeKQqZMBCFd2Uw" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_z5FcuNqCEeKQqZMBCFd2Uw" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_z5FcudqCEeKQqZMBCFd2Uw" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_z5FcutqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_z5Fcu9qCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_z5FcvNqCEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z5FcvdqCEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_z5FcvtqCEeKQqZMBCFd2Uw" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_z5Fcv9qCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_z5FcwNqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_z5FcwdqCEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z5FcwtqCEeKQqZMBCFd2Uw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_z5Fcw9qCEeKQqZMBCFd2Uw" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_z5FcxNqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_z5FcxdqCEeKQqZMBCFd2Uw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_z5FcxtqCEeKQqZMBCFd2Uw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z5Fcx9qCEeKQqZMBCFd2Uw"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_z4m7kNqCEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z5FcsdqCEeKQqZMBCFd2Uw" x="552" y="684" width="170"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_-aAtodjpEeKQqZMBCFd2Uw"/>
+    <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+    <edges xmi:type="notation:Connector" xmi:id="_NV6sQNjqEeKQqZMBCFd2Uw" type="4001" source="_Atmg4NjqEeKQqZMBCFd2Uw" target="_ERoBQNjqEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_NV6sQ9jqEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_NV6sRNjqEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_NV6sRdjqEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_NV6sRtjqEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_NV6sR9jqEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_NV6sSNjqEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_NV6sSdjqEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_NV6sStjqEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_NV6sS9jqEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_NV6sTNjqEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_NV6sTdjqEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_NV6sTtjqEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_NV6sQdjqEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_NVcLINjqEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NV6sQtjqEeKQqZMBCFd2Uw" points="[5, 6, -474, 49]$[486, 6, 7, 49]$[486, -38, 7, 5]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NWAy4NjqEeKQqZMBCFd2Uw" id="(0.984,0.6498194945848376)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NWAy4djqEeKQqZMBCFd2Uw" id="(0.38235294117647056,0.9596774193548387)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_ZdgJINjqEeKQqZMBCFd2Uw" type="4001" source="_ItfvoNjqEeKQqZMBCFd2Uw" target="_ERoBQNjqEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ZdgJI9jqEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ZdgJJNjqEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ZdgJJdjqEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ZdgJJtjqEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ZdgJJ9jqEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ZdgJKNjqEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ZdgJKdjqEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ZdgJKtjqEeKQqZMBCFd2Uw" x="-31" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ZdgJK9jqEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ZdgJLNjqEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ZdgJLdjqEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ZdgJLtjqEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_ZdgJIdjqEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_ZdBoANjqEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ZdgJItjqEeKQqZMBCFd2Uw" points="[6, 8, -83, 0]$[83, 8, -6, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZdmPwNjqEeKQqZMBCFd2Uw" id="(0.991304347826087,0.6347826086956522)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZdmPwdjqEeKQqZMBCFd2Uw" id="(0.03529411764705882,0.5483870967741935)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_m0GW0NjqEeKQqZMBCFd2Uw" type="4001" source="_hhHaQNjqEeKQqZMBCFd2Uw" target="_ItfvoNjqEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_m0GW09jqEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_m0GW1NjqEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_m0GW1djqEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_m0GW1tjqEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_m0GW19jqEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_m0GW2NjqEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_m0GW2djqEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_m0GW2tjqEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_m0GW29jqEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_m0GW3NjqEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_m0GW3djqEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_m0GW3tjqEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_m0GW0djqEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_mzt8UNjqEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_m0GW0tjqEeKQqZMBCFd2Uw" points="[10, 0, -74, 0]$[78, -1, -6, -1]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_m0MdcNjqEeKQqZMBCFd2Uw" id="(0.9856115107913669,0.4596774193548387)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_m0MdcdjqEeKQqZMBCFd2Uw" id="(0.05217391304347826,0.4881889763779528)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_HTx-INj_EeKQqZMBCFd2Uw" type="4001" source="_HTfqQNj_EeKQqZMBCFd2Uw" target="_P5J4gNj_EeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_HTx-I9j_EeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_HTx-JNj_EeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_HTx-Jdj_EeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_HTx-Jtj_EeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_HTx-J9j_EeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_HTx-KNj_EeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_HTx-Kdj_EeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_HTx-Ktj_EeKQqZMBCFd2Uw" x="-26" y="17"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_HTx-K9j_EeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_HTx-LNj_EeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_HTx-Ldj_EeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_HTx-Ltj_EeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_HTx-Idj_EeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_2bADINj-EeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HTx-Itj_EeKQqZMBCFd2Uw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TJzJ4Nj_EeKQqZMBCFd2Uw" id="(0.025423728813559324,0.4596774193548387)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_JiaY4Nj_EeKQqZMBCFd2Uw" type="4001" source="_Atmg4NjqEeKQqZMBCFd2Uw" target="_HTfqQNj_EeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_JiaY49j_EeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_JigfgNj_EeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Jigfgdj_EeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Jigfgtj_EeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Jigfg9j_EeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_JigfhNj_EeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Jigfhdj_EeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Jigfhtj_EeKQqZMBCFd2Uw" x="-26" y="18"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Jigfh9j_EeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_JigfiNj_EeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Jigfidj_EeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Jigfitj_EeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_JiaY4dj_EeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_Jh73wNj_EeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JiaY4tj_EeKQqZMBCFd2Uw" points="[6, 1, -141, -26]$[139, 21, -8, -6]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JimmINj_EeKQqZMBCFd2Uw" id="(0.952,0.8916967509025271)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JimmIdj_EeKQqZMBCFd2Uw" id="(0.08,0.22)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_U1kIINj_EeKQqZMBCFd2Uw" type="4001" source="_P5J4gNj_EeKQqZMBCFd2Uw" target="_HTlw5dj_EeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_U1kvMNj_EeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_U1kvMdj_EeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_U1lWQNj_EeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_U1lWQdj_EeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_U1lWQtj_EeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_U1lWQ9j_EeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_U1lWRNj_EeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_U1lWRdj_EeKQqZMBCFd2Uw" x="-19" y="19"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_U1lWRtj_EeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_U1lWR9j_EeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_U1lWSNj_EeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_U1lWSdj_EeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_U1kIIdj_EeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_U1FnANj_EeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_U1kIItj_EeKQqZMBCFd2Uw" points="[6, -1, -127, 19]$[122, -25, -11, -5]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_U1srANj_EeKQqZMBCFd2Uw" id="(0.9491525423728814,0.42)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_U1srAdj_EeKQqZMBCFd2Uw" id="(0.06,0.48)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_o2GW4NkCEeKQqZMBCFd2Uw" type="4001" source="_ERoBQNjqEeKQqZMBCFd2Uw" target="_HTlw5dj_EeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_o2GW49kCEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_o2GW5NkCEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_o2GW5dkCEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_o2GW5tkCEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_o2GW59kCEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_o2GW6NkCEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_o2MdgNkCEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_o2MdgdkCEeKQqZMBCFd2Uw" x="-3" y="45"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_o2MdgtkCEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_o2Mdg9kCEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_o2MdhNkCEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_o2MdhdkCEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_o2GW4dkCEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_L2X8oNhcEeKgkM6XJF9t4A"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_o2GW4tkCEeKQqZMBCFd2Uw" points="[15, 62, -40, -159]$[42, 171, -13, -50]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_p5Y_4NkCEeKQqZMBCFd2Uw" id="(0.8176470588235294,0.9354838709677419)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_a8li4NqCEeKQqZMBCFd2Uw" type="4001" source="_a8TPANqCEeKQqZMBCFd2Uw" target="_a8fcQNqCEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_a8li49qCEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_a8li5NqCEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_a8li5dqCEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_a8li5tqCEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_a8li59qCEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_a8li6NqCEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_a8li6dqCEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_a8li6tqCEeKQqZMBCFd2Uw" x="-45" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_a8li69qCEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_a8li7NqCEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_a8li7dqCEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_a8li7tqCEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_a8li4dqCEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_Tz2loNqCEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_a8li4tqCEeKQqZMBCFd2Uw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_ii_TkNqCEeKQqZMBCFd2Uw" type="4001" source="_a8fcQNqCEeKQqZMBCFd2Uw" target="_Atmg4NjqEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ijFaMNqCEeKQqZMBCFd2Uw" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ijFaMdqCEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ijFaMtqCEeKQqZMBCFd2Uw" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ijFaM9qCEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ijFaNNqCEeKQqZMBCFd2Uw" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ijFaNdqCEeKQqZMBCFd2Uw" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ijFaNtqCEeKQqZMBCFd2Uw" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ijFaN9qCEeKQqZMBCFd2Uw" x="54" y="94"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ijFaONqCEeKQqZMBCFd2Uw" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ijFaOdqCEeKQqZMBCFd2Uw" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ijFaOtqCEeKQqZMBCFd2Uw" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ijFaO9qCEeKQqZMBCFd2Uw" x="48" y="-35"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_ii_TkdqCEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_iim5ENqCEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ii_TktqCEeKQqZMBCFd2Uw" points="[0, -12, 340, 174]$[0, -96, 340, 90]$[-334, -96, 6, 90]$[-334, -179, 6, 7]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ijLg0NqCEeKQqZMBCFd2Uw" id="(0.38095238095238093,0.12)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ijLg0dqCEeKQqZMBCFd2Uw" id="(0.4692737430167598,0.9747292418772563)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_3e3QkNqCEeKQqZMBCFd2Uw" type="4002" source="_xiCs0NqCEeKQqZMBCFd2Uw" target="_a8fcQNqCEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_3e3Qk9qCEeKQqZMBCFd2Uw" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3e3QlNqCEeKQqZMBCFd2Uw" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_3e3QkdqCEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_3ee2ENqCEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3e3QktqCEeKQqZMBCFd2Uw" points="[10, -8, -68, 52]$[69, -49, -9, 11]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3e3QldqCEeKQqZMBCFd2Uw" id="(0.6089385474860335,0.08)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3e3QltqCEeKQqZMBCFd2Uw" id="(0.3370165745856354,0.89)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_5SH98NqCEeKQqZMBCFd2Uw" type="4002" source="_z5FcsNqCEeKQqZMBCFd2Uw" target="_a8fcQNqCEeKQqZMBCFd2Uw" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_5SH989qCEeKQqZMBCFd2Uw" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5SH99NqCEeKQqZMBCFd2Uw" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_5SH98dqCEeKQqZMBCFd2Uw" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_5RvjcNqCEeKQqZMBCFd2Uw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5SH98tqCEeKQqZMBCFd2Uw" points="[-14, -7, 97, 52]$[-108, -51, 3, 8]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5SOEkNqCEeKQqZMBCFd2Uw" id="(0.3,0.07)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5SOEkdqCEeKQqZMBCFd2Uw" id="(0.5966850828729282,0.92)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_gSkRsNxGEeKwptaAAanMDg" type="PapyrusUMLClassDiagram" name="exceptions" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_iYyXUNxGEeKwptaAAanMDg" type="2009" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iYy-YNxGEeKwptaAAanMDg" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iYy-YdxGEeKwptaAAanMDg" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iYzlcNxGEeKwptaAAanMDg" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iYzlcdxGEeKwptaAAanMDg" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iYzlctxGEeKwptaAAanMDg" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iYzlc9xGEeKwptaAAanMDg" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qcdS09xGEeKwptaAAanMDg" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qcdS1NxGEeKwptaAAanMDg" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qcdS1dxGEeKwptaAAanMDg" key="StereotypeList" value="Ecore::EDataType"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qcdS1txGEeKwptaAAanMDg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qcdS19xGEeKwptaAAanMDg" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qcdS2NxGEeKwptaAAanMDg" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_iYzldNxGEeKwptaAAanMDg" type="5032"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_iY0MgNxGEeKwptaAAanMDg" type="7039">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_iY0MgdxGEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_iY0MgtxGEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_iY0Mg9xGEeKwptaAAanMDg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iY0MhNxGEeKwptaAAanMDg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_iY0MhdxGEeKwptaAAanMDg" type="7040">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_iY0MhtxGEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_iY0Mh9xGEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_iY0MiNxGEeKwptaAAanMDg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iY0MidxGEeKwptaAAanMDg"/>
+      </children>
+      <element xmi:type="uml:PrimitiveType" href="layers.uml#_iYKFMNxGEeKwptaAAanMDg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iYyXUdxGEeKwptaAAanMDg" x="263" y="39" width="140"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_k-76MNxGEeKwptaAAanMDg" type="2009" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_k-76MtxGEeKwptaAAanMDg" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_k-76M9xGEeKwptaAAanMDg" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_k-76NNxGEeKwptaAAanMDg" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_k-76NdxGEeKwptaAAanMDg" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_k-76NtxGEeKwptaAAanMDg" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_k-76N9xGEeKwptaAAanMDg" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4SAtY9xGEeKwptaAAanMDg" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4SAtZNxGEeKwptaAAanMDg" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4SAtZdxGEeKwptaAAanMDg" key="StereotypeList" value="Ecore::EDataType"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4SAtZtxGEeKwptaAAanMDg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4SAtZ9xGEeKwptaAAanMDg" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4SAtaNxGEeKwptaAAanMDg" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_k-76ONxGEeKwptaAAanMDg" type="5032"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_k-76OdxGEeKwptaAAanMDg" type="7039">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_k-76OtxGEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_k-76O9xGEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_k-76PNxGEeKwptaAAanMDg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_k-76PdxGEeKwptaAAanMDg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_k-76PtxGEeKwptaAAanMDg" type="7040">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_k-76P9xGEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_k-76QNxGEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_k-76QdxGEeKwptaAAanMDg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_k-76QtxGEeKwptaAAanMDg"/>
+      </children>
+      <element xmi:type="uml:PrimitiveType" href="layers.uml#_k-dZENxGEeKwptaAAanMDg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_k-76MdxGEeKwptaAAanMDg" x="444" y="186" width="141"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_KHZoUNxMEeKwptaAAanMDg" type="2009" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KHZoUtxMEeKwptaAAanMDg" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KHZoU9xMEeKwptaAAanMDg" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KHZoVNxMEeKwptaAAanMDg" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KHZoVdxMEeKwptaAAanMDg" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KHZoVtxMEeKwptaAAanMDg" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KHZoV9xMEeKwptaAAanMDg" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PWnfMNxMEeKwptaAAanMDg" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PWnfMdxMEeKwptaAAanMDg" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PWnfMtxMEeKwptaAAanMDg" key="StereotypeList" value="Ecore::EDataType"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PWnfM9xMEeKwptaAAanMDg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PWnfNNxMEeKwptaAAanMDg" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PWnfNdxMEeKwptaAAanMDg" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_KHZoWNxMEeKwptaAAanMDg" type="5032"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_KHZoWdxMEeKwptaAAanMDg" type="7039">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_KHZoWtxMEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_KHZoW9xMEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_KHZoXNxMEeKwptaAAanMDg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KHZoXdxMEeKwptaAAanMDg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_KHZoXtxMEeKwptaAAanMDg" type="7040">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_KHZoX9xMEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_KHZoYNxMEeKwptaAAanMDg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_KHZoYdxMEeKwptaAAanMDg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KHZoYtxMEeKwptaAAanMDg"/>
+      </children>
+      <element xmi:type="uml:PrimitiveType" href="layers.uml#_KG7HMNxMEeKwptaAAanMDg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KHZoUdxMEeKwptaAAanMDg" x="72" y="192" width="145"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_gSkRsdxGEeKwptaAAanMDg"/>
+    <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+    <edges xmi:type="notation:Connector" xmi:id="_ox-G8NxGEeKwptaAAanMDg" type="4002" source="_k-76MNxGEeKwptaAAanMDg" target="_iYyXUNxGEeKwptaAAanMDg" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ox_VENxGEeKwptaAAanMDg" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ox_VEdxGEeKwptaAAanMDg" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_ox-G8dxGEeKwptaAAanMDg" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_oxlscNxGEeKwptaAAanMDg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ox-G8txGEeKwptaAAanMDg" points="[-10, -5, 124, 68]$[-128, -61, 6, 12]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oyDmgNxGEeKwptaAAanMDg" id="(0.2978723404255319,0.054945054945054944)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oyDmgdxGEeKwptaAAanMDg" id="(0.6357142857142857,0.8681318681318682)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_ShmNcNxMEeKwptaAAanMDg" type="4002" source="_KHZoUNxMEeKwptaAAanMDg" target="_iYyXUNxGEeKwptaAAanMDg" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ShmNc9xMEeKwptaAAanMDg" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ShmNdNxMEeKwptaAAanMDg" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_ShmNcdxMEeKwptaAAanMDg" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_ShHsUNxMEeKwptaAAanMDg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ShmNctxMEeKwptaAAanMDg" points="[12, -8, -83, 52]$[82, -50, -13, 10]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ShsUENxMEeKwptaAAanMDg" id="(0.7517241379310344,0.07207207207207207)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ShsUEdxMEeKwptaAAanMDg" id="(0.09285714285714286,0.9099099099099099)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_j4XzEOT_EeKSDdPH_NXL-g" type="PapyrusUMLClassDiagram" name="Appearance Properties" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_ruaiQOT_EeKSDdPH_NXL-g" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rugo4eT_EeKSDdPH_NXL-g" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rugo4uT_EeKSDdPH_NXL-g" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rugo4-T_EeKSDdPH_NXL-g" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rugo5OT_EeKSDdPH_NXL-g" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rugo5eT_EeKSDdPH_NXL-g" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rugo5uT_EeKSDdPH_NXL-g" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_rugo5-T_EeKSDdPH_NXL-g" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_rugo6OT_EeKSDdPH_NXL-g" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_rugo6eT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_rugo6uT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_rugo6-T_EeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rugo7OT_EeKSDdPH_NXL-g"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_rugo7eT_EeKSDdPH_NXL-g" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_rugo7uT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_rugo7-T_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_rugo8OT_EeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rugo8eT_EeKSDdPH_NXL-g"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_rugo8uT_EeKSDdPH_NXL-g" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_rugo8-T_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_rugo9OT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_rugo9eT_EeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rugo9uT_EeKSDdPH_NXL-g"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_AjTZ8Na8EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rugo4OT_EeKSDdPH_NXL-g" x="294" y="60"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_tBcQYOT_EeKSDdPH_NXL-g" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tBcQYuT_EeKSDdPH_NXL-g" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tBcQY-T_EeKSDdPH_NXL-g" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tBcQZOT_EeKSDdPH_NXL-g" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tBcQZeT_EeKSDdPH_NXL-g" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tBcQZuT_EeKSDdPH_NXL-g" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tBcQZ-T_EeKSDdPH_NXL-g" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_tBcQaOT_EeKSDdPH_NXL-g" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_tBcQaeT_EeKSDdPH_NXL-g" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_tBcQauT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_tBcQa-T_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_tBcQbOT_EeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tBcQbeT_EeKSDdPH_NXL-g"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_tBcQbuT_EeKSDdPH_NXL-g" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_tBcQb-T_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_tBcQcOT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_tBcQceT_EeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tBcQcuT_EeKSDdPH_NXL-g"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_tBcQc-T_EeKSDdPH_NXL-g" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_tBcQdOT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_tBcQdeT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_tBcQduT_EeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tBcQd-T_EeKSDdPH_NXL-g"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_EoL3oNhcEeKgkM6XJF9t4A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tBcQYeT_EeKSDdPH_NXL-g" x="696" y="65"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_tjX4wOT_EeKSDdPH_NXL-g" type="2008" fontName="Segoe UI" fillColor="15053796" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tjX4wuT_EeKSDdPH_NXL-g" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tjX4w-T_EeKSDdPH_NXL-g" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tjX4xOT_EeKSDdPH_NXL-g" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tjX4xeT_EeKSDdPH_NXL-g" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tjX4xuT_EeKSDdPH_NXL-g" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tjX4x-T_EeKSDdPH_NXL-g" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_tjX4yOT_EeKSDdPH_NXL-g" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_tjX4yeT_EeKSDdPH_NXL-g" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_tjX4yuT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_tjX4y-T_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_tjX4zOT_EeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tjX4zeT_EeKSDdPH_NXL-g"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_tjX4zuT_EeKSDdPH_NXL-g" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_tjX4z-T_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_tjX40OT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_tjX40eT_EeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tjX40uT_EeKSDdPH_NXL-g"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_tjX40-T_EeKSDdPH_NXL-g" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_tjX41OT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_tjX41eT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_tjX41uT_EeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tjX41-T_EeKSDdPH_NXL-g"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_ti_eQOT_EeKSDdPH_NXL-g"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tjX4weT_EeKSDdPH_NXL-g" x="726" y="215"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_vkxIwOT_EeKSDdPH_NXL-g" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vkxIwuT_EeKSDdPH_NXL-g" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vkxIw-T_EeKSDdPH_NXL-g" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vkxIxOT_EeKSDdPH_NXL-g" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vkxIxeT_EeKSDdPH_NXL-g" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vkxIxuT_EeKSDdPH_NXL-g" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vkxIx-T_EeKSDdPH_NXL-g" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_vkxIyOT_EeKSDdPH_NXL-g" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_vkxIyeT_EeKSDdPH_NXL-g" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_VwHpgOUAEeKSDdPH_NXL-g" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_Q8HvAOUAEeKSDdPH_NXL-g"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_VwHpgeUAEeKSDdPH_NXL-g" x="15"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_vkxIyuT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_vkxIy-T_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_vkxIzOT_EeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vkxIzeT_EeKSDdPH_NXL-g"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_vkxIzuT_EeKSDdPH_NXL-g" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_vkxIz-T_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_vkxI0OT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_vkxI0eT_EeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vkxI0uT_EeKSDdPH_NXL-g"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_vkxI0-T_EeKSDdPH_NXL-g" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_vkxI1OT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_vkxI1eT_EeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_vkxI1uT_EeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vkxI1-T_EeKSDdPH_NXL-g"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_vkSnoOT_EeKSDdPH_NXL-g"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vkxIweT_EeKSDdPH_NXL-g" x="192" y="209" height="91"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_fMVFQOUAEeKSDdPH_NXL-g" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fMVFQuUAEeKSDdPH_NXL-g" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fMVFQ-UAEeKSDdPH_NXL-g" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fMVFROUAEeKSDdPH_NXL-g" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fMVFReUAEeKSDdPH_NXL-g" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fMVFRuUAEeKSDdPH_NXL-g" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fMVFR-UAEeKSDdPH_NXL-g" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_fMVFSOUAEeKSDdPH_NXL-g" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_fMVFSeUAEeKSDdPH_NXL-g" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_p9Xl8OUAEeKSDdPH_NXL-g" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_nVngkOUAEeKSDdPH_NXL-g"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_p9Xl8eUAEeKSDdPH_NXL-g" x="39" y="11"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_fMVFSuUAEeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_fMVFS-UAEeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_fMVFTOUAEeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fMVFTeUAEeKSDdPH_NXL-g"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_fMVFTuUAEeKSDdPH_NXL-g" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_fMVFT-UAEeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_fMVFUOUAEeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_fMVFUeUAEeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fMVFUuUAEeKSDdPH_NXL-g"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_fMVFU-UAEeKSDdPH_NXL-g" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_fMVFVOUAEeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_fMVFVeUAEeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_fMVFVuUAEeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fMVFV-UAEeKSDdPH_NXL-g"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_fL2kIOUAEeKSDdPH_NXL-g"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fMVFQeUAEeKSDdPH_NXL-g" x="390" y="209" height="91"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_gsWtkOUAEeKSDdPH_NXL-g" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gsWtkuUAEeKSDdPH_NXL-g" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gsWtk-UAEeKSDdPH_NXL-g" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gsWtlOUAEeKSDdPH_NXL-g" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gsc0MOUAEeKSDdPH_NXL-g" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gsc0MeUAEeKSDdPH_NXL-g" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gsc0MuUAEeKSDdPH_NXL-g" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_gsc0M-UAEeKSDdPH_NXL-g" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gsc0NOUAEeKSDdPH_NXL-g" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gsc0NeUAEeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gsc0NuUAEeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gsc0N-UAEeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gsc0OOUAEeKSDdPH_NXL-g"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gsc0OeUAEeKSDdPH_NXL-g" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gsc0OuUAEeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gsc0O-UAEeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gsc0POUAEeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gsc0PeUAEeKSDdPH_NXL-g"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gsc0PuUAEeKSDdPH_NXL-g" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gsc0P-UAEeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gsc0QOUAEeKSDdPH_NXL-g"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gsc0QeUAEeKSDdPH_NXL-g"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gsc0QuUAEeKSDdPH_NXL-g"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_gsEZsOUAEeKSDdPH_NXL-g"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gsWtkeUAEeKSDdPH_NXL-g" x="604" y="217"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Rn740O-YEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Rn740u-YEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Rn740--YEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Rn741O-YEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Rn741e-YEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Rn741u-YEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Rn741--YEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Rn742O-YEeK0p4PkXjd-_Q" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Rn742e-YEeK0p4PkXjd-_Q" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Rn742u-YEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Rn742--YEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Rn743O-YEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Rn743e-YEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Rn743u-YEeK0p4PkXjd-_Q" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Rn743--YEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Rn744O-YEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Rn744e-YEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Rn744u-YEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Rn744--YEeK0p4PkXjd-_Q" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Rn745O-YEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Rn745e-YEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Rn745u-YEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Rn745--YEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_RnjeUO-YEeK0p4PkXjd-_Q"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Rn740e-YEeK0p4PkXjd-_Q" x="651" y="379"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_ZHO78O-YEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZHO78u-YEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZHO78--YEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZHO79O-YEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZHO79e-YEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZHO79u-YEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZHO79--YEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ZHO7-O-YEeK0p4PkXjd-_Q" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ZHO7-e-YEeK0p4PkXjd-_Q" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_vpscQO-YEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_vpaIYO-YEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_vpscQe-YEeK0p4PkXjd-_Q"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_yrtbwO-YEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_yrVBQO-YEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_yrtbwe-YEeK0p4PkXjd-_Q"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ZHO7-u-YEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ZHO7---YEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ZHO7_O-YEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZHO7_e-YEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ZHO7_u-YEeK0p4PkXjd-_Q" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ZHO7_--YEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ZHO8AO-YEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ZHO8Ae-YEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZHO8Au-YEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ZHO8A--YEeK0p4PkXjd-_Q" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ZHO8BO-YEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ZHO8Be-YEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ZHO8Bu-YEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZHO8B--YEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_ZGwa0O-YEeK0p4PkXjd-_Q"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZHO78e-YEeK0p4PkXjd-_Q" y="204" height="91"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Ot3I0O-iEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ot3I0u-iEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ot3I0--iEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ot3I1O-iEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ot3I1e-iEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ot3I1u-iEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ot3I1--iEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Ot3I2O-iEeK0p4PkXjd-_Q" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Ot3I2e-iEeK0p4PkXjd-_Q" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_XmGU0O-iEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_Xlt6UO-iEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XmGU0e-iEeK0p4PkXjd-_Q"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_bEXygO-iEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_bD8UsO-iEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_bEXyge-iEeK0p4PkXjd-_Q"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_eqEG0O-iEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_epxy8O-iEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_eqEG0e-iEeK0p4PkXjd-_Q"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_indJcO-iEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_inEu8O-iEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_indJce-iEeK0p4PkXjd-_Q"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Ot3I2u-iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Ot3I2--iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Ot3I3O-iEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ot3I3e-iEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Ot3I3u-iEeK0p4PkXjd-_Q" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Ot3I3--iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Ot3I4O-iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Ot3I4e-iEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ot3I4u-iEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Ot3I4--iEeK0p4PkXjd-_Q" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Ot3I5O-iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Ot3I5e-iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Ot3I5u-iEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ot3I5--iEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_OtShEO-iEeK0p4PkXjd-_Q"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ot3I0e-iEeK0p4PkXjd-_Q" x="148" y="374"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Q7FOUO-iEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Q7FOUu-iEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Q7FOU--iEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Q7FOVO-iEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Q7FOVe-iEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Q7FOVu-iEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Q7FOV--iEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Q7FOWO-iEeK0p4PkXjd-_Q" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Q7FOWe-iEeK0p4PkXjd-_Q" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Q7FOWu-iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Q7FOW--iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Q7FOXO-iEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Q7FOXe-iEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Q7FOXu-iEeK0p4PkXjd-_Q" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Q7FOX--iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Q7FOYO-iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Q7FOYe-iEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Q7FOYu-iEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Q7FOY--iEeK0p4PkXjd-_Q" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Q7FOZO-iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Q7FOZe-iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Q7FOZu-iEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Q7FOZ--iEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_Q6ta4O-iEeK0p4PkXjd-_Q"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Q7FOUe-iEeK0p4PkXjd-_Q" x="799" y="398"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_j4XzEeT_EeKSDdPH_NXL-g"/>
+    <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+    <edges xmi:type="notation:Connector" xmi:id="_YC914OUAEeKSDdPH_NXL-g" type="4002" source="_vkxIwOT_EeKSDdPH_NXL-g" target="_ruaiQOT_EeKSDdPH_NXL-g" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_YDD8gOUAEeKSDdPH_NXL-g" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_YDD8geUAEeKSDdPH_NXL-g" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_YC914eUAEeKSDdPH_NXL-g" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_YCxooOUAEeKSDdPH_NXL-g"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YC914uUAEeKSDdPH_NXL-g" points="[5, -13, -35, 79]$[34, -80, -6, 12]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YDD8guUAEeKSDdPH_NXL-g" id="(0.5779816513761468,0.125)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YDD8g-UAEeKSDdPH_NXL-g" id="(0.31,0.88)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_Y03M4OUAEeKSDdPH_NXL-g" type="4002" source="_tjX4wOT_EeKSDdPH_NXL-g" target="_tBcQYOT_EeKSDdPH_NXL-g" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Y09TgOUAEeKSDdPH_NXL-g" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Y09TgeUAEeKSDdPH_NXL-g" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_Y03M4eUAEeKSDdPH_NXL-g" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_Y0k5AOUAEeKSDdPH_NXL-g"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Y03M4uUAEeKSDdPH_NXL-g" points="[-22, -7, 246, 68]$[-252, -60, 16, 15]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Y09TguUAEeKSDdPH_NXL-g" id="(0.22,0.08)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Y09Tg-UAEeKSDdPH_NXL-g" id="(0.3,0.77)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_iqWrUOUAEeKSDdPH_NXL-g" type="4002" source="_gsWtkOUAEeKSDdPH_NXL-g" target="_tBcQYOT_EeKSDdPH_NXL-g" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_iqcx8OUAEeKSDdPH_NXL-g" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_iqcx8eUAEeKSDdPH_NXL-g" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_iqWrUeUAEeKSDdPH_NXL-g" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_ip-Q0OUAEeKSDdPH_NXL-g"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iqWrUuUAEeKSDdPH_NXL-g" points="[11, -9, -112, 88]$[114, -92, -9, 5]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iqgcUOUAEeKSDdPH_NXL-g" id="(0.38,0.09)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iqgcUeUAEeKSDdPH_NXL-g" id="(0.09,0.75)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_jXrEUOUAEeKSDdPH_NXL-g" type="4002" source="_fMVFQOUAEeKSDdPH_NXL-g" target="_ruaiQOT_EeKSDdPH_NXL-g" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_jXrEU-UAEeKSDdPH_NXL-g" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jXrEVOUAEeKSDdPH_NXL-g" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_jXrEUeUAEeKSDdPH_NXL-g" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_jXYwcOUAEeKSDdPH_NXL-g"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jXrEUuUAEeKSDdPH_NXL-g" points="[-6, -9, 45, 75]$[-47, -72, 4, 12]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jXrEVeUAEeKSDdPH_NXL-g" id="(0.36,0.09)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jXrEVuUAEeKSDdPH_NXL-g" id="(0.65,0.88)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_uUewIOUAEeKSDdPH_NXL-g" type="4001" source="_fMVFQOUAEeKSDdPH_NXL-g" target="_vkxIwOT_EeKSDdPH_NXL-g" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_uUfXMOUAEeKSDdPH_NXL-g" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_uUfXMeUAEeKSDdPH_NXL-g" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_uUfXMuUAEeKSDdPH_NXL-g" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_uUfXM-UAEeKSDdPH_NXL-g" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_uUf-QOUAEeKSDdPH_NXL-g" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_uUf-QeUAEeKSDdPH_NXL-g" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_uUf-QuUAEeKSDdPH_NXL-g" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_uUf-Q-UAEeKSDdPH_NXL-g" x="-16" y="23"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_uUf-ROUAEeKSDdPH_NXL-g" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_uUf-ReUAEeKSDdPH_NXL-g" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_uUf-RuUAEeKSDdPH_NXL-g" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_uUf-R-UAEeKSDdPH_NXL-g" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_uUewIeUAEeKSDdPH_NXL-g" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_uTre4OUAEeKSDdPH_NXL-g"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uUewIuUAEeKSDdPH_NXL-g" points="[-1, 1, 73, 0]$[-72, 0, 2, -1]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uUohIOUAEeKSDdPH_NXL-g" id="(0.009174311926605505,0.4175824175824176)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uUohIeUAEeKSDdPH_NXL-g" id="(0.981651376146789,0.42857142857142855)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_UJZI8O-YEeK0p4PkXjd-_Q" type="4002" source="_Rn740O-YEeK0p4PkXjd-_Q" target="_tBcQYOT_EeKSDdPH_NXL-g" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_UJZI8--YEeK0p4PkXjd-_Q" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_UJZI9O-YEeK0p4PkXjd-_Q" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_UJZI8e-YEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_UJAucO-YEeK0p4PkXjd-_Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_UJZI8u-YEeK0p4PkXjd-_Q" points="[0, -10, -17, 231]$[5, -224, -12, 17]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UJfPkO-YEeK0p4PkXjd-_Q" id="(0.56,0.1)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UJfPke-YEeK0p4PkXjd-_Q" id="(0.28,0.83)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_ikHGEO-YEeK0p4PkXjd-_Q" type="4002" source="_ZHO78O-YEeK0p4PkXjd-_Q" target="_ruaiQOT_EeKSDdPH_NXL-g" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ikHGE--YEeK0p4PkXjd-_Q" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ikHGFO-YEeK0p4PkXjd-_Q" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_ikHGEe-YEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_ijurkO-YEeK0p4PkXjd-_Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ikHGEu-YEeK0p4PkXjd-_Q" points="[0, -6, -30, 236]$[30, -233, 0, 9]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ikNMsO-YEeK0p4PkXjd-_Q" id="(0.67,0.06)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ikNMse-YEeK0p4PkXjd-_Q" id="(0.51,0.91)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_UKjbAO-iEeK0p4PkXjd-_Q" type="4002" source="_Q7FOUO-iEeK0p4PkXjd-_Q" target="_tBcQYOT_EeKSDdPH_NXL-g" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_UKjbA--iEeK0p4PkXjd-_Q" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_UKjbBO-iEeK0p4PkXjd-_Q" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_UKjbAe-iEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_UKLAgO-iEeK0p4PkXjd-_Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_UKjbAu-iEeK0p4PkXjd-_Q" points="[-2, -6, 76, 246]$[-75, -239, 3, 13]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UKjbBe-iEeK0p4PkXjd-_Q" id="(0.35,0.06)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UKjbBu-iEeK0p4PkXjd-_Q" id="(0.6,0.87)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_VIS1oO-iEeK0p4PkXjd-_Q" type="4002" source="_Ot3I0O-iEeK0p4PkXjd-_Q" target="_ruaiQOT_EeKSDdPH_NXL-g" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_VIY8QO-iEeK0p4PkXjd-_Q" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_VIY8Qe-iEeK0p4PkXjd-_Q" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_VIS1oe-iEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_VH6bIO-iEeK0p4PkXjd-_Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_VIS1ou-iEeK0p4PkXjd-_Q" points="[6, -13, -118, 222]$[124, -227, 0, 8]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VId0wO-iEeK0p4PkXjd-_Q" id="(0.76,0.13)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VId0we-iEeK0p4PkXjd-_Q" id="(0.54,0.92)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_UCFqMO3vEeKwLp35IbAIig" type="PapyrusUMLClassDiagram" name="PropertySetter" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_aL5hEO3vEeKwLp35IbAIig" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aL5hEu3vEeKwLp35IbAIig" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aL5hE-3vEeKwLp35IbAIig" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aL5hFO3vEeKwLp35IbAIig" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aL5hFe3vEeKwLp35IbAIig" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aL5hFu3vEeKwLp35IbAIig" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aL5hF-3vEeKwLp35IbAIig" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_aL5hGO3vEeKwLp35IbAIig" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_aL_nsO3vEeKwLp35IbAIig" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_aL_nse3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_aL_nsu3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_aL_ns-3vEeKwLp35IbAIig"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aL_ntO3vEeKwLp35IbAIig"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_aL_nte3vEeKwLp35IbAIig" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_aL_ntu3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_aL_nt-3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_aL_nuO3vEeKwLp35IbAIig"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aL_nue3vEeKwLp35IbAIig"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_aL_nuu3vEeKwLp35IbAIig" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_aL_nu-3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_aL_nvO3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_aL_nve3vEeKwLp35IbAIig"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aL_nvu3vEeKwLp35IbAIig"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_DN8s0NjhEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aL5hEe3vEeKwLp35IbAIig" x="96" y="30"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_aMFuUO3vEeKwLp35IbAIig" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aMFuUu3vEeKwLp35IbAIig" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aMFuU-3vEeKwLp35IbAIig" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aMFuVO3vEeKwLp35IbAIig" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aMFuVe3vEeKwLp35IbAIig" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aMFuVu3vEeKwLp35IbAIig" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aMFuV-3vEeKwLp35IbAIig" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_aMFuWO3vEeKwLp35IbAIig" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_aMFuWe3vEeKwLp35IbAIig" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_aMFuWu3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_aMFuW-3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_aMFuXO3vEeKwLp35IbAIig"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aMFuXe3vEeKwLp35IbAIig"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_aMFuXu3vEeKwLp35IbAIig" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_L7eCkO5WEeK0p4PkXjd-_Q" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_L7LusO5WEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_L7eCke5WEeK0p4PkXjd-_Q"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_kD_hwO5WEeK0p4PkXjd-_Q" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_fF4pAO5WEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kD_hwe5WEeK0p4PkXjd-_Q" x="61" y="25"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_mDO1oO5WEeK0p4PkXjd-_Q" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_mCwUgO5WEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_mDO1oe5WEeK0p4PkXjd-_Q"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_aMFuX-3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_aMFuYO3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_aMFuYe3vEeKwLp35IbAIig"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aMFuYu3vEeKwLp35IbAIig"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_aMFuY-3vEeKwLp35IbAIig" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_aMFuZO3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_aMFuZe3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_aMFuZu3vEeKwLp35IbAIig"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aMFuZ-3vEeKwLp35IbAIig"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_q85OgO3uEeKwLp35IbAIig"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aMFuUe3vEeKwLp35IbAIig" x="96" y="198"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_fyt_oO3vEeKwLp35IbAIig" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fyt_ou3vEeKwLp35IbAIig" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fyt_o-3vEeKwLp35IbAIig" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fyt_pO3vEeKwLp35IbAIig" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fyt_pe3vEeKwLp35IbAIig" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fyt_pu3vEeKwLp35IbAIig" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fyt_p-3vEeKwLp35IbAIig" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_fyt_qO3vEeKwLp35IbAIig" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_fyt_qe3vEeKwLp35IbAIig" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_p4HscO5qEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_p3vR8O5qEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_p4Hsce5qEeK0p4PkXjd-_Q"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_fyt_qu3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_fyt_q-3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_fyt_rO3vEeKwLp35IbAIig"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fyt_re3vEeKwLp35IbAIig"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_fyt_ru3vEeKwLp35IbAIig" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_GQIF0O5VEeK0p4PkXjd-_Q" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_GOgVMO5VEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_GQIF0e5VEeK0p4PkXjd-_Q"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_fyt_r-3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_fyt_sO3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_fyt_se3vEeKwLp35IbAIig"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fyt_su3vEeKwLp35IbAIig"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_fy0GQO3vEeKwLp35IbAIig" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_fy0GQe3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_fy0GQu3vEeKwLp35IbAIig"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_fy0GQ-3vEeKwLp35IbAIig"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fy0GRO3vEeKwLp35IbAIig"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_fyVlIO3vEeKwLp35IbAIig"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fyt_oe3vEeKwLp35IbAIig" x="96" y="438"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_28aOsO5VEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_28gVUO5VEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_28gVUe5VEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_28gVUu5VEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_28gVU-5VEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_28gVVO5VEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_28gVVe5VEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_28gVVu5VEeK0p4PkXjd-_Q" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_28mb8O5VEeK0p4PkXjd-_Q" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_28mb8e5VEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_28mb8u5VEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_28mb8-5VEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_28mb9O5VEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_28mb9e5VEeK0p4PkXjd-_Q" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_28mb9u5VEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_28mb9-5VEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_28mb-O5VEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_28mb-e5VEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_28mb-u5VEeK0p4PkXjd-_Q" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_28mb--5VEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_28mb_O5VEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_28mb_e5VEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_28mb_u5VEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_-vaacNa7EeKPiuTfpuvqHA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_28aOse5VEeK0p4PkXjd-_Q" x="492" y="444"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_R-02sO5XEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_R-02su5XEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_R-02s-5XEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_R-02tO5XEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_R-02te5XEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_R-02tu5XEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_R-02t-5XEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_R-02uO5XEeK0p4PkXjd-_Q" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_R-02ue5XEeK0p4PkXjd-_Q" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_R-02uu5XEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_R-02u-5XEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_R-02vO5XEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_R-02ve5XEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_R-02vu5XEeK0p4PkXjd-_Q" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_R-02v-5XEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_R-02wO5XEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_R-02we5XEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_R-02wu5XEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_R-02w-5XEeK0p4PkXjd-_Q" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_R-02xO5XEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_R-02xe5XEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_R-02xu5XEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_R-02x-5XEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_R-WVkO5XEeK0p4PkXjd-_Q"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_R-02se5XEeK0p4PkXjd-_Q" x="24" y="611"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_UfT2cO5XEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UfT2cu5XEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UfT2c-5XEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UfT2dO5XEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UfT2de5XEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UfT2du5XEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UfT2d-5XEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_UfT2eO5XEeK0p4PkXjd-_Q" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_UfT2ee5XEeK0p4PkXjd-_Q" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_UfT2eu5XEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_UfT2e-5XEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_UfT2fO5XEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UfT2fe5XEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_UfT2fu5XEeK0p4PkXjd-_Q" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_UfT2f-5XEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_UfT2gO5XEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_UfT2ge5XEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UfT2gu5XEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_UfT2g-5XEeK0p4PkXjd-_Q" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_UfT2hO5XEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_UfT2he5XEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_UfT2hu5XEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UfT2h-5XEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_Ue7b8O5XEeK0p4PkXjd-_Q"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UfT2ce5XEeK0p4PkXjd-_Q" x="222" y="612"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_JSk6cO5mEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JSk6cu5mEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JSk6c-5mEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JSk6dO5mEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JSk6de5mEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JSk6du5mEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JSk6d-5mEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cyvucO5mEeK0p4PkXjd-_Q" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cyvuce5mEeK0p4PkXjd-_Q" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cyvucu5mEeK0p4PkXjd-_Q" key="StereotypeList" value="Ecore::EClass"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cyvuc-5mEeK0p4PkXjd-_Q" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cyvudO5mEeK0p4PkXjd-_Q" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cyvude5mEeK0p4PkXjd-_Q" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_JSk6eO5mEeK0p4PkXjd-_Q" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_JSk6ee5mEeK0p4PkXjd-_Q" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_NCGgMO5mEeK0p4PkXjd-_Q" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_NBuFsO5mEeK0p4PkXjd-_Q"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_NCGgMe5mEeK0p4PkXjd-_Q"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_JSk6eu5mEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_JSk6e-5mEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_JSk6fO5mEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JSk6fe5mEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_JSk6fu5mEeK0p4PkXjd-_Q" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_JSk6f-5mEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_JSk6gO5mEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_JSk6ge5mEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JSk6gu5mEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_JSk6g-5mEeK0p4PkXjd-_Q" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_JSk6hO5mEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_JSk6he5mEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_JSk6hu5mEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JSk6h-5mEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_JSMf8O5mEeK0p4PkXjd-_Q"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JSk6ce5mEeK0p4PkXjd-_Q" x="528" y="210"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_-0YU4O5zEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-0YU4u5zEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-0YU4-5zEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-0YU5O5zEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-0YU5e5zEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-0YU5u5zEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-0YU5-5zEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_-0YU6O5zEeK0p4PkXjd-_Q" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_-0YU6e5zEeK0p4PkXjd-_Q" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_-0YU6u5zEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_-0YU6-5zEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_-0YU7O5zEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-0YU7e5zEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_-0YU7u5zEeK0p4PkXjd-_Q" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_-0YU7-5zEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_-0YU8O5zEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_-0YU8e5zEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-0YU8u5zEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_-0YU8-5zEeK0p4PkXjd-_Q" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_-0YU9O5zEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_-0YU9e5zEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_-0YU9u5zEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-0YU9-5zEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_-z_6YO5zEeK0p4PkXjd-_Q"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-0YU4e5zEeK0p4PkXjd-_Q" x="420" y="612"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_JhQv0O-cEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JhQv0u-cEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JhQv0--cEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JhQv1O-cEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JhQv1e-cEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JhQv1u-cEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JhQv1--cEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_JhQv2O-cEeK0p4PkXjd-_Q" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_JhQv2e-cEeK0p4PkXjd-_Q" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_JhQv2u-cEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_JhQv2--cEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_JhQv3O-cEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JhQv3e-cEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_JhQv3u-cEeK0p4PkXjd-_Q" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_JhQv3--cEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_JhQv4O-cEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_JhQv4e-cEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JhQv4u-cEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_JhQv4--cEeK0p4PkXjd-_Q" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_JhQv5O-cEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_JhQv5e-cEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_JhQv5u-cEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JhQv5--cEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_JgyOsO-cEeK0p4PkXjd-_Q"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JhQv0e-cEeK0p4PkXjd-_Q" x="120" y="726"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_GwJEUO-iEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GwJEUu-iEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GwJEU--iEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GwJEVO-iEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GwJEVe-iEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GwJEVu-iEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GwJEV--iEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_GwJEWO-iEeK0p4PkXjd-_Q" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GwJEWe-iEeK0p4PkXjd-_Q" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GwJEWu-iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GwJEW--iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GwJEXO-iEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GwJEXe-iEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GwJEXu-iEeK0p4PkXjd-_Q" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GwJEX--iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GwJEYO-iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GwJEYe-iEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GwJEYu-iEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GwJEY--iEeK0p4PkXjd-_Q" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GwJEZO-iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GwJEZe-iEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GwJEZu-iEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GwJEZ--iEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_Gvwp0O-iEeK0p4PkXjd-_Q"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GwJEUe-iEeK0p4PkXjd-_Q" x="315" y="763"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_xaib4O-lEeK0p4PkXjd-_Q" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xajqAO-lEeK0p4PkXjd-_Q" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xak4IO-lEeK0p4PkXjd-_Q" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xak4Ie-lEeK0p4PkXjd-_Q" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xak4Iu-lEeK0p4PkXjd-_Q" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xak4I--lEeK0p4PkXjd-_Q" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xak4JO-lEeK0p4PkXjd-_Q" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_xak4Je-lEeK0p4PkXjd-_Q" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_xalfMO-lEeK0p4PkXjd-_Q" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_xalfMe-lEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_xalfMu-lEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_xalfM--lEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xalfNO-lEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_xalfNe-lEeK0p4PkXjd-_Q" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_xalfNu-lEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_xalfN--lEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_xalfOO-lEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xalfOe-lEeK0p4PkXjd-_Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_xalfOu-lEeK0p4PkXjd-_Q" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_xalfO--lEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_xalfPO-lEeK0p4PkXjd-_Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_xalfPe-lEeK0p4PkXjd-_Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xalfPu-lEeK0p4PkXjd-_Q"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_xZ-bMO-lEeK0p4PkXjd-_Q"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xaib4e-lEeK0p4PkXjd-_Q" x="509" y="764"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_XyHrUBZ1EeOZwp016gnCFQ" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XyHrUhZ1EeOZwp016gnCFQ" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XyHrUxZ1EeOZwp016gnCFQ" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XyHrVBZ1EeOZwp016gnCFQ" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XyHrVRZ1EeOZwp016gnCFQ" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XyHrVhZ1EeOZwp016gnCFQ" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XyHrVxZ1EeOZwp016gnCFQ" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_XyHrWBZ1EeOZwp016gnCFQ" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_XyHrWRZ1EeOZwp016gnCFQ" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_XyHrWhZ1EeOZwp016gnCFQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_XyHrWxZ1EeOZwp016gnCFQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_XyHrXBZ1EeOZwp016gnCFQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XyHrXRZ1EeOZwp016gnCFQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_XyHrXhZ1EeOZwp016gnCFQ" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_XyHrXxZ1EeOZwp016gnCFQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_XyHrYBZ1EeOZwp016gnCFQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_XyHrYRZ1EeOZwp016gnCFQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XyHrYhZ1EeOZwp016gnCFQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_XyHrYxZ1EeOZwp016gnCFQ" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_XyHrZBZ1EeOZwp016gnCFQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_XyHrZRZ1EeOZwp016gnCFQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_XyHrZhZ1EeOZwp016gnCFQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XyHrZxZ1EeOZwp016gnCFQ"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_Xxh1cBZ1EeOZwp016gnCFQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XyHrURZ1EeOZwp016gnCFQ" x="644" y="622"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_UCFqMe3vEeKwLp35IbAIig"/>
+    <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+    <edges xmi:type="notation:Connector" xmi:id="_aMR7kO3vEeKwLp35IbAIig" type="4001" source="_aL5hEO3vEeKwLp35IbAIig" target="_aMFuUO3vEeKwLp35IbAIig" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_aMR7k-3vEeKwLp35IbAIig" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_aMR7lO3vEeKwLp35IbAIig" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_aMR7le3vEeKwLp35IbAIig" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_aMR7lu3vEeKwLp35IbAIig" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_aMR7l-3vEeKwLp35IbAIig" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_aMR7mO3vEeKwLp35IbAIig" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_aMR7me3vEeKwLp35IbAIig" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_aMR7mu3vEeKwLp35IbAIig" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_aMR7m-3vEeKwLp35IbAIig" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_aMR7nO3vEeKwLp35IbAIig" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_aMR7ne3vEeKwLp35IbAIig" visible="false" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_aMR7nu3vEeKwLp35IbAIig" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_aMR7ke3vEeKwLp35IbAIig" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_3GHqIO3uEeKwLp35IbAIig"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aMR7ku3vEeKwLp35IbAIig" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_iQEy4O3vEeKwLp35IbAIig" type="4001" source="_aMFuUO3vEeKwLp35IbAIig" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_iQEy4-3vEeKwLp35IbAIig" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_iQEy5O3vEeKwLp35IbAIig" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_iQEy5e3vEeKwLp35IbAIig" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_iQEy5u3vEeKwLp35IbAIig" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_iQEy5-3vEeKwLp35IbAIig" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_iQEy6O3vEeKwLp35IbAIig" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_iQEy6e3vEeKwLp35IbAIig" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_iQEy6u3vEeKwLp35IbAIig" y="65"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_iQEy6-3vEeKwLp35IbAIig" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_iQEy7O3vEeKwLp35IbAIig" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_iQEy7e3vEeKwLp35IbAIig" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_iQEy7u3vEeKwLp35IbAIig" x="-12" y="-31"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_iQEy4e3vEeKwLp35IbAIig" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_iPmRwO3vEeKwLp35IbAIig"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iQEy4u3vEeKwLp35IbAIig" points="[-43, 56, 92, -120]$[-95, 124, 40, -52]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iQXGwO3vEeKwLp35IbAIig" id="(0.2196078431372549,0.8611111111111112)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iQXGwe3vEeKwLp35IbAIig" id="(0.2554112554112554,0.038461538461538464)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_4DtN8O5VEeK0p4PkXjd-_Q" type="4001" source="_fyt_oO3vEeKwLp35IbAIig" target="_28aOsO5VEeK0p4PkXjd-_Q" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_4DtN8-5VEeK0p4PkXjd-_Q" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_4DtN9O5VEeK0p4PkXjd-_Q" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_4DtN9e5VEeK0p4PkXjd-_Q" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_4DtN9u5VEeK0p4PkXjd-_Q" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_4DtN9-5VEeK0p4PkXjd-_Q" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_4DtN-O5VEeK0p4PkXjd-_Q" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_4DtN-e5VEeK0p4PkXjd-_Q" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_4DtN-u5VEeK0p4PkXjd-_Q" x="-33" y="17"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_4DtN--5VEeK0p4PkXjd-_Q" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_4DtN_O5VEeK0p4PkXjd-_Q" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_4DtN_e5VEeK0p4PkXjd-_Q" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_4DtN_u5VEeK0p4PkXjd-_Q" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_4DtN8e5VEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_4DImMO5VEeK0p4PkXjd-_Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4DtN8u5VEeK0p4PkXjd-_Q" points="[6, -7, -170, 0]$[171, -10, -5, -3]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4D_h0O5VEeK0p4PkXjd-_Q" id="(0.974025974025974,0.40384615384615385)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4D_h0e5VEeK0p4PkXjd-_Q" id="(0.05,0.29)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_Y9OMMO5XEeK0p4PkXjd-_Q" type="4002" source="_R-02sO5XEeK0p4PkXjd-_Q" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Y9US0O5XEeK0p4PkXjd-_Q" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Y9US0e5XEeK0p4PkXjd-_Q" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_Y9OMMe5XEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_Y8pkcO5XEeK0p4PkXjd-_Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Y9OMMu5XEeK0p4PkXjd-_Q" points="[12, -10, -97, 77]$[103, -79, -6, 8]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Y9US0u5XEeK0p4PkXjd-_Q" id="(0.41739130434782606,0.1)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Y9US0-5XEeK0p4PkXjd-_Q" id="(0.36796536796536794,0.9230769230769231)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_ZyK3MO5XEeK0p4PkXjd-_Q" type="4002" source="_UfT2cO5XEeK0p4PkXjd-_Q" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ZyK3M-5XEeK0p4PkXjd-_Q" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ZyK3NO5XEeK0p4PkXjd-_Q" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_ZyK3Me5XEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_ZxycsO5XEeK0p4PkXjd-_Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ZyK3Mu5XEeK0p4PkXjd-_Q" points="[-8, -12, 50, 76]$[-56, -82, 2, 6]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZyXEcO5XEeK0p4PkXjd-_Q" id="(0.4642857142857143,0.12)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZyXEce5XEeK0p4PkXjd-_Q" id="(0.5757575757575758,0.9423076923076923)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_QgWvwO5mEeK0p4PkXjd-_Q" type="4001" source="_JSk6cO5mEeK0p4PkXjd-_Q" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_QgX94O5mEeK0p4PkXjd-_Q" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_QgX94e5mEeK0p4PkXjd-_Q" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_QgX94u5mEeK0p4PkXjd-_Q" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_QgX94-5mEeK0p4PkXjd-_Q" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_QgYk8O5mEeK0p4PkXjd-_Q" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_QgYk8e5mEeK0p4PkXjd-_Q" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_QgYk8u5mEeK0p4PkXjd-_Q" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_QgYk8-5mEeK0p4PkXjd-_Q" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_QgYk9O5mEeK0p4PkXjd-_Q" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_QgYk9e5mEeK0p4PkXjd-_Q" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_QgYk9u5mEeK0p4PkXjd-_Q" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_QgYk9-5mEeK0p4PkXjd-_Q" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_QgWvwe5mEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_QfvrwO5mEeK0p4PkXjd-_Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QgWvwu5mEeK0p4PkXjd-_Q" points="[0, 15, 251, -111]$[0, 77, 251, -49]$[-251, 77, 0, -49]$[-251, 119, 0, -7]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Qghu4O5mEeK0p4PkXjd-_Q" id="(0.24342105263157895,0.8846153846153846)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Qghu4e5mEeK0p4PkXjd-_Q" id="(0.9437229437229437,0.0673076923076923)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_hnJRkO5mEeK0p4PkXjd-_Q" type="4001" source="_aMFuUO3vEeKwLp35IbAIig" target="_JSk6cO5mEeK0p4PkXjd-_Q" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_hnJRk-5mEeK0p4PkXjd-_Q" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hnJRlO5mEeK0p4PkXjd-_Q" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_hnPYMO5mEeK0p4PkXjd-_Q" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hnPYMe5mEeK0p4PkXjd-_Q" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_hnPYMu5mEeK0p4PkXjd-_Q" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hnPYM-5mEeK0p4PkXjd-_Q" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_hnPYNO5mEeK0p4PkXjd-_Q" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hnPYNe5mEeK0p4PkXjd-_Q" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_hnPYNu5mEeK0p4PkXjd-_Q" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hnPYN-5mEeK0p4PkXjd-_Q" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_hnPYOO5mEeK0p4PkXjd-_Q" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_hnPYOe5mEeK0p4PkXjd-_Q" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_hnJRke5mEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_hmkp0O5mEeK0p4PkXjd-_Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hnJRku5mEeK0p4PkXjd-_Q" points="[3, 3, -87, 0]$[90, 3, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hnVe0O5mEeK0p4PkXjd-_Q" id="(0.9882352941176471,0.5625)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hnVe0e5mEeK0p4PkXjd-_Q" id="(0.0,0.532258064516129)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_CpMqUO50EeK0p4PkXjd-_Q" type="4002" source="_-0YU4O5zEeK0p4PkXjd-_Q" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_CpMqU-50EeK0p4PkXjd-_Q" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_CpMqVO50EeK0p4PkXjd-_Q" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_CpMqUe50EeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_Co0P0O50EeK0p4PkXjd-_Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CpMqUu50EeK0p4PkXjd-_Q" points="[-23, -11, 134, 67]$[-145, -70, 12, 8]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CpSw8O50EeK0p4PkXjd-_Q" id="(0.21951219512195122,0.11)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CpSw8e50EeK0p4PkXjd-_Q" id="(0.8398268398268398,0.9304347826086956)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_QK9AoO-cEeK0p4PkXjd-_Q" type="4002" source="_JhQv0O-cEeK0p4PkXjd-_Q" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_QK-OwO-cEeK0p4PkXjd-_Q" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_QK-Owe-cEeK0p4PkXjd-_Q" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_QK9nsO-cEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_QKhi0O-cEeK0p4PkXjd-_Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QK9nse-cEeK0p4PkXjd-_Q" points="[1, -9, -24, 183]$[22, -182, -3, 10]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QLCgMO-cEeK0p4PkXjd-_Q" id="(0.43902439024390244,0.09)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QLCgMe-cEeK0p4PkXjd-_Q" id="(0.4458874458874459,0.9130434782608695)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_LuSZUO-iEeK0p4PkXjd-_Q" type="4002" source="_GwJEUO-iEeK0p4PkXjd-_Q" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_LuSZU--iEeK0p4PkXjd-_Q" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_LuSZVO-iEeK0p4PkXjd-_Q" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_LuSZUe-iEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_LuAFcO-iEeK0p4PkXjd-_Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LuSZUu-iEeK0p4PkXjd-_Q" points="[-7, -15, 94, 223]$[-85, -225, 16, 13]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LuYf8O-iEeK0p4PkXjd-_Q" id="(0.424,0.15)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LuYf8e-iEeK0p4PkXjd-_Q" id="(0.7402597402597403,0.8869565217391304)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_02FVsO-lEeK0p4PkXjd-_Q" type="4002" source="_xaib4O-lEeK0p4PkXjd-_Q" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_02LcUO-lEeK0p4PkXjd-_Q" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_02LcUe-lEeK0p4PkXjd-_Q" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_02FVse-lEeK0p4PkXjd-_Q" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_01zB0O-lEeK0p4PkXjd-_Q"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_02FVsu-lEeK0p4PkXjd-_Q" points="[-7, -5, 274, 229]$[-252, -216, 29, 18]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_02LcUu-lEeK0p4PkXjd-_Q" id="(0.32,0.05)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_02LcU--lEeK0p4PkXjd-_Q" id="(0.7792207792207793,0.8434782608695652)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_a9MgMBZ1EeOZwp016gnCFQ" type="4002" source="_XyHrUBZ1EeOZwp016gnCFQ" target="_fyt_oO3vEeKwLp35IbAIig" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_a9MgMxZ1EeOZwp016gnCFQ" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_a9MgNBZ1EeOZwp016gnCFQ" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_a9MgMRZ1EeOZwp016gnCFQ" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_a8mqUBZ1EeOZwp016gnCFQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_a9MgMhZ1EeOZwp016gnCFQ" points="[-31, -7, 335, 78]$[-352, -79, 14, 6]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_a9MgNRZ1EeOZwp016gnCFQ" id="(0.26515151515151514,0.07)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_a9MgNhZ1EeOZwp016gnCFQ" id="(0.9393939393939394,0.9217391304347826)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_Up8U8P91EeKlldop5b2mtw" type="PapyrusUMLClassDiagram" name="LayerOperators" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_mqw8QAkcEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mq3C4AkcEeOnVqX9VcfeWQ" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mq3C4QkcEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mq9JgAkcEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mq9JgQkcEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mq9JggkcEeOnVqX9VcfeWQ" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mq9JgwkcEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_mq9JhAkcEeOnVqX9VcfeWQ" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_mq9JhQkcEeOnVqX9VcfeWQ" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_FKWlwAw_EeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#__XEYgAw-EeOjX-JbGFEH7w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_FKWlwQw_EeOjX-JbGFEH7w" x="85" y="11"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_mq9JhgkcEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_mq9JhwkcEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_mq9JiAkcEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mq9JiQkcEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_mq9JigkcEeOnVqX9VcfeWQ" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_Dh-88AxDEeOjX-JbGFEH7w" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_Dhl7YAxDEeOjX-JbGFEH7w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_Dh-88QxDEeOjX-JbGFEH7w"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_0VwJkA3SEeOjX-JbGFEH7w" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_0VaLUA3SEeOjX-JbGFEH7w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_0VwJkQ3SEeOjX-JbGFEH7w"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_mq9JiwkcEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_mq9JjAkcEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_mq9JjQkcEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mq9JjgkcEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_mq9JjwkcEeOnVqX9VcfeWQ" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_mq9JkAkcEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_mq9JkQkcEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_mq9JkgkcEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mq9JkwkcEeOnVqX9VcfeWQ"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_WuVRUNjjEeKQqZMBCFd2Uw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mqw8QQkcEeOnVqX9VcfeWQ" x="-162" y="246"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_GLILsAkdEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GLILsgkdEeOnVqX9VcfeWQ" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GLILswkdEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GLILtAkdEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GLILtQkdEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GLILtgkdEeOnVqX9VcfeWQ" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GLILtwkdEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_GLILuAkdEeOnVqX9VcfeWQ" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GLILuQkdEeOnVqX9VcfeWQ" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_ysgoIAkiEeOnVqX9VcfeWQ" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_ysOUQAkiEeOnVqX9VcfeWQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_ysgoIQkiEeOnVqX9VcfeWQ"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GLILugkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GLILuwkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GLILvAkdEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GLILvQkdEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GLOSUAkdEeOnVqX9VcfeWQ" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_w6KWMAkhEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_w5x7sAkhEeOnVqX9VcfeWQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_w6KWMQkhEeOnVqX9VcfeWQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_T0Ap8AkiEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_TzuWEAkiEeOnVqX9VcfeWQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_T0Ap8QkiEeOnVqX9VcfeWQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_huCU0AkiEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_htp6UAkiEeOnVqX9VcfeWQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_huCU0QkiEeOnVqX9VcfeWQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_okYS0AkoEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_oj_4UAkoEeOnVqX9VcfeWQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_okYS0QkoEeOnVqX9VcfeWQ"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GLOSUQkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GLOSUgkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GLOSUwkdEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GLOSVAkdEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GLOSVQkdEeOnVqX9VcfeWQ" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GLOSVgkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GLOSVwkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GLOSWAkdEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GLOSWQkdEeOnVqX9VcfeWQ"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_GKddUAkdEeOnVqX9VcfeWQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GLILsQkdEeOnVqX9VcfeWQ" x="288" y="222" width="391"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_T6PAAAkdEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T6PAAgkdEeOnVqX9VcfeWQ" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T6PAAwkdEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T6PABAkdEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T6PABQkdEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T6PABgkdEeOnVqX9VcfeWQ" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T6PABwkdEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_T6PACAkdEeOnVqX9VcfeWQ" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_T6PACQkdEeOnVqX9VcfeWQ" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_TfenkAkmEeOnVqX9VcfeWQ" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_TfMTsAkmEeOnVqX9VcfeWQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_TfenkQkmEeOnVqX9VcfeWQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_rUDAsA2fEeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1yttEA2hEeOjX-JbGFEH7w" source="Stereotype_Annotation">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1yttEQ2hEeOjX-JbGFEH7w" key="StereotypeWithQualifiedNameList" value=""/>
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1yuUIA2hEeOjX-JbGFEH7w" key="StereotypeList" value="Ecore::EReference"/>
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1yuUIQ2hEeOjX-JbGFEH7w" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1yuUIg2hEeOjX-JbGFEH7w" key="PropStereoDisplay" value=""/>
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1yuUIw2hEeOjX-JbGFEH7w" key="StereotypePropertyLocation" value="Compartment"/>
+          </eAnnotations>
+          <element xmi:type="uml:Property" href="layers.uml#_rTr0UA2fEeOjX-JbGFEH7w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_rUDAsQ2fEeOjX-JbGFEH7w"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_T6PACgkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_T6PACwkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_T6PADAkdEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T6PADQkdEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_T6PADgkdEeOnVqX9VcfeWQ" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_ZkDggAkjEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_ZjkYUAkjEeOnVqX9VcfeWQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_ZkDggQkjEeOnVqX9VcfeWQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_1LL0kAkjEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_sQbgEAkjEeOnVqX9VcfeWQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_1LL0kQkjEeOnVqX9VcfeWQ" x="80" y="23"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_6U7VkAkjEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_6Ui7EAkjEeOnVqX9VcfeWQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_6U7VkQkjEeOnVqX9VcfeWQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_NyJjQAkkEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_HQzWIAkkEeOnVqX9VcfeWQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_NyJjQQkkEeOnVqX9VcfeWQ" x="69" y="59"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_U31MgAkkEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_U3cyAAkkEeOnVqX9VcfeWQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_U31MgQkkEeOnVqX9VcfeWQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_wq9owBKGEeO9e9pZ1EIGJg" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_p1keQBKGEeO9e9pZ1EIGJg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_wq9owRKGEeO9e9pZ1EIGJg" x="108" y="97"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_T6PADwkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_T6PAEAkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_T6PAEQkdEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T6PAEgkdEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_T6PAEwkdEeOnVqX9VcfeWQ" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_T6PAFAkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_T6PAFQkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_T6PAFgkdEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T6PAFwkdEeOnVqX9VcfeWQ"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_T5we4AkdEeOnVqX9VcfeWQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T6PAAQkdEeOnVqX9VcfeWQ" x="294" y="-132"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_wlZj8AkdEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wlZj8gkdEeOnVqX9VcfeWQ" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wlZj8wkdEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wlZj9AkdEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wlZj9QkdEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wlZj9gkdEeOnVqX9VcfeWQ" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wlZj9wkdEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_wlZj-AkdEeOnVqX9VcfeWQ" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_wlZj-QkdEeOnVqX9VcfeWQ" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_AmaP0AkmEeOnVqX9VcfeWQ" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_8J3zEAklEeOnVqX9VcfeWQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_AmaP0QkmEeOnVqX9VcfeWQ" x="78" y="14"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_wlZj-gkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_wlZj-wkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_wlZj_AkdEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wlZj_QkdEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_wlZj_gkdEeOnVqX9VcfeWQ" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_oF32EAkhEeOnVqX9VcfeWQ" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_WKdZYAkhEeOnVqX9VcfeWQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_oF32EQkhEeOnVqX9VcfeWQ" x="77" y="23"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_wlZj_wkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_wlZkAAkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_wlZkAQkdEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wlZkAgkdEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_wlZkAwkdEeOnVqX9VcfeWQ" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_wlZkBAkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_wlZkBQkdEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_wlZkBgkdEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wlZkBwkdEeOnVqX9VcfeWQ"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_wk7C0AkdEeOnVqX9VcfeWQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wlZj8QkdEeOnVqX9VcfeWQ" x="822" y="222" width="138"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_G-_bIAkpEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G-_bIgkpEeOnVqX9VcfeWQ" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G-_bIwkpEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G-_bJAkpEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G-_bJQkpEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G-_bJgkpEeOnVqX9VcfeWQ" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G-_bJwkpEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_G-_bKAkpEeOnVqX9VcfeWQ" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_G-_bKQkpEeOnVqX9VcfeWQ" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_G-_bKgkpEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_G-_bKwkpEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_G-_bLAkpEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G-_bLQkpEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_G-_bLgkpEeOnVqX9VcfeWQ" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_G-_bLwkpEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_G-_bMAkpEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_G-_bMQkpEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G-_bMgkpEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_G-_bMwkpEeOnVqX9VcfeWQ" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_G-_bNAkpEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_G-_bNQkpEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_G-_bNgkpEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G-_bNwkpEeOnVqX9VcfeWQ"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_G-g6AAkpEeOnVqX9VcfeWQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G-_bIQkpEeOnVqX9VcfeWQ" x="696" y="378"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_ELjJgAkxEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ELjJggkxEeOnVqX9VcfeWQ" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ELjJgwkxEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ELjJhAkxEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ELjJhQkxEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ELjJhgkxEeOnVqX9VcfeWQ" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ELjJhwkxEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_ELjJiAkxEeOnVqX9VcfeWQ" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ELjJiQkxEeOnVqX9VcfeWQ" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ELjJigkxEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ELjJiwkxEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ELjJjAkxEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ELjJjQkxEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ELjJjgkxEeOnVqX9VcfeWQ" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ELjJjwkxEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ELjJkAkxEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ELjJkQkxEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ELjJkgkxEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ELjJkwkxEeOnVqX9VcfeWQ" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ELjJlAkxEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ELjJlQkxEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ELjJlgkxEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ELjJlwkxEeOnVqX9VcfeWQ"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_ELKvAAkxEeOnVqX9VcfeWQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ELjJgQkxEeOnVqX9VcfeWQ" x="246" y="492" width="208"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_HyFLUAkxEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HyFLUgkxEeOnVqX9VcfeWQ" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HyFLUwkxEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HyFLVAkxEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HyFLVQkxEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HyFLVgkxEeOnVqX9VcfeWQ" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HyLR8AkxEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_HyLR8QkxEeOnVqX9VcfeWQ" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_HyLR8gkxEeOnVqX9VcfeWQ" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_HyLR8wkxEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_HyLR9AkxEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_HyLR9QkxEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HyLR9gkxEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_HyLR9wkxEeOnVqX9VcfeWQ" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_HyLR-AkxEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_HyLR-QkxEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_HyLR-gkxEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HyLR-wkxEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_HyLR_AkxEeOnVqX9VcfeWQ" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_HyLR_QkxEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_HyLR_gkxEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_HyLR_wkxEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HyLSAAkxEeOnVqX9VcfeWQ"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_Hxsw0AkxEeOnVqX9VcfeWQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HyFLUQkxEeOnVqX9VcfeWQ" x="522" y="492" width="229"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_muS64AnsEeOnVqX9VcfeWQ" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_muS64gnsEeOnVqX9VcfeWQ" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_muS64wnsEeOnVqX9VcfeWQ" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_muS65AnsEeOnVqX9VcfeWQ" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_muS65QnsEeOnVqX9VcfeWQ" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_muS65gnsEeOnVqX9VcfeWQ" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_muS65wnsEeOnVqX9VcfeWQ" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_muS66AnsEeOnVqX9VcfeWQ" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_muS66QnsEeOnVqX9VcfeWQ" type="7017">
+        <children xmi:type="notation:Shape" xmi:id="_zQxkAAnsEeOnVqX9VcfeWQ" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_yEySAAnsEeOnVqX9VcfeWQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_zQxkAQnsEeOnVqX9VcfeWQ" x="59" y="4"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_XTyfQAntEeOnVqX9VcfeWQ" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_XTdvIAntEeOnVqX9VcfeWQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XTyfQQntEeOnVqX9VcfeWQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_uNebYA3gEeOjX-JbGFEH7w" type="3012" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Property" href="layers.uml#_XwmlsA3gEeOjX-JbGFEH7w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_uNebYQ3gEeOjX-JbGFEH7w" x="54" y="45"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_muS66gnsEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_muS66wnsEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_muS67AnsEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_muS67QnsEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_muS67gnsEeOnVqX9VcfeWQ" type="7018">
+        <children xmi:type="notation:Shape" xmi:id="_vb3hIA3gEeOjX-JbGFEH7w" type="3013" fontName="Segoe UI" lineColor="0">
+          <element xmi:type="uml:Operation" href="layers.uml#_vbiJ8A3gEeOjX-JbGFEH7w"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_vb3hIQ3gEeOjX-JbGFEH7w"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_muS67wnsEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_muS68AnsEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_muS68QnsEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_muS68gnsEeOnVqX9VcfeWQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_muS68wnsEeOnVqX9VcfeWQ" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_muS69AnsEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_muS69QnsEeOnVqX9VcfeWQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_muS69gnsEeOnVqX9VcfeWQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_muS69wnsEeOnVqX9VcfeWQ"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_mt6gYAnsEeOnVqX9VcfeWQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_muS64QnsEeOnVqX9VcfeWQ" x="924" y="378" width="229" height="127"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_G71l8AxJEeOjX-JbGFEH7w" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G71l8gxJEeOjX-JbGFEH7w" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G71l8wxJEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G71l9AxJEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G71l9QxJEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G71l9gxJEeOjX-JbGFEH7w" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G71l9wxJEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_G71l-AxJEeOjX-JbGFEH7w" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_G71l-QxJEeOjX-JbGFEH7w" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_G71l-gxJEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_G71l-wxJEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_G71l_AxJEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G71l_QxJEeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_G71l_gxJEeOjX-JbGFEH7w" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_G71l_wxJEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_G71mAAxJEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_G71mAQxJEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G71mAgxJEeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_G71mAwxJEeOjX-JbGFEH7w" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_G71mBAxJEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_G71mBQxJEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_G71mBgxJEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G71mBwxJEeOjX-JbGFEH7w"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_G7XE0AxJEeOjX-JbGFEH7w"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_G71l8QxJEeOjX-JbGFEH7w" x="672" y="666" width="262"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_LU3bsAxJEeOjX-JbGFEH7w" type="2008" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LU3bsgxJEeOjX-JbGFEH7w" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LU3bswxJEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LU3btAxJEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LU3btQxJEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LU3btgxJEeOjX-JbGFEH7w" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LU3btwxJEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_LU3buAxJEeOjX-JbGFEH7w" type="5029"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LU3buQxJEeOjX-JbGFEH7w" type="7017">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LU3bugxJEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LU3buwxJEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LU3bvAxJEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LU3bvQxJEeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LU3bvgxJEeOjX-JbGFEH7w" type="7018">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LU3bvwxJEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LU3bwAxJEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LU3bwQxJEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LU3bwgxJEeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LU3bwwxJEeOjX-JbGFEH7w" type="7019">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LU3bxAxJEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LU3bxQxJEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LU3bxgxJEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LU3bxwxJEeOjX-JbGFEH7w"/>
+      </children>
+      <element xmi:type="uml:Class" href="layers.uml#_LUfBMAxJEeOjX-JbGFEH7w"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LU3bsQxJEeOjX-JbGFEH7w" x="390" y="666" width="255"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="__Arl4AxLEeOjX-JbGFEH7w" type="2009" fontName="Segoe UI" lineColor="0">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__AsM8AxLEeOjX-JbGFEH7w" source="ShadowFigure">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__As0AAxLEeOjX-JbGFEH7w" key="ShadowFigure_Value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__As0AQxLEeOjX-JbGFEH7w" source="displayNameLabelIcon">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__As0AgxLEeOjX-JbGFEH7w" key="displayNameLabelIcon_value" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__As0AwxLEeOjX-JbGFEH7w" source="QualifiedName">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__As0BAxLEeOjX-JbGFEH7w" key="QualifiedNameDepth" value="1000"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Fy5gkAxMEeOjX-JbGFEH7w" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Fy5gkQxMEeOjX-JbGFEH7w" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Fy5gkgxMEeOjX-JbGFEH7w" key="StereotypeList" value="Ecore::EDataType"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Fy5gkwxMEeOjX-JbGFEH7w" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Fy5glAxMEeOjX-JbGFEH7w" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Fy5glQxMEeOjX-JbGFEH7w" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="__As0BQxLEeOjX-JbGFEH7w" type="5032"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__As0BgxLEeOjX-JbGFEH7w" type="7039">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__As0BwxLEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__As0CAxLEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__As0CQxLEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__As0CgxLEeOjX-JbGFEH7w"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__AtbEAxLEeOjX-JbGFEH7w" type="7040">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__AtbEQxLEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__AtbEgxLEeOjX-JbGFEH7w"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__AtbEwxLEeOjX-JbGFEH7w"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__AtbFAxLEeOjX-JbGFEH7w"/>
+      </children>
+      <element xmi:type="uml:PrimitiveType" href="layers.uml#__ADTwAxLEeOjX-JbGFEH7w"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__Arl4QxLEeOjX-JbGFEH7w" x="1056" y="240" width="234"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_Up8U8f91EeKlldop5b2mtw"/>
+    <element xmi:type="uml:Model" href="layers.uml#_gAOFQLcqEeK8_t7Rpq6ZJA"/>
+    <edges xmi:type="notation:Connector" xmi:id="_KTjZoAkdEeOnVqX9VcfeWQ" type="4001" source="_mqw8QAkcEeOnVqX9VcfeWQ" target="_GLILsAkdEeOnVqX9VcfeWQ" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_KTknwAkdEeOnVqX9VcfeWQ" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_KTlO0AkdEeOnVqX9VcfeWQ" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_KTlO0QkdEeOnVqX9VcfeWQ" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_KTlO0gkdEeOnVqX9VcfeWQ" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_KTlO0wkdEeOnVqX9VcfeWQ" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_KTlO1AkdEeOnVqX9VcfeWQ" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_KTlO1QkdEeOnVqX9VcfeWQ" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_KTl14AkdEeOnVqX9VcfeWQ" x="-47" y="16"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_KTl14QkdEeOnVqX9VcfeWQ" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_KTl14gkdEeOnVqX9VcfeWQ" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_KTl14wkdEeOnVqX9VcfeWQ" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_KTl15AkdEeOnVqX9VcfeWQ" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_KTjZoQkdEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_KSvhUAkdEeOnVqX9VcfeWQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_KTjZogkdEeOnVqX9VcfeWQ" points="[5, 6, -146, 0]$[151, 6, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KTyqMAkdEeOnVqX9VcfeWQ" id="(0.9662162162162162,0.42)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KTyqMQkdEeOnVqX9VcfeWQ" id="(0.0,0.42)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_X849IAkdEeOnVqX9VcfeWQ" type="4001" source="_T6PAAAkdEeOnVqX9VcfeWQ" target="_GLILsAkdEeOnVqX9VcfeWQ" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_X849IwkdEeOnVqX9VcfeWQ" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_X849JAkdEeOnVqX9VcfeWQ" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_X849JQkdEeOnVqX9VcfeWQ" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_X849JgkdEeOnVqX9VcfeWQ" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_X849JwkdEeOnVqX9VcfeWQ" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_X849KAkdEeOnVqX9VcfeWQ" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_X849KQkdEeOnVqX9VcfeWQ" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_X849KgkdEeOnVqX9VcfeWQ" x="-2" y="56"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_X849KwkdEeOnVqX9VcfeWQ" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_X849LAkdEeOnVqX9VcfeWQ" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_X849LQkdEeOnVqX9VcfeWQ" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_X849LgkdEeOnVqX9VcfeWQ" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_X849IQkdEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_X8acAAkdEeOnVqX9VcfeWQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_X849IgkdEeOnVqX9VcfeWQ" points="[-3, 5, 0, -56]$[-3, 60, 0, -1]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_X9FKYAkdEeOnVqX9VcfeWQ" id="(0.5089058524173028,0.9794871794871794)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_X9FKYQkdEeOnVqX9VcfeWQ" id="(0.5133689839572193,0.01)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_32P7YAkdEeOnVqX9VcfeWQ" type="4001" source="_T6PAAAkdEeOnVqX9VcfeWQ" target="_wlZj8AkdEeOnVqX9VcfeWQ" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_32QicAkdEeOnVqX9VcfeWQ" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_32RJgAkdEeOnVqX9VcfeWQ" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_32RJgQkdEeOnVqX9VcfeWQ" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_32RJggkdEeOnVqX9VcfeWQ" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_32RJgwkdEeOnVqX9VcfeWQ" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_32RJhAkdEeOnVqX9VcfeWQ" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_32RJhQkdEeOnVqX9VcfeWQ" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_32RJhgkdEeOnVqX9VcfeWQ" x="1" y="-89"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_32RJhwkdEeOnVqX9VcfeWQ" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_32RwkAkdEeOnVqX9VcfeWQ" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_32RwkQkdEeOnVqX9VcfeWQ" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_32RwkgkdEeOnVqX9VcfeWQ" x="41" y="-66"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_32P7YQkdEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_31lNAAkdEeOnVqX9VcfeWQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_32P7YgkdEeOnVqX9VcfeWQ" points="[10, 0, -100, -121]$[116, 0, 6, -121]$[116, 117, 6, -4]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_32aTcAkdEeOnVqX9VcfeWQ" id="(0.981651376146789,0.64)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_32a6gAkdEeOnVqX9VcfeWQ" id="(0.6521739130434783,0.038461538461538464)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_5yYQ4AkdEeOnVqX9VcfeWQ" type="4001" source="_GLILsAkdEeOnVqX9VcfeWQ" target="_wlZj8AkdEeOnVqX9VcfeWQ" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_5yYQ4wkdEeOnVqX9VcfeWQ" visible="false" type="6001">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5yYQ5AkdEeOnVqX9VcfeWQ" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5yYQ5QkdEeOnVqX9VcfeWQ" visible="false" type="6002">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5yYQ5gkdEeOnVqX9VcfeWQ" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5yYQ5wkdEeOnVqX9VcfeWQ" visible="false" type="6003">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5yYQ6AkdEeOnVqX9VcfeWQ" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5yYQ6QkdEeOnVqX9VcfeWQ" type="6005">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5yYQ6gkdEeOnVqX9VcfeWQ" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5yYQ6wkdEeOnVqX9VcfeWQ" visible="false" type="6033">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5yYQ7AkdEeOnVqX9VcfeWQ" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_5yYQ7QkdEeOnVqX9VcfeWQ" type="6034">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_5yYQ7gkdEeOnVqX9VcfeWQ" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_5yYQ4QkdEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+      <element xmi:type="uml:Association" href="layers.uml#_5x5vwAkdEeOnVqX9VcfeWQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5yYQ4gkdEeOnVqX9VcfeWQ" points="[9, 0, -194, -12]$[200, 12, -3, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5ykeIAkdEeOnVqX9VcfeWQ" id="(0.983957219251337,0.3282051282051282)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5ykeIQkdEeOnVqX9VcfeWQ" id="(0.021739130434782608,0.5)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_LBOhgAkpEeOnVqX9VcfeWQ" type="4002" source="_G-_bIAkpEeOnVqX9VcfeWQ" target="_wlZj8AkdEeOnVqX9VcfeWQ" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_LBOhgwkpEeOnVqX9VcfeWQ" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_LBOhhAkpEeOnVqX9VcfeWQ" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_LBOhgQkpEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_LAjzIAkpEeOnVqX9VcfeWQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LBOhggkpEeOnVqX9VcfeWQ" points="[9, -8, -57, 50]$[60, -49, -6, 9]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LBUoIAkpEeOnVqX9VcfeWQ" id="(0.608433734939759,0.08)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LBUoIQkpEeOnVqX9VcfeWQ" id="(0.2971014492753623,0.9217391304347826)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_OOdY4AkxEeOnVqX9VcfeWQ" type="4002" source="_ELjJgAkxEeOnVqX9VcfeWQ" target="_GLILsAkdEeOnVqX9VcfeWQ" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_OOdY4wkxEeOnVqX9VcfeWQ" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_OOdY5AkxEeOnVqX9VcfeWQ" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_OOdY4QkxEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_ON-3wAkxEeOnVqX9VcfeWQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OOdY4gkxEeOnVqX9VcfeWQ" points="[7, -9, -86, 106]$[87, -104, -6, 11]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OOjfgAkxEeOnVqX9VcfeWQ" id="(0.5048076923076923,0.09)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OOjfgQkxEeOnVqX9VcfeWQ" id="(0.2887700534759358,0.9371428571428572)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_PRQSoAkxEeOnVqX9VcfeWQ" type="4002" source="_HyFLUAkxEeOnVqX9VcfeWQ" target="_GLILsAkdEeOnVqX9VcfeWQ" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_PRQSowkxEeOnVqX9VcfeWQ" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_PRQSpAkxEeOnVqX9VcfeWQ" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_PRQSoQkxEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_PQ9-wAkxEeOnVqX9VcfeWQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_PRQSogkxEeOnVqX9VcfeWQ" points="[-6, -10, 54, 109]$[-55, -105, 5, 14]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PRWZQAkxEeOnVqX9VcfeWQ" id="(0.2183406113537118,0.1)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PRWZQQkxEeOnVqX9VcfeWQ" id="(0.6524064171122995,0.92)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_SfzL0AntEeOnVqX9VcfeWQ" type="4002" source="_muS64AnsEeOnVqX9VcfeWQ" target="_wlZj8AkdEeOnVqX9VcfeWQ" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Sf0Z8AntEeOnVqX9VcfeWQ" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Sf0Z8QntEeOnVqX9VcfeWQ" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_SfzL0QntEeOnVqX9VcfeWQ" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_SfZjMAntEeOnVqX9VcfeWQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_SfzL0gntEeOnVqX9VcfeWQ" points="[-13, -10, 65, 50]$[-73, -51, 5, 9]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Sf4EUAntEeOnVqX9VcfeWQ" id="(0.4245810055865922,0.09615384615384616)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Sf4EUQntEeOnVqX9VcfeWQ" id="(0.7246376811594203,0.9217391304347826)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_TziRIAxJEeOjX-JbGFEH7w" type="4002" source="_LU3bsAxJEeOjX-JbGFEH7w" target="_HyFLUAkxEeOnVqX9VcfeWQ" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_TziRIwxJEeOjX-JbGFEH7w" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_TziRJAxJEeOjX-JbGFEH7w" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_TziRIQxJEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_TzDwAAxJEeOjX-JbGFEH7w"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_TziRIgxJEeOjX-JbGFEH7w" points="[0, 0, 0, 74]$[0, -74, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TzoXwAxJEeOjX-JbGFEH7w" id="(0.7568627450980392,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TzoXwQxJEeOjX-JbGFEH7w" id="(0.2663755458515284,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_UrLDwAxJEeOjX-JbGFEH7w" type="4002" source="_G71l8AxJEeOjX-JbGFEH7w" target="_HyFLUAkxEeOnVqX9VcfeWQ" lineColor="0">
+      <children xmi:type="notation:DecorationNode" xmi:id="_UrLDwwxJEeOjX-JbGFEH7w" type="6007">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_UrRKYAxJEeOjX-JbGFEH7w" y="40"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_UrLDwQxJEeOjX-JbGFEH7w" fontName="Segoe UI"/>
+      <element xmi:type="uml:Generalization" href="layers.uml#_Uq4v4AxJEeOjX-JbGFEH7w"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_UrLDwgxJEeOjX-JbGFEH7w" points="[0, 0, 0, 74]$[0, -74, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UrRKYQxJEeOjX-JbGFEH7w" id="(0.14885496183206107,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UrRKYgxJEeOjX-JbGFEH7w" id="(0.8253275109170306,1.0)"/>
+    </edges>
+  </notation:Diagram>
+</xmi:XMI>
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayerOperatorConfigImplTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayerOperatorConfigImplTest.java
new file mode 100755
index 0000000..fd19262
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/LayerOperatorConfigImplTest.java
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.configmodel.layersconfig.impl;
+
+import static org.junit.Assert.assertNotNull;
+
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigFactory;
+import org.eclipse.papyrus.layers.stackmodel.InstanciationException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class LayerOperatorConfigImplTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayerOperatorConfigImpl#LayerOperatorConfigImpl()}.
+	 */
+	@Test
+	public void testLayerOperatorConfigImpl() {
+
+		// Create object
+		LayerOperatorConfig config = LayersconfigFactory.eINSTANCE.createLayerOperatorConfig();
+		config.setClassname(LayersPackage.eINSTANCE.getLayerOperatorDescriptor().getName());
+
+
+		assertNotNull("object created", config);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.LayerOperatorConfigImpl#createLayersOperatorDescriptor()}.
+	 *
+	 * @throws InstanciationException
+	 */
+	@Test
+	public void testCreateLayersOperatorDescriptor() throws InstanciationException {
+		// Create object
+		LayerOperatorConfig config = LayersconfigFactory.eINSTANCE.createLayerOperatorConfig();
+		config.setClassname(LayersPackage.eINSTANCE.getLayerOperatorDescriptor().getName());
+
+		// check creation
+		LayerOperatorDescriptor desc = config.createLayersOperatorDescriptor();
+		assertNotNull("desc created", desc);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/OperatorConfigImplTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/OperatorConfigImplTest.java
new file mode 100755
index 0000000..3f676c7
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/configmodel/layersconfig/impl/OperatorConfigImplTest.java
@@ -0,0 +1,124 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.configmodel.layersconfig.impl;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.papyrus.layers.configmodel.layersconfig.ClassnameKind;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayersconfigFactory;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig;
+import org.eclipse.papyrus.layers.stackmodel.InstanciationException;
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.operators.BooleanAndOperator;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class OperatorConfigImplTest {
+
+	protected String BUNDLE_ID = "org.eclipse.papyrus.layers.stackmodel";
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorConfigImpl#OperatorConfigImpl()}.
+	 */
+	@Test
+	public void testOperatorConfigImpl() {
+		// Create new object
+		OperatorConfig opConfig = LayersconfigFactory.eINSTANCE.createOperatorConfig();
+
+		assertNotNull("instance created", opConfig);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorConfigImpl#createOperatorDescriptor()}.
+	 */
+	// @Test
+	// public void testCreateOperatorDescriptor() {
+	// // Create new object
+	// OperatorConfig opConfig = LayersconfigFactory.eINSTANCE.createOperatorConfig();
+	//
+	// assertNotNull("instance created", opConfig);
+	// }
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorConfigImpl#createPojoInstance()}.
+	 *
+	 * @throws InstanciationException
+	 */
+	@Test
+	public void testCreatePojoInstance() throws InstanciationException {
+		// Create new object
+		OperatorConfig opConfig = LayersconfigFactory.eINSTANCE.createOperatorConfig();
+		opConfig.setClassname(BooleanAndOperator.class.getName());
+		opConfig.setBundleID(BUNDLE_ID);
+
+		PropertyOperator operator = opConfig.createOperatorDescriptor();
+
+		assertNotNull("operator created", operator);
+		assertTrue("operator type", operator instanceof CustomPropertyOperator);
+		assertNotNull("operator nested instance created", ((CustomPropertyOperator) operator).getOperatorInstance());
+		assertSame("classnameKind is changed", ClassnameKind.POJO_CLASSNAME, opConfig.getClassnameKind());
+		// Try a second time
+		operator = opConfig.createOperatorDescriptor();
+
+		assertNotNull("operator created", operator);
+		assertTrue("operator type", operator instanceof CustomPropertyOperator);
+		assertNotNull("operator nested instance created", ((CustomPropertyOperator) operator).getOperatorInstance());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.configmodel.layersconfig.impl.OperatorConfigImpl#createEmfInstance()}.
+	 *
+	 * @throws InstanciationException
+	 */
+	@Test
+	public void testCreateEmfInstance() throws InstanciationException {
+		// Create new object
+		OperatorConfig opConfig = LayersconfigFactory.eINSTANCE.createOperatorConfig();
+		opConfig.setClassname(LayersPackage.eINSTANCE.getDefaultPropertyOperator().getName());
+
+		PropertyOperator operator = opConfig.createOperatorDescriptor();
+
+		assertNotNull("operator created", operator);
+		assertTrue("operator type", operator instanceof DefaultPropertyOperator);
+		assertSame("classnameKind is changed", ClassnameKind.EMF_CLASSNAME, opConfig.getClassnameKind());
+		// Try a second time
+		operator = opConfig.createOperatorDescriptor();
+
+		assertNotNull("operator created", operator);
+		assertTrue("operator type", operator instanceof DefaultPropertyOperator);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/ManageExtPropertyTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/ManageExtPropertyTest.java
new file mode 100755
index 0000000..bfeedb7
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/ManageExtPropertyTest.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel;
+
+import static org.junit.Assert.fail;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class ManageExtPropertyTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.gmf.runtime.notation.NamedStyle#getName()}.
+	 */
+	@Test
+	@Ignore
+	public void testCreateExtPropertyInstance() {
+		fail("Not yet implemented");
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/PropertyValueFactoryTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/PropertyValueFactoryTest.java
new file mode 100755
index 0000000..8914b04
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/PropertyValueFactoryTest.java
@@ -0,0 +1,154 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.eclipse.emf.ecore.EObject;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ *
+ * @author dumoulin
+ *
+ *
+ */
+public class PropertyValueFactoryTest {
+
+	private static final String PROPERTY_NAME = "name";
+	public static final String LOCAL_NSURI = "org.eclipse.papyrus.layers.0.10";
+	public static final String EXT_NSURI = "org.eclipse.papyrus.extpropertymodel.0.10";
+	public static final String CLASS_LAYER = "Layer";
+	public static final String CLASS_EXTPROPERTY = "StringAndIntPropertyValue";
+
+
+	/**
+	 * Initialize EMF registry for standalone tests.
+	 * Do not do it for plugin tests
+	 *
+	 */
+	@BeforeClass
+	static public void setRegistry() {
+
+
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.PropertyValueFactory#newInstance(java.lang.String, java.lang.String)}.
+	 *
+	 * @throws IllegalAccessException
+	 * @throws InstantiationException
+	 * @throws ClassNotFoundException
+	 */
+	@Test
+	@Ignore
+	public void testLocalNewInstance() throws ClassNotFoundException, InstantiationException, IllegalAccessException {
+		PropertyValueFactory factory = new PropertyValueFactory();
+		Object instance = factory.newInstance("org.eclipse.papyrus.layers.stackmodel", "org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackImpl");
+
+
+		assertNotNull("instance created", instance);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.PropertyValueFactory#loadClass(java.lang.String, java.lang.String)}.
+	 *
+	 * @throws ClassNotFoundException
+	 */
+	@Test
+	public void testLoadLocalClass() throws ClassNotFoundException {
+
+		// Try to load a local class
+		PropertyValueFactory factory = new PropertyValueFactory();
+		Class<?> type = factory.loadClass("org.eclipse.papyrus.layers.stackmodel", "org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackImpl");
+
+
+		assertNotNull("class loaded", type);
+	}
+
+	/**
+	 * Test method
+	 *
+	 * @throws IllegalAccessException
+	 * @throws InstantiationException
+	 * @throws ClassNotFoundException
+	 */
+	@Test
+	public void testLocalnewEClassInstance() throws ClassNotFoundException, InstantiationException, IllegalAccessException {
+		PropertyValueFactory factory = new PropertyValueFactory();
+		Object instance = factory.newEClassInstance(LOCAL_NSURI, CLASS_LAYER);
+
+
+		assertNotNull("instance created", instance);
+	}
+
+	/**
+	 * Test method
+	 *
+	 * @throws IllegalAccessException
+	 * @throws InstantiationException
+	 * @throws ClassNotFoundException
+	 */
+	@Test
+	@Ignore
+	public void testDistnewEClassInstance() throws ClassNotFoundException, InstantiationException, IllegalAccessException {
+		PropertyValueFactory factory = new PropertyValueFactory();
+		Object instance = factory.newEClassInstance(EXT_NSURI, CLASS_EXTPROPERTY);
+
+
+		assertNotNull("instance created", instance);
+	}
+
+	/**
+	 * Test method
+	 *
+	 * @throws IllegalAccessException
+	 * @throws InstantiationException
+	 * @throws ClassNotFoundException
+	 */
+	@Test
+	@Ignore
+	public void testSetValue() throws ClassNotFoundException, InstantiationException, IllegalAccessException {
+		PropertyValueFactory factory = new PropertyValueFactory();
+		EObject instance = factory.newEClassInstance(EXT_NSURI, CLASS_EXTPROPERTY);
+
+		String value = "John Doe";
+		factory.setEObjectPropertyValue(instance, PROPERTY_NAME, value);
+
+		// Try to get the value
+		Object res = factory.getEObjectPropertyValue(instance, PROPERTY_NAME);
+
+		assertNotNull("value found", res);
+		assertEquals("value found", value, res);
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ExpressionMatcherTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ExpressionMatcherTest.java
new file mode 100755
index 0000000..353d60e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ExpressionMatcherTest.java
@@ -0,0 +1,461 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.exprmatcher;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.IOException;
+import java.util.List;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.util.FakeObservableListListener;
+import org.eclipse.papyrus.layers.stackmodel.util.ObservableListView;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class ExpressionMatcherTest {
+
+	/**
+	 * Name of the plugin that is created.
+	 */
+	final protected String PLUGIN_PROJECT_NAME = "org.eclipse.papyrus.layers.stackmodel";
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * @param modelFileName
+	 * @param modelNotationKey
+	 * @return
+	 */
+	private Resource getResource(String modelFileName, String modelNotationKey) {
+		ResourceSet resourceSet = new ResourceSetImpl();
+
+
+		URI uri = URI.createPlatformPluginURI(PLUGIN_PROJECT_NAME + modelFileName + "." + modelNotationKey, true);
+		// URI uri = URI.createPlatformPluginURI("/org.eclipse.papyrus.layers.stackmodel/model/layers.notation", true);
+
+
+		System.out.println("URI=" + uri.toString());
+		Resource resource = resourceSet.getResource(uri, true);
+		return resource;
+	}
+
+	/**
+	 * Get the diagram contained in the specified resource.
+	 *
+	 * @param modelFileName
+	 * @return
+	 */
+	private Diagram getDiagram(String modelFileName) {
+
+		// Get the Resource containing the diagram
+		EObject root = getResource(modelFileName, "notation").getContents().get(0);
+
+		return (Diagram) root;
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.exprmatcher.ExpressionMatcher#ExpressionMatcher(java.lang.String, java.util.List)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testExpressionMatcher() throws LayersException {
+
+
+		String expression = "self.oclIsKindOf(Shape)";
+		// "self.oclIsKindOf(Shape)",
+		// "self.oclIsKindOf(Shape) and self.oclAsType(Shape).visible = true",
+		// "self.oclAsType(Shape).visible = true",
+
+		String modelFileName = "/test/models/model1";
+		Diagram diagram = getDiagram(modelFileName);
+		List<EObject> searchRoots = diagram.getChildren();
+
+		ExpressionMatcher expressionMatcher = new ExpressionMatcher(expression, searchRoots);
+		assertNotNull("object created", expressionMatcher);
+
+	}
+
+	/**
+	 * Test an expression
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testExpression() throws LayersException {
+
+		// Shape s;
+		// ((NamedElement)s.getElement()).getName().startsWith(prefix);
+
+		String expression = "self.oclAsType(Shape).visible = true";
+		// self.oclAsType(Shape).element.oclAsType(uml::NamedElement).name.startsWith('C') = true
+		// "self.element.oclAsType(uml::NamedElement).name.startsWith('C') = true";
+		// "self.oclIsKindOf(Shape)",
+		// "self.oclIsKindOf(Shape) and self.oclAsType(Shape).visible = true",
+		// "self.oclAsType(Shape).visible = true",
+
+		String modelFileName = "/test/models/model1";
+		Diagram diagram = getDiagram(modelFileName);
+		List<EObject> searchRoots = diagram.getChildren();
+
+		ExpressionMatcher expressionMatcher = new ExpressionMatcher(expression, searchRoots);
+		assertNotNull("object created", expressionMatcher);
+
+		// Expression with uml can't works because there is no uml model.
+		assertTrue("result not empty", !expressionMatcher.getMatchingElements().isEmpty());
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.exprmatcher.ExpressionMatcher#ExpressionMatcher(java.lang.String, java.util.List)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testExpressionMatcherWithWrongExpr() throws LayersException {
+
+		// Wrong expr
+		String expression = "self.o";
+
+		String modelFileName = "/test/models/model1";
+		Diagram diagram = getDiagram(modelFileName);
+		List<EObject> searchRoots = diagram.getChildren();
+
+
+		ExpressionMatcher expressionMatcher;
+		try {
+			expressionMatcher = new ExpressionMatcher(expression, searchRoots);
+		} catch (Exception e) {
+			// shoul have one
+			return;
+		}
+		fail("An exception should be thrown");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.exprmatcher.ExpressionMatcher#refreshMatchingElements()}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testRefreshMatchingElements() throws LayersException {
+		String expression = "self.oclIsKindOf(Shape)";
+		// "self.oclIsKindOf(Shape)",
+		// "self.oclIsKindOf(Shape) and self.oclAsType(Shape).visible = true",
+		// "self.oclAsType(Shape).visible = true",
+
+		String modelFileName = "/test/models/model1";
+		Diagram diagram = getDiagram(modelFileName);
+		List<EObject> searchRoots = diagram.getChildren();
+
+		ExpressionMatcher expressionMatcher = new ExpressionMatcher(expression, searchRoots);
+		assertNotNull("object created", expressionMatcher);
+		assertTrue("elements founds", expressionMatcher.getMatchingElements().size() > 0);
+
+		// Call refresh
+		expressionMatcher.refreshMatchingElements();
+		assertEquals("elements founds", 20, expressionMatcher.getMatchingElements().size());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.exprmatcher.ExpressionMatcher#getExpression()}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testGetExpression() throws LayersException {
+		String expression = "self.oclIsKindOf(Shape)";
+
+		String modelFileName = "/test/models/model1";
+		Diagram diagram = getDiagram(modelFileName);
+		List<EObject> searchRoots = diagram.getChildren();
+
+		ExpressionMatcher expressionMatcher = new ExpressionMatcher(expression, searchRoots);
+
+		assertEquals("expression found", expression, expressionMatcher.getExpression());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.exprmatcher.ExpressionMatcher#setExpression(java.lang.String)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testSetExpression() throws LayersException {
+		String expression = "self.oclIsKindOf(Shape)";
+		// "self.oclIsKindOf(Shape)",
+		// "self.oclIsKindOf(Shape) and self.oclAsType(Shape).visible = true",
+		// "self.oclAsType(Shape).visible = true",
+
+		String modelFileName = "/test/models/model1";
+		Diagram diagram = getDiagram(modelFileName);
+		List<EObject> searchRoots = diagram.getChildren();
+
+		ExpressionMatcher expressionMatcher = new ExpressionMatcher(expression, searchRoots);
+		assertNotNull("object created", expressionMatcher);
+		assertTrue("elements founds", expressionMatcher.getMatchingElements().size() > 0);
+
+		// Set the expression
+		expressionMatcher.setExpression("self.oclAsType(Shape).visible = true");
+		assertTrue("elements founds", expressionMatcher.getMatchingElements().size() > 0);
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.exprmatcher.ExpressionMatcher#getMatchingElements()}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testGetMatchingElements() throws LayersException {
+		String expression = "self.oclIsKindOf(Shape)";
+		// "self.oclIsKindOf(Shape)",
+		// "self.oclIsKindOf(Shape) and self.oclAsType(Shape).visible = true",
+		// "self.oclAsType(Shape).visible = true",
+
+		String modelFileName = "/test/models/model1";
+		Diagram diagram = getDiagram(modelFileName);
+		List<EObject> searchRoots = diagram.getChildren();
+
+		ExpressionMatcher expressionMatcher = new ExpressionMatcher(expression, searchRoots);
+		assertNotNull("object created", expressionMatcher);
+		assertTrue("elements founds", expressionMatcher.getMatchingElements().size() > 0);
+		assertEquals("elements founds", 20, expressionMatcher.getMatchingElements().size());
+	}
+
+	/**
+	 * Test if the resource needed for the test exists.
+	 *
+	 * @throws ModelMultiException
+	 */
+	@Test
+	public void testResourceExist() throws IOException, CoreException {
+
+		String modelNotationKey = "notation";
+		String modelUMLKey = "uml";
+
+		String modelFileName = "/test/models/model1";
+
+		Resource resource = getResource(modelFileName, modelNotationKey);
+
+		assertNotNull("modelFile exist", resource);
+		assertTrue("model is loaded", !resource.getContents().isEmpty());
+	}
+
+	/**
+	 * Test if the resource needed for the test exists.
+	 *
+	 * @throws ModelMultiException
+	 */
+	@Test
+	public void testDiagramExist() throws IOException, CoreException {
+
+		String modelFileName = "/test/models/model1";
+		Diagram diagram = getDiagram(modelFileName);
+
+		assertNotNull("Diagram exist", diagram);
+	}
+
+	/**
+	 * Test removing elements.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testRemoveElements() throws LayersException {
+		String expression = "self.oclIsKindOf(Shape)";
+		// "self.oclIsKindOf(Shape)",
+		// "self.oclIsKindOf(Shape) and self.oclAsType(Shape).visible = true",
+		// "self.oclAsType(Shape).visible = true",
+
+		String modelFileName = "/test/models/model1";
+		Diagram diagram = getDiagram(modelFileName);
+
+		int removedElementCount = 5;
+		int addedElementCount = 0;
+		int expectedEventCount = 1;
+
+		ObservableListView<View> matchingElements = new ObservableListView<View>();
+		ExpressionMatcher expressionMatcher = new ExpressionMatcher(expression, matchingElements, diagram);
+
+		FakeObservableListListener<View> notifyingListListener = new FakeObservableListListener<View>();
+		matchingElements.getEventBus().register(notifyingListListener);
+
+		// Action
+		notifyingListListener.traces.clear();
+		removeElements(diagram, removedElementCount);
+		expressionMatcher.refreshMatchingElements();
+
+		// Assert
+		assertSame("event propagated", expectedEventCount, notifyingListListener.traces.size());
+
+		ObservableListView<View>.ObservableListEvent event = notifyingListListener.traces.get(0).notifier;
+
+		assertEquals("expected removed count", removedElementCount, event.getRemovedElements().size());
+		assertEquals("expected added count", addedElementCount, event.getAddedElements().size());
+	}
+
+	/**
+	 * Test removing elements.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testAddElements() throws LayersException {
+		String expression = "self.oclIsKindOf(Shape)";
+		// "self.oclIsKindOf(Shape)",
+		// "self.oclIsKindOf(Shape) and self.oclAsType(Shape).visible = true",
+		// "self.oclAsType(Shape).visible = true",
+
+		String modelFileName = "/test/models/model1";
+		Diagram diagram = getDiagram(modelFileName);
+
+		int removedElementCount = 0;
+		int addedElementCount = 5;
+		int expectedEventCount = 1;
+		int viewsCount = diagram.getChildren().size();
+
+		ObservableListView<View> matchingElements = new ObservableListView<View>();
+		ExpressionMatcher expressionMatcher = new ExpressionMatcher(expression, matchingElements, diagram);
+
+		FakeObservableListListener<View> notifyingListListener = new FakeObservableListListener<View>();
+		matchingElements.getEventBus().register(notifyingListListener);
+
+		// Action
+		notifyingListListener.traces.clear();
+		addShapeElements(diagram, addedElementCount);
+		removeElements(diagram, removedElementCount);
+		expressionMatcher.refreshMatchingElements();
+
+		// Assert
+		assertSame("elements added", viewsCount + addedElementCount, diagram.getChildren().size());
+
+		assertSame("event propagated", expectedEventCount, notifyingListListener.traces.size());
+
+		ObservableListView<View>.ObservableListEvent event = notifyingListListener.traces.get(0).notifier;
+
+		assertEquals("expected removed count", removedElementCount, event.getRemovedElements().size());
+		assertEquals("expected added count", addedElementCount, event.getAddedElements().size());
+	}
+
+	/**
+	 * Test removing elements.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testAddAndRemoveElements() throws LayersException {
+		String expression = "self.oclIsKindOf(Shape)";
+		// "self.oclIsKindOf(Shape)",
+		// "self.oclIsKindOf(Shape) and self.oclAsType(Shape).visible = true",
+		// "self.oclAsType(Shape).visible = true",
+
+		String modelFileName = "/test/models/model1";
+		Diagram diagram = getDiagram(modelFileName);
+
+		int removedElementCount = 4;
+		int addedElementCount = 5;
+		int expectedEventCount = 1;
+		int viewsCount = diagram.getChildren().size();
+
+		ObservableListView<View> matchingElements = new ObservableListView<View>();
+		ExpressionMatcher expressionMatcher = new ExpressionMatcher(expression, matchingElements, diagram);
+
+		FakeObservableListListener<View> notifyingListListener = new FakeObservableListListener<View>();
+		matchingElements.getEventBus().register(notifyingListListener);
+
+		// Action
+		notifyingListListener.traces.clear();
+		removeElements(diagram, removedElementCount);
+		addShapeElements(diagram, addedElementCount);
+		expressionMatcher.refreshMatchingElements();
+
+		// Assert
+		assertSame("elements added", viewsCount + addedElementCount - removedElementCount, diagram.getChildren().size());
+
+		assertSame("event propagated", expectedEventCount, notifyingListListener.traces.size());
+
+		ObservableListView<View>.ObservableListEvent event = notifyingListListener.traces.get(0).notifier;
+
+		assertEquals("expected removed count", removedElementCount, event.getRemovedElements().size());
+		assertEquals("expected added count", addedElementCount, event.getAddedElements().size());
+	}
+
+
+	/**
+	 * Remove n Views from the provided diagram
+	 *
+	 * @param diagram
+	 * @param removedElementCount
+	 */
+	private void removeElements(Diagram diagram, int removedElementCount) {
+
+		List<View> views = diagram.getChildren();
+
+		int index = views.size() - 1;
+		for (int i = 0; i < removedElementCount && index >= 0; i++) {
+			diagram.removeChild(views.get(index));
+			index = views.size() - 1;
+		}
+
+	}
+
+	/**
+	 * Add n Views to the provided diagram
+	 *
+	 * @param diagram
+	 * @param removedElementCount
+	 */
+	private void addShapeElements(Diagram diagram, int elementCount) {
+
+		for (int i = 0; i < elementCount; i++) {
+			diagram.createChild(NotationPackage.eINSTANCE.getShape());
+		}
+
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/TraceValueChangedEventListener.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/TraceValueChangedEventListener.java
new file mode 100755
index 0000000..53ad468
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/TraceValueChangedEventListener.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.exprmatcher;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.layers.stackmodel.util.TriggeredEventTraces;
+
+
+/**
+ * A listener on {@link LayersModelEventNotifier}. This listener trace events from
+ * the notifier.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class TraceValueChangedEventListener implements IValueChangedEventListener {
+
+	public TriggeredEventTraces<Notification> traces = new TriggeredEventTraces<Notification>();
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#layerAdded(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void valueChanged(Notification notification) {
+		traces.addTrace("valueChanged", notification);
+
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ValueChangedEventNotifierFactoryTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ValueChangedEventNotifierFactoryTest.java
new file mode 100755
index 0000000..e12751a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ValueChangedEventNotifierFactoryTest.java
@@ -0,0 +1,95 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.exprmatcher;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.layers.stackmodel.util.NotationAndUmlModelsFactory;
+import org.eclipse.uml2.uml.Class;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class ValueChangedEventNotifierFactoryTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#AdapterFactoryImpl()}.
+	 */
+	@Test
+	public void testValueChangedEventNotifierFactory() {
+
+		ValueChangedEventNotifierFactory notifierFactory = new ValueChangedEventNotifierFactory();
+		NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+		Diagram diagram1 = modelsFactory.newDiagram();
+		Class c1 = modelsFactory.newClass(diagram1, "C1");
+
+		// Action
+		ValueChangedEventNotifier eventNotifier = (ValueChangedEventNotifier) notifierFactory.adapt(c1, ValueChangedEventNotifier.class);
+
+		// Assert
+		assertNotNull("object created", eventNotifier);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#AdapterFactoryImpl()}.
+	 */
+	@Test
+	public void testReturnSameInstanceImpl() {
+
+		ValueChangedEventNotifierFactory notifierFactory = new ValueChangedEventNotifierFactory();
+		NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+		Diagram diagram1 = modelsFactory.newDiagram();
+		Class c1 = modelsFactory.newClass(diagram1, "C1");
+		Class c2 = modelsFactory.newClass(diagram1, "C2");
+
+		// Action
+		ValueChangedEventNotifier eventNotifier11 = (ValueChangedEventNotifier) notifierFactory.adapt(c1, ValueChangedEventNotifier.class);
+		ValueChangedEventNotifier eventNotifier12 = (ValueChangedEventNotifier) notifierFactory.adapt(c1, ValueChangedEventNotifier.class);
+
+		ValueChangedEventNotifier eventNotifier21 = (ValueChangedEventNotifier) notifierFactory.adapt(c2, ValueChangedEventNotifier.class);
+		ValueChangedEventNotifier eventNotifier22 = (ValueChangedEventNotifier) notifierFactory.adapt(c2, ValueChangedEventNotifier.class);
+
+		// Assert
+		assertNotNull("object created", eventNotifier11);
+		assertNotNull("object created", eventNotifier21);
+
+		assertNotEquals("instance are different between diagram", eventNotifier11, eventNotifier21);
+
+		assertEquals("return the same instance", eventNotifier11, eventNotifier12);
+		assertEquals("return the same instance", eventNotifier21, eventNotifier22);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ValueChangedEventNotifierTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ValueChangedEventNotifierTest.java
new file mode 100755
index 0000000..3a7df15
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ValueChangedEventNotifierTest.java
@@ -0,0 +1,222 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.exprmatcher;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.layers.stackmodel.util.NotationAndUmlModelsFactory;
+import org.eclipse.papyrus.layers.stackmodel.util.TriggeredEventTraces;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Property;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class ValueChangedEventNotifierTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.ValueChangedEventNotifier#ValueChangedEventNotifier()}.
+	 */
+	@Test
+	public void testValueChangedEventNotifier() {
+		NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+		Diagram diagram1 = modelsFactory.newDiagram();
+		Class c1 = modelsFactory.newClass(diagram1, "C1");
+
+		ValueChangedEventNotifierFactory notifierFactory = new ValueChangedEventNotifierFactory();
+		ValueChangedEventNotifier eventNotifier = (ValueChangedEventNotifier) notifierFactory.adapt(c1, ValueChangedEventNotifier.class);
+
+		// Assert
+		assertNotNull("notifier created", eventNotifier);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.ValueChangedEventNotifier#addEventListener(org.eclipse.papyrus.layers.stackmodel.notifier.IDiagramViewEventListener)}.
+	 */
+	@Test
+	public void testAddEventListener() {
+		NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+		Diagram diagram1 = modelsFactory.newDiagram();
+		Class c1 = modelsFactory.newClass(diagram1, "C1");
+
+		ValueChangedEventNotifierFactory notifierFactory = new ValueChangedEventNotifierFactory();
+		ValueChangedEventNotifier eventNotifier = (ValueChangedEventNotifier) notifierFactory.adapt(diagram1, ValueChangedEventNotifier.class);
+
+		TraceValueChangedEventListener listener = new TraceValueChangedEventListener();
+		eventNotifier.addEventListener(listener);
+
+		// Assert
+		assertTrue("listener added", eventNotifier.listeners.contains(listener));
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.ValueChangedEventNotifier#removeEventListener(org.eclipse.papyrus.layers.stackmodel.notifier.IDiagramViewEventListener)}.
+	 */
+	@Test
+	public void testRemoveEventListener() {
+		NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+		Diagram diagram1 = modelsFactory.newDiagram();
+		Class c1 = modelsFactory.newClass(diagram1, "C1");
+
+		ValueChangedEventNotifierFactory notifierFactory = new ValueChangedEventNotifierFactory();
+		ValueChangedEventNotifier eventNotifier = (ValueChangedEventNotifier) notifierFactory.adapt(diagram1, ValueChangedEventNotifier.class);
+
+		TraceValueChangedEventListener listener = new TraceValueChangedEventListener();
+		eventNotifier.addEventListener(listener);
+		eventNotifier.removeEventListener(listener);
+
+		// Assert
+		assertFalse("listener removed", eventNotifier.listeners.contains(listener));
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.ValueChangedEventNotifier#fireDiagramViewAddedEvent(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testClassNameChangedEvent() {
+		NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+		Diagram diagram1 = modelsFactory.newDiagram();
+		Class c1 = modelsFactory.newClass(diagram1, "C1");
+
+		ValueChangedEventNotifierFactory notifierFactory = new ValueChangedEventNotifierFactory();
+		ValueChangedEventNotifier eventNotifier = (ValueChangedEventNotifier) notifierFactory.adapt(diagram1, ValueChangedEventNotifier.class);
+
+		TraceValueChangedEventListener listener = new TraceValueChangedEventListener();
+		eventNotifier.addEventListener(listener);
+		TriggeredEventTraces<Notification> traces = listener.traces;
+		int expectedEventCount = 1;
+
+		// Action
+		traces.clear();
+		// Modify ele
+		c1.setName("newName");
+
+		// Assert
+		// Assert
+		assertTrue("event recorded", traces.contains("valueChanged"));
+		assertEquals("right number of events", expectedEventCount, traces.traces.size());
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.ValueChangedEventNotifier#fireDiagramViewRemovedEvent(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testPropertyAdded() {
+		NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+		Diagram diagram1 = modelsFactory.newDiagram();
+		Class c1 = modelsFactory.newClass(diagram1, "C1");
+
+		ValueChangedEventNotifierFactory notifierFactory = new ValueChangedEventNotifierFactory();
+		ValueChangedEventNotifier eventNotifier = (ValueChangedEventNotifier) notifierFactory.adapt(diagram1, ValueChangedEventNotifier.class);
+
+		TraceValueChangedEventListener listener = new TraceValueChangedEventListener();
+		eventNotifier.addEventListener(listener);
+		TriggeredEventTraces<Notification> traces = listener.traces;
+		int expectedEventCount = 1;
+
+		// Action
+		traces.clear();
+		// Modify ele
+		Property p1 = modelsFactory.newProperty(c1, "p1");
+
+		// Assert
+		// Assert
+		assertTrue("event recorded", traces.contains("valueChanged"));
+		assertEquals("one event recorded", expectedEventCount, traces.traces.size());
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.ValueChangedEventNotifier#fireDiagramViewRemovedEvent(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testPropertyNameChanged() {
+		NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+		Diagram diagram1 = modelsFactory.newDiagram();
+		Class c1 = modelsFactory.newClass(diagram1, "C1");
+		Property p1 = modelsFactory.newProperty(c1, "p1");
+
+		ValueChangedEventNotifierFactory notifierFactory = new ValueChangedEventNotifierFactory();
+		ValueChangedEventNotifier eventNotifier = notifierFactory.adapt(diagram1);
+
+		TraceValueChangedEventListener listener = new TraceValueChangedEventListener();
+		eventNotifier.addEventListener(listener);
+		TriggeredEventTraces<Notification> traces = listener.traces;
+		int expectedEventCount = 1;
+
+		// Action
+		traces.clear();
+		// Modify ele
+		p1.setName("NewName");
+
+		// Assert
+		assertTrue("event recorded", traces.contains("valueChanged"));
+		assertEquals("one event recorded", expectedEventCount, traces.traces.size());
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.ValueChangedEventNotifier#fireDiagramViewRemovedEvent(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testClassAdded() {
+		NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+		Diagram diagram1 = modelsFactory.newDiagram();
+		Class c1 = modelsFactory.newClass(diagram1, "C1");
+
+		ValueChangedEventNotifierFactory notifierFactory = new ValueChangedEventNotifierFactory();
+		ValueChangedEventNotifier eventNotifier = (ValueChangedEventNotifier) notifierFactory.adapt(diagram1, ValueChangedEventNotifier.class);
+
+		TraceValueChangedEventListener listener = new TraceValueChangedEventListener();
+		eventNotifier.addEventListener(listener);
+		TriggeredEventTraces<Notification> traces = listener.traces;
+		int expectedEventCount = 1; // Name is set before attachment ==> no corresponding event.
+
+		// Action
+		traces.clear();
+		Class c2 = modelsFactory.newClass(diagram1, "C2");
+
+		// Assert
+		assertTrue("event recorded", traces.contains("valueChanged"));
+		assertEquals("one event recorded", expectedEventCount, traces.traces.size());
+
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/integration/LayersStateAfterReloadTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/integration/LayersStateAfterReloadTest.java
new file mode 100755
index 0000000..cb1320f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/integration/LayersStateAfterReloadTest.java
@@ -0,0 +1,421 @@
+/*****************************************************************************
+ * Copyright (c) 2014 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.integration;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.List;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerState;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactoryForStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ * Tests checking the states of the layers after a reload of the model.
+ * The state should normally be "ATTACHED".
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersStateAfterReloadTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#LayersFactoryForStackImpl()}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testCreateLayersFactoryForStackImpl() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Create stack
+		LayersStack owningStack = application.getLayersStackFor(diagram);
+
+		LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+		assertNotNull("factory created", factory);
+
+		// Create tree
+		TopLayerOperator rootLayer = factory.createTopLayerOperator(owningStack, owningStack, application);
+		Layer layer1 = factory.createLayer(rootLayer, owningStack, application);
+		Layer layer2 = factory.createLayer(rootLayer, owningStack, application);
+		TopLayerOperator layerOperator1 = factory.createTopLayerOperator(rootLayer, owningStack, application);
+		Layer layer3 = factory.createLayer(layerOperator1, owningStack, application);
+
+		// asserts
+		assertNotNull("Layer created", rootLayer);
+		assertNotNull("Layer created", layer1);
+		assertNotNull("Layer created", layer2);
+		assertNotNull("Layer created", layerOperator1);
+		assertNotNull("Layer created", layer3);
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#findNewLayerName(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer)}.
+	 */
+	@Test
+	public void testFindNewLayerName() {
+
+		LayersFactoryForStackImpl factory = new LayersFactoryForStackImpl();
+		String expectedName1 = factory.LAYER_NAME_PREFIX + "0";
+
+
+		LayerOperator parent = LayersFactory.eINSTANCE.createTopLayerOperator();
+		String name1 = factory.findNewLayerName(parent);
+
+		assertEquals("expected name", expectedName1, name1);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createLayersStack()}.
+	 */
+	@Test
+	@Ignore
+	public void testCreateLayersStack() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for
+	 * {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#initLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression, org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}
+	 * .
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testInitLayer() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Create stack
+		LayersStack owningStack = application.getLayersStackFor(diagram);
+
+		LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+		// Create a Tree
+		TopLayerOperator rootLayer = factory.createTopLayerOperator(owningStack, owningStack, application);
+
+		// Create a layer and initialize it
+		Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+		factory.initLayer(layer1, rootLayer, owningStack, application);
+
+		// asserts
+		assertNotNull("Layer created", layer1);
+		assertSame("state attached", LayerState.ATTACHED, layer1.getState());
+		assertSame("application set", application, layer1.getApplication());
+		assertSame("owningStack set", owningStack, layer1.getOwningLayersStack());
+		assertSame("parent set", rootLayer, layer1.eContainer());
+	}
+
+	/**
+	 * Test method for
+	 * {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}
+	 * .
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testCreateLayer() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Create stack
+		LayersStack owningStack = application.getLayersStackFor(diagram);
+
+		LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+		// Create tree
+		TopLayerOperator rootLayer = factory.createTopLayerOperator(owningStack, owningStack, application);
+		Layer layer1 = factory.createLayer(rootLayer, owningStack, application);
+
+		// asserts
+		assertNotNull("Layer created", layer1);
+		assertSame("state attached", LayerState.ATTACHED, layer1.getState());
+		assertSame("application set", application, layer1.getApplication());
+		assertSame("owningStack set", owningStack, layer1.getOwningLayersStack());
+		assertSame("parent set", rootLayer, layer1.eContainer());
+	}
+
+	/**
+	 * Test method for
+	 * {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}
+	 * .
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testCreateLayerAsRoot() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Create stack
+		LayersStack owningStack = application.getLayersStackFor(diagram);
+
+		LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+		// Create tree
+		Layer layer1 = factory.createLayer(owningStack, owningStack, application);
+
+		// asserts
+		assertNotNull("Layer created", layer1);
+		assertSame("state attached", LayerState.ATTACHED, layer1.getState());
+		assertSame("application set", application, layer1.getApplication());
+		assertSame("owningStack set", owningStack, layer1.getOwningLayersStack());
+		assertSame("parent set", owningStack, layer1.eContainer());
+	}
+
+	/**
+	 * Test method for
+	 * {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createRegExpLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}
+	 * .
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testCreateRegExpLayer() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Create stack
+		LayersStack owningStack = application.getLayersStackFor(diagram);
+
+		LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+		// Create tree
+		TopLayerOperator rootLayer = factory.createTopLayerOperator(owningStack, owningStack, application);
+		RegExpLayer layer1 = factory.createRegExpLayer(rootLayer, owningStack, application);
+
+		// asserts
+		assertNotNull("Layer created", layer1);
+		assertSame("state attached", LayerState.ATTACHED, layer1.getState());
+		assertSame("application set", application, layer1.getApplication());
+		assertSame("owningStack set", owningStack, layer1.getOwningLayersStack());
+		assertSame("parent set", rootLayer, layer1.eContainer());
+	}
+
+	/**
+	 * Test method for
+	 * {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}
+	 * .
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testCreateRegExpLayerAsRoot() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Create stack
+		LayersStack owningStack = application.getLayersStackFor(diagram);
+
+		LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+		// Create tree
+		RegExpLayer layer1 = factory.createRegExpLayer(owningStack, owningStack, application);
+
+		// asserts
+		assertNotNull("Layer created", layer1);
+		assertSame("state attached", LayerState.ATTACHED, layer1.getState());
+		assertSame("application set", application, layer1.getApplication());
+		assertSame("owningStack set", owningStack, layer1.getOwningLayersStack());
+		assertSame("parent set", owningStack, layer1.eContainer());
+	}
+
+	/**
+	 * Test method for
+	 * {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createTopLayerOperator(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}
+	 * .
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testCreateTopLayerOperator() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Create stack
+		LayersStack owningStack = application.getLayersStackFor(diagram);
+
+		LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+		// Create tree
+		TopLayerOperator rootLayer = factory.createTopLayerOperator(owningStack, owningStack, application);
+		TopLayerOperator layer1 = factory.createTopLayerOperator(rootLayer, owningStack, application);
+
+		// asserts
+		assertNotNull("Layer created", layer1);
+		assertSame("state attached", LayerState.ATTACHED, layer1.getState());
+		assertSame("application set", application, layer1.getApplication());
+		assertSame("owningStack set", owningStack, layer1.getOwningLayersStack());
+		assertSame("parent set", rootLayer, layer1.eContainer());
+	}
+
+	/**
+	 * Test method for
+	 * {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createTopLayerOperator(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}
+	 * .
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testCreateTopLayerOperatorAsRoot() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Create stack
+		LayersStack owningStack = application.getLayersStackFor(diagram);
+
+		LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+		// Create tree
+		TopLayerOperator layer1 = factory.createTopLayerOperator(owningStack, owningStack, application);
+
+		// asserts
+		assertNotNull("Layer created", layer1);
+		assertSame("state attached", LayerState.ATTACHED, layer1.getState());
+		assertSame("application set", application, layer1.getApplication());
+		assertSame("owningStack set", owningStack, layer1.getOwningLayersStack());
+		assertSame("parent set", owningStack, layer1.eContainer());
+	}
+
+	/**
+	 * Test method for
+	 * {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createStackedLayerOperator(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}
+	 * .
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testCreateStackedLayerOperator() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Create stack
+		LayersStack owningStack = application.getLayersStackFor(diagram);
+
+		LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+		// Create tree
+		TopLayerOperator rootLayer = factory.createTopLayerOperator(owningStack, owningStack, application);
+		StackedLayerOperator layer1 = factory.createStackedLayerOperator(rootLayer, owningStack, application);
+
+		// asserts
+		assertNotNull("Layer created", layer1);
+		assertSame("state attached", LayerState.ATTACHED, layer1.getState());
+		assertSame("application set", application, layer1.getApplication());
+		assertSame("owningStack set", owningStack, layer1.getOwningLayersStack());
+		assertSame("parent set", rootLayer, layer1.eContainer());
+	}
+
+	/**
+	 * Test method for
+	 * {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createTopLayerOperator(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}
+	 * .
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testCreateStackedLayerOperatorAsRoot() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Create stack
+		LayersStack owningStack = application.getLayersStackFor(diagram);
+
+		LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+		// Create tree
+		StackedLayerOperator layer1 = factory.createStackedLayerOperator(owningStack, owningStack, application);
+
+		// asserts
+		assertNotNull("Layer created", layer1);
+		assertSame("state attached", LayerState.ATTACHED, layer1.getState());
+		assertSame("application set", application, layer1.getApplication());
+		assertSame("owningStack set", owningStack, layer1.getOwningLayersStack());
+		assertSame("parent set", owningStack, layer1.eContainer());
+	}
+
+	/**
+	 * Test method for {@link LayersFactoryForStackImpl#createLayerOperator(String, LayersContainer, LayersStack, LayersStackApplication)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testCreateLayerOperator() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Create stack
+		LayersStack owningStack = application.getLayersStackFor(diagram);
+
+		LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+		// Create tree
+		TopLayerOperator rootLayer = factory.createTopLayerOperator(owningStack, owningStack, application);
+		List<LayerOperatorDescriptor> operatorDescs = application.getLayerOperatorDescriptorRegistry().getDescriptors();
+		assertNotNull("descs found", operatorDescs);
+		assertTrue("a least one desc is defined", operatorDescs.size() > 0);
+
+		String layerID = operatorDescs.get(0).getName();
+		AbstractLayerOperator layer1 = factory.createLayerOperator(layerID, rootLayer, owningStack, application);
+
+		// asserts
+		assertNotNull("Layer created", layer1);
+		assertSame("state attached", LayerState.ATTACHED, layer1.getState());
+		assertSame("application set", application, layer1.getApplication());
+		assertSame("owningStack set", owningStack, layer1.getOwningLayersStack());
+		assertSame("parent set", rootLayer, layer1.eContainer());
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/AbstractLayerImplWithApplicationTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/AbstractLayerImplWithApplicationTest.java
new file mode 100755
index 0000000..862bf67
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/AbstractLayerImplWithApplicationTest.java
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * Test methods declared in {@link AbstractLayer}.
+ * Use a {@link Layer} for test.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class AbstractLayerImplWithApplicationTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl#getPropertyValueMap()}.
+	 */
+	@Test
+	public void testAbstractLayer() {
+		// Create objets to test
+		LayerImpl layer = (LayerImpl) LayersFactory.eINSTANCE.createLayer();
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		layer.setApplication(application);
+		PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+
+		// Add instances to the layer
+		int index = 1;
+		Property property1 = propertyRegistry.getProperties().get(index++);
+		Property property2 = propertyRegistry.getProperties().get(index++);
+
+		// check if we can retrieve the instance
+		assertNotNull("PropertyValueMap exis", layer);
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerImpl#getAttachedProperties()}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testGetAttachedProperties() throws LayersException {
+		// Create objects to test
+		LayerImpl layer = (LayerImpl) LayersFactory.eINSTANCE.createLayer();
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		layer.setApplication(application);
+		PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+
+		// Add instances to the layer
+		int index = 1;
+		Property property1 = propertyRegistry.getProperties().get(index++);
+		Property property2 = propertyRegistry.getProperties().get(index++);
+
+		layer.addPropertyInstance(property1);
+		layer.addPropertyInstance(property2);
+
+		// check if we can get the list
+		assertEquals("size is same as available properties", 2, layer.getAttachedProperties().size());
+
+		// Check property order
+		assertTrue("property is found", layer.getAttachedProperties().contains(property1));
+		assertTrue("property is found", layer.getAttachedProperties().contains(property2));
+
+
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/AbstractLayerOperatorImplTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/AbstractLayerOperatorImplTest.java
new file mode 100755
index 0000000..dca3dbe
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/AbstractLayerOperatorImplTest.java
@@ -0,0 +1,95 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class AbstractLayerOperatorImplTest {
+
+	/**
+	 * Object to test.
+	 * As the {@link AbstractLayerOperator} is abstract, the implementation
+	 * is one of the concrete subtype.
+	 *
+	 */
+	protected AbstractLayerOperator abstractLayerOperator;
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+		abstractLayerOperator = LayersFactory.eINSTANCE.createStackedLayerOperator();
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerOperatorImpl#AbstractLayerOperatorImpl()}.
+	 */
+	@Test
+	public void testAbstractLayerOperatorImpl() {
+		assertNotNull("layerOperaator created", abstractLayerOperator);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerOperatorImpl#isDescriptorSet()}.
+	 */
+	@Test
+	public void testIsDescriptorSet() {
+
+		// Create objects requested for test
+		LayerOperatorDescriptor layerDesc = LayersFactory.eINSTANCE.createLayerOperatorDescriptor();
+
+		// Check
+		assertFalse("descriptor is not set after creation", abstractLayerOperator.isDescriptorSet());
+
+		// Set name and application.
+		// This should call reset, and set the descriptor
+		abstractLayerOperator.setLayerOperatorDescriptor(layerDesc);
+
+		// check if the descriptor is set
+		assertTrue("descriptor is set", abstractLayerOperator.isDescriptorSet());
+		assertSame("right descriptor is set", layerDesc, abstractLayerOperator.getLayerOperatorDescriptor());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerOperatorImpl#resetDescriptor()}.
+	 */
+	@Test
+	@Ignore
+	public void testResetDescriptor() {
+		fail("Not yet implemented");
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/BooleanTypeImplTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/BooleanTypeImplTest.java
new file mode 100755
index 0000000..110e6c1
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/BooleanTypeImplTest.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanType;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class BooleanTypeImplTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.BooleanTypeImpl#createInstance()}.
+	 */
+	@Test
+	public void testCreateInstance() {
+		BooleanType type = LayersFactory.eINSTANCE.createBooleanType();
+
+		TypeInstance instance = type.createInstance();
+		assertNotNull("instance created", instance);
+		assertTrue("Right instance", instance instanceof BooleanInstance);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.BooleanTypeImpl#createInstance()}.
+	 */
+	@Test
+	public void testSetValueFromString() {
+		BooleanType type = LayersFactory.eINSTANCE.createBooleanType();
+
+		final String DEFAULT_VALUE = "true";
+		TypeInstance instance = type.createInstance();
+
+		instance.setValueFromString(DEFAULT_VALUE);
+		assertNotNull("instance created", instance);
+		assertTrue("Right instance", instance instanceof BooleanInstance);
+		assertEquals("right value", true, ((BooleanInstance) instance).isValue());
+
+		// Check false value
+		instance.setValueFromString("false");
+		assertNotNull("instance created", instance);
+		assertTrue("Right instance", instance instanceof BooleanInstance);
+		assertEquals("right value", false, ((BooleanInstance) instance).isValue());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.BooleanTypeImpl#BooleanTypeImpl()}.
+	 */
+	@Test
+	public void testBooleanTypeImpl() {
+		BooleanType type = LayersFactory.eINSTANCE.createBooleanType();
+		assertNotNull("object created", type);
+
+		assertEquals("name initialized", "boolean", type.getName());
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/CustomPropertyOperatorImplTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/CustomPropertyOperatorImplTest.java
new file mode 100755
index 0000000..7c0ccdb
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/CustomPropertyOperatorImplTest.java
@@ -0,0 +1,153 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.CustomPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.operators.BooleanAndOperator;
+import org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance;
+import org.eclipse.papyrus.layers.stackmodel.operators.FakePropertyOperator;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class CustomPropertyOperatorImplTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomPropertyOperatorImpl#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testGetComputePropertyValueCommand() throws LayersException {
+		CustomPropertyOperator operator = LayersFactory.eINSTANCE.createCustomPropertyOperator();
+
+		FakePropertyOperator opInstance = new FakePropertyOperator();
+		operator.setOperatorInstance(opInstance);
+
+		// Check
+		operator.getComputePropertyValueCommand(null);
+		// Check if the corresponding method of the custom operator is called.
+		assertTrue("custom op getCmd method is called", opInstance.isComputePropertyValueCommandCalled);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomPropertyOperatorImpl#CustomPropertyOperatorImpl()}.
+	 */
+	@Test
+	public void testCustomPropertyOperatorImpl() {
+		CustomPropertyOperator operator = LayersFactory.eINSTANCE.createCustomPropertyOperator();
+
+		assertNotNull("object created", operator);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomPropertyOperatorImpl#setClassname(java.lang.String)}.
+	 */
+	@Test
+	public void testSetClassname() {
+		CustomPropertyOperator operator = LayersFactory.eINSTANCE.createCustomPropertyOperator();
+
+		// Set a classname
+		String classname = BooleanAndOperator.class.getName();
+		operator.setClassname(classname);
+
+		// check
+		assertSame("classname found", classname, operator.getClassname());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomPropertyOperatorImpl#getOperatorInstance()}.
+	 */
+	@Test
+	public void testGetOperatorInstance() {
+		CustomPropertyOperator operator = LayersFactory.eINSTANCE.createCustomPropertyOperator();
+
+		CustomPropertyOperatorsInstance opInstance = new BooleanAndOperator();
+		operator.setOperatorInstance(opInstance);
+
+		// Check
+		assertSame("custom op found", opInstance, operator.getOperatorInstance());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomPropertyOperatorImpl#getOperatorInstance()}.
+	 */
+	@Test
+	public void testGetOperatorInstanceFromClassname() {
+		CustomPropertyOperator operator = LayersFactory.eINSTANCE.createCustomPropertyOperator();
+
+		// Set a classname
+		operator.setClassname(BooleanAndOperator.class.getName());
+
+		// Check
+		assertNotNull("custom op created and found", operator.getOperatorInstance());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomPropertyOperatorImpl#setOperatorInstance(org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance)}.
+	 */
+	@Test
+	public void testSetOperatorInstance() {
+		CustomPropertyOperator operator = LayersFactory.eINSTANCE.createCustomPropertyOperator();
+
+		CustomPropertyOperatorsInstance opInstance = new BooleanAndOperator();
+		operator.setOperatorInstance(opInstance);
+
+		// Check
+		assertSame("custom op found", opInstance, operator.getOperatorInstance());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomPropertyOperatorImpl#setClassBundleID(java.lang.String)}.
+	 */
+	@Test
+	@Ignore
+	public void testSetClassBundleID() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.CustomPropertyOperatorImpl#resetOperatorInstance()}.
+	 */
+	@Test
+	@Ignore
+	public void testResetOperatorInstance() {
+		fail("Not yet implemented");
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/FakeOperator.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/FakeOperator.java
new file mode 100755
index 0000000..1d0dbb5
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/FakeOperator.java
@@ -0,0 +1,76 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance;
+
+
+/**
+ * A fake operator implementation used for tests purposes.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class FakeOperator implements CustomPropertyOperatorsInstance {
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList)
+	 *
+	 * @param property
+	 * @return
+	 * @throws LayersException
+	 */
+	@Override
+	public ComputePropertyValueCommand getComputePropertyValueCommand(EList<ComputePropertyValueCommand> nestedCommand) throws LayersException {
+		return new FakeCommand(nestedCommand);
+	}
+
+
+	/**
+	 * Class implementing an And command.
+	 *
+	 */
+	public class FakeCommand implements ComputePropertyValueCommand {
+
+		public EList<ComputePropertyValueCommand> nestedCommand;
+
+		/**
+		 *
+		 * Constructor.
+		 *
+		 * @param nestedCommand
+		 */
+		public FakeCommand(EList<ComputePropertyValueCommand> nestedCommand) {
+			this.nestedCommand = nestedCommand;
+		}
+
+		/**
+		 * Compute the value.
+		 *
+		 * @see org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand#getCmdValue()
+		 *
+		 * @return
+		 * @throws LayersException
+		 */
+		@Override
+		public TypeInstance getCmdValue() throws LayersException {
+
+			return null;
+		}
+
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/FontInstanceImplTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/FontInstanceImplTest.java
new file mode 100755
index 0000000..76040e0
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/FontInstanceImplTest.java
@@ -0,0 +1,87 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ *
+ */
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.FontInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+/**
+ * @author dumoulin
+ *
+ */
+public class FontInstanceImplTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FontInstanceImpl#setValueFromString(java.lang.String)}.
+	 */
+	@Test
+	public void testSetValueFromString() {
+		FontInstance instance = LayersFactory.eINSTANCE.createFontInstance();
+
+		instance.setValueFromString("MySegoe UI, 111, 123, false"); // "FontName, FontHeight, FontColor, Bold"
+		// instance.setValueFromString("Segoe UI, 9, 0, false"); // "FontName, FontHeight, FontColor, Bold"
+
+		// Check values
+		assertEquals("name", "MySegoe UI", instance.getFontName());
+		assertEquals("heigt", 111, instance.getFontHeigh());
+		assertEquals("color", 123, instance.getFontColor());
+		assertEquals("bold", false, instance.isBold());
+
+		instance.setValueFromString("MySegoe UI, 111, 123, true"); // "FontName, FontHeight, FontColor, Bold"
+		assertEquals("bold", true, instance.isBold());
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FontInstanceImpl#setValueFromInstance(org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance)}.
+	 */
+	@Test
+	@Ignore
+	public void testSetValueFromInstance() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.FontInstanceImpl#FontInstanceImpl()}.
+	 */
+	@Test
+	public void testFontInstanceImpl() {
+		FontInstance instance = LayersFactory.eINSTANCE.createFontInstance();
+
+		assertNotNull("object created", instance);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/IntTypeImplTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/IntTypeImplTest.java
new file mode 100755
index 0000000..9dc049d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/IntTypeImplTest.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.IntInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.IntType;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class IntTypeImplTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.IntTypeImpl#createInstance()}.
+	 */
+	@Test
+	public void testCreateInstance() {
+		IntType type = LayersFactory.eINSTANCE.createIntType();
+
+		TypeInstance instance = type.createInstance();
+		assertNotNull("instance created", instance);
+		assertTrue("Right instance", instance instanceof IntInstance);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.IntTypeImpl#IntTypeImpl()}.
+	 */
+	@Test
+	public void testIntTypeImpl() {
+		IntType type = LayersFactory.eINSTANCE.createIntType();
+
+		assertNotNull("object created", type);
+
+		assertEquals("name initialized", "int", type.getName());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.BooleanTypeImpl#createInstance()}.
+	 */
+	@Test
+	public void testSetValueFromString() {
+		IntType type = LayersFactory.eINSTANCE.createIntType();
+
+		final String DEFAULT_VALUE = "-1";
+		TypeInstance instance = type.createInstance();
+
+		instance.setValueFromString(DEFAULT_VALUE);
+		assertNotNull("instance created", instance);
+		assertTrue("Right instance", instance instanceof IntInstance);
+		assertEquals("right value", -1, ((IntInstance) instance).getValue());
+
+		// Check false value
+		instance.setValueFromString("123");
+		assertNotNull("instance created", instance);
+		assertTrue("Right instance", instance instanceof IntInstance);
+		assertEquals("right value", 123, ((IntInstance) instance).getValue());
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerExpressionInitWithApplicationImplTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerExpressionInitWithApplicationImplTest.java
new file mode 100755
index 0000000..646160c
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerExpressionInitWithApplicationImplTest.java
@@ -0,0 +1,218 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.util.LayersFactoryTestUtils;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+/**
+ * Test initilaization of Layers when inserted in a tree of layers.
+ * Use the LayerStack as container.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayerExpressionInitWithApplicationImplTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#LayerExpressionImpl()}.
+	 */
+	@Test
+	public void testLayerExpressionImpl() {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Create stack
+		LayersStack stack = application.getLayersStackFor(diagram);
+
+		// Create layers
+		LayersFactoryTestUtils factory = new LayersFactoryTestUtils(application);
+		factory.newTopLayer("top",
+				factory.newLayer("layer1"),
+				factory.newLayer("layer2"),
+				factory.newTopLayer("container1",
+						factory.newLayer("layer3"))
+				);
+
+		TopLayerOperator top = (TopLayerOperator) factory.getLayer("top");
+		stack.setLayers(top);
+		TopLayerOperator container1 = (TopLayerOperator) factory.getLayer("top");
+		Layer layer1 = (Layer) factory.getLayer("layer1");
+		Layer layer2 = (Layer) factory.getLayer("layer2");
+		Layer layer3 = (Layer) factory.getLayer("layer3");
+
+
+		// Assert
+		assertNotNull("object created", top);
+		assertEquals("application initialized", application, top.getApplication());
+
+		assertNotNull("object created", container1);
+		assertEquals("application initialized", application, container1.getApplication());
+
+		assertNotNull("object created", layer1);
+		assertEquals("application initialized", application, layer1.getApplication());
+
+		assertNotNull("object created", layer2);
+		assertEquals("application initialized", application, layer2.getApplication());
+
+		assertNotNull("object created", layer3);
+		assertEquals("application initialized", application, layer3.getApplication());
+	}
+
+	/**
+	 * Test if properties are set after adding a subtree
+	 */
+	@Test
+	public void testAddSubTreeImpl() {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Create stack
+		LayersStack stack = application.getLayersStackFor(diagram);
+
+		// Create layers
+		LayersFactoryTestUtils factory = new LayersFactoryTestUtils(application);
+		factory.newTopLayer("top",
+				factory.newLayer("layer1"),
+				factory.newLayer("layer2"),
+				factory.newTopLayer("container1",
+						factory.newLayer("layer3"))
+				);
+
+		factory.newTopLayer("container2",
+				factory.newLayer("layer21"),
+				factory.newLayer("layer22")
+				);
+
+		TopLayerOperator top = (TopLayerOperator) factory.getLayer("top");
+		stack.setLayers(top);
+		TopLayerOperator container2 = (TopLayerOperator) factory.getLayer("container2");
+		Layer layer21 = (Layer) factory.getLayer("layer21");
+		Layer layer22 = (Layer) factory.getLayer("layer22");
+
+		// action
+		// Add subtree
+		top.getLayers().add(container2);
+
+		// Assert
+		assertNotNull("object created", top);
+		assertEquals("application initialized", application, top.getApplication());
+
+		assertNotNull("object created", container2);
+		assertEquals("application initialized", application, container2.getApplication());
+		assertEquals("container (stack) initialized", stack, container2.getOwningLayersStack());
+
+		assertNotNull("object created", layer21);
+		assertEquals("application initialized", application, layer21.getApplication());
+		assertEquals("container (stack) initialized", stack, layer21.getOwningLayersStack());
+
+		assertNotNull("object created", layer22);
+		assertEquals("application initialized", application, layer22.getApplication());
+		assertEquals("container (stack) initialized", stack, layer22.getOwningLayersStack());
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#isLayerEnabled()}.
+	 */
+	@Test
+	@Ignore
+	public void testIsLayerEnabled() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#isBranchEnabled()}.
+	 */
+	@Test
+	@Ignore
+	public void testIsBranchEnabled() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#getOwningLayersStack()}.
+	 */
+	@Test
+	public void testGetOwningLayersStack() {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Create stack
+		LayersStack stack = application.getLayersStackFor(diagram);
+
+		// Create layers
+		LayersFactoryTestUtils factory = new LayersFactoryTestUtils(application);
+		factory.newTopLayer("top",
+				factory.newLayer("layer1"),
+				factory.newLayer("layer2"),
+				factory.newTopLayer("container1",
+						factory.newLayer("layer3"))
+				);
+
+		TopLayerOperator top = (TopLayerOperator) factory.getLayer("top");
+		stack.setLayers(top);
+		TopLayerOperator container1 = (TopLayerOperator) factory.getLayer("top");
+		Layer layer1 = (Layer) factory.getLayer("layer1");
+		Layer layer2 = (Layer) factory.getLayer("layer2");
+		Layer layer3 = (Layer) factory.getLayer("layer3");
+
+
+		// Assert
+		assertNotNull("object created", top);
+		assertEquals("container (stack) initialized", stack, top.getOwningLayersStack());
+
+		assertNotNull("object created", container1);
+		assertEquals("container (stack) initialized", stack, container1.getOwningLayersStack());
+
+		assertNotNull("object created", layer1);
+		assertEquals("container (stack) initialized", stack, layer1.getOwningLayersStack());
+
+		assertNotNull("object created", layer2);
+		assertEquals("container (stack) initialized", stack, layer2.getOwningLayersStack());
+
+		assertNotNull("object created", layer3);
+		assertEquals("container (stack) initialized", stack, layer3.getOwningLayersStack());
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerImplGetComputeCommandTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerImplGetComputeCommandTest.java
new file mode 100755
index 0000000..3e4a388
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerImplGetComputeCommandTest.java
@@ -0,0 +1,245 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * Test the {@link AbstractLayer#getComputePropertyValueCommand(...)} commands
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayerImplGetComputeCommandTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl#LayerImpl()}.
+	 */
+	@Test
+	public void testLayerImpl() {
+		Layer layer = LayersFactory.eINSTANCE.createLayer();
+		assertNotNull("object created", layer);
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerImpl#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testGetComputePropertyValueCommand() throws LayersException {
+		// Create objets to test
+		LayerImpl layer = (LayerImpl) LayersFactory.eINSTANCE.createLayer();
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		layer.setApplication(application);
+		PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+
+		// Fill the map with an instance for the 2 first properties
+		int index = 0;
+		Property property = propertyRegistry.getProperties().get(index);
+		TypeInstance instance = property.createInstance();
+		layer.getPropertyValueMap().put(property.getName(), instance);
+
+		Property property2 = propertyRegistry.getProperties().get(++index);
+		TypeInstance instance2 = property2.createInstance();
+		layer.getPropertyValueMap().put(property2.getName(), instance2);
+
+		Property property3 = propertyRegistry.getProperties().get(++index);
+
+		// Add views
+		View view1 = NotationFactory.eINSTANCE.createShape();
+		layer.getViews().add(view1);
+		View view2 = NotationFactory.eINSTANCE.createShape();
+
+		// Check
+		ComputePropertyValueCommand cmd = layer.getComputePropertyValueCommand(view1, property);
+		assertNotNull("cmd created", cmd);
+		assertSame("cmd s the property instance", instance, cmd);
+
+		// Check wrong view2
+		ComputePropertyValueCommand cmd2 = layer.getComputePropertyValueCommand(view2, property);
+		assertNull("cmd created", cmd2);
+
+		// Check wrong property
+		ComputePropertyValueCommand cmd3 = layer.getComputePropertyValueCommand(view2, property3);
+		assertNull("cmd created", cmd3);
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerImpl#getViewsComputePropertyValueCommand(java.util.List, org.eclipse.papyrus.layers.stackmodel.layers.Property)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testGetViewsComputePropertyValueCommandListOfViewProperty() throws LayersException {
+		// Create objets to test
+		LayerImpl layer = (LayerImpl) LayersFactory.eINSTANCE.createLayer();
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		layer.setApplication(application);
+		PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+
+		// Fill the map with an instance for the 2 first properties
+		int index = 0;
+		Property property = propertyRegistry.getProperties().get(index);
+		TypeInstance instance = property.createInstance();
+		layer.getPropertyValueMap().put(property.getName(), instance);
+
+		Property property2 = propertyRegistry.getProperties().get(++index);
+		TypeInstance instance2 = property2.createInstance();
+		layer.getPropertyValueMap().put(property2.getName(), instance2);
+
+		Property property3 = propertyRegistry.getProperties().get(++index);
+
+		// Add views
+		View view1 = NotationFactory.eINSTANCE.createShape();
+		layer.getViews().add(view1);
+		View view2 = NotationFactory.eINSTANCE.createShape();
+		View view3 = NotationFactory.eINSTANCE.createShape();
+		layer.getViews().add(view3);
+
+		// Check view
+		List<ComputePropertyValueCommand> cmds = layer.getViewsComputePropertyValueCommand(Arrays.asList(view1, view3), property);
+		assertNotNull("cmd created", cmds);
+		assertSame("cmd size is equals to views size", 2, cmds.size());
+		int i = 0;
+		assertSame("cmd is the property instance", instance, cmds.get(i++));
+		assertSame("cmd is the property instance", instance, cmds.get(i++));
+
+		// Check wrong view2
+		List<ComputePropertyValueCommand> cmds2 = layer.getViewsComputePropertyValueCommand(Arrays.asList(view1, view2), property);
+		assertNotNull("cmd created", cmds2);
+		assertSame("cmd size is equals to views size", 2, cmds2.size());
+		i = 0;
+		assertSame("cmd is the property instance", instance, cmds2.get(i++));
+		assertSame("cmd is the property instance", null, cmds2.get(i++));
+
+		// Check wrong view2
+		List<ComputePropertyValueCommand> cmds21 = layer.getViewsComputePropertyValueCommand(Arrays.asList(view2), property);
+		assertNull("cmd created", cmds21);
+
+		// Check wrong property
+		List<ComputePropertyValueCommand> cmds3 = layer.getViewsComputePropertyValueCommand(Arrays.asList(view1), property3);
+		assertNull("cmd created", cmds3);
+
+		// Check list with null
+		cmds = layer.getViewsComputePropertyValueCommand(Arrays.asList(view1, null, view3), property);
+		assertNotNull("cmd created", cmds);
+		assertSame("cmd size is equals to views size", 3, cmds.size());
+		i = 0;
+		assertSame("cmd is the property instance", instance, cmds.get(i++));
+		assertSame("cmd is null", null, cmds.get(i++));
+		assertSame("cmd is the property instance", instance, cmds.get(i++));
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerImpl#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, java.util.List)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testGetPropertiesComputePropertyValueCommandViewListOfProperty() throws LayersException {
+		// Create objets to test
+		LayerImpl layer = (LayerImpl) LayersFactory.eINSTANCE.createLayer();
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		layer.setApplication(application);
+		PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+
+		// Fill the map with an instance for the 2 first properties
+		int index = 0;
+		Property property = propertyRegistry.getProperties().get(index);
+		TypeInstance instance = property.createInstance();
+		layer.getPropertyValueMap().put(property.getName(), instance);
+
+		Property property2 = propertyRegistry.getProperties().get(++index);
+		TypeInstance instance2 = property2.createInstance();
+		layer.getPropertyValueMap().put(property2.getName(), instance2);
+
+		Property property3 = propertyRegistry.getProperties().get(++index);
+
+		// Add views
+		View view1 = NotationFactory.eINSTANCE.createShape();
+		layer.getViews().add(view1);
+		View view2 = NotationFactory.eINSTANCE.createShape();
+		View view3 = NotationFactory.eINSTANCE.createShape();
+		layer.getViews().add(view3);
+
+		// Check view
+		List<ComputePropertyValueCommand> cmds = layer.getPropertiesComputePropertyValueCommand(view1, Arrays.asList(property, property2));
+		assertNotNull("cmd created", cmds);
+		assertSame("cmd size is equals to views size", 2, cmds.size());
+		int i = 0;
+		assertSame("cmd is the property instance", instance, cmds.get(i++));
+		assertSame("cmd is the property instance", instance2, cmds.get(i++));
+
+		// Check wrong property3
+		cmds = layer.getPropertiesComputePropertyValueCommand(view1, Arrays.asList(property, property3));
+		assertNotNull("cmd created", cmds);
+		assertSame("cmd size is equals to views size", 2, cmds.size());
+		i = 0;
+		assertSame("cmd is the property instance", instance, cmds.get(i++));
+		assertSame("cmd is the property instance", null, cmds.get(i++));
+
+		// Check wrong view2
+		cmds = layer.getPropertiesComputePropertyValueCommand(view1, Arrays.asList(property3));
+		assertNull("cmd created", cmds);
+
+		// Check wrong view
+		cmds = layer.getPropertiesComputePropertyValueCommand(view2, Arrays.asList(property, property2));
+		assertNull("cmd created", cmds);
+
+		// Check list with null
+		cmds = layer.getPropertiesComputePropertyValueCommand(view1, Arrays.asList(property, null, property2));
+		assertNotNull("cmd created", cmds);
+		assertSame("cmd size is equals to views size", 3, cmds.size());
+		i = 0;
+		assertSame("cmd is the property instance", instance, cmds.get(i++));
+		assertSame("cmd is null", null, cmds.get(i++));
+		assertSame("cmd is the property instance", instance2, cmds.get(i++));
+
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerImplTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerImplTest.java
new file mode 100755
index 0000000..cd5d48e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerImplTest.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.eclipse.papyrus.layers.stackmodel.BadStateException;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.NullInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.util.PropertyUtils;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class LayerImplTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl#LayerImpl()}.
+	 */
+	@Test
+	public void testLayerImpl() {
+		Layer layer = LayersFactory.eINSTANCE.createLayer();
+		assertNotNull("object created", layer);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl#getPropertyValues()}.
+	 */
+	@Test
+	public void testGetPropertyValues() {
+		Layer layer = LayersFactory.eINSTANCE.createLayer();
+
+		assertNotNull("list created", layer.getPropertyValues());
+	}
+
+	/**
+	 * Check if the {@link AbstractLayerImpl#propertyValues} list allows double.
+	 */
+	@Test
+	public void testPropertyValuesAllowsDouble() {
+		// Create object to test
+		LayerImpl layer = (LayerImpl) LayersFactory.eINSTANCE.createLayer();
+
+		// check creation
+		TypeInstance instance = NullInstance.NULLINSTANCE;
+
+		layer.getPropertyValues().add(instance);
+		assertEquals("instance added", 1, layer.getPropertyValues().size());
+
+		layer.getPropertyValues().add(instance);
+		assertEquals("same instance added==> double allowed", 2, layer.getPropertyValues().size());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl#getPropertyValueMap()}.
+	 */
+	@Test
+	public void testGetPropertyValueMap() {
+		Layer layer = LayersFactory.eINSTANCE.createLayer();
+
+		assertNotNull("PropertyValueMap exist", layer.getPropertyValueMap());
+
+		// Create a type instance and add it to layer
+		TypeInstance typeInstance = LayersFactory.eINSTANCE.createStringInstance();
+		String key = "name";
+		layer.getPropertyValueMap().put(key, typeInstance);
+
+		// check if we can retrieve the instance
+		assertNotNull("PropertyValueMap exis", layer.getPropertyValueMap().get(key));
+
+	}
+
+	/**
+	 * Test method .
+	 *
+	 * @throws BadStateException
+	 */
+	@Test
+	public void testResetAllPropertyValuesFromRegistry() throws BadStateException {
+		LayerImpl layer = (LayerImpl) LayersFactory.eINSTANCE.createLayer();
+
+		// call method.
+		// Nothing should happen
+		layer.resetAllPropertyValuesFromRegistry();
+
+		// check
+		assertEquals("list is empty", 0, layer.getPropertyValues().size());
+	}
+
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl#getViews()}.
+	 */
+	@Test
+	public void testGetViews() {
+		Layer layer = LayersFactory.eINSTANCE.createLayer();
+
+		assertNotNull("list created", layer.getViews());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl#addPropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testAddPropertyInstance() throws LayersException {
+		Layer layer = LayersFactory.eINSTANCE.createLayer();
+
+		String propertyName = "isSunday";
+		Property property = PropertyUtils.getInstance().createProperty(propertyName, LayersPackage.eINSTANCE.getBooleanType());
+		layer.addPropertyInstance(property);
+
+		assertNotNull("list created", layer.getPropertyValueMap().get(propertyName));
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl#addPropertyInstance(org.eclipse.papyrus.layers.stackmodel.layers.Property)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testgetPropertyInstanceByProperty() throws LayersException {
+		Layer layer = LayersFactory.eINSTANCE.createLayer();
+
+		String propertyName = "isSunday";
+		Property property = PropertyUtils.getInstance().createProperty(propertyName, LayersPackage.eINSTANCE.getBooleanType());
+		layer.addPropertyInstance(property);
+
+		assertNotNull("property found by property", layer.getPropertyInstance(property));
+
+		assertNotNull("property found by name", layer.getPropertyInstance(propertyName));
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerImplWithApplicationTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerImplWithApplicationTest.java
new file mode 100755
index 0000000..68dfbe2
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerImplWithApplicationTest.java
@@ -0,0 +1,258 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+
+import org.eclipse.papyrus.layers.stackmodel.BadStateException;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.NullInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * Tests applied to an instance initialied with an Application.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayerImplWithApplicationTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl#resetAllPropertyValuesFromRegistry()}.
+	 */
+	@Test
+	public void testLayer() {
+		// Create objets to test
+		LayerImpl layer = (LayerImpl) LayersFactory.eINSTANCE.createLayer();
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		layer.setApplication(application);
+
+		// check creation
+		assertNotNull("application available", layer.getApplication());
+		assertNotNull("property registry available", layer.getApplication().getPropertyRegistry());
+	}
+
+	/**
+	 * Check if the {@link AbstractLayerImpl#propertyValues} list allows double.
+	 */
+	@Test
+	public void testPropertyValuesAlowsDouble() {
+		// Create objets to test
+		LayerImpl layer = (LayerImpl) LayersFactory.eINSTANCE.createLayer();
+
+		// check creation
+		TypeInstance instance = NullInstance.NULLINSTANCE;
+
+		layer.getPropertyValues().add(instance);
+		assertEquals("instance added", 1, layer.getPropertyValues().size());
+
+		layer.getPropertyValues().add(instance);
+		assertEquals("same instance added==> double allowed", 2, layer.getPropertyValues().size());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl#resetAllPropertyValuesFromRegistry()}.
+	 *
+	 * @throws BadStateException
+	 */
+	@Test
+	public void testResetAllPropertyValuesFromRegistry() throws BadStateException {
+		// Create objets to test
+		LayerImpl layer = (LayerImpl) LayersFactory.eINSTANCE.createLayer();
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		layer.setApplication(application);
+		PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+
+		// Fill the map with an instance for the 2 first properties
+		int index = 0;
+		Property property = propertyRegistry.getProperties().get(index);
+		TypeInstance instance = property.createInstance();
+		layer.getPropertyValueMap().put(property.getName(), instance);
+
+		Property property2 = propertyRegistry.getProperties().get(++index);
+		TypeInstance instance2 = property2.createInstance();
+		layer.getPropertyValueMap().put(property2.getName(), instance2);
+
+		// call the method
+		layer.resetAllPropertyValuesFromRegistry();
+		// check if the propertyValues is correct
+		assertEquals("size is same as available properties", propertyRegistry.getProperties().size(), layer.getPropertyValues().size());
+
+		// Check property order
+		assertSame("instance is at right index", instance, layer.getPropertyValues().get(0));
+		assertSame("instance is at right index", instance2, layer.getPropertyValues().get(1));
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl#resetAllPropertyValuesFromRegistry()}.
+	 *
+	 * @throws BadStateException
+	 */
+	@Test
+	public void testAutomaticSynchronizationAfterAdd() throws BadStateException {
+		// Create objets to test
+		LayerImpl layer = (LayerImpl) LayersFactory.eINSTANCE.createLayer();
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		layer.setApplication(application);
+		PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+
+		// Fill the map with an instance for the 2 first properties
+		int index = 0;
+		Property property = propertyRegistry.getProperties().get(index);
+		TypeInstance instance = property.createInstance();
+		layer.getPropertyValueMap().put(property.getName(), instance);
+
+		Property property2 = propertyRegistry.getProperties().get(++index);
+		TypeInstance instance2 = property2.createInstance();
+		layer.getPropertyValueMap().put(property2.getName(), instance2);
+
+		// check if the propertyValues is correct
+		assertEquals("size is same as available properties", propertyRegistry.getProperties().size(), layer.getPropertyValues().size());
+
+		// Check property order
+		assertSame("instance is at right index", instance, layer.getPropertyValues().get(0));
+		assertSame("instance is at right index", instance2, layer.getPropertyValues().get(1));
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl#resetAllPropertyValuesFromRegistry()}.
+	 *
+	 * @throws BadStateException
+	 */
+	@Test
+	public void testAutomaticSynchronizationAfterRemove() throws BadStateException {
+		// Create objets to test
+		LayerImpl layer = (LayerImpl) LayersFactory.eINSTANCE.createLayer();
+		layer.startBehaviors();
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		layer.setApplication(application);
+		PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+
+		// Fill the map with an instance
+		int index = 1;
+		Property property = propertyRegistry.getProperties().get(index);
+		TypeInstance instance = property.createInstance();
+		layer.getPropertyValueMap().put(property.getName(), instance);
+
+		// check if the propertyValues is correct
+		assertEquals("size is same as available properties", propertyRegistry.getProperties().size(), layer.getPropertyValues().size());
+
+		// Check property order
+		assertSame("instance is at right index", instance, layer.getPropertyValues().get(index));
+
+		// Do remove instance
+		layer.getPropertyValueMap().removeKey(property.getName());
+		assertSame("instance is removed", NullInstance.NULLINSTANCE, layer.getPropertyValues().get(index));
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl#synchronizePropertyValue(java.lang.String, org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance)}.
+	 * Test synchronization.
+	 *
+	 * @throws BadStateException
+	 */
+	@Test
+	public void testSynchronizePropertyValue() throws BadStateException {
+		// Create objets to test
+		LayerImpl layer = (LayerImpl) LayersFactory.eINSTANCE.createLayer();
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		layer.setApplication(application);
+
+		// Get a property from PropertyRegistry
+		int index = 1;
+		Property property = application.getPropertyRegistry().getProperties().get(index);
+		// create an instance of property
+		TypeInstance instance = property.createInstance();
+		// Add an instance to map
+		layer.getPropertyValueMap().put(property.getName(), instance);
+
+		// Check if the instance is also added to propertyValues
+		assertSame("instance set to values at right index", instance, layer.getPropertyValues().get(index));
+
+		// remove instance
+		layer.getPropertyValueMap().removeKey(property.getName());
+		assertEquals("propertyValues.size() is the same", application.getPropertyRegistry().getProperties().size(), layer.getPropertyValues().size());
+		assertSame("instance removed from propertyValues", NullInstance.NULLINSTANCE, layer.getPropertyValues().get(index));
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl#getPropertyValues()}.
+	 * Test if {@link Layer#getPropertyValues() is synchronized when an instance} is added to {@link Layer#getPropertyValueMap()}.
+	 */
+	@Test
+	public void testGetPropertyValues() {
+		// Create objets to test
+		LayerImpl layer = (LayerImpl) LayersFactory.eINSTANCE.createLayer();
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		layer.setApplication(application);
+
+		// check list
+		assertNotNull("list is created", layer.getPropertyValues());
+		assertEquals("list.size()==number of available properties", application.getPropertyRegistry().getProperties().size(), layer.getPropertyValues().size());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerImpl#getPropertyValueMap()}.
+	 *
+	 * @throws BadStateException
+	 */
+	@Test
+	public void testGetPropertyValueMap() throws BadStateException {
+		// Create objets to test
+		LayerImpl layer = (LayerImpl) LayersFactory.eINSTANCE.createLayer();
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		layer.setApplication(application);
+		PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+
+		// Check map
+		assertNotNull("map is created", layer.getPropertyValueMap());
+
+		// Try to add an instance in the map
+		int index = 0;
+		Property property = propertyRegistry.getProperties().get(index);
+		TypeInstance instance = property.createInstance();
+		layer.getPropertyValueMap().put(property.getName(), instance);
+
+		// check retrieving
+		assertSame("got the instance", instance, layer.getPropertyValueMap().get(property.getName()));
+
+
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorDescriptorImplTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorDescriptorImplTest.java
new file mode 100755
index 0000000..c76b28b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorDescriptorImplTest.java
@@ -0,0 +1,180 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.fail;
+
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class LayerOperatorDescriptorImplTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Create an operator
+	 *
+	 * @param string
+	 * @return
+	 */
+	protected PropertyOperator createOperator(String name) {
+		PropertyOperator propertyOperator = LayersFactory.eINSTANCE.createPropertyOperator();
+		propertyOperator.setName(name);
+
+		return propertyOperator;
+	}
+
+	/**
+	 * Create a Property
+	 *
+	 * @param string
+	 * @param i
+	 * @return
+	 */
+	protected Property createProperty(String name, int index) {
+
+		Property property = LayersFactory.eINSTANCE.createProperty();
+		property.setName(name);
+		property.setIndex(index);
+
+		return property;
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl#getPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.Property)}.
+	 *
+	 * @throws NotFoundException
+	 */
+	@Test
+	public void testGetPropertyOperator() throws NotFoundException {
+		// Create and init descriptor
+		int expectedSize = 5;
+		DefaultPropertyOperator defaultPropertyOperator = LayersFactory.eINSTANCE.createDefaultPropertyOperator();
+		LayerOperatorDescriptor descriptor = LayersFactory.eINSTANCE.createLayerOperatorDescriptor();
+		descriptor.setPropertyCollectionSize(expectedSize, defaultPropertyOperator);
+
+		// Create a Properties
+		int i = 0;
+		Property property1 = createProperty("prop" + i, i++);
+		Property property2 = createProperty("prop" + i, i++);
+		Property property4 = createProperty("prop4", 4);
+
+		// Create Operators
+		i = 0;
+		PropertyOperator operator1 = createOperator("oper" + i++);
+		PropertyOperator operator2 = createOperator("oper" + i++);
+		PropertyOperator operator4 = createOperator("oper4");
+
+		// Try to add
+		descriptor.setPropertyOperator(property1, operator1);
+		descriptor.setPropertyOperator(property2, operator2);
+		descriptor.setPropertyOperator(property4, operator4);
+
+		// Do test
+		assertSame("operators size has not changed", expectedSize, descriptor.getPropertyOperators().size());
+		assertSame("operator can be found", operator1, descriptor.getPropertyOperator(property1));
+		assertSame("operator can be found", operator2, descriptor.getPropertyOperator(property2));
+		assertSame("operator can be found", operator4, descriptor.getPropertyOperator(property4));
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl#setPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.Property, org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator)}.
+	 *
+	 * @throws NotFoundException
+	 */
+	@Test
+	public void testSetPropertyOperator() throws NotFoundException {
+		// Create and init descriptor
+		int expectedSize = 5;
+		DefaultPropertyOperator defaultPropertyOperator = LayersFactory.eINSTANCE.createDefaultPropertyOperator();
+		LayerOperatorDescriptor descriptor = LayersFactory.eINSTANCE.createLayerOperatorDescriptor();
+		descriptor.setPropertyCollectionSize(expectedSize, defaultPropertyOperator);
+
+		// Create a Properties
+		int i = 0;
+		Property property1 = createProperty("prop" + i, i++);
+		Property property2 = createProperty("prop" + i, i++);
+		Property property4 = createProperty("prop4", 4);
+
+		// Create Operators
+		i = 0;
+		PropertyOperator operator1 = createOperator("oper" + i++);
+		PropertyOperator operator2 = createOperator("oper" + i++);
+		PropertyOperator operator4 = createOperator("oper4");
+
+		// Try to add
+		descriptor.setPropertyOperator(property1, operator1);
+		descriptor.setPropertyOperator(property2, operator2);
+		descriptor.setPropertyOperator(property4, operator4);
+
+		// Do test
+		assertSame("operators size has not changed", expectedSize, descriptor.getPropertyOperators().size());
+		assertSame("operator can be found", operator1, descriptor.getPropertyOperator(property1));
+		assertSame("operator can be found", operator2, descriptor.getPropertyOperator(property2));
+		assertSame("operator can be found", operator4, descriptor.getPropertyOperator(property4));
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl#createLayerOperator()}.
+	 */
+	@Test
+	@Ignore
+	public void testCreateLayerOperator() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl#setPropertyCollectionSize(int, org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator)}.
+	 */
+	@Test
+	public void testSetPropertyCollectionSize() {
+
+
+		// Create and init descriptor
+		int expectedSize = 5;
+		DefaultPropertyOperator defaultPropertyOperator = LayersFactory.eINSTANCE.createDefaultPropertyOperator();
+		LayerOperatorDescriptor descriptor = LayersFactory.eINSTANCE.createLayerOperatorDescriptor();
+		descriptor.setPropertyCollectionSize(expectedSize, defaultPropertyOperator);
+
+		// Check operators init
+		assertSame("list has the expected size", expectedSize, descriptor.getPropertyOperators().size());
+
+		assertSame("list is initialized", defaultPropertyOperator, descriptor.getPropertyOperators().get(0));
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorDescriptorRegistryImplTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorDescriptorRegistryImplTest.java
new file mode 100755
index 0000000..e8ef841
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerOperatorDescriptorRegistryImplTest.java
@@ -0,0 +1,279 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.DefaultPropertyOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class LayerOperatorDescriptorRegistryImplTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl#LayerOperatorDescriptorRegistryImpl()}.
+	 */
+	@Test
+	public void testLayerOperatorDescriptorRegistryImpl() {
+
+
+		// Create a registry
+		int propertiesCollectionSize = 10;
+		LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+		registry.setPropertyCollectionSize(propertiesCollectionSize);
+
+		assertNotNull("registry created", registry);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl#getDescriptors()}.
+	 */
+	@Test
+	public void testGetDescriptors() {
+		// Create a registry
+		int propertiesCollectionSize = 10;
+		LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+		registry.setPropertyCollectionSize(propertiesCollectionSize);
+
+		assertNotNull("descriptors list is set", registry.getDescriptors());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl#getPropertyOperators()}.
+	 */
+	@Test
+	public void testGetPropertyOperators() {
+		// Create a registry
+		int propertiesCollectionSize = 10;
+		LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+		registry.setPropertyCollectionSize(propertiesCollectionSize);
+
+		assertNotNull("operators list is set", registry.getPropertyOperators());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl#getPropertyCollectionSize()}.
+	 */
+	@Test
+	public void testGetPropertyCollectionSize() {
+		// Create a registry
+		int propertiesCollectionSize = 10;
+		LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+		registry.setPropertyCollectionSize(propertiesCollectionSize);
+
+		assertSame("sie is set", propertiesCollectionSize, registry.getPropertyCollectionSize());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl#setPropertyCollectionSize(int)}.
+	 */
+	@Test
+	public void testSetPropertyCollectionSize() {
+		// Create a registry
+		int propertiesCollectionSize = 10;
+		LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+		registry.setPropertyCollectionSize(propertiesCollectionSize);
+
+		assertSame("size set", propertiesCollectionSize, registry.getPropertyCollectionSize());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl#getDefaultOperator()}.
+	 */
+	@Test
+	public void testGetDefaultOperator() {
+		// Create a registry
+		int propertiesCollectionSize = 10;
+		LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+		registry.setPropertyCollectionSize(propertiesCollectionSize);
+
+		// Check the default operator
+		assertNotNull("default operator set", registry.getDefaultOperator());
+		assertTrue("default operator type", registry.getDefaultOperator() instanceof DefaultPropertyOperator);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl#addLayerOperatorDescriptor(org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor)}.
+	 */
+	@Test
+	public void testAddLayerOperatorDescriptor() {
+		// Create a registry
+		int propertiesCollectionSize = 10;
+		LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+		registry.setPropertyCollectionSize(propertiesCollectionSize);
+
+		// Create a LayerOperatorDesc
+		LayerOperatorDescriptor descriptor = LayersFactory.eINSTANCE.createAndStackedLayerOperatorDescriptor();
+
+		// Add it
+		registry.addLayerOperatorDescriptor(descriptor);
+
+		// Check if correctly added
+		assertSame("list size increased", 1, registry.getDescriptors().size());
+		assertSame("descriptor found", descriptor, registry.getDescriptors().get(0));
+
+		assertSame("descriptor property size set", propertiesCollectionSize, descriptor.getPropertyOperators().size());
+
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl#getLayerOperatorDescriptor(java.lang.String)}.
+	 *
+	 * @throws NotFoundException
+	 */
+	@Test
+	public void testGetLayerOperatorDescriptor() throws NotFoundException {
+		// Create a registry
+		int propertiesCollectionSize = 10;
+		LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+		registry.setPropertyCollectionSize(propertiesCollectionSize);
+
+		// Create a LayerOperatorDesc
+		LayerOperatorDescriptor descriptor = LayersFactory.eINSTANCE.createLayerOperatorDescriptor();
+		descriptor.setName("desc1");
+
+		// Add it
+		registry.addLayerOperatorDescriptor(descriptor);
+
+		// Try to get by its name
+		assertSame("descriptor found by its name", descriptor, registry.getLayerOperatorDescriptor(descriptor.getName()));
+
+		// Try with a wrong name
+		try {
+			registry.getLayerOperatorDescriptor("wrong name");
+			fail("Wrong name send an NotFoundException");
+		} catch (NotFoundException e) {
+			// ok
+		}
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl#addPropertyOperator(org.eclipse.papyrus.layers.stackmodel.layers.PropertyOperator)}.
+	 */
+	@Test
+	public void testAddPropertyOperator() {
+		// Create a registry
+		int propertiesCollectionSize = 10;
+		LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+		registry.setPropertyCollectionSize(propertiesCollectionSize);
+
+		// Create a PropertyOperator
+		PropertyOperator operator1 = LayersFactory.eINSTANCE.createPropertyOperator();
+		operator1.setName("op1");
+
+		// Add it
+		registry.addPropertyOperator(operator1);
+
+		// Check if correctly added
+		assertSame("list size increased", 1, registry.getPropertyOperators().size());
+		assertSame("descriptor found", operator1, registry.getPropertyOperators().get(0));
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl#getPropertyOperator(java.lang.String)}.
+	 *
+	 * @throws NotFoundException
+	 */
+	@Test
+	public void testGetPropertyOperator() throws NotFoundException {
+		// Create a registry
+		int propertiesCollectionSize = 10;
+		LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+		registry.setPropertyCollectionSize(propertiesCollectionSize);
+
+		// Create a PropertyOperator
+		PropertyOperator operator1 = LayersFactory.eINSTANCE.createPropertyOperator();
+		operator1.setName("op1");
+
+		// Add it
+		registry.addPropertyOperator(operator1);
+
+		// Try to get by its name
+		assertSame("operator found by its name", operator1, registry.getPropertyOperator(operator1.getName()));
+
+		// Try with a wrong name
+		try {
+			registry.getPropertyOperator("wrong name");
+			fail("Wrong name send an NotFoundException");
+		} catch (NotFoundException e) {
+			// ok
+		}
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorRegistryImpl#attachOperatorToDescriptor(org.eclipse.papyrus.layers.stackmodel.layers.Property, java.lang.String, java.lang.String)}.
+	 *
+	 * @throws NotFoundException
+	 */
+	@Test
+	public void testAttachOperatorToDescriptor() throws NotFoundException {
+		// Create a registry
+		int propertiesCollectionSize = 10;
+		LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+		registry.setPropertyCollectionSize(propertiesCollectionSize);
+
+		// Create a LayerOperatorDesc
+		LayerOperatorDescriptor descriptor = LayersFactory.eINSTANCE.createLayerOperatorDescriptor();
+		descriptor.setName("desc1");
+
+		// Add it
+		registry.addLayerOperatorDescriptor(descriptor);
+
+		// Create a PropertyOperator
+		PropertyOperator operator1 = LayersFactory.eINSTANCE.createPropertyOperator();
+		operator1.setName("op1");
+
+		// Add it
+		registry.addPropertyOperator(operator1);
+
+		// Create a property
+		Property prop1 = LayersFactory.eINSTANCE.createProperty();
+		prop1.setName("prop1");
+		prop1.setIndex(0);
+
+		// Attach Property
+		registry.attachOperatorToDescriptor(prop1, operator1.getName(), descriptor.getName());
+
+		// Check if the operator is added to LayerOperator
+		assertSame("operator found in layer", operator1, descriptor.getPropertyOperator(prop1));
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersFactoryForStackImplWithApplicationTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersFactoryForStackImplWithApplicationTest.java
new file mode 100755
index 0000000..063b785
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersFactoryForStackImplWithApplicationTest.java
@@ -0,0 +1,417 @@
+/*****************************************************************************
+ * Copyright (c) 2014 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.List;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerState;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactoryForStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class LayersFactoryForStackImplWithApplicationTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#LayersFactoryForStackImpl()}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testCreateLayersFactoryForStackImpl() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Create stack
+		LayersStack owningStack = application.getLayersStackFor(diagram);
+
+		LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+		assertNotNull("factory created", factory);
+
+		// Create tree
+		TopLayerOperator rootLayer = factory.createTopLayerOperator(owningStack, owningStack, application);
+		Layer layer1 = factory.createLayer(rootLayer, owningStack, application);
+		Layer layer2 = factory.createLayer(rootLayer, owningStack, application);
+		TopLayerOperator layerOperator1 = factory.createTopLayerOperator(rootLayer, owningStack, application);
+		Layer layer3 = factory.createLayer(layerOperator1, owningStack, application);
+
+		// asserts
+		assertNotNull("Layer created", rootLayer);
+		assertNotNull("Layer created", layer1);
+		assertNotNull("Layer created", layer2);
+		assertNotNull("Layer created", layerOperator1);
+		assertNotNull("Layer created", layer3);
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#findNewLayerName(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer)}.
+	 */
+	@Test
+	public void testFindNewLayerName() {
+
+		LayersFactoryForStackImpl factory = new LayersFactoryForStackImpl();
+		String expectedName1 = factory.LAYER_NAME_PREFIX + "0";
+
+
+		LayerOperator parent = LayersFactory.eINSTANCE.createTopLayerOperator();
+		String name1 = factory.findNewLayerName(parent);
+
+		assertEquals("expected name", expectedName1, name1);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createLayersStack()}.
+	 */
+	@Test
+	@Ignore
+	public void testCreateLayersStack() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for
+	 * {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#initLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression, org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}
+	 * .
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testInitLayer() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Create stack
+		LayersStack owningStack = application.getLayersStackFor(diagram);
+
+		LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+		// Create a Tree
+		TopLayerOperator rootLayer = factory.createTopLayerOperator(owningStack, owningStack, application);
+
+		// Create a layer and initialize it
+		Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+		factory.initLayer(layer1, rootLayer, owningStack, application);
+
+		// asserts
+		assertNotNull("Layer created", layer1);
+		assertSame("state attached", LayerState.ATTACHED, layer1.getState());
+		assertSame("application set", application, layer1.getApplication());
+		assertSame("owningStack set", owningStack, layer1.getOwningLayersStack());
+		assertSame("parent set", rootLayer, layer1.eContainer());
+	}
+
+	/**
+	 * Test method for
+	 * {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}
+	 * .
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testCreateLayer() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Create stack
+		LayersStack owningStack = application.getLayersStackFor(diagram);
+
+		LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+		// Create tree
+		TopLayerOperator rootLayer = factory.createTopLayerOperator(owningStack, owningStack, application);
+		Layer layer1 = factory.createLayer(rootLayer, owningStack, application);
+
+		// asserts
+		assertNotNull("Layer created", layer1);
+		assertSame("state attached", LayerState.ATTACHED, layer1.getState());
+		assertSame("application set", application, layer1.getApplication());
+		assertSame("owningStack set", owningStack, layer1.getOwningLayersStack());
+		assertSame("parent set", rootLayer, layer1.eContainer());
+	}
+
+	/**
+	 * Test method for
+	 * {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}
+	 * .
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testCreateLayerAsRoot() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Create stack
+		LayersStack owningStack = application.getLayersStackFor(diagram);
+
+		LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+		// Create tree
+		Layer layer1 = factory.createLayer(owningStack, owningStack, application);
+
+		// asserts
+		assertNotNull("Layer created", layer1);
+		assertSame("state attached", LayerState.ATTACHED, layer1.getState());
+		assertSame("application set", application, layer1.getApplication());
+		assertSame("owningStack set", owningStack, layer1.getOwningLayersStack());
+		assertSame("parent set", owningStack, layer1.eContainer());
+	}
+
+	/**
+	 * Test method for
+	 * {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createRegExpLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}
+	 * .
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testCreateRegExpLayer() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Create stack
+		LayersStack owningStack = application.getLayersStackFor(diagram);
+
+		LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+		// Create tree
+		TopLayerOperator rootLayer = factory.createTopLayerOperator(owningStack, owningStack, application);
+		RegExpLayer layer1 = factory.createRegExpLayer(rootLayer, owningStack, application);
+
+		// asserts
+		assertNotNull("Layer created", layer1);
+		assertSame("state attached", LayerState.ATTACHED, layer1.getState());
+		assertSame("application set", application, layer1.getApplication());
+		assertSame("owningStack set", owningStack, layer1.getOwningLayersStack());
+		assertSame("parent set", rootLayer, layer1.eContainer());
+	}
+
+	/**
+	 * Test method for
+	 * {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createLayer(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}
+	 * .
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testCreateRegExpLayerAsRoot() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Create stack
+		LayersStack owningStack = application.getLayersStackFor(diagram);
+
+		LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+		// Create tree
+		RegExpLayer layer1 = factory.createRegExpLayer(owningStack, owningStack, application);
+
+		// asserts
+		assertNotNull("Layer created", layer1);
+		assertSame("state attached", LayerState.ATTACHED, layer1.getState());
+		assertSame("application set", application, layer1.getApplication());
+		assertSame("owningStack set", owningStack, layer1.getOwningLayersStack());
+		assertSame("parent set", owningStack, layer1.eContainer());
+	}
+
+	/**
+	 * Test method for
+	 * {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createTopLayerOperator(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}
+	 * .
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testCreateTopLayerOperator() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Create stack
+		LayersStack owningStack = application.getLayersStackFor(diagram);
+
+		LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+		// Create tree
+		TopLayerOperator rootLayer = factory.createTopLayerOperator(owningStack, owningStack, application);
+		TopLayerOperator layer1 = factory.createTopLayerOperator(rootLayer, owningStack, application);
+
+		// asserts
+		assertNotNull("Layer created", layer1);
+		assertSame("state attached", LayerState.ATTACHED, layer1.getState());
+		assertSame("application set", application, layer1.getApplication());
+		assertSame("owningStack set", owningStack, layer1.getOwningLayersStack());
+		assertSame("parent set", rootLayer, layer1.eContainer());
+	}
+
+	/**
+	 * Test method for
+	 * {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createTopLayerOperator(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}
+	 * .
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testCreateTopLayerOperatorAsRoot() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Create stack
+		LayersStack owningStack = application.getLayersStackFor(diagram);
+
+		LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+		// Create tree
+		TopLayerOperator layer1 = factory.createTopLayerOperator(owningStack, owningStack, application);
+
+		// asserts
+		assertNotNull("Layer created", layer1);
+		assertSame("state attached", LayerState.ATTACHED, layer1.getState());
+		assertSame("application set", application, layer1.getApplication());
+		assertSame("owningStack set", owningStack, layer1.getOwningLayersStack());
+		assertSame("parent set", owningStack, layer1.eContainer());
+	}
+
+	/**
+	 * Test method for
+	 * {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createStackedLayerOperator(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}
+	 * .
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testCreateStackedLayerOperator() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Create stack
+		LayersStack owningStack = application.getLayersStackFor(diagram);
+
+		LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+		// Create tree
+		TopLayerOperator rootLayer = factory.createTopLayerOperator(owningStack, owningStack, application);
+		StackedLayerOperator layer1 = factory.createStackedLayerOperator(rootLayer, owningStack, application);
+
+		// asserts
+		assertNotNull("Layer created", layer1);
+		assertSame("state attached", LayerState.ATTACHED, layer1.getState());
+		assertSame("application set", application, layer1.getApplication());
+		assertSame("owningStack set", owningStack, layer1.getOwningLayersStack());
+		assertSame("parent set", rootLayer, layer1.eContainer());
+	}
+
+	/**
+	 * Test method for
+	 * {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersFactoryForStackImpl#createTopLayerOperator(org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, org.eclipse.papyrus.layers.stackmodel.layers.LayersStack, org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}
+	 * .
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testCreateStackedLayerOperatorAsRoot() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Create stack
+		LayersStack owningStack = application.getLayersStackFor(diagram);
+
+		LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+		// Create tree
+		StackedLayerOperator layer1 = factory.createStackedLayerOperator(owningStack, owningStack, application);
+
+		// asserts
+		assertNotNull("Layer created", layer1);
+		assertSame("state attached", LayerState.ATTACHED, layer1.getState());
+		assertSame("application set", application, layer1.getApplication());
+		assertSame("owningStack set", owningStack, layer1.getOwningLayersStack());
+		assertSame("parent set", owningStack, layer1.eContainer());
+	}
+
+	/**
+	 * Test method for {@link LayersFactoryForStackImpl#createLayerOperator(String, LayersContainer, LayersStack, LayersStackApplication)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testCreateLayerOperator() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		// Create stack
+		LayersStack owningStack = application.getLayersStackFor(diagram);
+
+		LayersFactoryForStack factory = LayersFactoryForStack.eINSTANCE;
+
+		// Create tree
+		TopLayerOperator rootLayer = factory.createTopLayerOperator(owningStack, owningStack, application);
+		List<LayerOperatorDescriptor> operatorDescs = application.getLayerOperatorDescriptorRegistry().getDescriptors();
+		assertNotNull("descs found", operatorDescs);
+		assertTrue("a least one desc is defined", operatorDescs.size() > 0);
+
+		String layerID = operatorDescs.get(0).getName();
+		AbstractLayerOperator layer1 = factory.createLayerOperator(layerID, rootLayer, owningStack, application);
+
+		// asserts
+		assertNotNull("Layer created", layer1);
+		assertSame("state attached", LayerState.ATTACHED, layer1.getState());
+		assertSame("application set", application, layer1.getApplication());
+		assertSame("owningStack set", owningStack, layer1.getOwningLayersStack());
+		assertSame("parent set", rootLayer, layer1.eContainer());
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersStackApplicationImplTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersStackApplicationImplTest.java
new file mode 100755
index 0000000..19f2e56
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersStackApplicationImplTest.java
@@ -0,0 +1,219 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class LayersStackApplicationImplTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#LayersStackApplicationImpl()}.
+	 */
+	@Test
+	public void testLayersStackApplicationImpl() {
+		// Create instance
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		assertNotNull("instance created", application);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#init()}.
+	 */
+	@Test
+	public void testInit() {
+		// Create instance
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+
+		// Check other instances creation
+		assertNotNull("propertyRegistry created", application.getPropertyRegistry());
+		assertNotNull("layerDescriptorRegistry created", application.getLayerDescriptorRegistry());
+		assertNotNull("propertySetterRegistry  created", application.getPropertySetterRegistry());
+		assertNotNull("LayerOperatorDescriptorRegistry  created", application.getLayerOperatorDescriptorRegistry());
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#getLayersStacks()}.
+	 */
+	@Test
+	public void testGetLayersStacks() {
+		// Create instance
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+
+		// Check other instances creation
+		assertNotNull("stacks list created", application.getLayersStacks());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#getPropertyRegistry()}.
+	 */
+	@Test
+	public void testGetPropertyRegistry() {
+		// Create instance
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+
+		// Check other instances creation
+		assertNotNull("propertyRegistry created", application.getPropertyRegistry());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#getLayerDescriptorRegistry()}.
+	 */
+	@Test
+	public void testGetLayerDescriptorRegistry() {
+		// Create instance
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+
+		// Check other instances creation
+		assertNotNull("layerDescriptorRegistry created", application.getLayerDescriptorRegistry());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#removeLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram)}.
+	 */
+	@Test
+	public void testRemoveLayersStackFor() {
+		// Create instance
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+		// try to get a layer stack
+		application.getLayersStackFor(diagram);
+
+		// Create a second stack
+		Diagram diagram2 = NotationFactory.eINSTANCE.createDiagram();
+		LayersStack stack2 = application.getLayersStackFor(diagram2);
+
+		// Remove first stack
+		application.removeLayersStackFor(diagram);
+		// Check if not exist
+		assertFalse("stack is detached", application.isLayersStackAttachedFor(diagram));
+		assertTrue("stack is attached", application.isLayersStackAttachedFor(diagram2));
+		assertSame("get found previous stack", stack2, application.getLayersStackFor(diagram2));
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#isLayersStackAttachedFor(org.eclipse.gmf.runtime.notation.Diagram)}.
+	 */
+	@Test
+	public void testIsLayersStackAttachedFor() {
+		// Create instance
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+		// check if there is a stack
+		assertFalse("no stack is found", application.isLayersStackAttachedFor(diagram));
+
+		// try to get a layer stack
+		LayersStack stack = application.getLayersStackFor(diagram);
+		assertNotNull("stack is created", stack);
+
+		assertTrue("stack is attached", application.isLayersStackAttachedFor(diagram));
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#lookupLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram)}.
+	 *
+	 * @throws NotFoundException
+	 */
+	@Test
+	public void testLookupLayersStackFor() throws NotFoundException {
+		// Create instance
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+		// Try to lookup. Should found nothing
+		try {
+			application.lookupLayersStackFor(diagram);
+			fail("An NotFoundException should be throw");
+		} catch (NotFoundException e) {
+		}
+
+		// try to get a layer stack
+		LayersStack stack = application.getLayersStackFor(diagram);
+		assertNotNull("stack is created", stack);
+
+		assertSame("lookup found stack", stack, application.lookupLayersStackFor(diagram));
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#getLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram)}.
+	 */
+	@Test
+	public void testGetLayersStackFor() {
+		// Create instance
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+		// try to get a layer stack
+		LayersStack stack = application.getLayersStackFor(diagram);
+		assertNotNull("stack is created", stack);
+
+		// Create a second stack
+		Diagram diagram2 = NotationFactory.eINSTANCE.createDiagram();
+		LayersStack stack2 = application.getLayersStackFor(diagram2);
+		assertNotNull("stack is created", stack2);
+
+		// Get them again
+		assertSame("get found previuous stack", stack, application.getLayersStackFor(diagram));
+		assertSame("get found previuous stack", stack2, application.getLayersStackFor(diagram2));
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayersStackApplicationImpl#createLayersStackFor(org.eclipse.gmf.runtime.notation.Diagram)}.
+	 */
+	@Test
+	public void testCreateLayersStackFor() {
+		// Create instance
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+		// try to get a layer stack
+		LayersStack stack = application.createLayersStackFor(diagram);
+		assertNotNull("stack is created", stack);
+
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyRegistryImplTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyRegistryImplTest.java
new file mode 100755
index 0000000..2c9009b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertyRegistryImplTest.java
@@ -0,0 +1,187 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class PropertyRegistryImplTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyRegistryImpl#PropertyRegistryImpl()}.
+	 */
+	@Test
+	public void testPropertyRegistryImpl() {
+		// Create registry
+		PropertyRegistry registry = LayersFactory.eINSTANCE.createPropertyRegistry();
+		assertNotNull("registry created", registry);
+
+		// check internal object initialization
+		assertNotNull("type registry created", registry.getTypeRegistry());
+		assertNotNull("properties created", registry.getProperties());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyRegistryImpl#PropertyRegistryImpl()}.
+	 */
+	@Test
+	public void testinit() {
+		// Create registry
+		PropertyRegistry registry = LayersFactory.eINSTANCE.createPropertyRegistry();
+		assertNotNull("registry created", registry);
+
+		// check init
+		assertTrue("property list size is correct", registry.getProperties().size() > 0);
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyRegistryImpl#PropertyRegistryImpl()}.
+	 */
+	@Test
+	public void testinitDefaultValue() {
+		// Create registry
+		PropertyRegistry registry = LayersFactory.eINSTANCE.createPropertyRegistry();
+		assertNotNull("registry created", registry);
+
+		// check init
+		assertTrue("property list size is correct", registry.getProperties().size() > 0);
+
+		// Check if default value is set for the first property
+		assertNotNull("property list size is correct", registry.getProperties().get(0).getDefaultValue());
+
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyRegistryImpl#getProperties()}.
+	 */
+	@Test
+	public void testGetProperties() {
+		// Create registry
+		PropertyRegistry registry = LayersFactory.eINSTANCE.createPropertyRegistry();
+		assertNotNull("registry created", registry);
+
+		// check internal object initialization
+		assertNotNull("properties list created", registry.getProperties());
+		assertTrue("properties created", registry.getProperties().size() > 0);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyRegistryImpl#getPropertiesCount()}.
+	 */
+	@Test
+	public void testGetPropertiesCount() {
+		// Create registry
+		PropertyRegistry registry = LayersFactory.eINSTANCE.createPropertyRegistry();
+		assertNotNull("registry created", registry);
+
+		// check internal object initialization
+		assertSame("count is ok", registry.getProperties().size(), registry.getPropertiesCount());
+
+		// Add a property
+		Property property = LayersFactory.eINSTANCE.createProperty();
+		property.setName("prop1");
+		registry.getProperties().add(property);
+
+		assertSame("count is ok", registry.getProperties().size(), registry.getPropertiesCount());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyRegistryImpl#getTypeRegistry()}.
+	 */
+	@Test
+	public void testGetTypeRegistry() {
+		// Create registry
+		PropertyRegistry registry = LayersFactory.eINSTANCE.createPropertyRegistry();
+		assertNotNull("registry created", registry);
+
+		// check internal object initialization
+		assertNotNull("type registry created", registry.getTypeRegistry());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertyRegistryImpl#getPropertyIndex(java.lang.String)}.
+	 *
+	 * @throws NotFoundException
+	 */
+	@Test
+	public void testGetPropertyIndex() throws NotFoundException {
+		// Create registry
+		PropertyRegistry registry = LayersFactory.eINSTANCE.createPropertyRegistry();
+
+		// test method
+		int index = 0;
+		Property property = registry.getProperties().get(index);
+
+		assertEquals("index found", index, registry.getPropertyIndex(property.getName()));
+
+	}
+
+	/**
+	 * Add a new Property and test if the index is correctly set.
+	 *
+	 * @throws NotFoundException
+	 */
+	@Test
+	public void testAddProperty() throws NotFoundException {
+		// Create registry
+		PropertyRegistry registry = LayersFactory.eINSTANCE.createPropertyRegistry();
+
+		// Create a property
+		String typeName = "boolean";
+		String name = "prop1";
+		Property property = LayersFactory.eINSTANCE.createProperty();
+		property.setName(name);
+		property.setType(registry.getTypeRegistry().getTypes().get(typeName));
+
+		// Add property to registry
+		registry.addProperty(property);
+
+		// Get the property
+		Property propFound = registry.getProperty(name);
+		assertSame("property found", property, propFound);
+
+		assertTrue("property index set", propFound.getIndex() >= 0);
+
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertySetterRegistryImplTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertySetterRegistryImplTest.java
new file mode 100755
index 0000000..bdcc3cc
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/PropertySetterRegistryImplTest.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.fail;
+
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertySetterRegistry;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ *
+ * Test the class without application object.
+ * The map should work.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class PropertySetterRegistryImplTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterRegistryImpl#PropertySetterRegistryImpl()}.
+	 */
+	@Test
+	public void testPropertySetterRegistryImpl() {
+		PropertySetterRegistry registry = LayersFactory.eINSTANCE.createPropertySetterRegistry();
+		assertNotNull("registry created", registry);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterRegistryImpl#getPropertySetters()}.
+	 */
+	@Test
+	public void testGetPropertySetters() {
+		PropertySetterRegistry registry = LayersFactory.eINSTANCE.createPropertySetterRegistry();
+		assertNotNull("property setters can be retrieved", registry.getPropertySetters());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterRegistryImpl#getSetterMap()}.
+	 */
+	@Test
+	public void testGetSetterMap() {
+		PropertySetterRegistry registry = LayersFactory.eINSTANCE.createPropertySetterRegistry();
+		assertNotNull("map can be retrieved", registry.getSetterMap());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterRegistryImpl#getApplication()}.
+	 */
+	@Test
+	public void testGetApplication() {
+		PropertySetterRegistry registry = LayersFactory.eINSTANCE.createPropertySetterRegistry();
+		assertNull("application is not set", registry.getApplication());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterRegistryImpl#setApplication(org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication)}.
+	 */
+	@Test
+	@Ignore
+	public void testSetApplication() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterRegistryImpl#getPropertySetter(org.eclipse.papyrus.layers.stackmodel.layers.Property)}.
+	 */
+	@Test
+	@Ignore
+	public void testGetPropertySetterProperty() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterRegistryImpl#getPropertySetter(java.lang.String)}.
+	 *
+	 * @throws NotFoundException
+	 */
+	@Test
+	public void testGetPropertySetterString() throws NotFoundException {
+		PropertySetterRegistry registry = LayersFactory.eINSTANCE.createPropertySetterRegistry();
+
+
+		assertNotNull("Default property can be retrieved", registry.getPropertySetter("isValid"));
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.PropertySetterRegistryImpl#addPropertySetter(org.eclipse.papyrus.layers.stackmodel.layers.PropertySetter)}.
+	 *
+	 * @throws NotFoundException
+	 */
+	@Test
+	public void testAddPropertySetter() throws NotFoundException {
+		PropertySetterRegistry registry = LayersFactory.eINSTANCE.createPropertySetterRegistry();
+
+		PropertySetterImpl setter = new PropertySetterImpl() {
+			@Override
+			public String getPropertyName() {
+				return "myProperty";
+			};
+		};
+
+		// add the setter
+		registry.addPropertySetter(setter);
+		// Try to get it in the map
+		assertNotNull("property can be retrieved from map", registry.getSetterMap().get("myProperty"));
+		assertNotNull("property can be retrieved from dedicated method", registry.getPropertySetter("myProperty"));
+
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/RegExpLayerImplWithQueriesTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/RegExpLayerImplWithQueriesTest.java
new file mode 100755
index 0000000..742f58e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/RegExpLayerImplWithQueriesTest.java
@@ -0,0 +1,177 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.query.conditions.eobjects.EObjectCondition;
+import org.eclipse.emf.query.ocl.conditions.BooleanOCLCondition;
+import org.eclipse.emf.query.statements.FROM;
+import org.eclipse.emf.query.statements.IQueryResult;
+import org.eclipse.emf.query.statements.SELECT;
+import org.eclipse.emf.query.statements.WHERE;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.ocl.ParserException;
+import org.eclipse.ocl.ecore.OCL;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author dumoulin
+ *
+ */
+public class RegExpLayerImplWithQueriesTest {
+
+	/**
+	 * Name of the plugin that is created.
+	 */
+	final protected String PLUGIN_PROJECT_NAME = "org.eclipse.papyrus.layers.stackmodel";
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerImpl#RegExpLayerImpl()}.
+	 */
+	@Test
+	public void testRegExpLayerImpl() {
+		RegExpLayer layer = LayersFactory.eINSTANCE.createRegExpLayer();
+
+		assertNotNull("object created", layer);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerImpl#setExpr(java.lang.String)}.
+	 */
+	@Test
+	public void testSetExpr() {
+		RegExpLayer layer = LayersFactory.eINSTANCE.createRegExpLayer();
+
+		assertNotNull("object created", layer);
+
+		layer.setExpr("An expression");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.RegExpLayerImpl#evaluateExpr()}.
+	 *
+	 * @throws ParserException
+	 */
+	@Test
+	public void testEvaluateExpr() throws ParserException {
+		RegExpLayer layer = LayersFactory.eINSTANCE.createRegExpLayer();
+
+		assertNotNull("object created", layer);
+
+		layer.setExpr("An expression");
+		// List<View> res = layer.evaluateExpr();
+		//
+		// assertNotNull("object created", res);
+
+
+		String modelNotationKey = "notation";
+		String modelUMLKey = "uml";
+
+		String modelFileName = "/test/models/model1";
+
+		Resource resource = getResource(modelFileName, modelNotationKey);
+
+		OCL ocl = OCL.newInstance();
+		EObjectCondition condition = new BooleanOCLCondition<EClassifier, EClass, EObject>(
+				ocl.getEnvironment(),
+				// "self.oclIsKindOf(Shape)",
+				// "self.oclIsKindOf(Shape) and self.oclAsType(Shape).visible = true",
+				"self.oclAsType(Shape).visible = true",
+				NotationPackage.Literals.SHAPE
+				);
+
+		SELECT statement = new SELECT(SELECT.UNBOUNDED, false,
+				new FROM(resource.getContents()), new WHERE(condition),
+				new NullProgressMonitor());
+
+		IQueryResult results = statement.execute();
+
+		assertNotNull("got result", results);
+		assertFalse("results is not empty", results.isEmpty());
+	}
+
+
+	/**
+	 * Test if the resource needed for the test exists.
+	 *
+	 * @throws ModelMultiException
+	 */
+	@Test
+	public void testResourceExist() throws IOException, CoreException {
+
+		String modelNotationKey = "notation";
+		String modelUMLKey = "uml";
+
+		String modelFileName = "/test/models/model1";
+
+		Resource resource = getResource(modelFileName, modelNotationKey);
+
+		assertNotNull("modelFile exist", resource);
+		assertTrue("model is loaded", !resource.getContents().isEmpty());
+	}
+
+	/**
+	 * @param modelFileName
+	 * @param modelNotationKey
+	 * @return
+	 */
+	private Resource getResource(String modelFileName, String modelNotationKey) {
+		ResourceSet resourceSet = new ResourceSetImpl();
+
+
+		URI uri = URI.createPlatformPluginURI(PLUGIN_PROJECT_NAME + modelFileName + "." + modelNotationKey, true);
+		// URI uri = URI.createPlatformPluginURI("/org.eclipse.papyrus.layers.stackmodel/model/layers.notation", true);
+
+
+		System.out.println("URI=" + uri.toString());
+		Resource resource = resourceSet.getResource(uri, true);
+		return resource;
+	}
+
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorDescriptorImplTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorDescriptorImplTest.java
new file mode 100755
index 0000000..e3a59aa
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorDescriptorImplTest.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperatorDescriptor;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class StackedLayerOperatorDescriptorImplTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StackedLayerOperatorDescriptorImpl#StackedLayerOperatorDescriptorImpl()}.
+	 */
+	@Test
+	public void testStackedLayerOperatorDescriptorImpl() {
+		// Create an instance of the class
+		StackedLayerOperatorDescriptor descriptor = LayersFactory.eINSTANCE.createStackedLayerOperatorDescriptor();
+
+		assertNotNull("object created", descriptor);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl#getName()}.
+	 */
+	@Test
+	public void testGetName() {
+		// Create an instance of the class
+		StackedLayerOperatorDescriptor descriptor = LayersFactory.eINSTANCE.createStackedLayerOperatorDescriptor();
+
+		// Do test
+		assertSame("name correctly set", "StackedLayerOperator", descriptor.getName());
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl#createLayerOperator()}.
+	 */
+	@Test
+	public void testCreateLayerOperator() {
+		// Create an instance of the class
+		StackedLayerOperatorDescriptor descriptor = LayersFactory.eINSTANCE.createStackedLayerOperatorDescriptor();
+
+		AbstractLayerOperator layerOperator = descriptor.createLayerOperator();
+		assertNotNull("layer created", layerOperator);
+		assertTrue("right type", layerOperator instanceof StackedLayerOperator);
+		assertSame("descriptor is set", descriptor, layerOperator.getLayerOperatorDescriptor());
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorImplGetComputePropertyCommandTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorImplGetComputePropertyCommandTest.java
new file mode 100755
index 0000000..50ef7e5
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorImplGetComputePropertyCommandTest.java
@@ -0,0 +1,400 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createFolder;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createLayerOperatorConfig;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createLayerOperatorsMultipleBinding;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createOperatorBinding;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createPropertyId;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createPropertyOperatorConfig;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createTypeConfig;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.Folder;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.impl.FakeOperator.FakeCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModel;
+import org.eclipse.papyrus.layers.stackmodel.layers.loaders.RegistriesLoader;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class StackedLayerOperatorImplGetComputePropertyCommandTest {
+
+	private static final String FAKE_STACKED_LAYERS_OPERATOR_NAME = "FakeStackedLayersOperator";
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StackedLayerOperatorImpl#StackedLayerOperatorImpl()}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testStackedLayerOperatorImpl() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+		LayerOperatorDescriptorRegistry layerOperatorDescriptorRegistry = application.getLayerOperatorDescriptorRegistry();
+
+		// populate the StackedLayerOperator with appropriate descriptor.
+		LayersConfigModel model = new LayersConfigModel();
+		initLayersConfigWithTestStackedOperator(model, propertyRegistry);
+		RegistriesLoader loader = new RegistriesLoader(model);
+		loader.loadLayerOperatorDescriptorRegistry(layerOperatorDescriptorRegistry, propertyRegistry);
+
+		// Know, create a LayerOperator
+		// Create a StackedLayerOperator
+		StackedLayerOperator layer = (StackedLayerOperator) layerOperatorDescriptorRegistry.getLayerOperatorDescriptor(FAKE_STACKED_LAYERS_OPERATOR_NAME).createLayerOperator();
+		layer.setApplication(application);
+
+		// Check object creation
+		assertNotNull("object created", layer);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerOperatorImpl#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testGetComputePropertyValueCommand() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+		LayerOperatorDescriptorRegistry layerOperatorDescriptorRegistry = application.getLayerOperatorDescriptorRegistry();
+
+		// populate the StackedLayerOperator with appropriate descriptor.
+		LayersConfigModel model = new LayersConfigModel();
+		initLayersConfigWithTestStackedOperator(model, propertyRegistry);
+		RegistriesLoader loader = new RegistriesLoader(model);
+		loader.loadLayerOperatorDescriptorRegistry(layerOperatorDescriptorRegistry, propertyRegistry);
+
+		// Know, create a LayerOperator
+		// Create a StackedLayerOperator
+		StackedLayerOperator layer = (StackedLayerOperator) layerOperatorDescriptorRegistry.getLayerOperatorDescriptor(FAKE_STACKED_LAYERS_OPERATOR_NAME).createLayerOperator();
+		layer.setApplication(application);
+
+		// Create Views
+		View view1 = NotationFactory.eINSTANCE.createShape();
+		View view2 = NotationFactory.eINSTANCE.createShape();
+		View view3 = NotationFactory.eINSTANCE.createShape();
+
+		// Create Properties
+		int index = 0;
+		Property property1 = propertyRegistry.getProperties().get(index++);
+		Property property2 = propertyRegistry.getProperties().get(index++);
+		Property property3 = propertyRegistry.getProperties().get(index++);
+
+		// Create layer1: views ={} propInstances={}
+		Layer layer1 = createLayer(layer, Arrays.asList(view1), Arrays.asList(property1));
+
+		// Create layer2: views ={} propInstances={}
+		Layer layer2 = createLayer(layer, Arrays.asList(view1, view2), Arrays.asList(property1, property2));
+
+		// Create layer3: views ={} propInstances={}
+		Layer layer3 = createLayer(layer, Arrays.asList(view3), Arrays.asList(property2, property3));
+
+		// Checks
+		ComputePropertyValueCommand cmd = layer.getComputePropertyValueCommand(view2, property1);
+		assertNotNull("cmd created", cmd);
+		assertTrue("cmd is of Fake type", cmd instanceof FakeCommand);
+		assertSame("cmd has 1 sub command", 1, ((FakeCommand) cmd).nestedCommand.size());
+
+		cmd = layer.getComputePropertyValueCommand(view1, property1);
+		assertNotNull("cmd created", cmd);
+		assertTrue("cmd is of Fake type", cmd instanceof FakeCommand);
+		assertSame("cmd has 1 sub command", 2, ((FakeCommand) cmd).nestedCommand.size());
+
+		// Check not existing
+		cmd = layer.getComputePropertyValueCommand(view3, property1);
+		assertNull("cmd is null", cmd);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerOperatorImpl#getViewsComputePropertyValueCommand(java.util.List, org.eclipse.papyrus.layers.stackmodel.layers.Property)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testGetViewsComputePropertyValueCommandListOfViewProperty() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+		LayerOperatorDescriptorRegistry layerOperatorDescriptorRegistry = application.getLayerOperatorDescriptorRegistry();
+
+		// populate the StackedLayerOperator with appropriate descriptor.
+		LayersConfigModel model = new LayersConfigModel();
+		initLayersConfigWithTestStackedOperator(model, propertyRegistry);
+		RegistriesLoader loader = new RegistriesLoader(model);
+		loader.loadLayerOperatorDescriptorRegistry(layerOperatorDescriptorRegistry, propertyRegistry);
+
+		// Know, create a LayerOperator
+		// Create a StackedLayerOperator
+		StackedLayerOperator layer = (StackedLayerOperator) layerOperatorDescriptorRegistry.getLayerOperatorDescriptor(FAKE_STACKED_LAYERS_OPERATOR_NAME).createLayerOperator();
+		layer.setApplication(application);
+
+		// Create Views
+		View view1 = NotationFactory.eINSTANCE.createShape();
+		View view2 = NotationFactory.eINSTANCE.createShape();
+		View view3 = NotationFactory.eINSTANCE.createShape();
+		View view4 = NotationFactory.eINSTANCE.createShape();
+
+		// Create Properties
+		int index = 0;
+		Property property1 = propertyRegistry.getProperties().get(index++);
+		Property property2 = propertyRegistry.getProperties().get(index++);
+		Property property3 = propertyRegistry.getProperties().get(index++);
+		Property property4 = propertyRegistry.getProperties().get(index++);
+
+		// Create layer1: views ={} propInstances={}
+		Layer layer1 = createLayer(layer, Arrays.asList(view1), Arrays.asList(property1));
+
+		// Create layer2: views ={} propInstances={}
+		Layer layer2 = createLayer(layer, Arrays.asList(view1, view2), Arrays.asList(property1, property2));
+
+		// Create layer3: views ={} propInstances={}
+		Layer layer3 = createLayer(layer, Arrays.asList(view2, view3), Arrays.asList(property2, property3));
+
+		// Checks
+		List<ComputePropertyValueCommand> cmds = layer.getViewsComputePropertyValueCommand(Arrays.asList(view1, view2), property1);
+		assertNotNull("cmd created", cmds);
+		assertSame("cmd size is equals to views size", 2, cmds.size());
+		int i = 0;
+		assertTrue("cmd is of Fake type", cmds.get(i) instanceof FakeCommand);
+		assertSame("cmd has 1 sub command", 2, ((FakeCommand) cmds.get(i)).nestedCommand.size());
+		i++;
+		assertTrue("cmd is of Fake type", cmds.get(i) instanceof FakeCommand);
+		assertSame("cmd has 1 sub command", 1, ((FakeCommand) cmds.get(i)).nestedCommand.size());
+
+		// Check wrong property2
+		cmds = layer.getViewsComputePropertyValueCommand(Arrays.asList(view1, view3), property3);
+		assertNotNull("cmd created", cmds);
+		assertSame("cmd size is equals to views size", 2, cmds.size());
+		i = 0;
+		assertSame("cmd is null", null, cmds.get(i++));
+		assertTrue("cmd is of Fake type", cmds.get(i) instanceof FakeCommand);
+		assertSame("cmd has 1 sub command", 1, ((FakeCommand) cmds.get(i)).nestedCommand.size());
+
+		// Check wrong view
+		cmds = layer.getViewsComputePropertyValueCommand(Arrays.asList(view4), property3);
+		assertNull("cmd created", cmds);
+
+		// Check wrong property
+		cmds = layer.getViewsComputePropertyValueCommand(Arrays.asList(view1, view2), property4);
+		assertNull("cmd created", cmds);
+
+		// Check list with null
+		cmds = layer.getViewsComputePropertyValueCommand(Arrays.asList(view1, null, view3), property1);
+		assertNotNull("cmd created", cmds);
+		assertSame("cmd size is equals to views size", 3, cmds.size());
+		i = 0;
+		assertTrue("cmd is of Fake type", cmds.get(i++) instanceof FakeCommand);
+		assertSame("cmd is null", null, cmds.get(i++));
+		assertSame("cmd is null", null, cmds.get(i++));
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.AbstractLayerOperatorImpl#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, java.util.List)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testGetPropertiesComputePropertyValueCommandViewListOfProperty() throws LayersException {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+		LayerOperatorDescriptorRegistry layerOperatorDescriptorRegistry = application.getLayerOperatorDescriptorRegistry();
+
+		// populate the StackedLayerOperator with appropriate descriptor.
+		LayersConfigModel model = new LayersConfigModel();
+		initLayersConfigWithTestStackedOperator(model, propertyRegistry);
+		RegistriesLoader loader = new RegistriesLoader(model);
+		loader.loadLayerOperatorDescriptorRegistry(layerOperatorDescriptorRegistry, propertyRegistry);
+
+		// Know, create a LayerOperator
+		// Create a StackedLayerOperator
+		StackedLayerOperator layer = (StackedLayerOperator) layerOperatorDescriptorRegistry.getLayerOperatorDescriptor(FAKE_STACKED_LAYERS_OPERATOR_NAME).createLayerOperator();
+		layer.setApplication(application);
+
+		// Create Views
+		View view1 = NotationFactory.eINSTANCE.createShape();
+		View view2 = NotationFactory.eINSTANCE.createShape();
+		View view3 = NotationFactory.eINSTANCE.createShape();
+		View view4 = NotationFactory.eINSTANCE.createShape();
+
+		// Create Properties
+		int index = 0;
+		Property property1 = propertyRegistry.getProperties().get(index++);
+		Property property2 = propertyRegistry.getProperties().get(index++);
+		Property property3 = propertyRegistry.getProperties().get(index++);
+		Property property4 = propertyRegistry.getProperties().get(index++);
+
+		// Create layer1: views ={} propInstances={}
+		Layer layer1 = createLayer(layer, Arrays.asList(view1), Arrays.asList(property1));
+
+		// Create layer2: views ={} propInstances={}
+		Layer layer2 = createLayer(layer, Arrays.asList(view1, view2), Arrays.asList(property1, property2));
+
+		// Create layer3: views ={} propInstances={}
+		Layer layer3 = createLayer(layer, Arrays.asList(view2, view3), Arrays.asList(property3));
+
+		// Check view
+		List<ComputePropertyValueCommand> cmds = layer.getPropertiesComputePropertyValueCommand(view1, Arrays.asList(property1, property2));
+		assertNotNull("cmd created", cmds);
+		assertSame("cmd size is equals to views size", 2, cmds.size());
+		int i = 0;
+		assertTrue("cmd is of Fake type", cmds.get(i) instanceof FakeCommand);
+		assertSame("cmd has 1 sub command", 2, ((FakeCommand) cmds.get(i)).nestedCommand.size());
+		i++;
+		assertTrue("cmd is of Fake type", cmds.get(i) instanceof FakeCommand);
+		assertSame("cmd has 1 sub command", 1, ((FakeCommand) cmds.get(i)).nestedCommand.size());
+
+		// Check wrong property4
+		cmds = layer.getPropertiesComputePropertyValueCommand(view2, Arrays.asList(property1, property4));
+		assertNotNull("cmd created", cmds);
+		assertSame("cmd size is equals to views size", 2, cmds.size());
+		i = 0;
+		assertTrue("cmd is of Fake type", cmds.get(i++) instanceof FakeCommand);
+		assertSame("cmd is the property instance", null, cmds.get(i++));
+
+		// Check wrong view
+		cmds = layer.getPropertiesComputePropertyValueCommand(view4, Arrays.asList(property3));
+		assertNull("cmd created", cmds);
+
+		// Check wrong view
+		cmds = layer.getPropertiesComputePropertyValueCommand(view3, Arrays.asList(property1, property2));
+		assertNull("cmd created", cmds);
+
+		// Check list with null
+		cmds = layer.getPropertiesComputePropertyValueCommand(view1, Arrays.asList(property1, null, property2));
+		assertNotNull("cmd created", cmds);
+		assertSame("cmd size is equals to views size", 3, cmds.size());
+		i = 0;
+		assertTrue("cmd is of Fake type", cmds.get(i++) instanceof FakeCommand);
+		assertSame("cmd is null", null, cmds.get(i++));
+		assertTrue("cmd is of Fake type", cmds.get(i++) instanceof FakeCommand);
+
+	}
+
+	/**
+	 * Create a layer with the specified view and property set
+	 *
+	 * @param asList
+	 * @param asList2
+	 * @return
+	 * @throws LayersException
+	 */
+	protected Layer createLayer(LayerOperator parent, List<View> views, List<Property> properties) throws LayersException {
+
+		// Create the layer
+		Layer layer = LayersFactory.eINSTANCE.createLayer();
+		// Set the application (needed ?)
+		layer.setApplication(parent.getApplication());
+		// Attach it to its parent
+		parent.getLayers().add(layer);
+
+
+		// Add views
+		for (View view : views) {
+			layer.getViews().add(view);
+		}
+
+		// Add property instances
+		for (Property property : properties) {
+			layer.addPropertyInstance(property);
+		}
+		return layer;
+	}
+
+	/**
+	 * Create a config model ready to initialize the {@link LayerOperatorDescriptorRegistry} with
+	 * a StackedLayerOperator containing FakeLayerOperator.
+	 *
+	 * @param model
+	 */
+	private void initLayersConfigWithTestStackedOperator(LayersConfigModel model, PropertyRegistry propertyRegistry) {
+		// Create model
+		Folder layeropFolder = createFolder(model.getRootFolder(), "layerOpDesc");
+
+		// Create LayerOperators descriptor
+		LayerOperatorConfig fakeLayerOp = createLayerOperatorConfig(layeropFolder, FAKE_STACKED_LAYERS_OPERATOR_NAME, LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+
+		// Create Operators
+		Folder operatorFolder = createFolder(model.getRootFolder(), "operatorDesc");
+		OperatorConfig operator = createPropertyOperatorConfig(operatorFolder, "FakeOperator", FakeOperator.class.getName());
+
+
+		// Create basic types
+		Folder typeFolder = createFolder(model.getRootFolder(), "types");
+		TypeConfig typeBoolean = createTypeConfig(typeFolder, "boolean");
+
+		// Create properties
+		// Use the names of the first properties in registry
+		// Specify a type, but it is not used by framework
+		Folder propertiesFolder = createFolder(model.getRootFolder(), "properties");
+		int index = 0;
+		PropertyId property1 = createPropertyId(propertiesFolder, propertyRegistry.getProperties().get(index++).getName(), typeBoolean);
+		PropertyId property2 = createPropertyId(propertiesFolder, propertyRegistry.getProperties().get(index++).getName(), typeBoolean);
+		PropertyId property3 = createPropertyId(propertiesFolder, propertyRegistry.getProperties().get(index++).getName(), typeBoolean);
+
+		// Bind operators to layers
+		Folder opBindingFolder = createFolder(model.getRootFolder(), "opBindings");
+
+		LayerOperatorMultipleBinding layerOpBindingsA = createLayerOperatorsMultipleBinding(opBindingFolder, fakeLayerOp);
+		createOperatorBinding(layerOpBindingsA, property1, operator);
+		createOperatorBinding(layerOpBindingsA, property2, operator);
+		createOperatorBinding(layerOpBindingsA, property3, operator);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorImplWithAplicationTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorImplWithAplicationTest.java
new file mode 100755
index 0000000..f10420c
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StackedLayerOperatorImplWithAplicationTest.java
@@ -0,0 +1,88 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptor;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class StackedLayerOperatorImplWithAplicationTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StackedLayerOperatorImpl#resetDescriptor()}.
+	 */
+	@Test
+	public void testResetDescriptor() {
+		// Create objects to test
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		LayerOperatorDescriptor layerDesc = LayersFactory.eINSTANCE.createLayerOperatorDescriptor();
+		String layerDescName = "myLayerDesc";
+		layerDesc.setName(layerDescName);
+		application.getLayerOperatorDescriptorRegistry().addLayerOperatorDescriptor(layerDesc);
+
+		StackedLayerOperator layer = LayersFactory.eINSTANCE.createStackedLayerOperator();
+
+		// Check if the descriptor is unset
+		assertFalse("descriptor is not set", layer.isDescriptorSet());
+
+		// Set name and application.
+		// This should call reset, and set the descriptor
+		layer.setLayerOperatorDescriptorName(layerDescName);
+		layer.setApplication(application);
+
+		// check if the descriptor is set
+		assertTrue("descriptor is set", layer.isDescriptorSet());
+		assertSame("right descriptor is set", layerDesc, layer.getLayerOperatorDescriptor());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StackedLayerOperatorImpl#StackedLayerOperatorImpl()}.
+	 */
+	@Test
+	public void testStackedLayerOperatorImpl() {
+		// Create objects to test
+		StackedLayerOperator layer = LayersFactory.eINSTANCE.createStackedLayerOperator();
+
+		// Check if the descriptor is unset
+		assertNotNull("layer is created", layer);
+		assertFalse("descriptor is not set", layer.isDescriptorSet());
+
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringTypeImplTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringTypeImplTest.java
new file mode 100755
index 0000000..b493d1d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/StringTypeImplTest.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.StringInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.StringType;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class StringTypeImplTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringTypeImpl#createInstance()}.
+	 */
+	@Test
+	public void testCreateInstance() {
+		StringType type = LayersFactory.eINSTANCE.createStringType();
+
+		TypeInstance instance = type.createInstance();
+		assertNotNull("instance created", instance);
+		assertTrue("Right instance", instance instanceof StringInstance);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.StringTypeImpl#StringTypeImpl()}.
+	 */
+	@Test
+	public void testStringTypeImpl() {
+		StringType type = LayersFactory.eINSTANCE.createStringType();
+
+		assertNotNull("object created", type);
+
+		assertEquals("name initialized", "String", type.getName());
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/TopLayerOperatorDescriptorImplTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/TopLayerOperatorDescriptorImplTest.java
new file mode 100755
index 0000000..13dac76
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/TopLayerOperatorDescriptorImplTest.java
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperatorDescriptor;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class TopLayerOperatorDescriptorImplTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TopLayerOperatorDescriptorImpl#TopLayerOperatorDescriptorImpl()}.
+	 */
+	@Test
+	public void testTopLayerOperatorDescriptorImpl() {
+		// Create an instance of the class
+		TopLayerOperatorDescriptor descriptor = LayersFactory.eINSTANCE.createTopLayerOperatorDescriptor();
+
+		assertNotNull("object created", descriptor);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl#getName()}.
+	 */
+	@Test
+	public void testGetName() {
+		// Create an instance of the class
+		TopLayerOperatorDescriptor descriptor = LayersFactory.eINSTANCE.createTopLayerOperatorDescriptor();
+
+		// Do test
+		assertSame("name correctly set", "TopLayerOperator", descriptor.getName());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerOperatorDescriptorImpl#createLayerOperator()}.
+	 */
+	@Test
+	public void testCreateLayerOperator() {
+		// Create an instance of the class
+		TopLayerOperatorDescriptor descriptor = LayersFactory.eINSTANCE.createTopLayerOperatorDescriptor();
+
+		AbstractLayerOperator layerOperator = descriptor.createLayerOperator();
+		assertNotNull("layer created", layerOperator);
+		assertTrue("right type", layerOperator instanceof TopLayerOperator);
+		assertSame("descriptor is set", descriptor, layerOperator.getLayerOperatorDescriptor());
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/TopLayerOperatorImplGetComputeCommandTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/TopLayerOperatorImplGetComputeCommandTest.java
new file mode 100755
index 0000000..02fab5a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/TopLayerOperatorImplGetComputeCommandTest.java
@@ -0,0 +1,321 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * Test the {#getComputePropertyValueCommand(...)} commands
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class TopLayerOperatorImplGetComputeCommandTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Create a layer with the specified view and property set
+	 *
+	 * @param asList
+	 * @param asList2
+	 * @return
+	 * @throws LayersException
+	 */
+	protected Layer createLayer(LayerOperator parent, List<View> views, List<Property> properties) throws LayersException {
+
+		// Create the layer
+		Layer layer = LayersFactory.eINSTANCE.createLayer();
+		// Set the application (needed ?)
+		layer.setApplication(parent.getApplication());
+		// Attach it to its parent
+		parent.getLayers().add(layer);
+
+
+		// Add views
+		for (View view : views) {
+			layer.getViews().add(view);
+		}
+
+		// Add property instances
+		for (Property property : properties) {
+			layer.addPropertyInstance(property);
+		}
+		return layer;
+	}
+
+	/**
+	 * Test method for {@link #createLayer(List, List)}
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testCreateLayer() throws LayersException {
+
+		// Create requested objects
+		TopLayerOperator layerParent = LayersFactory.eINSTANCE.createTopLayerOperator();
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		layerParent.setApplication(application);
+		PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+
+		// Create Views
+		View view1 = NotationFactory.eINSTANCE.createShape();
+		View view2 = NotationFactory.eINSTANCE.createShape();
+		View view3 = NotationFactory.eINSTANCE.createShape();
+
+		// Create Properties
+		int index = 0;
+		Property property1 = propertyRegistry.getProperties().get(index++);
+		Property property2 = propertyRegistry.getProperties().get(index++);
+		Property property3 = propertyRegistry.getProperties().get(index++);
+
+		// Create layer1: views ={} propInstances={}
+		Layer layer = createLayer(layerParent, Arrays.asList(view1, view2), Arrays.asList(property1, property2));
+
+		// Checks
+		assertNotNull("layer created", layer);
+		assertSame("views added", 2, layer.getViews().size());
+
+		assertSame("property instance added", 2, layer.getPropertyValueMap().values().size());
+		assertSame("property instance is correctly set", layer.getPropertyValueMap().get(property1.getName()), layer.getPropertyInstance(property1));
+		assertSame("property instance is correctly set", layer.getPropertyValueMap().get(property2.getName()), layer.getPropertyInstance(property2));
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TopLayerOperatorImpl#getComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, org.eclipse.papyrus.layers.stackmodel.layers.Property)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testGetComputePropertyValueCommand() throws LayersException {
+		// Create requested objects
+		TopLayerOperator layer = LayersFactory.eINSTANCE.createTopLayerOperator();
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		layer.setApplication(application);
+		PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+
+		// Create Views
+		View view1 = NotationFactory.eINSTANCE.createShape();
+		View view2 = NotationFactory.eINSTANCE.createShape();
+		View view3 = NotationFactory.eINSTANCE.createShape();
+
+		// Create Properties
+		int index = 0;
+		Property property1 = propertyRegistry.getProperties().get(index++);
+		Property property2 = propertyRegistry.getProperties().get(index++);
+		Property property3 = propertyRegistry.getProperties().get(index++);
+
+		// Create layer1: views ={} propInstances={}
+		Layer layer1 = createLayer(layer, Arrays.asList(view1), Arrays.asList(property1));
+
+		// Create layer2: views ={} propInstances={}
+		Layer layer2 = createLayer(layer, Arrays.asList(view2), Arrays.asList(property1, property2));
+
+		// Create layer3: views ={} propInstances={}
+		Layer layer3 = createLayer(layer, Arrays.asList(view3), Arrays.asList(property2, property3));
+
+		// Checks
+		ComputePropertyValueCommand cmd = layer.getComputePropertyValueCommand(view1, property1);
+		assertNotNull("cmd created", cmd);
+		assertSame("cmd s the property instance", layer1.getPropertyInstance(property1), cmd);
+
+		cmd = layer.getComputePropertyValueCommand(view2, property1);
+		assertNotNull("cmd created", cmd);
+		assertSame("cmd s the property instance", layer2.getPropertyInstance(property1), cmd);
+
+		// Check not existing
+		cmd = layer.getComputePropertyValueCommand(view3, property1);
+		assertNull("cmd is null", cmd);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TopLayerOperatorImpl#getViewsComputePropertyValueCommand(java.util.List, org.eclipse.papyrus.layers.stackmodel.layers.Property)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testGetViewsComputePropertyValueCommandListOfViewProperty() throws LayersException {
+		// Create requested objects
+		TopLayerOperator layer = LayersFactory.eINSTANCE.createTopLayerOperator();
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		layer.setApplication(application);
+		PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+
+		// Create Views
+		View view1 = NotationFactory.eINSTANCE.createShape();
+		View view2 = NotationFactory.eINSTANCE.createShape();
+		View view3 = NotationFactory.eINSTANCE.createShape();
+		View view4 = NotationFactory.eINSTANCE.createShape();
+
+		// Create Properties
+		int index = 0;
+		Property property1 = propertyRegistry.getProperties().get(index++);
+		Property property2 = propertyRegistry.getProperties().get(index++);
+		Property property3 = propertyRegistry.getProperties().get(index++);
+		Property property4 = propertyRegistry.getProperties().get(index++);
+
+		// Create layer1: views ={} propInstances={}
+		Layer layer1 = createLayer(layer, Arrays.asList(view1), Arrays.asList(property1));
+
+		// Create layer2: views ={} propInstances={}
+		Layer layer2 = createLayer(layer, Arrays.asList(view2), Arrays.asList(property1, property2));
+
+		// Create layer3: views ={} propInstances={}
+		Layer layer3 = createLayer(layer, Arrays.asList(view3), Arrays.asList(property2, property3));
+
+		// Checks
+		List<ComputePropertyValueCommand> cmds = layer.getViewsComputePropertyValueCommand(Arrays.asList(view1, view2), property1);
+		assertNotNull("cmd created", cmds);
+		assertSame("cmd size is equals to views size", 2, cmds.size());
+		int i = 0;
+		assertSame("cmd is the property instance", layer1.getPropertyInstance(property1), cmds.get(i++));
+		assertSame("cmd is the property instance", layer2.getPropertyInstance(property1), cmds.get(i++));
+
+		// Check wrong property2
+		cmds = layer.getViewsComputePropertyValueCommand(Arrays.asList(view1, view2), property2);
+		assertNotNull("cmd created", cmds);
+		assertSame("cmd size is equals to views size", 2, cmds.size());
+		i = 0;
+		assertSame("cmd is the property instance", null, cmds.get(i++));
+		assertSame("cmd is the property instance", layer2.getPropertyInstance(property2), cmds.get(i++));
+
+		// Check wrong view
+		cmds = layer.getViewsComputePropertyValueCommand(Arrays.asList(view4), property3);
+		assertNull("cmd created", cmds);
+
+		// Check wrong property
+		cmds = layer.getViewsComputePropertyValueCommand(Arrays.asList(view1, view2), property4);
+		assertNull("cmd created", cmds);
+
+		// Check list with null
+		cmds = layer.getViewsComputePropertyValueCommand(Arrays.asList(view1, null, view3), property1);
+		assertNotNull("cmd created", cmds);
+		assertSame("cmd size is equals to views size", 3, cmds.size());
+		i = 0;
+		assertSame("cmd is the property instance", layer1.getPropertyInstance(property1), cmds.get(i++));
+		assertSame("cmd is null", null, cmds.get(i++));
+		assertSame("cmd is the property instance", null, cmds.get(i++));
+
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TopLayerOperatorImpl#getPropertiesComputePropertyValueCommand(org.eclipse.gmf.runtime.notation.View, java.util.List)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testGetPropertiesComputePropertyValueCommandViewListOfProperty() throws LayersException {
+		// Create requested objects
+		TopLayerOperator layer = LayersFactory.eINSTANCE.createTopLayerOperator();
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		layer.setApplication(application);
+		PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+
+		// Create Views
+		View view1 = NotationFactory.eINSTANCE.createShape();
+		View view2 = NotationFactory.eINSTANCE.createShape();
+		View view3 = NotationFactory.eINSTANCE.createShape();
+		View view4 = NotationFactory.eINSTANCE.createShape();
+
+		// Create Properties
+		int index = 0;
+		Property property1 = propertyRegistry.getProperties().get(index++);
+		Property property2 = propertyRegistry.getProperties().get(index++);
+		Property property3 = propertyRegistry.getProperties().get(index++);
+		Property property4 = propertyRegistry.getProperties().get(index++);
+
+		// Create layer1: views ={} propInstances={}
+		Layer layer1 = createLayer(layer, Arrays.asList(view1), Arrays.asList(property1));
+
+		// Create layer2: views ={} propInstances={}
+		Layer layer2 = createLayer(layer, Arrays.asList(view1, view2), Arrays.asList(property1, property2));
+
+		// Create layer3: views ={} propInstances={}
+		Layer layer3 = createLayer(layer, Arrays.asList(view3), Arrays.asList(property3));
+
+		// Check view
+		List<ComputePropertyValueCommand> cmds = layer.getPropertiesComputePropertyValueCommand(view1, Arrays.asList(property1, property2));
+		assertNotNull("cmd created", cmds);
+		assertSame("cmd size is equals to views size", 2, cmds.size());
+		int i = 0;
+		assertSame("cmd is the property instance", layer1.getPropertyInstance(property1), cmds.get(i++));
+		assertSame("cmd is the property instance", layer2.getPropertyInstance(property2), cmds.get(i++));
+
+		// Check wrong property4
+		cmds = layer.getPropertiesComputePropertyValueCommand(view2, Arrays.asList(property1, property4));
+		assertNotNull("cmd created", cmds);
+		assertSame("cmd size is equals to views size", 2, cmds.size());
+		i = 0;
+		assertSame("cmd is the property instance", layer2.getPropertyInstance(property1), cmds.get(i++));
+		assertSame("cmd is the property instance", null, cmds.get(i++));
+
+		// Check wrong view
+		cmds = layer.getPropertiesComputePropertyValueCommand(view4, Arrays.asList(property3));
+		assertNull("cmd created", cmds);
+
+		// Check wrong view
+		cmds = layer.getPropertiesComputePropertyValueCommand(view3, Arrays.asList(property1, property2));
+		assertNull("cmd created", cmds);
+
+		// Check list with null
+		cmds = layer.getPropertiesComputePropertyValueCommand(view1, Arrays.asList(property1, null, property2));
+		assertNotNull("cmd created", cmds);
+		assertSame("cmd size is equals to views size", 3, cmds.size());
+		i = 0;
+		assertSame("cmd is the property instance", layer1.getPropertyInstance(property1), cmds.get(i++));
+		assertSame("cmd is null", null, cmds.get(i++));
+		assertSame("cmd is the property instance", layer2.getPropertyInstance(property2), cmds.get(i++));
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TopLayerOperatorImpl#TopLayerOperatorImpl()}.
+	 */
+	@Test
+	public void testTopLayerOperatorImpl() {
+		TopLayerOperator layer = LayersFactory.eINSTANCE.createTopLayerOperator();
+		assertNotNull("object created", layer);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/TypeRegistryImplTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/TypeRegistryImplTest.java
new file mode 100755
index 0000000..f079815
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/TypeRegistryImplTest.java
@@ -0,0 +1,76 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.impl;
+
+import static org.junit.Assert.assertNotNull;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeRegistry;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class TypeRegistryImplTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeRegistryImpl#TypeRegistryImpl()}.
+	 */
+	@Test
+	public void testTypeRegistryImpl() {
+		TypeRegistry registry = LayersFactory.eINSTANCE.createTypeRegistry();
+		assertNotNull("registry created", registry);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeRegistryImpl#init()}.
+	 */
+	@Test
+	public void testInit() {
+		TypeRegistry registry = LayersFactory.eINSTANCE.createTypeRegistry();
+		assertNotNull("registry created", registry);
+
+		// Try to get initialized types
+		assertNotNull("type found", registry.getTypes().get("boolean"));
+		assertNotNull("type found", registry.getTypes().get("int"));
+		assertNotNull("type found", registry.getTypes().get("String"));
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.TypeRegistryImpl#getTypes()}.
+	 */
+	@Test
+	public void testGetTypes() {
+		TypeRegistry registry = LayersFactory.eINSTANCE.createTypeRegistry();
+		assertNotNull("registry created", registry);
+
+		assertNotNull("map created", registry.getTypes());
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayerOperatorDescriptorRegistryLoaderTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayerOperatorDescriptorRegistryLoaderTest.java
new file mode 100755
index 0000000..7c48cc6
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayerOperatorDescriptorRegistryLoaderTest.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.loaders;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class LayerOperatorDescriptorRegistryLoaderTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for constructor.
+	 */
+	@Test
+	public void testLayerOperatorDescriptorRegistryLoader() {
+
+		LayerOperatorDescriptorRegistryLoader loader = new LayerOperatorDescriptorRegistryLoader();
+
+		assertNotNull("object created", loader);
+	}
+
+	/**
+	 * Test method for
+	 * {@link org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayerOperatorDescriptorRegistryLoader#loadLayerOperatorDescriptorRegistry(org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry, org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry)}
+	 * .
+	 * Check if the loader correctly initialize the LayerOperator and the Operators.
+	 * Registry loading do not use this loader (LayerOperatorDescriptorRegistryLoader) anymore.
+	 * The new loader {@link RegistriesLoader} is now used.
+	 *
+	 * @throws NotFoundException
+	 */
+	@Test
+	@Ignore
+	public void testLoadRegistry() throws NotFoundException {
+
+		// Create a PropertyRegistry
+		PropertyRegistry propertyRegistry = LayersFactory.eINSTANCE.createPropertyRegistry();
+
+		// Create a registry
+		int propertiesCollectionSize = propertyRegistry.getPropertiesCount();
+		LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+		registry.setPropertyCollectionSize(propertiesCollectionSize);
+		// Create the loader
+		LayerOperatorDescriptorRegistryLoader loader = new LayerOperatorDescriptorRegistryLoader();
+
+
+		// Load the registry with the loader
+		loader.loadLayerOperatorDescriptorRegistry(registry, propertyRegistry);
+
+		// check registry content
+		assertNotNull("layerOperator AndLayerOperator loaded", registry.getLayerOperatorDescriptor("OrStackedLayerOperator"));
+		assertNotNull("layerOperator OrLayerOperator loaded", registry.getLayerOperatorDescriptor("AndStackedLayerOperator"));
+
+
+		assertNotNull("Operator BooleanAnd loaded", registry.getPropertyOperator("booleanOr"));
+		assertNotNull("Operator BooleanAnd loaded", registry.getPropertyOperator("booleanAnd"));
+
+		// Check attachment
+		Property isVisibleProp = propertyRegistry.getProperty("isVisible");
+		assertNotNull("property set", isVisibleProp);
+		assertNotNull("Operator attached to AndLayerOperator ", registry.getLayerOperatorDescriptor("OrStackedLayerOperator").getPropertyOperator(isVisibleProp));
+		assertNotNull("Operator attached to  OrLayerOperator ", registry.getLayerOperatorDescriptor("AndStackedLayerOperator").getPropertyOperator(isVisibleProp));
+		// check if the right operator is attached to the right layerOperator
+		assertSame("Operator attached to AndLayerOperator ", registry.getPropertyOperator("booleanOr"), registry.getLayerOperatorDescriptor("OrStackedLayerOperator").getPropertyOperator(isVisibleProp));
+		assertSame("Operator attached to  OrLayerOperator ", registry.getPropertyOperator("booleanAnd"), registry.getLayerOperatorDescriptor("AndStackedLayerOperator").getPropertyOperator(isVisibleProp));
+
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayersConfigModelTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayersConfigModelTest.java
new file mode 100755
index 0000000..f89bba7
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/loaders/LayersConfigModelTest.java
@@ -0,0 +1,114 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.loaders;
+
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createFolder;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createLayerOperatorConfig;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.papyrus.layers.configmodel.layersconfig.Folder;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class LayersConfigModelTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModel#LayersConfigModel()}.
+	 */
+	@Test
+	public void testLayersConfigModel() {
+		// Create object
+		LayersConfigModel model = new LayersConfigModel();
+
+		assertNotNull("object created", model);
+		// Check if resource and root folder are created
+		assertNotNull("resource created", model.getResource());
+		assertNotNull("root folder created", model.getRootFolder());
+
+	}
+
+	/**
+	 * Check if we can initialize an instance externally.
+	 */
+	@Test
+	public void testExternalInitialization() {
+		// Create object
+		LayersConfigModel model = new LayersConfigModel();
+
+		initLayersConfigModel(model);
+
+		// Do checking
+		assertTrue("Some def are set in root", model.getRootFolder().getFolderElements().size() > 0);
+	}
+
+	/**
+	 * Initialize the provided model with some defs for tests.
+	 *
+	 * @param model
+	 */
+	private void initLayersConfigModel(LayersConfigModel model) {
+		// Create model
+		Folder layeropFolder = createFolder(model.getRootFolder(), "layerOpDesc");
+
+		createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorA", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+		createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorB", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+		createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorC", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+		createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorD", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+	}
+
+	/**
+	 * Check if internal initialization work.
+	 */
+	@Test
+	public void testInternalInitialization() {
+		// Create object
+		LayersConfigModel model = LayersConfigModel.getInstance();
+
+		assertNotNull("object created", model);
+		assertTrue("Some def are set in root", model.getRootFolder().getFolderElements().size() > 0);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModel#getResource()}.
+	 */
+	@Test
+	public void testGetResource() {
+		// Create object
+		LayersConfigModel model = new LayersConfigModel();
+
+		assertNotNull("resource created", model.getResource());
+
+		assertTrue("resource populated", model.getResource().getContents().size() > 0);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/loaders/RegistriesLoaderTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/loaders/RegistriesLoaderTest.java
new file mode 100755
index 0000000..2aad55a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/loaders/RegistriesLoaderTest.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.loaders;
+
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createFolder;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createLayerOperatorConfig;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createLayerOperatorsMultipleBinding;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createOperatorBinding;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createPropertyId;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createPropertyOperatorConfig;
+import static org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModelUtils.createTypeConfig;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.papyrus.layers.configmodel.layersconfig.Folder;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.LayerOperatorMultipleBinding;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.OperatorConfig;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.PropertyId;
+import org.eclipse.papyrus.layers.configmodel.layersconfig.TypeConfig;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.eclipse.papyrus.layers.stackmodel.operators.BooleanAndOperator;
+import org.eclipse.papyrus.layers.stackmodel.operators.BooleanOrOperator;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class RegistriesLoaderTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.loaders.RegistriesLoader#RegistriesLoader(org.eclipse.papyrus.layers.stackmodel.layers.loaders.LayersConfigModel)}.
+	 */
+	@Test
+	public void testRegistriesLoader() {
+
+		/**
+		 * Create a model used as input for the loader.
+		 */
+		LayersConfigModel model = new LayersConfigModel();
+		initLayersConfigModel(model);
+		// Create the loader
+		RegistriesLoader loader = new RegistriesLoader(model);
+
+		// Check creation
+		assertNotNull("loader created", loader);
+	}
+
+	/**
+	 * Test method for
+	 * {@link org.eclipse.papyrus.layers.stackmodel.layers.loaders.RegistriesLoader#loadLayerOperatorDescriptorRegistry(org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry, org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry)}
+	 * .
+	 */
+	@Test
+	public void testLoadLayerOperator() {
+
+		/**
+		 * Create a model used as input for the loader.
+		 */
+		LayersConfigModel model = new LayersConfigModel();
+		initLayersConfigModel(model);
+		// Create the loader
+		RegistriesLoader loader = new RegistriesLoader(model);
+		// CreatePropertyRegistry
+		PropertyRegistry propertyRegistry = LayersFactory.eINSTANCE.createPropertyRegistry();
+
+		// Create a LayerOperatorRegistry
+		LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+		registry.setPropertyCollectionSize(propertyRegistry.getPropertiesCount());
+
+		// call load
+		loader.loadLayerOperatorDescriptorRegistry(registry, propertyRegistry);
+
+		// Check result
+		assertTrue("descriptors created", registry.getDescriptors().size() > 0);
+		assertTrue("operators created", registry.getPropertyOperators().size() > 0);
+
+	}
+
+	/**
+	 * Test method for
+	 * {@link org.eclipse.papyrus.layers.stackmodel.layers.loaders.RegistriesLoader#loadLayerOperatorDescriptorRegistry(org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry, org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry)}
+	 * .
+	 *
+	 * @throws NotFoundException
+	 */
+	@Test
+	public void testLoadLayerOperatorDescriptorRegistry() throws NotFoundException {
+
+		/**
+		 * Create a model used as input for the loader.
+		 */
+		LayersConfigModel model = new LayersConfigModel();
+		initLayersConfigModel(model);
+		// Create the loader
+		RegistriesLoader loader = new RegistriesLoader(model);
+		// CreatePropertyRegistry
+		PropertyRegistry propertyRegistry = LayersFactory.eINSTANCE.createPropertyRegistry();
+
+		// Create a LayerOperatorRegistry
+		LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+		registry.setPropertyCollectionSize(propertyRegistry.getPropertiesCount());
+
+		// call load
+		loader.loadLayerOperatorDescriptorRegistry(registry, propertyRegistry);
+
+		// Check result
+		assertTrue("descriptors created", registry.getDescriptors().size() > 0);
+		assertTrue("operators created", registry.getPropertyOperators().size() > 0);
+
+		// Check if a layer as its operaor
+		assertNotNull("descriptor found", registry.getLayerOperatorDescriptor("StackedLayersOperatorA"));
+
+		// check its operators
+		assertTrue("operators set", registry.getLayerOperatorDescriptor("StackedLayersOperatorA").getPropertyOperators().size() > 0);
+		// check its operators
+		Property property = propertyRegistry.getProperty("isVisible");
+		assertNotNull("operator found", registry.getLayerOperatorDescriptor("StackedLayersOperatorA").getPropertyOperator(property));
+
+	}
+
+	/**
+	 * Test method for
+	 * {@link org.eclipse.papyrus.layers.stackmodel.layers.loaders.RegistriesLoader#loadLayerOperatorDescriptorRegistry(org.eclipse.papyrus.layers.stackmodel.layers.LayerOperatorDescriptorRegistry, org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry)}
+	 * .
+	 *
+	 * @throws NotFoundException
+	 */
+	@Test
+	public void testLoadLayerOperatorOnly() throws NotFoundException {
+
+		/**
+		 * Create a model used as input for the loader.
+		 */
+		LayersConfigModel model = new LayersConfigModel();
+		initModelWithLayerOperatorOnly(model);
+		// Create the loader
+		RegistriesLoader loader = new RegistriesLoader(model);
+		// CreatePropertyRegistry
+		PropertyRegistry propertyRegistry = LayersFactory.eINSTANCE.createPropertyRegistry();
+
+		// Create a LayerOperatorRegistry
+		LayerOperatorDescriptorRegistry registry = LayersFactory.eINSTANCE.createLayerOperatorDescriptorRegistry();
+		registry.setPropertyCollectionSize(propertyRegistry.getPropertiesCount());
+
+		// call load
+		loader.loadLayerOperatorDescriptorRegistry(registry, propertyRegistry);
+
+		// Check result
+		assertTrue("descriptors created", registry.getDescriptors().size() > 0);
+		assertNotNull("descriptor found", registry.getLayerOperatorDescriptor("StackedLayersOperatorA"));
+	}
+
+	/**
+	 *
+	 * @param model
+	 */
+	private void initModelWithLayerOperatorOnly(LayersConfigModel model) {
+		// Create model
+		Folder layeropFolder = createFolder(model.getRootFolder(), "layerOpDesc");
+
+		// Create LayerOperators descriptor
+		LayerOperatorConfig layerOpA = createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorA", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+		LayerOperatorConfig layerOpB = createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorB", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+		createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorC", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+		createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorD", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+	}
+
+	/**
+	 * Initialize the provided model with some defs for tests.
+	 *
+	 * @param model
+	 */
+	private void initLayersConfigModel(LayersConfigModel model) {
+		// Create model
+		Folder layeropFolder = createFolder(model.getRootFolder(), "layerOpDesc");
+
+		// Create LayerOperators descriptor
+		LayerOperatorConfig layerOpA = createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorA", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+		LayerOperatorConfig layerOpB = createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorB", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+		createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorC", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+		createLayerOperatorConfig(layeropFolder, "StackedLayersOperatorD", LayersPackage.eINSTANCE.getStackedLayerOperatorDescriptor().getName());
+
+		// Create Operators
+		Folder operatorFolder = createFolder(model.getRootFolder(), "operatorDesc");
+		OperatorConfig operatorBooleanAnd = createPropertyOperatorConfig(operatorFolder, "operatorBooleanAnd", BooleanAndOperator.class.getName());
+		OperatorConfig operatorBooleanOr = createPropertyOperatorConfig(operatorFolder, "operatorBooleanOr", BooleanOrOperator.class.getName());
+
+
+		// Create basic types
+		Folder typeFolder = createFolder(model.getRootFolder(), "types");
+		TypeConfig typeBoolean = createTypeConfig(typeFolder, "boolean");
+		TypeConfig typeInt = createTypeConfig(typeFolder, "int");
+		TypeConfig typeString = createTypeConfig(typeFolder, "String");
+		TypeConfig typeFont = createTypeConfig(typeFolder, "Font");
+		TypeConfig typeColor = createTypeConfig(typeFolder, "Color");
+		TypeConfig typeFill = createTypeConfig(typeFolder, "Fill");
+		TypeConfig typeLine = createTypeConfig(typeFolder, "Line");
+
+		// Create properties
+		Folder propertiesFolder = createFolder(model.getRootFolder(), "properties");
+		PropertyId propertyIsVisible = createPropertyId(propertiesFolder, "isVisible", typeBoolean);
+		PropertyId propertyIsAbstract = createPropertyId(propertiesFolder, "isAbstract", typeBoolean);
+		PropertyId propertyFill = createPropertyId(propertiesFolder, "fill", typeFill);
+		PropertyId propertyLine = createPropertyId(propertiesFolder, "line", typeLine);
+		PropertyId propertyFont = createPropertyId(propertiesFolder, "font", typeFont);
+		PropertyId propertyBgcolor = createPropertyId(propertiesFolder, "bgcolor", typeColor);
+		PropertyId propertyFgcolor = createPropertyId(propertiesFolder, "fgcolor", typeColor);
+
+		// Bind operators to layers
+		Folder opBindingFolder = createFolder(model.getRootFolder(), "opBindings");
+
+		LayerOperatorMultipleBinding layerOpBindingsA = createLayerOperatorsMultipleBinding(opBindingFolder, layerOpA);
+		createOperatorBinding(layerOpBindingsA, propertyIsVisible, operatorBooleanAnd);
+		createOperatorBinding(layerOpBindingsA, propertyIsAbstract, operatorBooleanAnd);
+
+		LayerOperatorMultipleBinding layerOpBindingsB = createLayerOperatorsMultipleBinding(opBindingFolder, layerOpB);
+		createOperatorBinding(layerOpBindingsB, propertyIsVisible, operatorBooleanOr);
+		createOperatorBinding(layerOpBindingsB, propertyIsAbstract, operatorBooleanOr);
+
+	}
+
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/util/LayerFactoryTestUtilsTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/util/LayerFactoryTestUtilsTest.java
new file mode 100755
index 0000000..98d0468
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/util/LayerFactoryTestUtilsTest.java
@@ -0,0 +1,94 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.layers.util;
+
+import static org.junit.Assert.assertNotNull;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Test utility to create tree of layers..
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayerFactoryTestUtilsTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test creation of a tree of layers.
+	 */
+	@Test
+	public void testCreateTreeImpl() {
+		// Create requested objects
+		LayersStackApplication application = LayersFactory.eINSTANCE.createLayersStackApplication();
+		PropertyRegistry propertyRegistry = application.getPropertyRegistry();
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+
+		// Create stack
+		LayersStack stack = application.getLayersStackFor(diagram);
+
+		// Create layers
+		LayersFactoryTestUtils factory = new LayersFactoryTestUtils(application);
+		factory.newTopLayer("top",
+				factory.newLayer("layer1"),
+				factory.newLayer("layer2"),
+				factory.newTopLayer("container1",
+						factory.newLayer("layer3"))
+				);
+
+		TopLayerOperator top = (TopLayerOperator) factory.getLayer("top");
+		TopLayerOperator container1 = (TopLayerOperator) factory.getLayer("top");
+		Layer layer1 = (Layer) factory.getLayer("layer1");
+		Layer layer2 = (Layer) factory.getLayer("layer1");
+		Layer layer3 = (Layer) factory.getLayer("layer1");
+
+
+		// Assert
+		assertNotNull("object created", top);
+
+		assertNotNull("object created", container1);
+
+		assertNotNull("object created", layer1);
+
+		assertNotNull("object created", layer2);
+
+		assertNotNull("object created", layer3);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/util/LayersFactoryForStackTestUtils.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/util/LayersFactoryForStackTestUtils.java
new file mode 100755
index 0000000..5e0aafb
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/util/LayersFactoryForStackTestUtils.java
@@ -0,0 +1,177 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.layers.util;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactoryForStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+
+/**
+ * Utilities to create programmatically a Tree of layers with the {@link LayersFactoryForStack}
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersFactoryForStackTestUtils {
+
+	/**
+	 * Application object.
+	 */
+	protected LayersStackApplication application;
+
+	/**
+	 * Stack object.
+	 */
+	protected LayersStack stack;
+
+	/**
+	 * factory object.
+	 */
+	protected LayersFactoryForStack factory;
+
+	protected Map<String, LayerExpression> createdLayers = new HashMap<String, LayerExpression>();
+
+
+	/**
+	 * Constructor.
+	 *
+	 * @param stack
+	 * @param factory
+	 * @param application
+	 */
+	public LayersFactoryForStackTestUtils(LayersStack stack, LayersFactoryForStack factory, LayersStackApplication application) {
+		this.stack = stack;
+		this.factory = factory;
+		this.application = application;
+	}
+
+	/**
+	 * Constructor.
+	 * Use the global factory for {@link LayersFactoryForStack}
+	 *
+	 * @param stack
+	 * @param application
+	 */
+	public LayersFactoryForStackTestUtils(LayersStack stack, LayersStackApplication application) {
+		this.stack = stack;
+		this.factory = LayersFactoryForStack.eINSTANCE;
+		this.application = application;
+	}
+
+	/**
+	 * @return the createdLayers
+	 */
+	public Map<String, LayerExpression> getCreatedLayers() {
+		return createdLayers;
+	}
+
+	/**
+	 * @return the createdLayers
+	 */
+	public LayerExpression getLayer(String name) {
+		return createdLayers.get(name);
+	}
+
+	/**
+	 * Create a TopLayer
+	 *
+	 * @return
+	 * @throws LayersException
+	 */
+	public TopLayerOperator newTopLayer() throws LayersException {
+		// Create a TopLayer
+		TopLayerOperator layer = factory.createTopLayerOperator(stack, stack, application);
+
+		return layer;
+	}
+
+	/**
+	 * Create a TopLayer
+	 *
+	 * @return
+	 * @throws LayersException
+	 */
+	public TopLayerOperator newTopLayer(String name) throws LayersException {
+		TopLayerOperator layer = newTopLayer();
+		createdLayers.put(name, layer);
+		return layer;
+
+	}
+
+	/**
+	 * Create a TopLayer and add the specified sublayers to it.
+	 * Sublayers are initialized with {@link LayersFactoryForStack#initLayer(LayerExpression, org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, LayersStack, LayersStackApplication)} before being added to their parent.
+	 *
+	 * @return
+	 * @throws LayersException
+	 */
+	public TopLayerOperator newTopLayer(String name, LayerExpression... exprs) throws LayersException {
+
+		TopLayerOperator layer = newTopLayer(exprs);
+		createdLayers.put(name, layer);
+		return layer;
+	}
+
+	/**
+	 * Create a TopLayer and add the specified sublayers to it.
+	 * Sublayers are initialized with {@link LayersFactoryForStack#initLayer(LayerExpression, org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer, LayersStack, LayersStackApplication)} before being added to their parent.
+	 *
+	 * @return
+	 * @throws LayersException
+	 */
+	public TopLayerOperator newTopLayer(LayerExpression... exprs) throws LayersException {
+		// Create a TopLayer
+		TopLayerOperator layer = newTopLayer();
+
+		for (LayerExpression l : exprs) {
+			factory.initLayer(l, layer, stack, application);
+		}
+
+		return layer;
+	}
+
+	/**
+	 * Create an uninitialized Layer
+	 *
+	 * @return
+	 */
+	public LayerExpression newLayer() {
+		// Create a TopLayer
+		LayerExpression layer = LayersFactory.eINSTANCE.createLayer();
+
+		return layer;
+	}
+
+	/**
+	 * Create a an uninitialized Layer and store it in the map of layers under the specified name.
+	 *
+	 * @return
+	 */
+	public LayerExpression newLayer(String name) {
+		LayerExpression layer = newLayer();
+		createdLayers.put(name, layer);
+		return layer;
+
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/util/LayersFactoryTestUtils.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/util/LayersFactoryTestUtils.java
new file mode 100755
index 0000000..0ae4ad1
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/util/LayersFactoryTestUtils.java
@@ -0,0 +1,142 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.layers.util;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+
+/**
+ * Utilities to create Layers for tests
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersFactoryTestUtils {
+
+	/**
+	 * Application object.
+	 */
+	protected LayersStackApplication application;
+
+	protected Map<String, LayerExpression> createdLayers = new HashMap<String, LayerExpression>();
+
+	/**
+	 * Constructor.
+	 *
+	 * @param application
+	 */
+	public LayersFactoryTestUtils(LayersStackApplication application) {
+		this.application = application;
+	}
+
+	/**
+	 * @return the createdLayers
+	 */
+	public Map<String, LayerExpression> getCreatedLayers() {
+		return createdLayers;
+	}
+
+	/**
+	 * @return the createdLayers
+	 */
+	public LayerExpression getLayer(String name) {
+		return createdLayers.get(name);
+	}
+
+	/**
+	 * Create a TopLayer
+	 *
+	 * @return
+	 */
+	public TopLayerOperator newTopLayer() {
+		// Create a TopLayer
+		TopLayerOperator layer = LayersFactory.eINSTANCE.createTopLayerOperator();
+		layer.setApplication(application);
+
+		return layer;
+	}
+
+	/**
+	 * Create a TopLayer
+	 *
+	 * @return
+	 */
+	public TopLayerOperator newTopLayer(String name) {
+		TopLayerOperator layer = newTopLayer();
+		createdLayers.put(name, layer);
+		return layer;
+
+	}
+
+	/**
+	 * Create a TopLayer
+	 *
+	 * @return
+	 */
+	public TopLayerOperator newTopLayer(String name, LayerExpression... exprs) {
+
+		TopLayerOperator layer = newTopLayer(exprs);
+		createdLayers.put(name, layer);
+		return layer;
+	}
+
+	/**
+	 * Create a TopLayer
+	 *
+	 * @return
+	 */
+	public TopLayerOperator newTopLayer(LayerExpression... exprs) {
+		// Create a TopLayer
+		TopLayerOperator layer = newTopLayer();
+
+		for (LayerExpression l : exprs) {
+			layer.getLayers().add(l);
+		}
+
+		return layer;
+	}
+
+	/**
+	 * Create a Layer
+	 *
+	 * @return
+	 */
+	public LayerExpression newLayer() {
+		// Create a TopLayer
+		LayerExpression layer = LayersFactory.eINSTANCE.createLayer();
+		layer.setApplication(application);
+
+		return layer;
+	}
+
+	/**
+	 * Create a TopLayer
+	 *
+	 * @return
+	 */
+	public LayerExpression newLayer(String name) {
+		LayerExpression layer = newLayer();
+		createdLayers.put(name, layer);
+		return layer;
+
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/util/PropertyIndexedListTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/util/PropertyIndexedListTest.java
new file mode 100755
index 0000000..b4f18a9
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/util/PropertyIndexedListTest.java
@@ -0,0 +1,135 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.layers.util;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.papyrus.layers.stackmodel.BadStateException;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersPackage;
+import org.eclipse.papyrus.layers.stackmodel.layers.NullInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.papyrus.layers.stackmodel.layers.PropertyRegistry;
+import org.eclipse.papyrus.layers.stackmodel.layers.TypeInstance;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class PropertyIndexedListTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.util.PropertyIndexedList#PropertyIndexedList(java.util.Map, java.lang.Class, org.eclipse.emf.ecore.InternalEObject, int, int)}.
+	 */
+	@Test
+	public void testPropertyIndexedList() {
+
+		// Create an object which already have a map
+		// Here, we use Layer
+		Layer layer = LayersFactory.eINSTANCE.createLayer();
+		PropertyRegistry registry = LayersFactory.eINSTANCE.createPropertyRegistry();
+		assertTrue("registry has proprties", registry.getProperties().size() > 0);
+
+		PropertyIndexedList<TypeInstance> list = new PropertyIndexedList<TypeInstance>(layer.getPropertyValueMap(), TypeInstance.class, (InternalEObject) layer, 0, LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUE_MAP, NullInstance.NULLINSTANCE);
+		list.setPropertyList(registry.getProperties());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.util.PropertyIndexedList#setPropertyList(java.util.List)}.
+	 */
+	@Test
+	public void testSetPropertyList() {
+		// Create an object which already have a map
+		// Here, we use Layer
+		Layer layer = LayersFactory.eINSTANCE.createLayer();
+		PropertyRegistry registry = LayersFactory.eINSTANCE.createPropertyRegistry();
+		assertTrue("registry has proprties", registry.getProperties().size() > 0);
+
+		PropertyIndexedList<TypeInstance> list = new PropertyIndexedList<TypeInstance>(layer.getPropertyValueMap(), TypeInstance.class, (InternalEObject) layer, 0, LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUE_MAP, NullInstance.NULLINSTANCE);
+		list.setPropertyList(registry.getProperties());
+
+		assertEquals("list size is correct", registry.getProperties().size(), list.size());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.util.PropertyIndexedList#get(org.eclipse.papyrus.layers.stackmodel.layers.Property)}.
+	 *
+	 * @throws BadStateException
+	 */
+	@Test
+	public void testGetProperty() throws BadStateException {
+		// Create an object which already have a map
+		// Here, we use Layer
+		Layer layer = LayersFactory.eINSTANCE.createLayer();
+		PropertyRegistry registry = LayersFactory.eINSTANCE.createPropertyRegistry();
+		assertTrue("registry has proprties", registry.getProperties().size() > 0);
+
+		PropertyIndexedList<TypeInstance> list = new PropertyIndexedList<TypeInstance>(layer.getPropertyValueMap(), TypeInstance.class, (InternalEObject) layer, 0, LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUE_MAP, NullInstance.NULLINSTANCE);
+		list.setPropertyList(registry.getProperties());
+
+		// Add an instnace in the map
+		Property property0 = registry.getProperties().get(0);
+		TypeInstance instance0 = property0.createInstance();
+		layer.getPropertyValueMap().put(property0.getName(), instance0);
+
+		// checks
+		assertEquals("list size is correct", registry.getProperties().size(), list.size());
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.util.PropertyIndexedList#set(org.eclipse.papyrus.layers.stackmodel.layers.Property, java.lang.Object)}.
+	 *
+	 * @throws BadStateException
+	 */
+	@Test
+	public void testSetPropertyT() throws BadStateException {
+		// Create an object which already have a map
+		// Here, we use Layer
+		Layer layer = LayersFactory.eINSTANCE.createLayer();
+		PropertyRegistry registry = LayersFactory.eINSTANCE.createPropertyRegistry();
+		assertTrue("registry has proprties", registry.getProperties().size() > 0);
+
+		PropertyIndexedList<TypeInstance> list = new PropertyIndexedList<TypeInstance>(layer.getPropertyValueMap(), TypeInstance.class, (InternalEObject) layer, 0, LayersPackage.ABSTRACT_LAYER__PROPERTY_VALUE_MAP, NullInstance.NULLINSTANCE);
+		list.setPropertyList(registry.getProperties());
+
+		// Add an instnace in the map
+		Property property0 = registry.getProperties().get(0);
+		TypeInstance instance0 = property0.createInstance();
+		layer.getPropertyValueMap().put(property0.getName(), instance0);
+
+		// Check that the instance is in the list
+		assertSame("value is in the list at right position", instance0, list.get(0));
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewChangedEventNotifierFactoryTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewChangedEventNotifierFactoryTest.java
new file mode 100755
index 0000000..0df1c21
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewChangedEventNotifierFactoryTest.java
@@ -0,0 +1,92 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.layers.stackmodel.util.NotationAndUmlModelsFactory;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author dumoulin
+ *
+ */
+public class DiagramViewChangedEventNotifierFactoryTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#AdapterFactoryImpl()}.
+	 */
+	@Test
+	public void testDiagramViewChangedEventNotifierFactory() {
+
+		DiagramViewChangedEventNotifierFactory notifierFactory = new DiagramViewChangedEventNotifierFactory();
+		NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+		Diagram diagram1 = modelsFactory.newDiagram();
+
+		// Action
+		DiagramViewChangedEventNotifier eventNotifier = (DiagramViewChangedEventNotifier) notifierFactory.adapt(diagram1, DiagramViewChangedEventNotifier.class);
+
+		// Assert
+		assertNotNull("object created", eventNotifier);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#AdapterFactoryImpl()}.
+	 */
+	@Test
+	public void testReturnSameInstanceImpl() {
+
+		DiagramViewChangedEventNotifierFactory notifierFactory = new DiagramViewChangedEventNotifierFactory();
+		NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+		Diagram diagram1 = modelsFactory.newDiagram();
+		Diagram diagram2 = modelsFactory.newDiagram();
+
+		// Action
+		DiagramViewChangedEventNotifier eventNotifier11 = (DiagramViewChangedEventNotifier) notifierFactory.adapt(diagram1, DiagramViewChangedEventNotifier.class);
+		DiagramViewChangedEventNotifier eventNotifier12 = (DiagramViewChangedEventNotifier) notifierFactory.adapt(diagram1, DiagramViewChangedEventNotifier.class);
+
+		DiagramViewChangedEventNotifier eventNotifier21 = (DiagramViewChangedEventNotifier) notifierFactory.adapt(diagram2, DiagramViewChangedEventNotifier.class);
+		DiagramViewChangedEventNotifier eventNotifier22 = (DiagramViewChangedEventNotifier) notifierFactory.adapt(diagram2, DiagramViewChangedEventNotifier.class);
+
+		// Assert
+		assertNotNull("object created", eventNotifier11);
+		assertNotNull("object created", eventNotifier21);
+
+		assertNotEquals("instance are different between diagram", eventNotifier11, eventNotifier21);
+
+		assertEquals("return the same instance", eventNotifier11, eventNotifier12);
+		assertEquals("return the same instance", eventNotifier21, eventNotifier22);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewChangedEventNotifierTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewChangedEventNotifierTest.java
new file mode 100755
index 0000000..d9c1e47
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/DiagramViewChangedEventNotifierTest.java
@@ -0,0 +1,150 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.Shape;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.layers.stackmodel.util.NotationAndUmlModelsFactory;
+import org.eclipse.papyrus.layers.stackmodel.util.TriggeredEventTraces;
+import org.eclipse.uml2.uml.Class;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class DiagramViewChangedEventNotifierTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewChangedEventNotifier#DiagramViewChangedEventNotifier()}.
+	 */
+	@Test
+	public void testDiagramViewChangedEventNotifier() {
+		NotationAndUmlModelsFactory factory = new NotationAndUmlModelsFactory();
+
+		Diagram diagram1 = factory.newDiagram();
+
+		DiagramViewChangedEventNotifier notifier = new DiagramViewChangedEventNotifier();
+
+		Class c1 = factory.newClass(diagram1, "C1");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewChangedEventNotifier#addEventListener(org.eclipse.papyrus.layers.stackmodel.notifier.IDiagramViewEventListener)}.
+	 */
+	@Test
+	@Ignore
+	public void testAddEventListener() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewChangedEventNotifier#removeEventListener(org.eclipse.papyrus.layers.stackmodel.notifier.IDiagramViewEventListener)}.
+	 */
+	@Test
+	@Ignore
+	public void testRemoveEventListener() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewChangedEventNotifier#fireDiagramViewAddedEvent(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testFireDiagramViewAddedEvent() {
+		DiagramViewChangedEventNotifierFactory notifierFactory = new DiagramViewChangedEventNotifierFactory();
+		NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+		Diagram diagram1 = modelsFactory.newDiagram();
+		Class c1 = modelsFactory.newClass(diagram1, "C1");
+		// Shape shape1 = (Shape)modelsFactory.lookupViewFor(diagram1, c1);
+
+		DiagramViewChangedEventNotifier eventNotifier = (DiagramViewChangedEventNotifier) notifierFactory.adapt(diagram1, DiagramViewChangedEventNotifier.class);
+
+		TraceDiagramViewChangedEventListener listener = new TraceDiagramViewChangedEventListener();
+		eventNotifier.addEventListener(listener);
+		TriggeredEventTraces<Notification> traces = listener.traces;
+
+		// Action
+		traces.clear();
+		// Modify diagram
+		Class c2 = modelsFactory.newClass(diagram1, "C2");
+		Shape shape2 = (Shape) modelsFactory.lookupViewFor(diagram1, c2);
+
+		// Assert
+		assertTrue("event recorded", traces.contains("diagramViewAdded"));
+		assertEquals("one event recorded", 1, traces.traces.size());
+
+		TriggeredEventTraces<Notification>.TriggeredEvent event = traces.traces.get(0);
+
+		assertEquals("right element in event", shape2, event.notifier.getNewValue());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewChangedEventNotifier#fireDiagramViewRemovedEvent(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testFireDiagramViewRemovedEvent() {
+		DiagramViewChangedEventNotifierFactory notifierFactory = new DiagramViewChangedEventNotifierFactory();
+		NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+		Diagram diagram1 = modelsFactory.newDiagram();
+		Class c1 = modelsFactory.newClass(diagram1, "C1");
+		Shape shape1 = (Shape) modelsFactory.lookupViewFor(diagram1, c1);
+		Class c2 = modelsFactory.newClass(diagram1, "C2");
+		Shape shape2 = (Shape) modelsFactory.lookupViewFor(diagram1, c2);
+
+		DiagramViewChangedEventNotifier eventNotifier = (DiagramViewChangedEventNotifier) notifierFactory.adapt(diagram1, DiagramViewChangedEventNotifier.class);
+
+		TraceDiagramViewChangedEventListener listener = new TraceDiagramViewChangedEventListener();
+		eventNotifier.addEventListener(listener);
+		TriggeredEventTraces<Notification> traces = listener.traces;
+
+		// Action
+		traces.clear();
+		// Modify diagram
+		View removedShape = modelsFactory.remove(diagram1, c2);
+
+		// Assert
+		assertTrue("event recorded", traces.contains("diagramViewRemoved"));
+		assertEquals("one event recorded", 1, traces.traces.size());
+
+		TriggeredEventTraces<Notification>.TriggeredEvent event = traces.traces.get(0);
+
+		assertEquals("right element in event", shape2, event.notifier.getOldValue());
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/LayersTreeEventNotifierFactoryTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/LayersTreeEventNotifierFactoryTest.java
new file mode 100755
index 0000000..d0e0d23
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/LayersTreeEventNotifierFactoryTest.java
@@ -0,0 +1,92 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Test if the factory return the same Notifier for a given {@link LayersStack}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersTreeEventNotifierFactoryTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#AdapterFactoryImpl()}.
+	 */
+	@Test
+	public void testAdapterFactoryImpl() {
+
+		LayersStack stack = LayersFactory.eINSTANCE.createLayersStack();
+		LayersTreeEventNotifierFactory factory = new LayersTreeEventNotifierFactory();
+
+		// Action
+		LayersTreeEventNotifier eventNotifier = (LayersTreeEventNotifier) factory.adapt(stack, LayersTreeEventNotifier.class);
+
+		// Assert
+		assertNotNull("object created", eventNotifier);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#AdapterFactoryImpl()}.
+	 */
+	@Test
+	public void testReturnSameInstanceImpl() {
+
+		LayersStack stack1 = LayersFactory.eINSTANCE.createLayersStack();
+		LayersStack stack2 = LayersFactory.eINSTANCE.createLayersStack();
+		LayersTreeEventNotifierFactory factory = new LayersTreeEventNotifierFactory();
+
+		// Action
+		LayersTreeEventNotifier eventNotifier11 = (LayersTreeEventNotifier) factory.adapt(stack1, LayersTreeEventNotifier.class);
+		LayersTreeEventNotifier eventNotifier12 = (LayersTreeEventNotifier) factory.adapt(stack1, LayersTreeEventNotifier.class);
+
+		LayersTreeEventNotifier eventNotifier21 = (LayersTreeEventNotifier) factory.adapt(stack2, LayersTreeEventNotifier.class);
+		LayersTreeEventNotifier eventNotifier22 = (LayersTreeEventNotifier) factory.adapt(stack2, LayersTreeEventNotifier.class);
+
+		// Assert
+		assertNotNull("object created", eventNotifier11);
+		assertNotNull("object created", eventNotifier21);
+
+		assertNotEquals("instance are different between stack", eventNotifier11, eventNotifier21);
+
+		assertEquals("return the same instance", eventNotifier11, eventNotifier12);
+		assertEquals("return the same instance", eventNotifier21, eventNotifier22);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/LayersTreeEventNotifierTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/LayersTreeEventNotifierTest.java
new file mode 100755
index 0000000..779ffb0
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/LayersTreeEventNotifierTest.java
@@ -0,0 +1,356 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.util.TriggeredEventTraces;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class LayersTreeEventNotifierTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersTreeEventNotifier#LayersTreeEventNotifier(org.eclipse.papyrus.layers.stackmodel.layers.LayersStack)}.
+	 */
+	@Test
+	public void testLayersTreeEventNotifier() {
+
+		// Create a notifier
+		LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+		LayersTreeEventNotifier notifier = LayersTreeEventNotifierFactory.instance.adapt(layersStack);
+
+		// // Add a trace listener
+		// ILayersTreeEventListener listener = new TraceLayersModelEventListener();
+		// notifier.addLayersModelEventListener(listener);
+
+		// Check creation
+		assertNotNull("notifier created", notifier);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersTreeEventNotifier#activate()}.
+	 */
+	@Test
+	@Ignore
+	public void testActivate() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersTreeEventNotifier#deactivate()}.
+	 */
+	@Test
+	@Ignore
+	public void testDeactivate() {
+		fail("Not yet implemented");
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersTreeEventNotifier#dispose()}.
+	 */
+	@Test
+	public void testDispose() {
+		// Create a notifier
+		LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+		LayersTreeEventNotifier notifier = LayersTreeEventNotifierFactory.instance.adapt(layersStack);
+
+		// Add a trace listener
+		TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+		notifier.addLayersModelEventListener(listener);
+
+		TriggeredEventTraces<Notification> traces = listener.traces;
+		// Add a layer
+		LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+		layersStack.setLayers(layerOp1);
+
+		// dispose notifier
+		assertFalse("notifier disposed", notifier.isDisposed());
+		notifier.dispose();
+		assertTrue("notifier disposed", notifier.isDisposed());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersTreeEventNotifier#addLayersModelEventListener(org.eclipse.papyrus.layers.runtime.ILayersTreeEventListener)}.
+	 */
+	@Test
+	public void testAddLayersModelEventListener() {
+		// Create a notifier
+		LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+		LayersTreeEventNotifier notifier = LayersTreeEventNotifierFactory.instance.adapt(layersStack);
+
+		// Add a trace listener
+		ILayersTreeEventListener listener = new TraceLayersModelEventListener();
+		notifier.addLayersModelEventListener(listener);
+
+		// Check creation
+		assertNotNull("notifier created", notifier);
+		assertTrue("listener added to internal list", notifier.listeners.contains(listener));
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersTreeEventNotifier#removeLayersModelEventListener(org.eclipse.papyrus.layers.runtime.ILayersTreeEventListener)}.
+	 */
+	@Test
+	public void testRemoveLayersModelEventListener() {
+		// Create a notifier
+		LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+		LayersTreeEventNotifier notifier = LayersTreeEventNotifierFactory.instance.adapt(layersStack);
+
+		// Add a trace listener
+		ILayersTreeEventListener listener = new TraceLayersModelEventListener();
+		notifier.addLayersModelEventListener(listener);
+		assertTrue("listener added to internal list", notifier.listeners.contains(listener));
+
+		// Remove the listener
+		notifier.removeLayersModelEventListener(listener);
+		assertFalse("listener removed from internal list", notifier.listeners.contains(listener));
+
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersTreeEventNotifier#fireLayerAdded(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testFireLayerAdded() {
+		// Create a notifier
+		LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+		LayersTreeEventNotifier notifier = LayersTreeEventNotifierFactory.instance.adapt(layersStack);
+
+		// Add a trace listener
+		TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+		notifier.addLayersModelEventListener(listener);
+
+		TriggeredEventTraces<Notification> traces = listener.traces;
+		// Add a layer
+		LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+		System.err.println("setLayers(layerOp1)");
+		layersStack.setLayers(layerOp1);
+		// Check events
+		assertTrue("event recorded", traces.contains("layerSet"));
+		assertEquals("one event recorded", 1, traces.traces.size());
+		assertEquals("one event recorded", "layerSet", traces.traces.get(0).name);
+
+		// Add a layer
+		Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+		System.err.println("layerOp1.getLayers().add(layer1)");
+		layerOp1.getLayers().add(layer1);
+
+		// Check events
+		assertTrue("event recorded", traces.contains("layerAdded"));
+		assertEquals("one event recorded", 2, traces.traces.size());
+		assertEquals("one event recorded", "layerAdded", traces.traces.get(1).name);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersTreeEventNotifier#fireLayerRemoved(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testFireLayerRemoved() {
+		// Create a notifier
+		LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+		LayersTreeEventNotifier notifier = LayersTreeEventNotifierFactory.instance.adapt(layersStack);
+
+		// Add a trace listener
+		TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+		notifier.addLayersModelEventListener(listener);
+
+		TriggeredEventTraces<Notification> traces = listener.traces;
+		// Add a layer
+		LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+		layersStack.setLayers(layerOp1);
+
+		// Add a layer
+		Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+		layerOp1.getLayers().add(layer1);
+
+		// Remove layer
+		traces.clear();
+		layerOp1.getLayers().remove(layer1);
+
+		// Check events
+		assertTrue("event recorded", traces.contains("layerRemoved"));
+		assertEquals("one event recorded", 1, traces.traces.size());
+		assertEquals("one event recorded", "layerRemoved", traces.traces.get(0).name);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersTreeEventNotifier#fireLayerRemoved(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testFireLayerSetForRootLayer() {
+		// Create a notifier
+		LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+		LayersTreeEventNotifier notifier = LayersTreeEventNotifierFactory.instance.adapt(layersStack);
+
+		// Add a trace listener
+		TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+		notifier.addLayersModelEventListener(listener);
+
+		TriggeredEventTraces<Notification> traces = listener.traces;
+		// Add a layer as root
+		LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+		layersStack.setLayers(layerOp1);
+
+		// Add a layer
+		Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+		layerOp1.getLayers().add(layer1);
+
+		// Remove root layer
+		traces.clear();
+		layersStack.setLayers(null);
+
+		// Check events
+		assertTrue("event recorded", traces.contains("layerSet"));
+		assertEquals("one event recorded", 1, traces.traces.size());
+		assertEquals("one event recorded", "layerSet", traces.traces.get(0).name);
+		// Note that no event is sent for the nested layer
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersTreeEventNotifier#fireLayerRemoved(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testFireEventWhenRootLayerIsReplaced() {
+		// Create a notifier
+		LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+		LayersTreeEventNotifier notifier = LayersTreeEventNotifierFactory.instance.adapt(layersStack);
+
+		// Add a trace listener
+		TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+		notifier.addLayersModelEventListener(listener);
+
+		TriggeredEventTraces<Notification> traces = listener.traces;
+		// Add a layer as root
+		LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+		layersStack.setLayers(layerOp1);
+
+		// Add a layer
+		Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+		layerOp1.getLayers().add(layer1);
+
+		// replace root layer
+		traces.clear();
+		Layer layer2 = LayersFactory.eINSTANCE.createLayer();
+		layersStack.setLayers(layer2);
+
+		// Check events
+		assertTrue("event recorded", traces.contains("layerSet"));
+		assertEquals("one event recorded", 1, traces.traces.size());
+		assertEquals("one event recorded", "layerSet", traces.traces.get(0).name);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersTreeEventNotifier#fireLayerRemoved(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testFireEventWhenLayerIsReplaced() {
+		// Create a notifier
+		LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+		LayersTreeEventNotifier notifier = LayersTreeEventNotifierFactory.instance.adapt(layersStack);
+
+		// Add a trace listener
+		TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+		notifier.addLayersModelEventListener(listener);
+
+		TriggeredEventTraces<Notification> traces = listener.traces;
+		// Add a layer as root
+		LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+		layersStack.setLayers(layerOp1);
+
+		// Add a layer
+		Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+		layerOp1.getLayers().add(layer1);
+
+		// replace root layer
+		traces.clear();
+		Layer layer2 = LayersFactory.eINSTANCE.createLayer();
+		layerOp1.getLayers().set(0, layer2);
+
+		// Check events
+		assertTrue("event recorded", traces.contains("layerSet"));
+		assertEquals("one event recorded", 1, traces.traces.size());
+		assertEquals("one event recorded", "layerSet", traces.traces.get(0).name);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.runtime.LayersTreeEventNotifier#fireLayerMoved(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testFireLayerMoved() {
+		// Create a notifier
+		LayersStack layersStack = LayersFactory.eINSTANCE.createLayersStack();
+		LayersTreeEventNotifier notifier = LayersTreeEventNotifierFactory.instance.adapt(layersStack);
+
+		// Add a trace listener
+		TraceLayersModelEventListener listener = new TraceLayersModelEventListener();
+		notifier.addLayersModelEventListener(listener);
+
+		TriggeredEventTraces<Notification> traces = listener.traces;
+		// Add a layer
+		LayerOperator layerOp1 = LayersFactory.eINSTANCE.createStackedLayerOperator();
+		layersStack.setLayers(layerOp1);
+
+		// Add a layer
+		Layer layer1 = LayersFactory.eINSTANCE.createLayer();
+		layerOp1.getLayers().add(layer1);
+
+		// Add a layer
+		Layer layer2 = LayersFactory.eINSTANCE.createLayer();
+		layerOp1.getLayers().add(layer2);
+
+		// move layer
+		// EMF list are EList, which contains a move operation
+		traces.clear();
+		EList<LayerExpression> list = layerOp1.getLayers();
+		list.move(0, layer2);
+
+		// Check events
+		assertTrue("event recorded", traces.contains("layerMoved"));
+		assertEquals("one event recorded", 1, traces.traces.size());
+		assertEquals("one event recorded", "layerMoved", traces.traces.get(0).name);
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/TraceDiagramViewChangedEventListener.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/TraceDiagramViewChangedEventListener.java
new file mode 100755
index 0000000..630eb27
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/TraceDiagramViewChangedEventListener.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.layers.stackmodel.util.TriggeredEventTraces;
+
+
+/**
+ * A listener on {@link LayersModelEventNotifier}. This listener trace events from
+ * the notifier.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class TraceDiagramViewChangedEventListener implements IDiagramViewEventListener {
+
+	public TriggeredEventTraces<Notification> traces = new TriggeredEventTraces<Notification>();
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#layerAdded(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void diagramViewAdded(Notification notification) {
+		traces.addTrace("diagramViewAdded", notification);
+
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#layerAdded(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void diagramViewRemoved(Notification notification) {
+		traces.addTrace("diagramViewRemoved", notification);
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#layerRemoved(org.eclipse.emf.common.notify.Notification)
+	 *      This does not exist actually.
+	 * @param notification
+	 */
+	public void diagramViewMoved(Notification notification) {
+		traces.addTrace("diagramViewMoved", notification);
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/TraceLayersModelEventListener.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/TraceLayersModelEventListener.java
new file mode 100755
index 0000000..48bdffb
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/TraceLayersModelEventListener.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.layers.stackmodel.util.TriggeredEventTraces;
+
+
+/**
+ * A listener on {@link LayersModelEventNotifier}. This listener trace events from
+ * the notifier.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class TraceLayersModelEventListener implements ILayersTreeEventListener {
+
+	public TriggeredEventTraces<Notification> traces = new TriggeredEventTraces<Notification>();
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#layerAdded(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void layerSet(Notification notification) {
+		traces.addTrace("layerSet", notification);
+
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#layerAdded(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void layerAdded(Notification notification) {
+		traces.addTrace("layerAdded", notification);
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#layerRemoved(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void layerRemoved(Notification notification) {
+		traces.addTrace("layerRemoved", notification);
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#layerMoved(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void layerMoved(Notification notification) {
+		traces.addTrace("layerMoved", notification);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/TraceUmlNamedElementChangedEventListener.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/TraceUmlNamedElementChangedEventListener.java
new file mode 100755
index 0000000..ab90696
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/TraceUmlNamedElementChangedEventListener.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.layers.stackmodel.util.TriggeredEventTraces;
+
+
+/**
+ * A listener on {@link LayersModelEventNotifier}. This listener trace events from
+ * the notifier.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class TraceUmlNamedElementChangedEventListener implements IUmlNamedElementChangedEventListener {
+
+	public TriggeredEventTraces<Notification> traces = new TriggeredEventTraces<Notification>();
+
+	/**
+	 * @see org.eclipse.papyrus.layers.runtime.ILayersModelEventListener#layerAdded(org.eclipse.emf.common.notify.Notification)
+	 *
+	 * @param notification
+	 */
+	@Override
+	public void valueChanged(Notification notification) {
+		traces.addTrace("valueChanged", notification);
+
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/UmlNamedElementChangedEventNotifierFactoryTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/UmlNamedElementChangedEventNotifierFactoryTest.java
new file mode 100755
index 0000000..e2b0dea
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/UmlNamedElementChangedEventNotifierFactoryTest.java
@@ -0,0 +1,95 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.layers.stackmodel.util.NotationAndUmlModelsFactory;
+import org.eclipse.uml2.uml.Class;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class UmlNamedElementChangedEventNotifierFactoryTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#AdapterFactoryImpl()}.
+	 */
+	@Test
+	public void testUmlNamedElementChangedEventNotifierFactory() {
+
+		UmlNamedElementChangedEventNotifierFactory notifierFactory = new UmlNamedElementChangedEventNotifierFactory();
+		NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+		Diagram diagram1 = modelsFactory.newDiagram();
+		Class c1 = modelsFactory.newClass(diagram1, "C1");
+
+		// Action
+		UmlNamedElementChangedEventNotifier eventNotifier = (UmlNamedElementChangedEventNotifier) notifierFactory.adapt(c1, UmlNamedElementChangedEventNotifier.class);
+
+		// Assert
+		assertNotNull("object created", eventNotifier);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.emf.common.notify.impl.AdapterFactoryImpl#AdapterFactoryImpl()}.
+	 */
+	@Test
+	public void testReturnSameInstanceImpl() {
+
+		UmlNamedElementChangedEventNotifierFactory notifierFactory = new UmlNamedElementChangedEventNotifierFactory();
+		NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+		Diagram diagram1 = modelsFactory.newDiagram();
+		Class c1 = modelsFactory.newClass(diagram1, "C1");
+		Class c2 = modelsFactory.newClass(diagram1, "C2");
+
+		// Action
+		UmlNamedElementChangedEventNotifier eventNotifier11 = (UmlNamedElementChangedEventNotifier) notifierFactory.adapt(c1, UmlNamedElementChangedEventNotifier.class);
+		UmlNamedElementChangedEventNotifier eventNotifier12 = (UmlNamedElementChangedEventNotifier) notifierFactory.adapt(c1, UmlNamedElementChangedEventNotifier.class);
+
+		UmlNamedElementChangedEventNotifier eventNotifier21 = (UmlNamedElementChangedEventNotifier) notifierFactory.adapt(c2, UmlNamedElementChangedEventNotifier.class);
+		UmlNamedElementChangedEventNotifier eventNotifier22 = (UmlNamedElementChangedEventNotifier) notifierFactory.adapt(c2, UmlNamedElementChangedEventNotifier.class);
+
+		// Assert
+		assertNotNull("object created", eventNotifier11);
+		assertNotNull("object created", eventNotifier21);
+
+		assertNotEquals("instance are different between diagram", eventNotifier11, eventNotifier21);
+
+		assertEquals("return the same instance", eventNotifier11, eventNotifier12);
+		assertEquals("return the same instance", eventNotifier21, eventNotifier22);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/UmlNamedElementChangedEventNotifierTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/UmlNamedElementChangedEventNotifierTest.java
new file mode 100755
index 0000000..6011ac3
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/notifier/UmlNamedElementChangedEventNotifierTest.java
@@ -0,0 +1,201 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.notifier;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.layers.stackmodel.util.NotationAndUmlModelsFactory;
+import org.eclipse.papyrus.layers.stackmodel.util.TriggeredEventTraces;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Property;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class UmlNamedElementChangedEventNotifierTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.UmlNamedElementChangedEventNotifier#UmlNamedElementChangedEventNotifier()}.
+	 */
+	@Test
+	public void testUmlNamedElementChangedEventNotifier() {
+		NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+		Diagram diagram1 = modelsFactory.newDiagram();
+		Class c1 = modelsFactory.newClass(diagram1, "C1");
+
+		UmlNamedElementChangedEventNotifierFactory notifierFactory = new UmlNamedElementChangedEventNotifierFactory();
+		UmlNamedElementChangedEventNotifier eventNotifier = (UmlNamedElementChangedEventNotifier) notifierFactory.adapt(c1, UmlNamedElementChangedEventNotifier.class);
+
+		// Assert
+		assertNotNull("notifier created", eventNotifier);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.UmlNamedElementChangedEventNotifier#addEventListener(org.eclipse.papyrus.layers.stackmodel.notifier.IDiagramViewEventListener)}.
+	 */
+	@Test
+	public void testAddEventListener() {
+		NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+		Diagram diagram1 = modelsFactory.newDiagram();
+		Class c1 = modelsFactory.newClass(diagram1, "C1");
+
+		UmlNamedElementChangedEventNotifierFactory notifierFactory = new UmlNamedElementChangedEventNotifierFactory();
+		UmlNamedElementChangedEventNotifier eventNotifier = (UmlNamedElementChangedEventNotifier) notifierFactory.adapt(c1, UmlNamedElementChangedEventNotifier.class);
+
+		TraceUmlNamedElementChangedEventListener listener = new TraceUmlNamedElementChangedEventListener();
+		eventNotifier.addEventListener(listener);
+
+		// Assert
+		assertTrue("listener added", eventNotifier.listeners.contains(listener));
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.UmlNamedElementChangedEventNotifier#removeEventListener(org.eclipse.papyrus.layers.stackmodel.notifier.IDiagramViewEventListener)}.
+	 */
+	@Test
+	public void testRemoveEventListener() {
+		NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+		Diagram diagram1 = modelsFactory.newDiagram();
+		Class c1 = modelsFactory.newClass(diagram1, "C1");
+
+		UmlNamedElementChangedEventNotifierFactory notifierFactory = new UmlNamedElementChangedEventNotifierFactory();
+		UmlNamedElementChangedEventNotifier eventNotifier = (UmlNamedElementChangedEventNotifier) notifierFactory.adapt(c1, UmlNamedElementChangedEventNotifier.class);
+
+		TraceUmlNamedElementChangedEventListener listener = new TraceUmlNamedElementChangedEventListener();
+		eventNotifier.addEventListener(listener);
+		eventNotifier.removeEventListener(listener);
+
+		// Assert
+		assertFalse("listener removed", eventNotifier.listeners.contains(listener));
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.UmlNamedElementChangedEventNotifier#fireDiagramViewAddedEvent(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testNameChangedEvent() {
+		NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+		Diagram diagram1 = modelsFactory.newDiagram();
+		Class c1 = modelsFactory.newClass(diagram1, "C1");
+
+		UmlNamedElementChangedEventNotifierFactory notifierFactory = new UmlNamedElementChangedEventNotifierFactory();
+		UmlNamedElementChangedEventNotifier eventNotifier = (UmlNamedElementChangedEventNotifier) notifierFactory.adapt(c1, UmlNamedElementChangedEventNotifier.class);
+
+		TraceUmlNamedElementChangedEventListener listener = new TraceUmlNamedElementChangedEventListener();
+		eventNotifier.addEventListener(listener);
+		TriggeredEventTraces<Notification> traces = listener.traces;
+
+		// Action
+		traces.clear();
+		// Modify ele
+		c1.setName("newName");
+
+		// Assert
+		// Assert
+		assertTrue("event recorded", traces.contains("valueChanged"));
+		assertEquals("one event recorded", 1, traces.traces.size());
+
+		TriggeredEventTraces<Notification>.TriggeredEvent event = traces.traces.get(0);
+
+		assertEquals("right element in event", c1, event.notifier.getNotifier());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.UmlNamedElementChangedEventNotifier#fireDiagramViewRemovedEvent(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testPropertyAdded() {
+		NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+		Diagram diagram1 = modelsFactory.newDiagram();
+		Class c1 = modelsFactory.newClass(diagram1, "C1");
+
+		UmlNamedElementChangedEventNotifierFactory notifierFactory = new UmlNamedElementChangedEventNotifierFactory();
+		UmlNamedElementChangedEventNotifier eventNotifier = (UmlNamedElementChangedEventNotifier) notifierFactory.adapt(c1, UmlNamedElementChangedEventNotifier.class);
+
+		TraceUmlNamedElementChangedEventListener listener = new TraceUmlNamedElementChangedEventListener();
+		eventNotifier.addEventListener(listener);
+		TriggeredEventTraces<Notification> traces = listener.traces;
+		int expectedEventCount = 2;
+
+		// Action
+		traces.clear();
+		// Modify ele
+		Property p1 = modelsFactory.newProperty(c1, "p1");
+
+		// Assert
+		// Assert
+		assertTrue("event recorded", traces.contains("valueChanged"));
+		assertEquals("one event recorded", expectedEventCount, traces.traces.size());
+
+		// TriggeredEventTraces<Notification>.TriggeredEvent event = traces.traces.get(0);
+		// assertEquals("right element in event", c1, event.notifier.getNotifier() );
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.notifier.UmlNamedElementChangedEventNotifier#fireDiagramViewRemovedEvent(org.eclipse.emf.common.notify.Notification)}.
+	 */
+	@Test
+	public void testPropertyNameChanged() {
+		NotationAndUmlModelsFactory modelsFactory = new NotationAndUmlModelsFactory();
+		Diagram diagram1 = modelsFactory.newDiagram();
+		Class c1 = modelsFactory.newClass(diagram1, "C1");
+		Property p1 = modelsFactory.newProperty(c1, "p1");
+
+		UmlNamedElementChangedEventNotifierFactory notifierFactory = new UmlNamedElementChangedEventNotifierFactory();
+		UmlNamedElementChangedEventNotifier eventNotifier = (UmlNamedElementChangedEventNotifier) notifierFactory.adapt(c1, UmlNamedElementChangedEventNotifier.class);
+
+		TraceUmlNamedElementChangedEventListener listener = new TraceUmlNamedElementChangedEventListener();
+		eventNotifier.addEventListener(listener);
+		TriggeredEventTraces<Notification> traces = listener.traces;
+		int expectedEventCount = 1;
+
+		// Action
+		traces.clear();
+		// Modify ele
+		p1.setName("NewName");
+
+		// Assert
+		// Assert
+		assertTrue("event recorded", traces.contains("valueChanged"));
+		assertEquals("one event recorded", expectedEventCount, traces.traces.size());
+
+		// TriggeredEventTraces<Notification>.TriggeredEvent event = traces.traces.get(0);
+		// assertEquals("right element in event", c1, event.notifier.getNotifier() );
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/operators/BooleanAndOperatorTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/operators/BooleanAndOperatorTest.java
new file mode 100755
index 0000000..faff239
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/operators/BooleanAndOperatorTest.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.operators;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class BooleanAndOperatorTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Create an instance of boolean value cmd.
+	 *
+	 * @param b
+	 * @return
+	 */
+	protected BooleanInstance createBooleanInstance(boolean value) {
+		BooleanInstance val = LayersFactory.eINSTANCE.createBooleanInstance();
+		val.setValue(value);
+		return val;
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.operators.BooleanAndOperator#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testGetComputePropertyValueCommandReturnTrue() throws LayersException {
+
+		// Create a list of nested commands
+		EList<ComputePropertyValueCommand> nestedCommand = new BasicEList<ComputePropertyValueCommand>();
+		BooleanInstance val1 = createBooleanInstance(true);
+		nestedCommand.add(val1);
+		BooleanInstance val2 = createBooleanInstance(true);
+		nestedCommand.add(val2);
+		BooleanInstance val3 = createBooleanInstance(true);
+		nestedCommand.add(val3);
+
+
+		// Create the command
+		BooleanAndOperator op = new BooleanAndOperator();
+		assertNotNull("command created", op.getComputePropertyValueCommand(nestedCommand));
+
+		assertSame("return the right value", true, ((BooleanInstance) op.getComputePropertyValueCommand(nestedCommand).getCmdValue()).isValue());
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.operators.BooleanAndOperator#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testGetComputePropertyValueCommandReturnFalse() throws LayersException {
+
+		// Create a list of nested commands
+		EList<ComputePropertyValueCommand> nestedCommand = new BasicEList<ComputePropertyValueCommand>();
+		BooleanInstance val1 = createBooleanInstance(true);
+		nestedCommand.add(val1);
+		BooleanInstance val2 = createBooleanInstance(false);
+		nestedCommand.add(val2);
+		BooleanInstance val3 = createBooleanInstance(true);
+		nestedCommand.add(val3);
+
+
+		// Create the command
+		BooleanAndOperator op = new BooleanAndOperator();
+		assertNotNull("command created", op.getComputePropertyValueCommand(nestedCommand));
+
+		assertSame("return the right value", false, ((BooleanInstance) op.getComputePropertyValueCommand(nestedCommand).getCmdValue()).isValue());
+
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/operators/BooleanOrOperatorTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/operators/BooleanOrOperatorTest.java
new file mode 100755
index 0000000..734d986
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/operators/BooleanOrOperatorTest.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.operators;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+import org.eclipse.papyrus.layers.stackmodel.layers.BooleanInstance;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class BooleanOrOperatorTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Create an instance of boolean value cmd.
+	 *
+	 * @param b
+	 * @return
+	 */
+	protected BooleanInstance createBooleanInstance(boolean value) {
+		BooleanInstance val = LayersFactory.eINSTANCE.createBooleanInstance();
+		val.setValue(value);
+		return val;
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.operators.BooleanOrOperator#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testGetComputePropertyValueCommandReturnTrue() throws LayersException {
+
+		// Create a list of nested commands
+		EList<ComputePropertyValueCommand> nestedCommand = new BasicEList<ComputePropertyValueCommand>();
+		BooleanInstance val1 = createBooleanInstance(false);
+		nestedCommand.add(val1);
+		BooleanInstance val2 = createBooleanInstance(true);
+		nestedCommand.add(val2);
+		BooleanInstance val3 = createBooleanInstance(false);
+		nestedCommand.add(val3);
+
+
+		// Create the command
+		BooleanOrOperator op = new BooleanOrOperator();
+		assertNotNull("command created", op.getComputePropertyValueCommand(nestedCommand));
+
+		assertSame("return the right value", true, ((BooleanInstance) op.getComputePropertyValueCommand(nestedCommand).getCmdValue()).isValue());
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.operators.BooleanOrOperator#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList)}.
+	 *
+	 * @throws LayersException
+	 */
+	@Test
+	public void testGetComputePropertyValueCommandReturnFalse() throws LayersException {
+
+		// Create a list of nested commands
+		EList<ComputePropertyValueCommand> nestedCommand = new BasicEList<ComputePropertyValueCommand>();
+		BooleanInstance val1 = createBooleanInstance(false);
+		nestedCommand.add(val1);
+		BooleanInstance val2 = createBooleanInstance(false);
+		nestedCommand.add(val2);
+		BooleanInstance val3 = createBooleanInstance(false);
+		nestedCommand.add(val3);
+
+
+		// Create the command
+		BooleanOrOperator op = new BooleanOrOperator();
+		assertNotNull("command created", op.getComputePropertyValueCommand(nestedCommand));
+
+		assertSame("return the right value", false, ((BooleanInstance) op.getComputePropertyValueCommand(nestedCommand).getCmdValue()).isValue());
+
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/operators/FakePropertyOperator.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/operators/FakePropertyOperator.java
new file mode 100755
index 0000000..81a6281
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/operators/FakePropertyOperator.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.operators;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.command.ComputePropertyValueCommand;
+
+
+/**
+ * A fake custom operator for tests purpose.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class FakePropertyOperator implements CustomPropertyOperatorsInstance {
+
+	public boolean isComputePropertyValueCommandCalled = false;
+
+	/**
+	 * @see org.eclipse.papyrus.layers.stackmodel.operators.CustomPropertyOperatorsInstance#getComputePropertyValueCommand(org.eclipse.emf.common.util.EList)
+	 *
+	 * @param property
+	 * @return
+	 * @throws LayersException
+	 */
+	@Override
+	public ComputePropertyValueCommand getComputePropertyValueCommand(EList<ComputePropertyValueCommand> property) throws LayersException {
+		// TODO Auto-generated method stub
+		isComputePropertyValueCommandCalled = true;
+		return null;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/DiagramViewToListSynchronizerTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/DiagramViewToListSynchronizerTest.java
new file mode 100755
index 0000000..46c0cae
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/DiagramViewToListSynchronizerTest.java
@@ -0,0 +1,175 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.util;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.uml2.uml.Class;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.google.common.collect.Lists;
+
+/**
+ *
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class DiagramViewToListSynchronizerTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.DiagramViewToListSynchronizer#DiagramViewToListSynchronizer(org.eclipse.gmf.runtime.notation.Diagram, java.util.Collection)}.
+	 */
+	@Test
+	public void testDiagramViewToListSynchronizer() {
+
+		// Create variables
+		NotationAndUmlModelsFactory factory = new NotationAndUmlModelsFactory();
+		Diagram diagram1 = factory.newDiagram();
+
+		List<View> list = new ArrayList<View>();
+
+		//
+		DiagramViewToListSynchronizer listSynchronizer = new DiagramViewToListSynchronizer(diagram1, list);
+
+		// assert
+		assertNotNull("object created", listSynchronizer);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.DiagramViewToListSynchronizer#setDiagram(org.eclipse.gmf.runtime.notation.Diagram)}.
+	 */
+	@Test
+	public void testSetDiagram() {
+		// Create variables
+		NotationAndUmlModelsFactory factory = new NotationAndUmlModelsFactory();
+		Diagram diagram1 = factory.newDiagram();
+		Class C1 = factory.newClass(diagram1, "C1");
+		View shape1 = factory.lookupViewFor(diagram1, C1);
+		Class C2 = factory.newClass(diagram1, "C2");
+		View shape2 = factory.lookupViewFor(diagram1, C2);
+		Class C3 = factory.newClass(diagram1, "C3");
+		View shape3 = factory.lookupViewFor(diagram1, C3);
+
+		List<View> expectedViews1 = Lists.newArrayList(shape1, shape2, shape3);
+
+		// Check if the list is set on init
+		List<View> list = new ArrayList<View>();
+		DiagramViewToListSynchronizer listSynchronizer = new DiagramViewToListSynchronizer(diagram1, list);
+		int expectedSize = 3;
+		// Assert
+		assertEquals("list size", expectedSize, list.size());
+		assertTrue("list correctly set", list.containsAll(expectedViews1));
+
+
+		// Now, change the diagram
+		Diagram diagram2 = factory.newDiagram();
+		Class C21 = factory.newClass(diagram2, "C1");
+		View shape21 = factory.lookupViewFor(diagram2, C21);
+		Class C22 = factory.newClass(diagram2, "C2");
+		View shape22 = factory.lookupViewFor(diagram2, C22);
+		Class C23 = factory.newClass(diagram2, "C3");
+		View shape23 = factory.lookupViewFor(diagram2, C23);
+		List<View> expectedViews2 = Lists.newArrayList(shape21, shape22, shape23);
+		int expectedSize2 = 3;
+
+
+		// Action
+		listSynchronizer.setDiagram(diagram2);
+		// Assert
+		assertEquals("list size", expectedSize2, list.size());
+		assertTrue("list correctly set", list.containsAll(expectedViews2));
+	}
+
+	/**
+	 * Test list sync
+	 */
+	@Test
+	public void testSyncWhenViewIsAdded() {
+
+		// Create variables
+		NotationAndUmlModelsFactory factory = new NotationAndUmlModelsFactory();
+		Diagram diagram1 = factory.newDiagram();
+
+		int expectedSize = 1;
+		List<View> list = new ArrayList<View>();
+		DiagramViewToListSynchronizer listSynchronizer = new DiagramViewToListSynchronizer(diagram1, list);
+		// Action
+		Class C1 = factory.newClass(diagram1, "C1");
+		View shape1 = factory.lookupViewFor(diagram1, C1);
+
+		// assert
+		assertEquals("listSize", expectedSize, list.size());
+		assertTrue("list contain expected view", list.contains(shape1));
+	}
+
+	/**
+	 * Test list sync
+	 */
+	@Test
+	public void testSyncWhenViewIsRemoved() {
+
+		// Create variables
+		NotationAndUmlModelsFactory factory = new NotationAndUmlModelsFactory();
+		Diagram diagram1 = factory.newDiagram();
+
+		int expectedSize = 3;
+		List<View> list = new ArrayList<View>();
+		DiagramViewToListSynchronizer listSynchronizer = new DiagramViewToListSynchronizer(diagram1, list);
+
+		Class C1 = factory.newClass(diagram1, "C1");
+		View shape1 = factory.lookupViewFor(diagram1, C1);
+		Class C2 = factory.newClass(diagram1, "C2");
+		View shape2 = factory.lookupViewFor(diagram1, C2);
+		Class C3 = factory.newClass(diagram1, "C3");
+		View shape3 = factory.lookupViewFor(diagram1, C3);
+
+		// assert before
+		assertEquals("listSize", expectedSize, list.size());
+		assertTrue("list contain expected view", list.contains(shape2));
+
+		// Action
+		factory.remove(diagram1, C2);
+		// assert
+		assertEquals("listSize", expectedSize - 1, list.size());
+		assertFalse("list contain expected view", list.contains(shape2));
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/FakeObservableListListener.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/FakeObservableListListener.java
new file mode 100755
index 0000000..c9454c3
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/FakeObservableListListener.java
@@ -0,0 +1,42 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.util;
+
+import com.google.common.eventbus.Subscribe;
+
+/**
+ * A class listening on events, and recording them.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class FakeObservableListListener<E> {
+
+	/**
+	 * Trace object tracking events
+	 */
+	public TriggeredEventTraces<ObservableListView<E>.ObservableListEvent> traces = new TriggeredEventTraces<ObservableListView<E>.ObservableListEvent>();
+
+
+	/**
+	 * Method listeneing to the list event.
+	 *
+	 * @param event
+	 */
+	@Subscribe
+	public void elementAddedToList(ObservableListView<E>.ObservableListEvent event) {
+		traces.addTrace("elementAddedToList", event);
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/NotationAndUmlModelsFactory.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/NotationAndUmlModelsFactory.java
new file mode 100755
index 0000000..ea95f5e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/NotationAndUmlModelsFactory.java
@@ -0,0 +1,136 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.util;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.gmf.runtime.notation.Shape;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.UMLFactory;
+
+/**
+ * A factory allowing to create Diagram and UML elements for testing purpose.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class NotationAndUmlModelsFactory {
+
+
+	/**
+	 * Create a Diagram
+	 *
+	 * @return
+	 */
+	public Diagram newDiagram() {
+
+		Diagram diagram = NotationFactory.eINSTANCE.createDiagram();
+		return diagram;
+	}
+
+	/**
+	 * Create a {@link Class} in the {@link Diagram}. Also create intermediate elements like {@link Shape}.
+	 *
+	 * @param name
+	 * @return
+	 */
+	public Class newClass(String name) {
+
+		Class c = UMLFactory.eINSTANCE.createClass();
+		c.setName(name);
+		return c;
+	}
+
+	/**
+	 * Create a {@link Class} in the {@link Diagram}. Also create intermediate elements like {@link Shape}.
+	 *
+	 * @param diagram
+	 * @param name
+	 * @return
+	 */
+	public Class newClass(Diagram diagram, String name) {
+
+		Class c = UMLFactory.eINSTANCE.createClass();
+		c.setName(name);
+
+		Shape shape = (Shape) diagram.createChild(NotationPackage.eINSTANCE.getShape());
+		shape.setElement(c);
+
+		return c;
+	}
+
+	/**
+	 *
+	 * @param name
+	 * @return
+	 */
+	public Property newProperty(String name) {
+		Property c = UMLFactory.eINSTANCE.createProperty();
+		c.setName(name);
+		return c;
+	}
+
+	/**
+	 *
+	 * @param name
+	 * @return
+	 */
+	public Property newProperty(Class c, String name) {
+		return c.createOwnedAttribute(name, null);
+	}
+
+	/**
+	 * Lookup the View owning the specified {@link NamedElement}.
+	 * return null if not found.
+	 *
+	 * @param diagram1
+	 * @param element
+	 * @return
+	 */
+	public View lookupViewFor(Diagram diagram1, NamedElement element) {
+
+
+		for (Object o : diagram1.getChildren()) {
+			View view = (View) o;
+			if (view.getElement() == element) {
+				return view;
+			}
+		}
+		// not found
+		return null;
+	}
+
+	/**
+	 * Remove the specified element and its associated View.
+	 *
+	 * @param element
+	 *            element to remove.
+	 * @return The associated view.
+	 */
+	public View remove(Diagram diagram, NamedElement element) {
+		View view = lookupViewFor(diagram, element);
+		if (view == null) {
+			return null;
+		}
+
+		diagram.removeChild(view);
+		return view;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/NotationAndUmlModelsFactoryTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/NotationAndUmlModelsFactoryTest.java
new file mode 100755
index 0000000..ab3bd85
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/NotationAndUmlModelsFactoryTest.java
@@ -0,0 +1,139 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.util;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Property;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class NotationAndUmlModelsFactoryTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.NotationAndUmlModelsFactory#newDiagram()}.
+	 */
+	@Test
+	public void testNotationAndUmlModelsTestUtils() {
+		NotationAndUmlModelsFactory factory = new NotationAndUmlModelsFactory();
+
+		assertNotNull("object created", factory);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.NotationAndUmlModelsFactory#newDiagram()}.
+	 */
+	@Test
+	public void testNewDiagram() {
+		NotationAndUmlModelsFactory factory = new NotationAndUmlModelsFactory();
+
+		Diagram diagram1 = factory.newDiagram();
+
+		assertNotNull("diagram1 created", diagram1);
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.NotationAndUmlModelsFactory#newClass(org.eclipse.gmf.runtime.notation.Diagram, java.lang.String)}.
+	 */
+	@Test
+	public void testNewClass() {
+		NotationAndUmlModelsFactory factory = new NotationAndUmlModelsFactory();
+
+		// Action
+		Diagram diagram1 = factory.newDiagram();
+		Class c1 = factory.newClass(diagram1, "C1");
+		Class c2 = factory.newClass(diagram1, "C2");
+
+		// Lookup Shape
+		View shape1 = factory.lookupViewFor(diagram1, c1);
+		View shape2 = factory.lookupViewFor(diagram1, c2);
+
+		// Assert
+		assertNotNull("class created", c1);
+		assertNotNull("shape created", shape2);
+		assertNotNull("shape created", shape1);
+
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.NotationAndUmlModelsFactory#remove(org.eclipse.gmf.runtime.notation.Diagram, java.lang.String)}.
+	 */
+	@Test
+	public void testRemove() {
+		NotationAndUmlModelsFactory factory = new NotationAndUmlModelsFactory();
+
+		Diagram diagram1 = factory.newDiagram();
+		Class c1 = factory.newClass(diagram1, "C1");
+		Class c2 = factory.newClass(diagram1, "C2");
+
+		// Lookup Shape
+		View shape1 = factory.lookupViewFor(diagram1, c1);
+		View shape2 = factory.lookupViewFor(diagram1, c2);
+
+		// Action
+		View removedShape = factory.remove(diagram1, c1);
+		View lookupResult = factory.lookupViewFor(diagram1, c1);
+
+		// Assert
+		assertNotNull("object removed found", removedShape);
+		assertSame("Right object removed", shape1, removedShape);
+
+		assertNull("lookupResult null after remove", lookupResult);
+
+	}
+
+	/**
+	 * Test
+	 */
+	@Test
+	public void testNewProperty() {
+		NotationAndUmlModelsFactory factory = new NotationAndUmlModelsFactory();
+
+		Diagram diagram1 = factory.newDiagram();
+		Class c1 = factory.newClass(diagram1, "C1");
+		Property p1 = factory.newProperty(c1, "p1");
+
+		assertNotNull("property created", p1);
+
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/ObservableListTest.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/ObservableListTest.java
new file mode 100755
index 0000000..b5f0899
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/ObservableListTest.java
@@ -0,0 +1,451 @@
+/*****************************************************************************
+ * Copyright (c) 2013 Cedric Dumoulin.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.layers.stackmodel.util;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.google.common.collect.Lists;
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class ObservableListTest {
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	/**
+	 * @throws java.lang.Exception
+	 */
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#ObservableList(java.util.List)}.
+	 */
+	@Test
+	public void testObservableList() {
+
+		List<String> list = Lists.newArrayList("red", "orange", "yellow", "green", "blue", "purple");
+
+		ObservableListView<String> notyfyingList = new ObservableListView<String>(list);
+
+		assertNotNull("Object created", notyfyingList);
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#delegate()}.
+	 */
+	@Test
+	public void testDelegate() {
+		List<String> list = Lists.newArrayList("red", "orange", "yellow", "green", "blue", "purple");
+
+		ObservableListView<String> notyfyingList = new ObservableListView<String>(list);
+
+		assertSame("delegate is set", list, notyfyingList.delegate());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#getEventBus()}.
+	 */
+	@Test
+	public void testGetEventBus() {
+		List<String> list = Lists.newArrayList("red", "orange", "yellow", "green", "blue", "purple");
+
+		ObservableListView<String> notyfyingList = new ObservableListView<String>(list);
+
+		assertNotNull("eventBus found", notyfyingList.getEventBus());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#add(java.lang.Object)}.
+	 */
+	@Test
+	public void testAddE() {
+		List<String> list = Lists.newArrayList("red", "orange", "yellow", "green", "blue", "purple");
+		String addedElement = "purple";
+		int listSizeBefore = list.size();
+		int expectedListSizeAfter = listSizeBefore + 1;
+
+		FakeObservableListListener<String> notifyingListListener = new FakeObservableListListener<String>();
+		ObservableListView<String> notyfyingList = new ObservableListView<String>(list);
+
+		notyfyingList.getEventBus().register(notifyingListListener);
+
+		// Action
+		notyfyingList.add(addedElement);
+
+		// Assertions
+		assertSame("event propagated", 1, notifyingListListener.traces.size());
+		assertTrue("event addedElement is correct", notifyingListListener.traces.get(0).notifier.getAddedElements().contains(addedElement));
+
+		Collection<? extends String> eventAddedElements = notifyingListListener.traces.get(0).notifier.getAddedElements();
+		assertEquals("event elements size", 1, eventAddedElements.size());
+
+		assertEquals("result list size", expectedListSizeAfter, notyfyingList.size());
+		assertEquals("result list size", expectedListSizeAfter, list.size());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#addAll(java.util.Collection)}.
+	 */
+	@Test
+	public void testAddAllCollectionOfQextendsE() {
+		List<String> list = Lists.newArrayList("red", "orange", "yellow");
+		List<String> addedElements = Lists.newArrayList("green", "blue", "purple");
+		int listSizeBefore = list.size();
+		int expectedListSizeAfter = listSizeBefore + addedElements.size();
+
+		ObservableListView<String> notyfyingList = new ObservableListView<String>(list);
+		FakeObservableListListener<String> notifyingListListener = new FakeObservableListListener<String>();
+
+		notyfyingList.getEventBus().register(notifyingListListener);
+
+		// Action
+		notyfyingList.addAll(addedElements);
+
+		assertSame("event propagated", 1, notifyingListListener.traces.size());
+
+		Collection<? extends String> eventAddedElements = notifyingListListener.traces.get(0).notifier.getAddedElements();
+		assertEquals("event elements size", addedElements.size(), eventAddedElements.size());
+
+		assertEquals("result list size", expectedListSizeAfter, notyfyingList.size());
+		assertEquals("result list size", expectedListSizeAfter, list.size());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#add(int, java.lang.Object)}.
+	 */
+	@Test
+	public void testAddIntE() {
+		List<String> list = Lists.newArrayList("red", "orange", "yellow", "green", "blue", "purple");
+		String addedElement = "purple";
+		int listSizeBefore = list.size();
+		int expectedListSizeAfter = listSizeBefore + 1;
+
+		FakeObservableListListener<String> notifyingListListener = new FakeObservableListListener<String>();
+		ObservableListView<String> notyfyingList = new ObservableListView<String>(list);
+
+		notyfyingList.getEventBus().register(notifyingListListener);
+
+		// Action
+		notyfyingList.add(3, addedElement);
+
+		// Assertions
+		assertSame("event propagated", 1, notifyingListListener.traces.size());
+		assertTrue("event addedElement is correct", notifyingListListener.traces.get(0).notifier.getAddedElements().contains(addedElement));
+
+		Collection<? extends String> eventAddedElements = notifyingListListener.traces.get(0).notifier.getAddedElements();
+		assertEquals("event elements size", 1, eventAddedElements.size());
+
+		assertEquals("result list size", expectedListSizeAfter, notyfyingList.size());
+		assertEquals("result list size", expectedListSizeAfter, list.size());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#addAll(int, java.util.Collection)}.
+	 */
+	@Test
+	public void testAddAllIntCollectionOfQextendsE() {
+		List<String> list = Lists.newArrayList("red", "orange", "yellow");
+		List<String> addedElements = Lists.newArrayList("green", "blue", "purple");
+		int listSizeBefore = list.size();
+		int expectedListSizeAfter = listSizeBefore + addedElements.size();
+
+		ObservableListView<String> notyfyingList = new ObservableListView<String>(list);
+		FakeObservableListListener<String> notifyingListListener = new FakeObservableListListener<String>();
+
+		notyfyingList.getEventBus().register(notifyingListListener);
+
+		// Action
+		notyfyingList.addAll(2, addedElements);
+
+		assertSame("event propagated", 1, notifyingListListener.traces.size());
+
+		Collection<? extends String> eventAddedElements = notifyingListListener.traces.get(0).notifier.getAddedElements();
+		assertEquals("event elements size", addedElements.size(), eventAddedElements.size());
+
+		assertEquals("result list size", expectedListSizeAfter, notyfyingList.size());
+		assertEquals("result list size", expectedListSizeAfter, list.size());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#remove(int)}.
+	 */
+	@Test
+	public void testRemoveInt() {
+		List<String> list = Lists.newArrayList("red", "orange", "yellow", "green", "blue", "purple");
+		String removedElement = "purple";
+		int listSizeBefore = list.size();
+		int expectedListSizeAfter = listSizeBefore - 1;
+
+		FakeObservableListListener<String> notifyingListListener = new FakeObservableListListener<String>();
+		ObservableListView<String> notyfyingList = new ObservableListView<String>(list);
+
+		notyfyingList.getEventBus().register(notifyingListListener);
+
+		// Action
+		notyfyingList.remove(removedElement);
+
+		// Assertions
+		assertSame("event propagated", 1, notifyingListListener.traces.size());
+		ObservableListView<String>.ObservableListEvent event = notifyingListListener.traces.get(0).notifier;
+		assertTrue("event removesElement is correct", event.getRemovedElements().contains(removedElement));
+
+		assertEquals("addedElement size", 0, event.getAddedElements().size());
+		assertEquals("removedElement size", 1, event.getRemovedElements().size());
+
+		assertEquals("result list size", expectedListSizeAfter, notyfyingList.size());
+		assertEquals("result list size", expectedListSizeAfter, list.size());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#remove(java.lang.Object)}.
+	 */
+	@Test
+	public void testRemoveObject() {
+		List<String> list = Lists.newArrayList("red", "orange", "yellow", "green", "blue", "purple");
+		int removedIndex = 3;
+		String removedElement = list.get(removedIndex);
+		int listSizeBefore = list.size();
+		int expectedListSizeAfter = listSizeBefore - 1;
+
+		FakeObservableListListener<String> notifyingListListener = new FakeObservableListListener<String>();
+		ObservableListView<String> notyfyingList = new ObservableListView<String>(list);
+
+		notyfyingList.getEventBus().register(notifyingListListener);
+
+		// Action
+		notyfyingList.remove(removedIndex);
+
+		// Assertions
+		assertSame("event propagated", 1, notifyingListListener.traces.size());
+		ObservableListView<String>.ObservableListEvent event = notifyingListListener.traces.get(0).notifier;
+		assertTrue("event removesElement is correct", event.getRemovedElements().contains(removedElement));
+
+		assertEquals("addedElement size", 0, event.getAddedElements().size());
+		assertEquals("removedElement size", 1, event.getRemovedElements().size());
+
+		assertEquals("result list size", expectedListSizeAfter, notyfyingList.size());
+		assertEquals("result list size", expectedListSizeAfter, list.size());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#removeAll(java.util.Collection)}.
+	 */
+	@Test
+	public void testRemoveAllCollectionOfQ() {
+		List<String> list = Lists.newArrayList("red", "orange", "yellow", "green", "blue", "purple");
+		List<String> elementsToRemove = Lists.newArrayList("orange", "green", "purple");
+		int listSizeBefore = list.size();
+		int removedElementsCount = elementsToRemove.size();
+		int expectedListSizeAfter = listSizeBefore - removedElementsCount;
+
+		FakeObservableListListener<String> notifyingListListener = new FakeObservableListListener<String>();
+		ObservableListView<String> notyfyingList = new ObservableListView<String>(list);
+
+		notyfyingList.getEventBus().register(notifyingListListener);
+
+		// Action
+		notyfyingList.removeAll(elementsToRemove);
+
+		// Assertions
+		assertSame("event propagated", 1, notifyingListListener.traces.size());
+
+		ObservableListView<String>.ObservableListEvent event = notifyingListListener.traces.get(0).notifier;
+		assertTrue("event removesElement is correct", event.getRemovedElements().containsAll(elementsToRemove));
+
+		assertEquals("addedElement size", 0, event.getAddedElements().size());
+		assertEquals("removedElement size", removedElementsCount, event.getRemovedElements().size());
+
+		assertEquals("result list size", expectedListSizeAfter, notyfyingList.size());
+		assertEquals("result list size", expectedListSizeAfter, list.size());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#removeAll(java.util.Collection)}.
+	 */
+	@Test
+	public void testRemoveAllCollectionOfQWithTooMuchElements() {
+		List<String> list = Lists.newArrayList("red", "orange", "yellow", "green", "blue", "purple");
+		List<String> elementsToRemove = Lists.newArrayList("orange", "falseColor1", "green", "purple", "falseColor");
+		int listSizeBefore = list.size();
+		int removedElementsCount = elementsToRemove.size() - 2; // 2 = falseColors
+		int expectedListSizeAfter = listSizeBefore - removedElementsCount;
+
+		FakeObservableListListener<String> notifyingListListener = new FakeObservableListListener<String>();
+		ObservableListView<String> notyfyingList = new ObservableListView<String>(list);
+
+		notyfyingList.getEventBus().register(notifyingListListener);
+
+		// Action
+		notyfyingList.removeAll(elementsToRemove);
+
+		// Assertions
+		assertSame("event propagated", 1, notifyingListListener.traces.size());
+
+		ObservableListView<String>.ObservableListEvent event = notifyingListListener.traces.get(0).notifier;
+		// assertTrue("event removesElement is correct", event.getRemovedElements().containsAll(elementsToRemove));
+		assertTrue("removed elements are from the required list", elementsToRemove.containsAll(event.getRemovedElements()));
+
+		assertEquals("addedElement size", 0, event.getAddedElements().size());
+		assertEquals("removedElement size", removedElementsCount, event.getRemovedElements().size());
+
+		assertEquals("result list size", expectedListSizeAfter, notyfyingList.size());
+		assertEquals("result list size", expectedListSizeAfter, list.size());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#resetTo(java.util.Collection)}.
+	 */
+	@Test
+	public void testResetTo() {
+		List<String> list = Lists.newArrayList("red", "orange", "yellow", "green", "blue", "purple");
+
+		List<String> listToReset = Lists.newArrayList("orange", "green", "purple", "falseColor");
+		List<String> expectedRemovedElement = Lists.newArrayList("red", "yellow", "blue");
+		List<String> expectedAddedElement = Lists.newArrayList("falseColor");
+
+		int expectedEventCount = 1;
+
+		FakeObservableListListener<String> notifyingListListener = new FakeObservableListListener<String>();
+		ObservableListView<String> notyfyingList = new ObservableListView<String>(list);
+
+		notyfyingList.getEventBus().register(notifyingListListener);
+
+		// Action
+		notyfyingList.resetTo(listToReset);
+
+		// Assertions
+		assertSame("event propagated", expectedEventCount, notifyingListListener.traces.size());
+		assertArrayEquals("List equals", listToReset.toArray(), notyfyingList.toArray());
+
+		ObservableListView<String>.ObservableListEvent event = notifyingListListener.traces.get(0).notifier;
+		assertArrayEquals("Removed list ok", expectedRemovedElement.toArray(), event.getRemovedElements().toArray());
+		assertArrayEquals("Added list ok", expectedAddedElement.toArray(), event.getAddedElements().toArray());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#resetTo(java.util.Collection)}.
+	 */
+	@Test
+	public void testResetToNoAdded() {
+		List<String> list = Lists.newArrayList("red", "orange", "yellow", "green", "blue", "purple");
+
+		List<String> listToReset = Lists.newArrayList("orange", "green", "purple");
+		List<String> expectedRemovedElement = Lists.newArrayList("red", "yellow", "blue");
+		List<String> expectedAddedElement = Collections.emptyList();
+
+		int expectedEventCount = 1;
+
+		FakeObservableListListener<String> notifyingListListener = new FakeObservableListListener<String>();
+		ObservableListView<String> notyfyingList = new ObservableListView<String>(list);
+
+		notyfyingList.getEventBus().register(notifyingListListener);
+
+		// Action
+		notyfyingList.resetTo(listToReset);
+
+		// Assertions
+		assertSame("event propagated", expectedEventCount, notifyingListListener.traces.size());
+		assertArrayEquals("List equals", listToReset.toArray(), notyfyingList.toArray());
+
+		ObservableListView<String>.ObservableListEvent event = notifyingListListener.traces.get(0).notifier;
+		assertArrayEquals("Removed list ok", expectedRemovedElement.toArray(), event.getRemovedElements().toArray());
+		assertArrayEquals("Added list ok", expectedAddedElement.toArray(), event.getAddedElements().toArray());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#resetTo(java.util.Collection)}.
+	 */
+	@Test
+	public void testResetToWithAddition() {
+		List<String> list = Lists.newArrayList("red", "orange", "yellow", "green", "blue", "purple");
+
+		List<String> listToReset = Lists.newArrayList("red", "orange", "yellow", "green", "blue", "purple", "falseColor");
+		List<String> expectedRemovedElement = Collections.emptyList();
+		List<String> expectedAddedElement = Lists.newArrayList("falseColor");
+
+		int expectedEventCount = 1;
+
+		FakeObservableListListener<String> notifyingListListener = new FakeObservableListListener<String>();
+		ObservableListView<String> notyfyingList = new ObservableListView<String>(list);
+
+		notyfyingList.getEventBus().register(notifyingListListener);
+
+		// Action
+		notyfyingList.resetTo(listToReset);
+
+		// Assertions
+		assertSame("event propagated", expectedEventCount, notifyingListListener.traces.size());
+		assertArrayEquals("List equals", listToReset.toArray(), notyfyingList.toArray());
+
+		ObservableListView<String>.ObservableListEvent event = notifyingListListener.traces.get(0).notifier;
+		assertArrayEquals("Removed list ok", expectedRemovedElement.toArray(), event.getRemovedElements().toArray());
+		assertArrayEquals("Added list ok", expectedAddedElement.toArray(), event.getAddedElements().toArray());
+	}
+
+	/**
+	 * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#resetTo(java.util.Collection)}.
+	 */
+	@Test
+	public void testResetToNoChanges() {
+		List<String> list = Lists.newArrayList("red", "orange", "yellow", "green", "blue", "purple");
+
+		List<String> listToReset = Lists.newArrayList("red", "orange", "yellow", "green", "blue", "purple");
+		List<String> expectedRemovedElement = Collections.emptyList();
+		List<String> expectedAddedElement = Collections.emptyList();
+
+		// No change, no events
+		int expectedEventCount = 0;
+
+		FakeObservableListListener<String> notifyingListListener = new FakeObservableListListener<String>();
+		ObservableListView<String> notyfyingList = new ObservableListView<String>(list);
+
+		notyfyingList.getEventBus().register(notifyingListListener);
+
+		// Action
+		notyfyingList.resetTo(listToReset);
+
+		// Assertions
+		assertSame("event propagated", expectedEventCount, notifyingListListener.traces.size());
+		assertArrayEquals("List equals", listToReset.toArray(), notyfyingList.toArray());
+
+		// ObservableList<String>.NotifyingListEvent event = notifyingListListener.traces.get(0).notifier;
+		// assertArrayEquals("Removed list ok", expectedRemovedElement.toArray(), event.getRemovedElements().toArray());
+		// assertArrayEquals("Added list ok", expectedAddedElement.toArray(), event.getAddedElements().toArray());
+	}
+
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/TriggeredEventTraces.java b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/TriggeredEventTraces.java
new file mode 100755
index 0000000..7205774
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/TriggeredEventTraces.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.stackmodel.util;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * This class is used to record a list of traces.
+ * Traces are for event triggered by a method.
+ * This class is for tests purpose.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class TriggeredEventTraces<E> {
+
+
+	/**
+	 * List of recorded events
+	 */
+	public List<TriggeredEvent> traces = new ArrayList<TriggeredEvent>();
+
+	/**
+	 * Clear all traces.
+	 */
+	public void clear() {
+		traces.clear();
+	}
+
+	/**
+	 * Add a trace to the list of traces
+	 *
+	 * @param name
+	 * @param notification
+	 */
+	public void addTrace(String name, E notification) {
+		traces.add(new TriggeredEvent(name, notification));
+	}
+
+	/**
+	 * Return true if one of the trace has the specified name.
+	 *
+	 * @param name
+	 * @return
+	 */
+	public boolean contains(String name) {
+		if (name == null) {
+			return false;
+		}
+
+		for (TriggeredEvent event : traces) {
+			if (name.equals(event.name)) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * Return true if one of the trace has the specified name.
+	 *
+	 * @param name
+	 *            Name of the event to found
+	 * @return the first event with the specified name, or null if nothing is found.
+	 */
+	public TriggeredEvent getFirstEvent(String name) {
+		if (name == null) {
+			return null;
+		}
+
+		for (TriggeredEvent event : traces) {
+			if (name.equals(event.name)) {
+				return event;
+			}
+		}
+		return null;
+	}
+
+
+	/**
+	 * A record of an event
+	 *
+	 */
+	public class TriggeredEvent {
+		public String name;
+		public E notifier;
+		public Object object;
+
+		/**
+		 * Constructor.
+		 *
+		 * @param name
+		 * @param notifier
+		 */
+		public TriggeredEvent(String name, E notifier) {
+			this.name = name;
+			this.notifier = notifier;
+		}
+
+		/**
+		 * Constructor.
+		 *
+		 * @param name
+		 * @param object
+		 */
+		public TriggeredEvent(String name, E notifier, Object object) {
+			this.name = name;
+			this.notifier = notifier;
+			this.object = object;
+		}
+
+	}
+
+
+	/**
+	 * Return the number of traces
+	 *
+	 * @return
+	 */
+	public int size() {
+		return traces.size();
+	}
+
+	/**
+	 * Get the specified trace.
+	 *
+	 * @param i
+	 * @return
+	 */
+	public TriggeredEvent get(int index) {
+		return traces.get(index);
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.ui/.classpath b/layers/org.eclipse.papyrus.layers.ui/.classpath
new file mode 100755
index 0000000..ad32c83
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/.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/layers/org.eclipse.papyrus.layers.ui/.options b/layers/org.eclipse.papyrus.layers.ui/.options
new file mode 100755
index 0000000..5b673fc
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/.options
@@ -0,0 +1,2 @@
+# master switch  
+org.eclipse.papyrus.layers.ui/debug=true  
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/.project b/layers/org.eclipse.papyrus.layers.ui/.project
new file mode 100755
index 0000000..eef59ef
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.layers.ui</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/layers/org.eclipse.papyrus.layers.ui/.settings/org.eclipse.jdt.core.prefs b/layers/org.eclipse.papyrus.layers.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100755
index 0000000..94d61f0
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,291 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+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/layers/org.eclipse.papyrus.layers.ui/.settings/org.eclipse.jdt.ui.prefs b/layers/org.eclipse.papyrus.layers.ui/.settings/org.eclipse.jdt.ui.prefs
new file mode 100755
index 0000000..954281d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/.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.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
+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 v1.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-v10.html\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>
diff --git a/layers/org.eclipse.papyrus.layers.ui/META-INF/MANIFEST.MF b/layers/org.eclipse.papyrus.layers.ui/META-INF/MANIFEST.MF
new file mode 100755
index 0000000..e76929e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,44 @@
+Manifest-Version: 1.0
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.papyrus.infra.core.sasheditor;bundle-version="1.2.0",
+ org.eclipse.ui.forms;bundle-version="3.5.200",
+ org.eclipse.gmf.runtime.diagram.ui;bundle-version="1.7.0",
+ org.eclipse.emf;bundle-version="2.6.0",
+ org.eclipse.papyrus.infra.core;bundle-version="1.2.0",
+ org.eclipse.papyrus.layers.runtime;bundle-version="1.2.0",
+ org.eclipse.core.databinding,
+ org.eclipse.core.databinding.beans,
+ org.eclipse.core.databinding.observable,
+ org.eclipse.core.databinding.property,
+ org.eclipse.emf.databinding,
+ org.eclipse.uml2.uml;bundle-version="4.1.0",
+ org.eclipse.uml2.uml.edit;bundle-version="4.0.100",
+ org.eclipse.emf.databinding.edit;bundle-version="1.3.0",
+ org.eclipse.jface.databinding;bundle-version="1.6.200",
+ org.eclipse.gmf.runtime.diagram.ui.properties,
+ org.eclipse.ui.ide;bundle-version="3.9.0",
+ org.eclipse.papyrus.infra.emf;bundle-version="1.2.0",
+ org.eclipse.gmf.runtime.diagram.ui.resources.editor;bundle-version="1.7.0",
+ org.eclipse.core.expressions;bundle-version="3.4.500",
+ org.eclipse.papyrus.layers.stackmodel;bundle-version="1.2.0",
+ org.eclipse.papyrus.layers.notationmodel.edit;bundle-version="1.2.0",
+ org.eclipse.papyrus.views.modelexplorer;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.properties.ui;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.widgets;bundle-version="1.2.0",
+ org.eclipse.ui.navigator;bundle-version="3.5.300",
+ org.eclipse.gmf.runtime.notation.edit;bundle-version="1.7.0",
+ org.eclipse.papyrus.infra.services.labelprovider;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.gmfdiag.hyperlink;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0",
+ org.eclipse.papyrus.layers.stackmodel.edit;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.ui;bundle-version="1.2.0"
+Bundle-Vendor: %providerName
+Bundle-ActivationPolicy: lazy
+Bundle-Version: 1.2.0.qualifier
+Bundle-Name: %pluginName
+Bundle-Localization: plugin
+Bundle-ManifestVersion: 2
+Bundle-Activator: org.eclipse.papyrus.layers.ui.Activator
+Bundle-SymbolicName: org.eclipse.papyrus.layers.ui;singleton:=true
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/layers/org.eclipse.papyrus.layers.ui/about.html b/layers/org.eclipse.papyrus.layers.ui/about.html
new file mode 100755
index 0000000..d35d5ae
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/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>June 5, 2007</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
diff --git a/layers/org.eclipse.papyrus.layers.ui/build.properties b/layers/org.eclipse.papyrus.layers.ui/build.properties
new file mode 100755
index 0000000..f9283b7
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/build.properties
@@ -0,0 +1,11 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               icons/,\
+               about.html,\
+               plugin.properties,\
+               plugin.xml,\
+               properties/
+jars.compile.order = .
+src.includes = about.html
diff --git a/layers/org.eclipse.papyrus.layers.ui/icons/LayersStackApplication.gif b/layers/org.eclipse.papyrus.layers.ui/icons/LayersStackApplication.gif
new file mode 100755
index 0000000..b4ac2ec
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/icons/LayersStackApplication.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.ui/icons/icon_delete.png b/layers/org.eclipse.papyrus.layers.ui/icons/icon_delete.png
new file mode 100755
index 0000000..4991d87
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/icons/icon_delete.png
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.ui/icons/layers.gif b/layers/org.eclipse.papyrus.layers.ui/icons/layers.gif
new file mode 100755
index 0000000..34fb3c9
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/icons/layers.gif
Binary files differ
diff --git a/layers/org.eclipse.papyrus.layers.ui/plugin.properties b/layers/org.eclipse.papyrus.layers.ui/plugin.properties
new file mode 100755
index 0000000..45694f2
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/plugin.properties
@@ -0,0 +1,12 @@
+#################################################################################
+# 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 v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#     Cedric Dumoulin  Cedric.dumoulin@lifl.fr - Initial API and implementation
+##################################################################################
+pluginName=Layers UI (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/layers/org.eclipse.papyrus.layers.ui/plugin.xml b/layers/org.eclipse.papyrus.layers.ui/plugin.xml
new file mode 100755
index 0000000..8797c37
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/plugin.xml
@@ -0,0 +1,336 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.ui.views">
+      <view
+            category="org.eclipse.papyrus.views.category"
+            class="org.eclipse.papyrus.layers3.ui.view.LayersExplorerView"
+            icon="icons/LayersStackApplication.gif"
+            id="org.eclipse.papyrus.layers.ui.view.layersexplorer"
+            name="LayersExplorer"
+            restorable="true">
+      </view>
+   </extension>
+   <extension
+         point="org.eclipse.ui.menus">
+      <menuContribution
+            locationURI="toolbar:org.eclipse.ui.main.toolbar">
+         <toolbar
+               id="org.eclipse.papyrus.diagram.ui.toolbar">
+            <command
+                  commandId="org.eclipse.papyrus.layers.ui.commands.selectAssociatedElement"
+                  label="Select Associated Elements"
+                  style="push"
+                  tooltip="Select all elements associated to the current layer">
+            </command>
+         </toolbar>
+      </menuContribution>
+   </extension>
+   <extension
+         point="org.eclipse.ui.commands">
+      <command
+            id="org.eclipse.papyrus.layers.ui.commands.delete"
+            name="Delete">
+      </command>
+      <command
+            id="org.eclipse.papyrus.layers.ui.commands.createlayer"
+            name="Create Layer">
+      </command>
+      <command
+            id="org.eclipse.papyrus.layers.ui.commands.createregexplayer"
+            name="Create RegExp Layer">
+      </command>
+      <command
+            id="org.eclipse.papyrus.layers.ui.commands.createtoplayeroperator"
+            name="Create Top Layer Operator">
+      </command>
+      <command
+            id="org.eclipse.papyrus.layers.ui.commands.createstackedLayerOperator"
+            name="Create Stacked Layer Operator">
+      </command>
+      <command
+            id="org.eclipse.papyrus.layers.ui.commands.attachPropertyToLayer"
+            name="Attach a Property to a Layer">
+      </command>
+      <command
+            id="org.eclipse.papyrus.layers.ui.commands.attachPropertiesToLayer"
+            name="Attach Properties to a Layer">
+      </command>
+      <command
+            id="org.eclipse.papyrus.layers.ui.commands.attachDiagramViewsToLayer"
+            name="Attach Multiple Diagram Views to a Layer">
+      </command>
+      <command
+            defaultHandler="org.eclipse.papyrus.layers3.ui.commands.CreateLayerOperatorsFromParameter"
+            id="org.eclipse.papyrus.layers.ui.commands.createLayerOperator"
+            name="Create LayerOperators">
+         <commandParameter
+               id="org.eclipse.papyrus.layers.ui.createLayerOperator.parameters"
+               name="name"
+               optional="true"
+               values="org.eclipse.papyrus.layers3.ui.commands.LayerOperatorsParameterValues">
+         </commandParameter>
+      </command>
+      <command
+            id="org.eclipse.papyrus.layers.ui.commands.openlayersexplorerview"
+            name="Open Layers Explorer">
+      </command>
+      <command
+            id="org.eclipse.papyrus.layers.ui.commands.attachitemselectedindiagramtocurrentlayer"
+            name="Attach Views to Current Layer">
+      </command>
+      <command
+            id="org.eclipse.papyrus.layers.ui.commands.removeitemselectedindiagramfromcurrentlayer"
+            name="Remove Views from Current Layer">
+      </command>
+      <command
+            id="org.eclipse.papyrus.layers.ui.commands.createallviewsderivedlayer"
+            name="Create All View Derived Layer">
+      </command>
+   </extension>
+   <extension
+         name="Layers v3"
+         point="org.eclipse.ui.handlers">
+      <handler
+            class="org.eclipse.papyrus.layers3.ui.commands.AttachLayerStackCommand"
+            commandId="org.eclipse.papyrus.layers.ui.commands.attachLayerStack">
+      </handler>
+      <handler
+            class="org.eclipse.papyrus.layers3.ui.commands.DetachLayerStackCommand"
+            commandId="org.eclipse.papyrus.layers.ui.commands.detachLayerStack">
+      </handler>
+      <handler
+            class="org.eclipse.papyrus.layers3.ui.commands.CreateLayerHandler"
+            commandId="org.eclipse.papyrus.layers.ui.commands.createlayer">
+      </handler>
+      <handler
+            class="org.eclipse.papyrus.layers3.ui.commands.CreateRegExpLayerHandler"
+            commandId="org.eclipse.papyrus.layers.ui.commands.createregexplayer">
+      </handler>
+      <handler
+            class="org.eclipse.papyrus.layers3.ui.commands.CreateTopLayerOperatorHandler"
+            commandId="org.eclipse.papyrus.layers.ui.commands.createtoplayeroperator">
+      </handler>
+      <handler
+            class="org.eclipse.papyrus.layers3.ui.commands.CreateStackedLayerOperatorHandler"
+            commandId="org.eclipse.papyrus.layers.ui.commands.createstackedLayerOperator">
+      </handler>
+      <handler
+            class="org.eclipse.papyrus.layers3.ui.commands.AttachPropertyToLayer"
+            commandId="org.eclipse.papyrus.layers.ui.commands.attachPropertyToLayer">
+      </handler>
+      <handler
+            class="org.eclipse.papyrus.layers3.ui.commands.AttachPropertyFromListToLayer"
+            commandId="org.eclipse.papyrus.layers.ui.commands.attachPropertiesToLayer">
+      </handler>
+      <handler
+            class="org.eclipse.papyrus.layers3.ui.commands.AttachDiagramViewsToLayer"
+            commandId="org.eclipse.papyrus.layers.ui.commands.attachDiagramViewsToLayer">
+      </handler>
+      <handler
+            class="org.eclipse.papyrus.layers3.ui.commands.DeleteItemHandler"
+            commandId="org.eclipse.papyrus.layers.ui.commands.delete">
+      </handler>
+      <handler
+            class="org.eclipse.papyrus.layers3.ui.handlers.OpenLayerExplorerHandler"
+            commandId="org.eclipse.papyrus.layers.ui.commands.openlayersexplorerview">
+      </handler>
+      <handler
+            class="org.eclipse.papyrus.layers3.ui.handlers.AttachDiagramSelectedItemsToCurrentLayer"
+            commandId="org.eclipse.papyrus.layers.ui.commands.attachitemselectedindiagramtocurrentlayer">
+      </handler>
+      <handler
+            class="org.eclipse.papyrus.layers3.ui.handlers.RemoveDiagramSelectedItemsFromCurrentLayer"
+            commandId="org.eclipse.papyrus.layers.ui.commands.removeitemselectedindiagramfromcurrentlayer">
+      </handler>
+      <handler
+            class="org.eclipse.papyrus.layers3.ui.handlers.CreateAllViewsDerivedLayerHandler"
+            commandId="org.eclipse.papyrus.layers.ui.commands.createallviewsderivedlayer">
+      </handler>
+   </extension>
+   <extension
+         point="org.eclipse.ui.menus">
+      <menuContribution
+            locationURI="menu:org.eclipse.papyrus.ui.menu">
+         <menu
+               label="Layers">
+            <command
+                  commandId="org.eclipse.papyrus.layers.ui.commands.attachLayerStack"
+                  label="Attach Layer Stack"
+                  style="push"
+                  tooltip="Attach a Layer Stack to the diagram">
+            </command>
+            <command
+                  commandId="org.eclipse.papyrus.layers.ui.commands.detachLayerStack"
+                  label="Detach Layer Stack"
+                  style="push"
+                  tooltip="Detach a Layer Stack to the diagram">
+            </command>
+            <command
+                  commandId="org.eclipse.papyrus.layers.ui.commands.openlayersexplorerview"
+                  label="Open Layers Explorer"
+                  style="push"
+                  tooltip="Open the Layers Explorer View">
+            </command>
+         </menu>
+      </menuContribution>
+      <menuContribution
+            allPopups="false"
+            locationURI="popup:org.eclipse.papyrus.layers.stackmodel.ui.popupmenu">
+         <menu
+               label="Create Layers ..."
+               tooltip="Create a new leaf layers">
+            <command
+                  commandId="org.eclipse.papyrus.layers.ui.commands.createlayer"
+                  label="Create Layer"
+                  style="push"
+                  tooltip="Create a new Layer in selected parent">
+            </command>
+            <command
+                  commandId="org.eclipse.papyrus.layers.ui.commands.createregexplayer"
+                  label="Create RegExp  Layer"
+                  style="push"
+                  tooltip="Create a RegExp  Layer">
+            </command>
+            <command
+                  commandId="org.eclipse.papyrus.layers.ui.commands.createallviewsderivedlayer"
+                  label="Create AllViews Layer"
+                  style="push"
+                  tooltip="Create a All Views Derived Layer">
+            </command>
+         </menu>
+         <menu
+               commandId="org.eclipse.papyrus.layers.ui.commands.createLayerOperator"
+               id="org.eclipse.papyrus.layers.explorer.contextmenu.operators"
+               label="Create Operators ..."
+               tooltip="Create a new layer operators">
+            <command
+                  commandId="org.eclipse.papyrus.layers.ui.commands.createLayerOperator"
+                  label="Create Stacked Layers"
+                  style="push"
+                  tooltip="Create a new Stacked Layers Operator">
+               <parameter
+                     name="org.eclipse.papyrus.layers.ui.createLayerOperator.parameters"
+                     value="stackedLayersOperator">
+               </parameter>
+            </command>
+            <command
+                  commandId="org.eclipse.papyrus.layers.ui.commands.createtoplayeroperator"
+                  label="Create Top Layers"
+                  style="push"
+                  tooltip="Create a new Top Layers Operator">
+            </command>
+            <command
+                  commandId="org.eclipse.papyrus.layers.ui.commands.createLayerOperator"
+                  label="Create Minimum Stacked Layers"
+                  style="push"
+                  tooltip="Create a new Stacked Layers with Operators of type &apos;Minimum&apos; ">
+               <parameter
+                     name="org.eclipse.papyrus.layers.ui.createLayerOperator.parameters"
+                     value="stackedLayersOperatorMinimum">
+               </parameter>
+            </command>
+            <command
+                  commandId="org.eclipse.papyrus.layers.ui.commands.createLayerOperator"
+                  label="Create Maximum Stacked Layers"
+                  style="push"
+                  tooltip="Create a new Stacked Layers with Operators of type &apos;Maximum&apos; ">
+               <parameter
+                     name="org.eclipse.papyrus.layers.ui.createLayerOperator.parameters"
+                     value="stackedLayersOperatorMaximum">
+               </parameter>
+            </command>
+            <command
+                  commandId="org.eclipse.papyrus.layers.ui.commands.createLayerOperator"
+                  label="Create Average Stacked Layers"
+                  style="push"
+                  tooltip="Create a new Stacked Layers with Operators of type &apos;Average&apos; ">
+               <parameter
+                     name="org.eclipse.papyrus.layers.ui.createLayerOperator.parameters"
+                     value="stackedLayersOperatorAverage">
+               </parameter>
+            </command>
+         </menu>
+         <command
+               commandId="org.eclipse.papyrus.layers.ui.commands.attachPropertiesToLayer"
+               label="Attach Properties"
+               style="push"
+               tooltip="Attach Properties to a Layer">
+         </command>
+         <command
+               commandId="org.eclipse.papyrus.layers.ui.commands.attachDiagramViewsToLayer"
+               label="Attach Views"
+               style="push"
+               tooltip="Attach Multiple Diagram Views to a Layer">
+         </command>
+         <command
+               commandId="org.eclipse.papyrus.layers.ui.commands.delete"
+               icon="IMG_TOOL_DELETE"
+               label="Delete"
+               style="push"
+               tooltip="Delete Selected Item from the Layer Explorer">
+         </command>
+         <command
+               commandId="org.eclipse.papyrus.layers.ui.commands.attachitemselectedindiagramtocurrentlayer"
+               label="Attach Selected Views to Layer"
+               style="push"
+               tooltip="Attach selected views to the layer selected in the LayersExplorer">
+         </command>
+         <command
+               commandId="org.eclipse.papyrus.layers.ui.commands.removeitemselectedindiagramfromcurrentlayer"
+               label="Remove Selected Views from Layer"
+               style="push"
+               tooltip="Remove selected views from the layer selected in the LayersExplorer">
+         </command>
+         <separator
+               name="endseparator"
+               visible="false">
+         </separator>
+      </menuContribution>
+      <menuContribution
+            locationURI="popup:org.eclipse.gmf.runtime.diagram.ui.DiagramEditorContextMenu">
+         <menu
+               label="Layers">
+            <command
+                  commandId="org.eclipse.papyrus.layers.ui.commands.attachLayerStack"
+                  label="Attach Layer Stack"
+                  style="push"
+                  tooltip="Attach a Layer Stack to the diagram">
+            </command>
+            <command
+                  commandId="org.eclipse.papyrus.layers.ui.commands.detachLayerStack"
+                  label="Detach Layer Stack"
+                  style="push"
+                  tooltip="Detach a Layer Stack to the diagram">
+            </command>
+            <command
+                  commandId="org.eclipse.papyrus.layers.ui.commands.openlayersexplorerview"
+                  label="Open Layers Explorer"
+                  style="push"
+                  tooltip="Open the Layers Explorer View">
+            </command>
+            <command
+                  commandId="org.eclipse.papyrus.layers.ui.commands.attachitemselectedindiagramtocurrentlayer"
+                  label="Attach Views to Current Layer"
+                  style="push"
+                  tooltip="Attach selected views to the layer currently selected in the LayersExplorer">
+            </command>
+            <command
+                  commandId="org.eclipse.papyrus.layers.ui.commands.removeitemselectedindiagramfromcurrentlayer"
+                  label="Remove Views from Current Layer"
+                  style="push"
+                  tooltip="Remove selected views from the layer currently selected in the LayersExplorer">
+            </command>
+         </menu>
+      </menuContribution>
+   </extension>
+   <extension
+         point="org.eclipse.papyrus.infra.properties.contexts">
+      <context
+            contextModel="properties/properties-orig.ctx"
+            isCustomizable="true">
+      </context>
+   </extension>
+
+</plugin>
diff --git a/layers/org.eclipse.papyrus.layers.ui/pom.xml b/layers/org.eclipse.papyrus.layers.ui/pom.xml
new file mode 100755
index 0000000..17f71fa
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/pom.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.papyrus</groupId>
+		<artifactId>org.eclipse.papyrus.layers.parent</artifactId>
+		<version>1.2.0-SNAPSHOT</version>
+	</parent>
+	<artifactId>org.eclipse.papyrus.layers.ui</artifactId>
+	<packaging>eclipse-plugin</packaging>
+</project>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/properties-orig.ctx b/layers/org.eclipse.papyrus.layers.ui/properties/properties-orig.ctx
new file mode 100755
index 0000000..9b3f2a2
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/properties-orig.ctx
@@ -0,0 +1,1306 @@
+<?xml version="1.0" encoding="ASCII"?>
+<contexts:Context xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:constraints="http://www.eclipse.org/papyrus/constraints/0.9" xmlns:contexts="http://www.eclipse.org/papyrus/properties/contexts/0.9" name="layers">
+  <tabs label="layers" id="layers" category="org.eclipse.papyrus" priority="100">
+    <sections name="Single LayerNamedStyle" sectionFile="ui/SingleLayerNamedStyle.xwt">
+      <widget href="ui/SingleLayerNamedStyle.xwt#/"/>
+    </sections>
+    <sections name="Single LayersStack" sectionFile="ui/SingleLayersStack.xwt">
+      <widget href="ui/SingleLayersStack.xwt#/"/>
+    </sections>
+    <sections name="Single LayerExpression" sectionFile="ui/SingleLayerExpression.xwt">
+      <widget href="ui/SingleLayerExpression.xwt#/"/>
+    </sections>
+    <sections name="Single ApplicationDependantElement" sectionFile="ui/SingleApplicationDependantElement.xwt">
+      <widget href="ui/SingleApplicationDependantElement.xwt#/"/>
+    </sections>
+    <sections name="Single LayersStackApplication" sectionFile="ui/SingleLayersStackApplication.xwt">
+      <widget href="ui/SingleLayersStackApplication.xwt#/"/>
+    </sections>
+    <sections name="Single FolderElement" sectionFile="ui/SingleFolderElement.xwt">
+      <widget href="ui/SingleFolderElement.xwt#/"/>
+    </sections>
+    <sections name="Single LayerStackDescriptorRegistry" sectionFile="ui/SingleLayerStackDescriptorRegistry.xwt">
+      <widget href="ui/SingleLayerStackDescriptorRegistry.xwt#/"/>
+    </sections>
+    <sections name="Single PropertyRegistry" sectionFile="ui/SinglePropertyRegistry.xwt">
+      <widget href="ui/SinglePropertyRegistry.xwt#/"/>
+    </sections>
+    <sections name="Single Property" sectionFile="ui/SingleProperty.xwt">
+      <widget href="ui/SingleProperty.xwt#/"/>
+    </sections>
+    <sections name="Single Type" sectionFile="ui/SingleType.xwt">
+      <widget href="ui/SingleType.xwt#/"/>
+    </sections>
+    <sections name="Single Metamodel" sectionFile="ui/SingleMetamodel.xwt">
+      <widget href="ui/SingleMetamodel.xwt#/"/>
+    </sections>
+    <sections name="Single TypeInstance" sectionFile="ui/SingleTypeInstance.xwt">
+      <widget href="ui/SingleTypeInstance.xwt#/"/>
+    </sections>
+    <sections name="Single ComputePropertyValueCommandItf" sectionFile="ui/SingleComputePropertyValueCommandItf.xwt">
+      <widget href="ui/SingleComputePropertyValueCommandItf.xwt#/"/>
+    </sections>
+    <sections name="Single TypeRegistry" sectionFile="ui/SingleTypeRegistry.xwt">
+      <widget href="ui/SingleTypeRegistry.xwt#/"/>
+    </sections>
+    <sections name="Single StringToTypeMap" sectionFile="ui/SingleStringToTypeMap.xwt">
+      <widget href="ui/SingleStringToTypeMap.xwt#/"/>
+    </sections>
+    <sections name="Single LayerDescriptorRegistry" sectionFile="ui/SingleLayerDescriptorRegistry.xwt">
+      <widget href="ui/SingleLayerDescriptorRegistry.xwt#/"/>
+    </sections>
+    <sections name="Single LayerDescriptor" sectionFile="ui/SingleLayerDescriptor.xwt">
+      <widget href="ui/SingleLayerDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Single LayerApplicationFactory" sectionFile="ui/SingleLayerApplicationFactory.xwt">
+      <widget href="ui/SingleLayerApplicationFactory.xwt#/"/>
+    </sections>
+    <sections name="Single PropertySetterRegistry" sectionFile="ui/SinglePropertySetterRegistry.xwt">
+      <widget href="ui/SinglePropertySetterRegistry.xwt#/"/>
+    </sections>
+    <sections name="Single PropertySetter" sectionFile="ui/SinglePropertySetter.xwt">
+      <widget href="ui/SinglePropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Single StringToPropertySetter" sectionFile="ui/SingleStringToPropertySetter.xwt">
+      <widget href="ui/SingleStringToPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Single AbstractLayer" sectionFile="ui/SingleAbstractLayer.xwt">
+      <widget href="ui/SingleAbstractLayer.xwt#/"/>
+    </sections>
+    <sections name="Single StringToTypeInstanceMap" sectionFile="ui/SingleStringToTypeInstanceMap.xwt">
+      <widget href="ui/SingleStringToTypeInstanceMap.xwt#/"/>
+    </sections>
+    <sections name="Single Folder" sectionFile="ui/SingleFolder.xwt">
+      <widget href="ui/SingleFolder.xwt#/"/>
+    </sections>
+    <sections name="Single IntInstance" sectionFile="ui/SingleIntInstance.xwt">
+      <widget href="ui/SingleIntInstance.xwt#/"/>
+    </sections>
+    <sections name="Single BooleanInstance" sectionFile="ui/SingleBooleanInstance.xwt">
+      <widget href="ui/SingleBooleanInstance.xwt#/"/>
+    </sections>
+    <sections name="Single StringInstance" sectionFile="ui/SingleStringInstance.xwt">
+      <widget href="ui/SingleStringInstance.xwt#/"/>
+    </sections>
+    <sections name="Single IntType" sectionFile="ui/SingleIntType.xwt">
+      <widget href="ui/SingleIntType.xwt#/"/>
+    </sections>
+    <sections name="Single BooleanType" sectionFile="ui/SingleBooleanType.xwt">
+      <widget href="ui/SingleBooleanType.xwt#/"/>
+    </sections>
+    <sections name="Single StringType" sectionFile="ui/SingleStringType.xwt">
+      <widget href="ui/SingleStringType.xwt#/"/>
+    </sections>
+    <sections name="Single CustomType" sectionFile="ui/SingleCustomType.xwt">
+      <widget href="ui/SingleCustomType.xwt#/"/>
+    </sections>
+    <sections name="Single LayerOperator" sectionFile="ui/SingleLayerOperator.xwt">
+      <widget href="ui/SingleLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Single AbstractLayerOperator" sectionFile="ui/SingleAbstractLayerOperator.xwt">
+      <widget href="ui/SingleAbstractLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Single TopLayerOperator" sectionFile="ui/SingleTopLayerOperator.xwt">
+      <widget href="ui/SingleTopLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Single StackedLayerOperator" sectionFile="ui/SingleStackedLayerOperator.xwt">
+      <widget href="ui/SingleStackedLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Single CustomLayerOperator" sectionFile="ui/SingleCustomLayerOperator.xwt">
+      <widget href="ui/SingleCustomLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Single PropertyIndex" sectionFile="ui/SinglePropertyIndex.xwt">
+      <widget href="ui/SinglePropertyIndex.xwt#/"/>
+    </sections>
+    <sections name="Single StringToPropertyIndexMap" sectionFile="ui/SingleStringToPropertyIndexMap.xwt">
+      <widget href="ui/SingleStringToPropertyIndexMap.xwt#/"/>
+    </sections>
+    <sections name="Single SimpleLayerDescriptor" sectionFile="ui/SingleSimpleLayerDescriptor.xwt">
+      <widget href="ui/SingleSimpleLayerDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Single RegExpLayerDescriptor" sectionFile="ui/SingleRegExpLayerDescriptor.xwt">
+      <widget href="ui/SingleRegExpLayerDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Single NullInstance" sectionFile="ui/SingleNullInstance.xwt">
+      <widget href="ui/SingleNullInstance.xwt#/"/>
+    </sections>
+    <sections name="Single RegExpLayer" sectionFile="ui/SingleRegExpLayer.xwt">
+      <widget href="ui/SingleRegExpLayer.xwt#/"/>
+    </sections>
+    <sections name="Single Layer" sectionFile="ui/SingleLayer.xwt">
+      <widget href="ui/SingleLayer.xwt#/"/>
+    </sections>
+    <sections name="Single Color" sectionFile="ui/SingleColor.xwt">
+      <widget href="ui/SingleColor.xwt#/"/>
+    </sections>
+    <sections name="Single ColorInstance" sectionFile="ui/SingleColorInstance.xwt">
+      <widget href="ui/SingleColorInstance.xwt#/"/>
+    </sections>
+    <sections name="Single FillInstance" sectionFile="ui/SingleFillInstance.xwt">
+      <widget href="ui/SingleFillInstance.xwt#/"/>
+    </sections>
+    <sections name="Single Fill" sectionFile="ui/SingleFill.xwt">
+      <widget href="ui/SingleFill.xwt#/"/>
+    </sections>
+    <sections name="Single FillPropertySetter" sectionFile="ui/SingleFillPropertySetter.xwt">
+      <widget href="ui/SingleFillPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Single IsValidPropertySetter" sectionFile="ui/SingleIsValidPropertySetter.xwt">
+      <widget href="ui/SingleIsValidPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Single NullPropertySetter" sectionFile="ui/SingleNullPropertySetter.xwt">
+      <widget href="ui/SingleNullPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Single LineType" sectionFile="ui/SingleLineType.xwt">
+      <widget href="ui/SingleLineType.xwt#/"/>
+    </sections>
+    <sections name="Single LineInstance" sectionFile="ui/SingleLineInstance.xwt">
+      <widget href="ui/SingleLineInstance.xwt#/"/>
+    </sections>
+    <sections name="Single LinePropertySetter" sectionFile="ui/SingleLinePropertySetter.xwt">
+      <widget href="ui/SingleLinePropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Single FontPropertySetter" sectionFile="ui/SingleFontPropertySetter.xwt">
+      <widget href="ui/SingleFontPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Single FontInstance" sectionFile="ui/SingleFontInstance.xwt">
+      <widget href="ui/SingleFontInstance.xwt#/"/>
+    </sections>
+    <sections name="Single FontType" sectionFile="ui/SingleFontType.xwt">
+      <widget href="ui/SingleFontType.xwt#/"/>
+    </sections>
+    <sections name="Single IsVisiblePropertySetter" sectionFile="ui/SingleIsVisiblePropertySetter.xwt">
+      <widget href="ui/SingleIsVisiblePropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerNamedStyle" sectionFile="ui/MultipleLayerNamedStyle.xwt">
+      <widget href="ui/MultipleLayerNamedStyle.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayersStack" sectionFile="ui/MultipleLayersStack.xwt">
+      <widget href="ui/MultipleLayersStack.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerExpression" sectionFile="ui/MultipleLayerExpression.xwt">
+      <widget href="ui/MultipleLayerExpression.xwt#/"/>
+    </sections>
+    <sections name="Multiple ApplicationDependantElement" sectionFile="ui/MultipleApplicationDependantElement.xwt">
+      <widget href="ui/MultipleApplicationDependantElement.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayersStackApplication" sectionFile="ui/MultipleLayersStackApplication.xwt">
+      <widget href="ui/MultipleLayersStackApplication.xwt#/"/>
+    </sections>
+    <sections name="Multiple FolderElement" sectionFile="ui/MultipleFolderElement.xwt">
+      <widget href="ui/MultipleFolderElement.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerStackDescriptorRegistry" sectionFile="ui/MultipleLayerStackDescriptorRegistry.xwt">
+      <widget href="ui/MultipleLayerStackDescriptorRegistry.xwt#/"/>
+    </sections>
+    <sections name="Multiple PropertyRegistry" sectionFile="ui/MultiplePropertyRegistry.xwt">
+      <widget href="ui/MultiplePropertyRegistry.xwt#/"/>
+    </sections>
+    <sections name="Multiple Property" sectionFile="ui/MultipleProperty.xwt">
+      <widget href="ui/MultipleProperty.xwt#/"/>
+    </sections>
+    <sections name="Multiple Type" sectionFile="ui/MultipleType.xwt">
+      <widget href="ui/MultipleType.xwt#/"/>
+    </sections>
+    <sections name="Multiple Metamodel" sectionFile="ui/MultipleMetamodel.xwt">
+      <widget href="ui/MultipleMetamodel.xwt#/"/>
+    </sections>
+    <sections name="Multiple TypeInstance" sectionFile="ui/MultipleTypeInstance.xwt">
+      <widget href="ui/MultipleTypeInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple ComputePropertyValueCommandItf" sectionFile="ui/MultipleComputePropertyValueCommandItf.xwt">
+      <widget href="ui/MultipleComputePropertyValueCommandItf.xwt#/"/>
+    </sections>
+    <sections name="Multiple TypeRegistry" sectionFile="ui/MultipleTypeRegistry.xwt">
+      <widget href="ui/MultipleTypeRegistry.xwt#/"/>
+    </sections>
+    <sections name="Multiple StringToTypeMap" sectionFile="ui/MultipleStringToTypeMap.xwt">
+      <widget href="ui/MultipleStringToTypeMap.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerDescriptorRegistry" sectionFile="ui/MultipleLayerDescriptorRegistry.xwt">
+      <widget href="ui/MultipleLayerDescriptorRegistry.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerDescriptor" sectionFile="ui/MultipleLayerDescriptor.xwt">
+      <widget href="ui/MultipleLayerDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerApplicationFactory" sectionFile="ui/MultipleLayerApplicationFactory.xwt">
+      <widget href="ui/MultipleLayerApplicationFactory.xwt#/"/>
+    </sections>
+    <sections name="Multiple PropertySetterRegistry" sectionFile="ui/MultiplePropertySetterRegistry.xwt">
+      <widget href="ui/MultiplePropertySetterRegistry.xwt#/"/>
+    </sections>
+    <sections name="Multiple PropertySetter" sectionFile="ui/MultiplePropertySetter.xwt">
+      <widget href="ui/MultiplePropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple StringToPropertySetter" sectionFile="ui/MultipleStringToPropertySetter.xwt">
+      <widget href="ui/MultipleStringToPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple AbstractLayer" sectionFile="ui/MultipleAbstractLayer.xwt">
+      <widget href="ui/MultipleAbstractLayer.xwt#/"/>
+    </sections>
+    <sections name="Multiple StringToTypeInstanceMap" sectionFile="ui/MultipleStringToTypeInstanceMap.xwt">
+      <widget href="ui/MultipleStringToTypeInstanceMap.xwt#/"/>
+    </sections>
+    <sections name="Multiple Folder" sectionFile="ui/MultipleFolder.xwt">
+      <widget href="ui/MultipleFolder.xwt#/"/>
+    </sections>
+    <sections name="Multiple IntInstance" sectionFile="ui/MultipleIntInstance.xwt">
+      <widget href="ui/MultipleIntInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple BooleanInstance" sectionFile="ui/MultipleBooleanInstance.xwt">
+      <widget href="ui/MultipleBooleanInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple StringInstance" sectionFile="ui/MultipleStringInstance.xwt">
+      <widget href="ui/MultipleStringInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple IntType" sectionFile="ui/MultipleIntType.xwt">
+      <widget href="ui/MultipleIntType.xwt#/"/>
+    </sections>
+    <sections name="Multiple BooleanType" sectionFile="ui/MultipleBooleanType.xwt">
+      <widget href="ui/MultipleBooleanType.xwt#/"/>
+    </sections>
+    <sections name="Multiple StringType" sectionFile="ui/MultipleStringType.xwt">
+      <widget href="ui/MultipleStringType.xwt#/"/>
+    </sections>
+    <sections name="Multiple CustomType" sectionFile="ui/MultipleCustomType.xwt">
+      <widget href="ui/MultipleCustomType.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerOperator" sectionFile="ui/MultipleLayerOperator.xwt">
+      <widget href="ui/MultipleLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Multiple AbstractLayerOperator" sectionFile="ui/MultipleAbstractLayerOperator.xwt">
+      <widget href="ui/MultipleAbstractLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Multiple TopLayerOperator" sectionFile="ui/MultipleTopLayerOperator.xwt">
+      <widget href="ui/MultipleTopLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Multiple StackedLayerOperator" sectionFile="ui/MultipleStackedLayerOperator.xwt">
+      <widget href="ui/MultipleStackedLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Multiple CustomLayerOperator" sectionFile="ui/MultipleCustomLayerOperator.xwt">
+      <widget href="ui/MultipleCustomLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Multiple PropertyIndex" sectionFile="ui/MultiplePropertyIndex.xwt">
+      <widget href="ui/MultiplePropertyIndex.xwt#/"/>
+    </sections>
+    <sections name="Multiple StringToPropertyIndexMap" sectionFile="ui/MultipleStringToPropertyIndexMap.xwt">
+      <widget href="ui/MultipleStringToPropertyIndexMap.xwt#/"/>
+    </sections>
+    <sections name="Multiple SimpleLayerDescriptor" sectionFile="ui/MultipleSimpleLayerDescriptor.xwt">
+      <widget href="ui/MultipleSimpleLayerDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Multiple RegExpLayerDescriptor" sectionFile="ui/MultipleRegExpLayerDescriptor.xwt">
+      <widget href="ui/MultipleRegExpLayerDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Multiple NullInstance" sectionFile="ui/MultipleNullInstance.xwt">
+      <widget href="ui/MultipleNullInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple RegExpLayer" sectionFile="ui/MultipleRegExpLayer.xwt">
+      <widget href="ui/MultipleRegExpLayer.xwt#/"/>
+    </sections>
+    <sections name="Multiple Layer" sectionFile="ui/MultipleLayer.xwt">
+      <widget href="ui/MultipleLayer.xwt#/"/>
+    </sections>
+    <sections name="Multiple Color" sectionFile="ui/MultipleColor.xwt">
+      <widget href="ui/MultipleColor.xwt#/"/>
+    </sections>
+    <sections name="Multiple ColorInstance" sectionFile="ui/MultipleColorInstance.xwt">
+      <widget href="ui/MultipleColorInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple FillInstance" sectionFile="ui/MultipleFillInstance.xwt">
+      <widget href="ui/MultipleFillInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple Fill" sectionFile="ui/MultipleFill.xwt">
+      <widget href="ui/MultipleFill.xwt#/"/>
+    </sections>
+    <sections name="Multiple FillPropertySetter" sectionFile="ui/MultipleFillPropertySetter.xwt">
+      <widget href="ui/MultipleFillPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple IsValidPropertySetter" sectionFile="ui/MultipleIsValidPropertySetter.xwt">
+      <widget href="ui/MultipleIsValidPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple NullPropertySetter" sectionFile="ui/MultipleNullPropertySetter.xwt">
+      <widget href="ui/MultipleNullPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple LineType" sectionFile="ui/MultipleLineType.xwt">
+      <widget href="ui/MultipleLineType.xwt#/"/>
+    </sections>
+    <sections name="Multiple LineInstance" sectionFile="ui/MultipleLineInstance.xwt">
+      <widget href="ui/MultipleLineInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple LinePropertySetter" sectionFile="ui/MultipleLinePropertySetter.xwt">
+      <widget href="ui/MultipleLinePropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple FontPropertySetter" sectionFile="ui/MultipleFontPropertySetter.xwt">
+      <widget href="ui/MultipleFontPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple FontInstance" sectionFile="ui/MultipleFontInstance.xwt">
+      <widget href="ui/MultipleFontInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple FontType" sectionFile="ui/MultipleFontType.xwt">
+      <widget href="ui/MultipleFontType.xwt#/"/>
+    </sections>
+    <sections name="Multiple IsVisiblePropertySetter" sectionFile="ui/MultipleIsVisiblePropertySetter.xwt">
+      <widget href="ui/MultipleIsVisiblePropertySetter.xwt#/"/>
+    </sections>
+  </tabs>
+  <views name="Single LayerNamedStyle" sections="//@tabs.0/@sections.0" automaticContext="true" datacontexts="//@dataContexts.0/@elements.0">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerNamedStyle">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerNamedStyle"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single LayersStack" sections="//@tabs.0/@sections.1" automaticContext="true" datacontexts="//@dataContexts.0/@elements.1">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayersStack">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStack"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single LayerExpression" sections="//@tabs.0/@sections.2" automaticContext="true" datacontexts="//@dataContexts.0/@elements.2">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerExpression">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerExpression"/>
+    </constraints>
+  </views>
+  <views name="Single ApplicationDependantElement" sections="//@tabs.0/@sections.3" automaticContext="true" datacontexts="//@dataContexts.0/@elements.3">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleApplicationDependantElement">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="ApplicationDependantElement"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single LayersStackApplication" sections="//@tabs.0/@sections.4" automaticContext="true" datacontexts="//@dataContexts.0/@elements.4">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayersStackApplication">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStackApplication"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single FolderElement" sections="//@tabs.0/@sections.5" automaticContext="true" datacontexts="//@dataContexts.0/@elements.5">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFolderElement">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FolderElement"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single LayerStackDescriptorRegistry" sections="//@tabs.0/@sections.6" automaticContext="true" datacontexts="//@dataContexts.0/@elements.6">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerStackDescriptorRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerStackDescriptorRegistry"/>
+    </constraints>
+  </views>
+  <views name="Single PropertyRegistry" sections="//@tabs.0/@sections.7" automaticContext="true" datacontexts="//@dataContexts.0/@elements.7">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertyRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyRegistry"/>
+    </constraints>
+  </views>
+  <views name="Single Property" sections="//@tabs.0/@sections.8" automaticContext="true" datacontexts="//@dataContexts.0/@elements.8">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleProperty">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Property"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single Type" sections="//@tabs.0/@sections.9" automaticContext="true" datacontexts="//@dataContexts.0/@elements.9">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Type"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single Metamodel" sections="//@tabs.0/@sections.10" automaticContext="true" datacontexts="//@dataContexts.0/@elements.10">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleMetamodel">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Metamodel"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single TypeInstance" sections="//@tabs.0/@sections.11" automaticContext="true" datacontexts="//@dataContexts.0/@elements.11">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleTypeInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="TypeInstance"/>
+    </constraints>
+  </views>
+  <views name="Single ComputePropertyValueCommandItf" sections="//@tabs.0/@sections.12" automaticContext="true" datacontexts="//@dataContexts.0/@elements.12">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleComputePropertyValueCommandItf">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="ComputePropertyValueCommandItf"/>
+    </constraints>
+  </views>
+  <views name="Single TypeRegistry" sections="//@tabs.0/@sections.13" automaticContext="true" datacontexts="//@dataContexts.0/@elements.13">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleTypeRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="TypeRegistry"/>
+    </constraints>
+  </views>
+  <views name="Single StringToTypeMap" sections="//@tabs.0/@sections.14" automaticContext="true" datacontexts="//@dataContexts.0/@elements.14">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToTypeMap">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeMap"/>
+    </constraints>
+  </views>
+  <views name="Single LayerDescriptorRegistry" sections="//@tabs.0/@sections.15" automaticContext="true" datacontexts="//@dataContexts.0/@elements.15">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerDescriptorRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptorRegistry"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single LayerDescriptor" sections="//@tabs.0/@sections.16" automaticContext="true" datacontexts="//@dataContexts.0/@elements.16">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptor"/>
+    </constraints>
+  </views>
+  <views name="Single LayerApplicationFactory" sections="//@tabs.0/@sections.17" automaticContext="true" datacontexts="//@dataContexts.0/@elements.17">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerApplicationFactory">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerApplicationFactory"/>
+    </constraints>
+  </views>
+  <views name="Single PropertySetterRegistry" sections="//@tabs.0/@sections.18" automaticContext="true" datacontexts="//@dataContexts.0/@elements.18">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertySetterRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetterRegistry"/>
+    </constraints>
+  </views>
+  <views name="Single PropertySetter" sections="//@tabs.0/@sections.19" automaticContext="true" datacontexts="//@dataContexts.0/@elements.19">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetter"/>
+    </constraints>
+  </views>
+  <views name="Single StringToPropertySetter" sections="//@tabs.0/@sections.20" automaticContext="true" datacontexts="//@dataContexts.0/@elements.20">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single AbstractLayer" sections="//@tabs.0/@sections.21" automaticContext="true" datacontexts="//@dataContexts.0/@elements.21">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleAbstractLayer">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayer"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single StringToTypeInstanceMap" sections="//@tabs.0/@sections.22" automaticContext="true" datacontexts="//@dataContexts.0/@elements.22">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToTypeInstanceMap">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeInstanceMap"/>
+    </constraints>
+  </views>
+  <views name="Single Folder" sections="//@tabs.0/@sections.23" automaticContext="true" datacontexts="//@dataContexts.0/@elements.23">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFolder">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Folder"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single IntInstance" sections="//@tabs.0/@sections.24" automaticContext="true" datacontexts="//@dataContexts.0/@elements.24">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIntInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IntInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single BooleanInstance" sections="//@tabs.0/@sections.25" automaticContext="true" datacontexts="//@dataContexts.0/@elements.25">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleBooleanInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanInstance"/>
+    </constraints>
+  </views>
+  <views name="Single StringInstance" sections="//@tabs.0/@sections.26" automaticContext="true" datacontexts="//@dataContexts.0/@elements.26">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringInstance"/>
+    </constraints>
+  </views>
+  <views name="Single IntType" sections="//@tabs.0/@sections.27" automaticContext="true" datacontexts="//@dataContexts.0/@elements.27">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIntType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IntType"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single BooleanType" sections="//@tabs.0/@sections.28" automaticContext="true" datacontexts="//@dataContexts.0/@elements.28">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleBooleanType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanType"/>
+    </constraints>
+  </views>
+  <views name="Single StringType" sections="//@tabs.0/@sections.29" automaticContext="true" datacontexts="//@dataContexts.0/@elements.29">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringType"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single CustomType" sections="//@tabs.0/@sections.30" automaticContext="true" datacontexts="//@dataContexts.0/@elements.30">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleCustomType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="CustomType"/>
+    </constraints>
+  </views>
+  <views name="Single LayerOperator" sections="//@tabs.0/@sections.31" automaticContext="true" datacontexts="//@dataContexts.0/@elements.31">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperator"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single AbstractLayerOperator" sections="//@tabs.0/@sections.32" automaticContext="true" datacontexts="//@dataContexts.0/@elements.32">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleAbstractLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayerOperator"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single TopLayerOperator" sections="//@tabs.0/@sections.33" automaticContext="true" datacontexts="//@dataContexts.0/@elements.33">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleTopLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="TopLayerOperator"/>
+    </constraints>
+  </views>
+  <views name="Single StackedLayerOperator" sections="//@tabs.0/@sections.34" automaticContext="true" datacontexts="//@dataContexts.0/@elements.34">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStackedLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StackedLayerOperator"/>
+    </constraints>
+  </views>
+  <views name="Single CustomLayerOperator" sections="//@tabs.0/@sections.35" automaticContext="true" datacontexts="//@dataContexts.0/@elements.35">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleCustomLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="CustomLayerOperator"/>
+    </constraints>
+  </views>
+  <views name="Single PropertyIndex" sections="//@tabs.0/@sections.36" automaticContext="true" datacontexts="//@dataContexts.0/@elements.36">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertyIndex">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyIndex"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single StringToPropertyIndexMap" sections="//@tabs.0/@sections.37" automaticContext="true" datacontexts="//@dataContexts.0/@elements.37">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToPropertyIndexMap">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertyIndexMap"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single SimpleLayerDescriptor" sections="//@tabs.0/@sections.38" automaticContext="true" datacontexts="//@dataContexts.0/@elements.38">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleSimpleLayerDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="SimpleLayerDescriptor"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single RegExpLayerDescriptor" sections="//@tabs.0/@sections.39" automaticContext="true" datacontexts="//@dataContexts.0/@elements.39">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleRegExpLayerDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayerDescriptor"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single NullInstance" sections="//@tabs.0/@sections.40" automaticContext="true" datacontexts="//@dataContexts.0/@elements.40">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleNullInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="NullInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single RegExpLayer" sections="//@tabs.0/@sections.41" automaticContext="true" datacontexts="//@dataContexts.0/@elements.41">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleRegExpLayer">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayer"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single Layer" sections="//@tabs.0/@sections.42" automaticContext="true" datacontexts="//@dataContexts.0/@elements.42">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayer">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Layer"/>
+    </constraints>
+  </views>
+  <views name="Single Color" sections="//@tabs.0/@sections.43" automaticContext="true" datacontexts="//@dataContexts.0/@elements.43">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleColor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Color"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single ColorInstances" sections="//@tabs.0/@sections.44" automaticContext="true" datacontexts="//@dataContexts.0/@elements.44">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleColorInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="ColorInstance"/>
+    </constraints>
+  </views>
+  <views name="Single FillInstance" sections="//@tabs.0/@sections.45" automaticContext="true" datacontexts="//@dataContexts.0/@elements.45">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFillInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FillInstance"/>
+    </constraints>
+  </views>
+  <views name="Single Fill" sections="//@tabs.0/@sections.46" automaticContext="true" datacontexts="//@dataContexts.0/@elements.46">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFill">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Fill"/>
+    </constraints>
+  </views>
+  <views name="Single FillPropertySetter" sections="//@tabs.0/@sections.47" automaticContext="true" datacontexts="//@dataContexts.0/@elements.47">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFillPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FillPropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single IsValidPropertySetter" sections="//@tabs.0/@sections.48" automaticContext="true" datacontexts="//@dataContexts.0/@elements.48">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIsValidPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IsValidPropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single NullPropertySetter" sections="//@tabs.0/@sections.49" automaticContext="true" datacontexts="//@dataContexts.0/@elements.49">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleNullPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="NullPropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single LineType" sections="//@tabs.0/@sections.50" automaticContext="true" datacontexts="//@dataContexts.0/@elements.50">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLineType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LineType"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single LineInstance" sections="//@tabs.0/@sections.51" automaticContext="true" datacontexts="//@dataContexts.0/@elements.51">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLineInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LineInstance"/>
+    </constraints>
+  </views>
+  <views name="Single LinePropertySetter" sections="//@tabs.0/@sections.52" automaticContext="true" datacontexts="//@dataContexts.0/@elements.52">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLinePropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LinePropertySetter"/>
+    </constraints>
+  </views>
+  <views name="Single FontPropertySetter" sections="//@tabs.0/@sections.53" automaticContext="true" datacontexts="//@dataContexts.0/@elements.53">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFontPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FontPropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single FontInstance" sections="//@tabs.0/@sections.54" automaticContext="true" datacontexts="//@dataContexts.0/@elements.54">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFontInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FontInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single FontType" sections="//@tabs.0/@sections.55" automaticContext="true" datacontexts="//@dataContexts.0/@elements.55">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFontType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FontType"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single IsVisiblePropertySetter" sections="//@tabs.0/@sections.56" automaticContext="true" datacontexts="//@dataContexts.0/@elements.56">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIsVisiblePropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IsVisiblePropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerNamedStyle" sections="//@tabs.0/@sections.57" automaticContext="true" datacontexts="//@dataContexts.0/@elements.0">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerNamedStyle">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerNamedStyle"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayersStack" sections="//@tabs.0/@sections.58" automaticContext="true" datacontexts="//@dataContexts.0/@elements.1">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayersStack">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStack"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerExpression" sections="//@tabs.0/@sections.59" automaticContext="true" datacontexts="//@dataContexts.0/@elements.2">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerExpression">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerExpression"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple ApplicationDependantElement" sections="//@tabs.0/@sections.60" automaticContext="true" datacontexts="//@dataContexts.0/@elements.3">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleApplicationDependantElement">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="ApplicationDependantElement"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayersStackApplication" sections="//@tabs.0/@sections.61" automaticContext="true" datacontexts="//@dataContexts.0/@elements.4">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayersStackApplication">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStackApplication"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple FolderElement" sections="//@tabs.0/@sections.62" automaticContext="true" datacontexts="//@dataContexts.0/@elements.5">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFolderElement">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FolderElement"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerStackDescriptorRegistry" sections="//@tabs.0/@sections.63" automaticContext="true" datacontexts="//@dataContexts.0/@elements.6">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerStackDescriptorRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerStackDescriptorRegistry"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple PropertyRegistry" sections="//@tabs.0/@sections.64" automaticContext="true" datacontexts="//@dataContexts.0/@elements.7">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertyRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyRegistry"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple Property" sections="//@tabs.0/@sections.65" automaticContext="true" datacontexts="//@dataContexts.0/@elements.8">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleProperty">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Property"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple Type" sections="//@tabs.0/@sections.66" automaticContext="true" datacontexts="//@dataContexts.0/@elements.9">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Type"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple Metamodel" sections="//@tabs.0/@sections.67" automaticContext="true" datacontexts="//@dataContexts.0/@elements.10">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleMetamodel">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Metamodel"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple TypeInstance" sections="//@tabs.0/@sections.68" automaticContext="true" datacontexts="//@dataContexts.0/@elements.11">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleTypeInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="TypeInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple ComputePropertyValueCommandItf" sections="//@tabs.0/@sections.69" automaticContext="true" datacontexts="//@dataContexts.0/@elements.12">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleComputePropertyValueCommandItf">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="ComputePropertyValueCommandItf"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple TypeRegistry" sections="//@tabs.0/@sections.70" automaticContext="true" datacontexts="//@dataContexts.0/@elements.13">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleTypeRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="TypeRegistry"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple StringToTypeMap" sections="//@tabs.0/@sections.71" automaticContext="true" datacontexts="//@dataContexts.0/@elements.14">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToTypeMap">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeMap"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerDescriptorRegistry" sections="//@tabs.0/@sections.72" automaticContext="true" datacontexts="//@dataContexts.0/@elements.15">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerDescriptorRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptorRegistry"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerDescriptor" sections="//@tabs.0/@sections.73" automaticContext="true" datacontexts="//@dataContexts.0/@elements.16">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptor"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerApplicationFactory" sections="//@tabs.0/@sections.74" automaticContext="true" datacontexts="//@dataContexts.0/@elements.17">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerApplicationFactory">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerApplicationFactory"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple PropertySetterRegistry" sections="//@tabs.0/@sections.75" automaticContext="true" datacontexts="//@dataContexts.0/@elements.18">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertySetterRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetterRegistry"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple PropertySetter" sections="//@tabs.0/@sections.76" automaticContext="true" datacontexts="//@dataContexts.0/@elements.19">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple StringToPropertySetter" sections="//@tabs.0/@sections.77" automaticContext="true" datacontexts="//@dataContexts.0/@elements.20">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertySetter"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple AbstractLayer" sections="//@tabs.0/@sections.78" automaticContext="true" datacontexts="//@dataContexts.0/@elements.21">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleAbstractLayer">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayer"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple StringToTypeInstanceMap" sections="//@tabs.0/@sections.79" automaticContext="true" datacontexts="//@dataContexts.0/@elements.22">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToTypeInstanceMap">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeInstanceMap"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple Folder" sections="//@tabs.0/@sections.80" automaticContext="true" datacontexts="//@dataContexts.0/@elements.23">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFolder">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Folder"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple IntInstance" sections="//@tabs.0/@sections.81" automaticContext="true" datacontexts="//@dataContexts.0/@elements.24">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIntInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IntInstance"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple BooleanInstance" sections="//@tabs.0/@sections.82" automaticContext="true" datacontexts="//@dataContexts.0/@elements.25">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleBooleanInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanInstance"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple StringInstance" sections="//@tabs.0/@sections.83" automaticContext="true" datacontexts="//@dataContexts.0/@elements.26">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple IntType" sections="//@tabs.0/@sections.84" automaticContext="true" datacontexts="//@dataContexts.0/@elements.27">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIntType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IntType"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple BooleanType" sections="//@tabs.0/@sections.85" automaticContext="true" datacontexts="//@dataContexts.0/@elements.28">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleBooleanType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanType"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple StringType" sections="//@tabs.0/@sections.86" automaticContext="true" datacontexts="//@dataContexts.0/@elements.29">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringType"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple CustomType" sections="//@tabs.0/@sections.87" automaticContext="true" datacontexts="//@dataContexts.0/@elements.30">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleCustomType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="CustomType"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerOperator" sections="//@tabs.0/@sections.88" automaticContext="true" datacontexts="//@dataContexts.0/@elements.31">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperator"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple AbstractLayerOperator" sections="//@tabs.0/@sections.89" automaticContext="true" datacontexts="//@dataContexts.0/@elements.32">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleAbstractLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayerOperator"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple TopLayerOperator" sections="//@tabs.0/@sections.90" automaticContext="true" datacontexts="//@dataContexts.0/@elements.33">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleTopLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="TopLayerOperator"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple StackedLayerOperator" sections="//@tabs.0/@sections.91" automaticContext="true" datacontexts="//@dataContexts.0/@elements.34">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStackedLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StackedLayerOperator"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple CustomLayerOperator" sections="//@tabs.0/@sections.92" automaticContext="true" datacontexts="//@dataContexts.0/@elements.35">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleCustomLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="CustomLayerOperator"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple PropertyIndex" sections="//@tabs.0/@sections.93" automaticContext="true" datacontexts="//@dataContexts.0/@elements.36">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertyIndex">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyIndex"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple StringToPropertyIndexMap" sections="//@tabs.0/@sections.94" automaticContext="true" datacontexts="//@dataContexts.0/@elements.37">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToPropertyIndexMap">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertyIndexMap"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple SimpleLayerDescriptor" sections="//@tabs.0/@sections.95" automaticContext="true" datacontexts="//@dataContexts.0/@elements.38">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleSimpleLayerDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="SimpleLayerDescriptor"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple RegExpLayerDescriptor" sections="//@tabs.0/@sections.96" automaticContext="true" datacontexts="//@dataContexts.0/@elements.39">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleRegExpLayerDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayerDescriptor"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple NullInstance" sections="//@tabs.0/@sections.97" automaticContext="true" datacontexts="//@dataContexts.0/@elements.40">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleNullInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="NullInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple RegExpLayer" sections="//@tabs.0/@sections.98" automaticContext="true" datacontexts="//@dataContexts.0/@elements.41">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleRegExpLayer">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayer"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple Layer" sections="//@tabs.0/@sections.99" automaticContext="true" datacontexts="//@dataContexts.0/@elements.42">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayer">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Layer"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple Color" sections="//@tabs.0/@sections.100" automaticContext="true" datacontexts="//@dataContexts.0/@elements.43">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleColor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Color"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple ColorInstance" sections="//@tabs.0/@sections.101" automaticContext="true" datacontexts="//@dataContexts.0/@elements.44">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleColorInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="ColorInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple FillInstance" sections="//@tabs.0/@sections.102" automaticContext="true" datacontexts="//@dataContexts.0/@elements.45">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFillInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FillInstance"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple Fill" sections="//@tabs.0/@sections.103" automaticContext="true" datacontexts="//@dataContexts.0/@elements.46">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFill">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Fill"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple FillPropertySetter" sections="//@tabs.0/@sections.104" automaticContext="true" datacontexts="//@dataContexts.0/@elements.47">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFillPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FillPropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple IsValidPropertySetter" sections="//@tabs.0/@sections.105" automaticContext="true" datacontexts="//@dataContexts.0/@elements.48">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIsValidPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IsValidPropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple NullPropertySetter" sections="//@tabs.0/@sections.106" automaticContext="true" datacontexts="//@dataContexts.0/@elements.49">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleNullPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="NullPropertySetter"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LineType" sections="//@tabs.0/@sections.107" automaticContext="true" datacontexts="//@dataContexts.0/@elements.50">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLineType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LineType"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LineInstance" sections="//@tabs.0/@sections.108" automaticContext="true" datacontexts="//@dataContexts.0/@elements.51">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLineInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LineInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LinePropertySetter" sections="//@tabs.0/@sections.109" automaticContext="true" datacontexts="//@dataContexts.0/@elements.52">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLinePropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LinePropertySetter"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple FontPropertySetter" sections="//@tabs.0/@sections.110" automaticContext="true" datacontexts="//@dataContexts.0/@elements.53">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFontPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FontPropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple FontInstance" sections="//@tabs.0/@sections.111" automaticContext="true" datacontexts="//@dataContexts.0/@elements.54">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFontInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FontInstance"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple FontType" sections="//@tabs.0/@sections.112" automaticContext="true" datacontexts="//@dataContexts.0/@elements.55">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFontType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FontType"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple IsVisiblePropertySetter" sections="//@tabs.0/@sections.113" automaticContext="true" datacontexts="//@dataContexts.0/@elements.56">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIsVisiblePropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IsVisiblePropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <dataContexts name="layers" label="layers">
+    <elements name="LayerNamedStyle">
+      <properties name="layersStack" type="Reference" multiplicity="-1"/>
+    </elements>
+    <elements name="LayersStack">
+      <properties name="layers" type="Reference"/>
+      <properties name="name"/>
+      <properties name="description"/>
+      <properties name="diagram" type="Reference"/>
+    </elements>
+    <elements name="LayerExpression" supertypes="//@dataContexts.0/@elements.3">
+      <properties name="name"/>
+      <properties name="description"/>
+    </elements>
+    <elements name="ApplicationDependantElement">
+      <properties name="application" type="Reference"/>
+    </elements>
+    <elements name="LayersStackApplication" supertypes="//@dataContexts.0/@elements.5">
+      <properties name="layersStacks" type="Reference" multiplicity="-1"/>
+      <properties name="layerStackRegistry" type="Reference"/>
+      <properties name="propertyRegistry" type="Reference"/>
+      <properties name="layerDescriptorRegistry" type="Reference"/>
+      <properties name="factory" type="Reference"/>
+      <properties name="propertySetterRegistry" type="Reference"/>
+    </elements>
+    <elements name="FolderElement"/>
+    <elements name="LayerStackDescriptorRegistry"/>
+    <elements name="PropertyRegistry">
+      <properties name="properties" type="Reference" multiplicity="-1"/>
+      <properties name="typeRegistry" type="Reference"/>
+    </elements>
+    <elements name="Property" supertypes="//@dataContexts.0/@elements.5">
+      <properties name="type" type="Reference"/>
+      <properties name="defaultValue" type="Reference"/>
+      <properties name="name"/>
+      <properties name="description"/>
+      <properties name="index" type="Integer"/>
+    </elements>
+    <elements name="Type" supertypes="//@dataContexts.0/@elements.5">
+      <properties name="metamodel" type="Reference"/>
+      <properties name="name"/>
+      <properties name="description"/>
+    </elements>
+    <elements name="Metamodel" supertypes="//@dataContexts.0/@elements.5">
+      <properties name="name"/>
+      <properties name="description"/>
+      <properties name="nsuri"/>
+      <properties name="pluginID"/>
+      <properties name="ePackageInstanceName"/>
+      <properties name="isTypeValid" type="Boolean"/>
+    </elements>
+    <elements name="TypeInstance" supertypes="//@dataContexts.0/@elements.12"/>
+    <elements name="ComputePropertyValueCommandItf"/>
+    <elements name="TypeRegistry">
+      <properties name="types" type="Reference" multiplicity="-1"/>
+    </elements>
+    <elements name="StringToTypeMap">
+      <properties name="value" type="Reference"/>
+      <properties name="key"/>
+    </elements>
+    <elements name="LayerDescriptorRegistry">
+      <properties name="layerDescriptors" type="Reference" multiplicity="-1"/>
+    </elements>
+    <elements name="LayerDescriptor">
+      <properties name="propertyRegistry" type="Reference"/>
+    </elements>
+    <elements name="LayerApplicationFactory">
+      <properties name="application" type="Reference"/>
+    </elements>
+    <elements name="PropertySetterRegistry">
+      <properties name="propertySetters" type="Reference" multiplicity="-1"/>
+      <properties name="setterMap" type="Reference" multiplicity="-1"/>
+      <properties name="application" type="Reference"/>
+    </elements>
+    <elements name="PropertySetter">
+      <properties name="property" type="Reference"/>
+      <properties name="propertyName"/>
+    </elements>
+    <elements name="StringToPropertySetter">
+      <properties name="key"/>
+      <properties name="value" type="Reference"/>
+    </elements>
+    <elements name="AbstractLayer" supertypes="//@dataContexts.0/@elements.2">
+      <properties name="propertyValues" type="Reference" multiplicity="-1"/>
+      <properties name="propertyValueMap" type="Reference" multiplicity="-1"/>
+      <properties name="layerDescriptor" type="Reference"/>
+      <properties name="views" type="Reference" multiplicity="-1"/>
+      <properties name="attachedProperties" type="Reference" multiplicity="-1"/>
+    </elements>
+    <elements name="StringToTypeInstanceMap">
+      <properties name="key"/>
+      <properties name="value" type="Reference"/>
+    </elements>
+    <elements name="Folder" supertypes="//@dataContexts.0/@elements.5">
+      <properties name="elements" type="Reference" multiplicity="-1"/>
+      <properties name="name"/>
+    </elements>
+    <elements name="IntInstance" supertypes="//@dataContexts.0/@elements.11">
+      <properties name="value" type="Integer"/>
+    </elements>
+    <elements name="BooleanInstance" supertypes="//@dataContexts.0/@elements.11">
+      <properties name="value" type="Boolean"/>
+    </elements>
+    <elements name="StringInstance" supertypes="//@dataContexts.0/@elements.11">
+      <properties name="value"/>
+    </elements>
+    <elements name="IntType" supertypes="//@dataContexts.0/@elements.9"/>
+    <elements name="BooleanType" supertypes="//@dataContexts.0/@elements.9"/>
+    <elements name="StringType" supertypes="//@dataContexts.0/@elements.9"/>
+    <elements name="CustomType" supertypes="//@dataContexts.0/@elements.9">
+      <properties name="classifier"/>
+    </elements>
+    <elements name="LayerOperator" supertypes="//@dataContexts.0/@elements.2">
+      <properties name="layers" type="Reference" multiplicity="-1"/>
+    </elements>
+    <elements name="AbstractLayerOperator" supertypes="//@dataContexts.0/@elements.31"/>
+    <elements name="TopLayerOperator" supertypes="//@dataContexts.0/@elements.32"/>
+    <elements name="StackedLayerOperator" supertypes="//@dataContexts.0/@elements.32"/>
+    <elements name="CustomLayerOperator" supertypes="//@dataContexts.0/@elements.31"/>
+    <elements name="PropertyIndex">
+      <properties name="property" type="Reference"/>
+      <properties name="index" type="Integer"/>
+    </elements>
+    <elements name="StringToPropertyIndexMap">
+      <properties name="value" type="Reference"/>
+      <properties name="key"/>
+    </elements>
+    <elements name="SimpleLayerDescriptor" supertypes="//@dataContexts.0/@elements.16"/>
+    <elements name="RegExpLayerDescriptor" supertypes="//@dataContexts.0/@elements.16"/>
+    <elements name="NullInstance" supertypes="//@dataContexts.0/@elements.11"/>
+    <elements name="RegExpLayer" supertypes="//@dataContexts.0/@elements.21"/>
+    <elements name="Layer" supertypes="//@dataContexts.0/@elements.21"/>
+    <elements name="Color" supertypes="//@dataContexts.0/@elements.9"/>
+    <elements name="ColorInstance" supertypes="//@dataContexts.0/@elements.11">
+      <properties name="value" type="Integer"/>
+    </elements>
+    <elements name="FillInstance" supertypes="//@dataContexts.0/@elements.11">
+      <properties name="transparency" type="Integer"/>
+      <properties name="fillColor" type="Reference"/>
+    </elements>
+    <elements name="Fill" supertypes="//@dataContexts.0/@elements.9"/>
+    <elements name="FillPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+    <elements name="IsValidPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+    <elements name="NullPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+    <elements name="LineType" supertypes="//@dataContexts.0/@elements.9"/>
+    <elements name="LineInstance" supertypes="//@dataContexts.0/@elements.11">
+      <properties name="lineColor" type="Integer"/>
+      <properties name="lineWith" type="Integer"/>
+    </elements>
+    <elements name="LinePropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+    <elements name="FontPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+    <elements name="FontInstance" supertypes="//@dataContexts.0/@elements.11">
+      <properties name="fontColor" type="Integer"/>
+      <properties name="fontName"/>
+      <properties name="fontHeigh" type="Integer"/>
+      <properties name="bold" type="Boolean"/>
+    </elements>
+    <elements name="FontType" supertypes="//@dataContexts.0/@elements.9"/>
+    <elements name="IsVisiblePropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+    <modelElementFactory href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@modelElementFactories.0"/>
+  </dataContexts>
+</contexts:Context>
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/properties-v1.ctx b/layers/org.eclipse.papyrus.layers.ui/properties/properties-v1.ctx
new file mode 100755
index 0000000..9b3f2a2
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/properties-v1.ctx
@@ -0,0 +1,1306 @@
+<?xml version="1.0" encoding="ASCII"?>
+<contexts:Context xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:constraints="http://www.eclipse.org/papyrus/constraints/0.9" xmlns:contexts="http://www.eclipse.org/papyrus/properties/contexts/0.9" name="layers">
+  <tabs label="layers" id="layers" category="org.eclipse.papyrus" priority="100">
+    <sections name="Single LayerNamedStyle" sectionFile="ui/SingleLayerNamedStyle.xwt">
+      <widget href="ui/SingleLayerNamedStyle.xwt#/"/>
+    </sections>
+    <sections name="Single LayersStack" sectionFile="ui/SingleLayersStack.xwt">
+      <widget href="ui/SingleLayersStack.xwt#/"/>
+    </sections>
+    <sections name="Single LayerExpression" sectionFile="ui/SingleLayerExpression.xwt">
+      <widget href="ui/SingleLayerExpression.xwt#/"/>
+    </sections>
+    <sections name="Single ApplicationDependantElement" sectionFile="ui/SingleApplicationDependantElement.xwt">
+      <widget href="ui/SingleApplicationDependantElement.xwt#/"/>
+    </sections>
+    <sections name="Single LayersStackApplication" sectionFile="ui/SingleLayersStackApplication.xwt">
+      <widget href="ui/SingleLayersStackApplication.xwt#/"/>
+    </sections>
+    <sections name="Single FolderElement" sectionFile="ui/SingleFolderElement.xwt">
+      <widget href="ui/SingleFolderElement.xwt#/"/>
+    </sections>
+    <sections name="Single LayerStackDescriptorRegistry" sectionFile="ui/SingleLayerStackDescriptorRegistry.xwt">
+      <widget href="ui/SingleLayerStackDescriptorRegistry.xwt#/"/>
+    </sections>
+    <sections name="Single PropertyRegistry" sectionFile="ui/SinglePropertyRegistry.xwt">
+      <widget href="ui/SinglePropertyRegistry.xwt#/"/>
+    </sections>
+    <sections name="Single Property" sectionFile="ui/SingleProperty.xwt">
+      <widget href="ui/SingleProperty.xwt#/"/>
+    </sections>
+    <sections name="Single Type" sectionFile="ui/SingleType.xwt">
+      <widget href="ui/SingleType.xwt#/"/>
+    </sections>
+    <sections name="Single Metamodel" sectionFile="ui/SingleMetamodel.xwt">
+      <widget href="ui/SingleMetamodel.xwt#/"/>
+    </sections>
+    <sections name="Single TypeInstance" sectionFile="ui/SingleTypeInstance.xwt">
+      <widget href="ui/SingleTypeInstance.xwt#/"/>
+    </sections>
+    <sections name="Single ComputePropertyValueCommandItf" sectionFile="ui/SingleComputePropertyValueCommandItf.xwt">
+      <widget href="ui/SingleComputePropertyValueCommandItf.xwt#/"/>
+    </sections>
+    <sections name="Single TypeRegistry" sectionFile="ui/SingleTypeRegistry.xwt">
+      <widget href="ui/SingleTypeRegistry.xwt#/"/>
+    </sections>
+    <sections name="Single StringToTypeMap" sectionFile="ui/SingleStringToTypeMap.xwt">
+      <widget href="ui/SingleStringToTypeMap.xwt#/"/>
+    </sections>
+    <sections name="Single LayerDescriptorRegistry" sectionFile="ui/SingleLayerDescriptorRegistry.xwt">
+      <widget href="ui/SingleLayerDescriptorRegistry.xwt#/"/>
+    </sections>
+    <sections name="Single LayerDescriptor" sectionFile="ui/SingleLayerDescriptor.xwt">
+      <widget href="ui/SingleLayerDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Single LayerApplicationFactory" sectionFile="ui/SingleLayerApplicationFactory.xwt">
+      <widget href="ui/SingleLayerApplicationFactory.xwt#/"/>
+    </sections>
+    <sections name="Single PropertySetterRegistry" sectionFile="ui/SinglePropertySetterRegistry.xwt">
+      <widget href="ui/SinglePropertySetterRegistry.xwt#/"/>
+    </sections>
+    <sections name="Single PropertySetter" sectionFile="ui/SinglePropertySetter.xwt">
+      <widget href="ui/SinglePropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Single StringToPropertySetter" sectionFile="ui/SingleStringToPropertySetter.xwt">
+      <widget href="ui/SingleStringToPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Single AbstractLayer" sectionFile="ui/SingleAbstractLayer.xwt">
+      <widget href="ui/SingleAbstractLayer.xwt#/"/>
+    </sections>
+    <sections name="Single StringToTypeInstanceMap" sectionFile="ui/SingleStringToTypeInstanceMap.xwt">
+      <widget href="ui/SingleStringToTypeInstanceMap.xwt#/"/>
+    </sections>
+    <sections name="Single Folder" sectionFile="ui/SingleFolder.xwt">
+      <widget href="ui/SingleFolder.xwt#/"/>
+    </sections>
+    <sections name="Single IntInstance" sectionFile="ui/SingleIntInstance.xwt">
+      <widget href="ui/SingleIntInstance.xwt#/"/>
+    </sections>
+    <sections name="Single BooleanInstance" sectionFile="ui/SingleBooleanInstance.xwt">
+      <widget href="ui/SingleBooleanInstance.xwt#/"/>
+    </sections>
+    <sections name="Single StringInstance" sectionFile="ui/SingleStringInstance.xwt">
+      <widget href="ui/SingleStringInstance.xwt#/"/>
+    </sections>
+    <sections name="Single IntType" sectionFile="ui/SingleIntType.xwt">
+      <widget href="ui/SingleIntType.xwt#/"/>
+    </sections>
+    <sections name="Single BooleanType" sectionFile="ui/SingleBooleanType.xwt">
+      <widget href="ui/SingleBooleanType.xwt#/"/>
+    </sections>
+    <sections name="Single StringType" sectionFile="ui/SingleStringType.xwt">
+      <widget href="ui/SingleStringType.xwt#/"/>
+    </sections>
+    <sections name="Single CustomType" sectionFile="ui/SingleCustomType.xwt">
+      <widget href="ui/SingleCustomType.xwt#/"/>
+    </sections>
+    <sections name="Single LayerOperator" sectionFile="ui/SingleLayerOperator.xwt">
+      <widget href="ui/SingleLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Single AbstractLayerOperator" sectionFile="ui/SingleAbstractLayerOperator.xwt">
+      <widget href="ui/SingleAbstractLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Single TopLayerOperator" sectionFile="ui/SingleTopLayerOperator.xwt">
+      <widget href="ui/SingleTopLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Single StackedLayerOperator" sectionFile="ui/SingleStackedLayerOperator.xwt">
+      <widget href="ui/SingleStackedLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Single CustomLayerOperator" sectionFile="ui/SingleCustomLayerOperator.xwt">
+      <widget href="ui/SingleCustomLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Single PropertyIndex" sectionFile="ui/SinglePropertyIndex.xwt">
+      <widget href="ui/SinglePropertyIndex.xwt#/"/>
+    </sections>
+    <sections name="Single StringToPropertyIndexMap" sectionFile="ui/SingleStringToPropertyIndexMap.xwt">
+      <widget href="ui/SingleStringToPropertyIndexMap.xwt#/"/>
+    </sections>
+    <sections name="Single SimpleLayerDescriptor" sectionFile="ui/SingleSimpleLayerDescriptor.xwt">
+      <widget href="ui/SingleSimpleLayerDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Single RegExpLayerDescriptor" sectionFile="ui/SingleRegExpLayerDescriptor.xwt">
+      <widget href="ui/SingleRegExpLayerDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Single NullInstance" sectionFile="ui/SingleNullInstance.xwt">
+      <widget href="ui/SingleNullInstance.xwt#/"/>
+    </sections>
+    <sections name="Single RegExpLayer" sectionFile="ui/SingleRegExpLayer.xwt">
+      <widget href="ui/SingleRegExpLayer.xwt#/"/>
+    </sections>
+    <sections name="Single Layer" sectionFile="ui/SingleLayer.xwt">
+      <widget href="ui/SingleLayer.xwt#/"/>
+    </sections>
+    <sections name="Single Color" sectionFile="ui/SingleColor.xwt">
+      <widget href="ui/SingleColor.xwt#/"/>
+    </sections>
+    <sections name="Single ColorInstance" sectionFile="ui/SingleColorInstance.xwt">
+      <widget href="ui/SingleColorInstance.xwt#/"/>
+    </sections>
+    <sections name="Single FillInstance" sectionFile="ui/SingleFillInstance.xwt">
+      <widget href="ui/SingleFillInstance.xwt#/"/>
+    </sections>
+    <sections name="Single Fill" sectionFile="ui/SingleFill.xwt">
+      <widget href="ui/SingleFill.xwt#/"/>
+    </sections>
+    <sections name="Single FillPropertySetter" sectionFile="ui/SingleFillPropertySetter.xwt">
+      <widget href="ui/SingleFillPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Single IsValidPropertySetter" sectionFile="ui/SingleIsValidPropertySetter.xwt">
+      <widget href="ui/SingleIsValidPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Single NullPropertySetter" sectionFile="ui/SingleNullPropertySetter.xwt">
+      <widget href="ui/SingleNullPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Single LineType" sectionFile="ui/SingleLineType.xwt">
+      <widget href="ui/SingleLineType.xwt#/"/>
+    </sections>
+    <sections name="Single LineInstance" sectionFile="ui/SingleLineInstance.xwt">
+      <widget href="ui/SingleLineInstance.xwt#/"/>
+    </sections>
+    <sections name="Single LinePropertySetter" sectionFile="ui/SingleLinePropertySetter.xwt">
+      <widget href="ui/SingleLinePropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Single FontPropertySetter" sectionFile="ui/SingleFontPropertySetter.xwt">
+      <widget href="ui/SingleFontPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Single FontInstance" sectionFile="ui/SingleFontInstance.xwt">
+      <widget href="ui/SingleFontInstance.xwt#/"/>
+    </sections>
+    <sections name="Single FontType" sectionFile="ui/SingleFontType.xwt">
+      <widget href="ui/SingleFontType.xwt#/"/>
+    </sections>
+    <sections name="Single IsVisiblePropertySetter" sectionFile="ui/SingleIsVisiblePropertySetter.xwt">
+      <widget href="ui/SingleIsVisiblePropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerNamedStyle" sectionFile="ui/MultipleLayerNamedStyle.xwt">
+      <widget href="ui/MultipleLayerNamedStyle.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayersStack" sectionFile="ui/MultipleLayersStack.xwt">
+      <widget href="ui/MultipleLayersStack.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerExpression" sectionFile="ui/MultipleLayerExpression.xwt">
+      <widget href="ui/MultipleLayerExpression.xwt#/"/>
+    </sections>
+    <sections name="Multiple ApplicationDependantElement" sectionFile="ui/MultipleApplicationDependantElement.xwt">
+      <widget href="ui/MultipleApplicationDependantElement.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayersStackApplication" sectionFile="ui/MultipleLayersStackApplication.xwt">
+      <widget href="ui/MultipleLayersStackApplication.xwt#/"/>
+    </sections>
+    <sections name="Multiple FolderElement" sectionFile="ui/MultipleFolderElement.xwt">
+      <widget href="ui/MultipleFolderElement.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerStackDescriptorRegistry" sectionFile="ui/MultipleLayerStackDescriptorRegistry.xwt">
+      <widget href="ui/MultipleLayerStackDescriptorRegistry.xwt#/"/>
+    </sections>
+    <sections name="Multiple PropertyRegistry" sectionFile="ui/MultiplePropertyRegistry.xwt">
+      <widget href="ui/MultiplePropertyRegistry.xwt#/"/>
+    </sections>
+    <sections name="Multiple Property" sectionFile="ui/MultipleProperty.xwt">
+      <widget href="ui/MultipleProperty.xwt#/"/>
+    </sections>
+    <sections name="Multiple Type" sectionFile="ui/MultipleType.xwt">
+      <widget href="ui/MultipleType.xwt#/"/>
+    </sections>
+    <sections name="Multiple Metamodel" sectionFile="ui/MultipleMetamodel.xwt">
+      <widget href="ui/MultipleMetamodel.xwt#/"/>
+    </sections>
+    <sections name="Multiple TypeInstance" sectionFile="ui/MultipleTypeInstance.xwt">
+      <widget href="ui/MultipleTypeInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple ComputePropertyValueCommandItf" sectionFile="ui/MultipleComputePropertyValueCommandItf.xwt">
+      <widget href="ui/MultipleComputePropertyValueCommandItf.xwt#/"/>
+    </sections>
+    <sections name="Multiple TypeRegistry" sectionFile="ui/MultipleTypeRegistry.xwt">
+      <widget href="ui/MultipleTypeRegistry.xwt#/"/>
+    </sections>
+    <sections name="Multiple StringToTypeMap" sectionFile="ui/MultipleStringToTypeMap.xwt">
+      <widget href="ui/MultipleStringToTypeMap.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerDescriptorRegistry" sectionFile="ui/MultipleLayerDescriptorRegistry.xwt">
+      <widget href="ui/MultipleLayerDescriptorRegistry.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerDescriptor" sectionFile="ui/MultipleLayerDescriptor.xwt">
+      <widget href="ui/MultipleLayerDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerApplicationFactory" sectionFile="ui/MultipleLayerApplicationFactory.xwt">
+      <widget href="ui/MultipleLayerApplicationFactory.xwt#/"/>
+    </sections>
+    <sections name="Multiple PropertySetterRegistry" sectionFile="ui/MultiplePropertySetterRegistry.xwt">
+      <widget href="ui/MultiplePropertySetterRegistry.xwt#/"/>
+    </sections>
+    <sections name="Multiple PropertySetter" sectionFile="ui/MultiplePropertySetter.xwt">
+      <widget href="ui/MultiplePropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple StringToPropertySetter" sectionFile="ui/MultipleStringToPropertySetter.xwt">
+      <widget href="ui/MultipleStringToPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple AbstractLayer" sectionFile="ui/MultipleAbstractLayer.xwt">
+      <widget href="ui/MultipleAbstractLayer.xwt#/"/>
+    </sections>
+    <sections name="Multiple StringToTypeInstanceMap" sectionFile="ui/MultipleStringToTypeInstanceMap.xwt">
+      <widget href="ui/MultipleStringToTypeInstanceMap.xwt#/"/>
+    </sections>
+    <sections name="Multiple Folder" sectionFile="ui/MultipleFolder.xwt">
+      <widget href="ui/MultipleFolder.xwt#/"/>
+    </sections>
+    <sections name="Multiple IntInstance" sectionFile="ui/MultipleIntInstance.xwt">
+      <widget href="ui/MultipleIntInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple BooleanInstance" sectionFile="ui/MultipleBooleanInstance.xwt">
+      <widget href="ui/MultipleBooleanInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple StringInstance" sectionFile="ui/MultipleStringInstance.xwt">
+      <widget href="ui/MultipleStringInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple IntType" sectionFile="ui/MultipleIntType.xwt">
+      <widget href="ui/MultipleIntType.xwt#/"/>
+    </sections>
+    <sections name="Multiple BooleanType" sectionFile="ui/MultipleBooleanType.xwt">
+      <widget href="ui/MultipleBooleanType.xwt#/"/>
+    </sections>
+    <sections name="Multiple StringType" sectionFile="ui/MultipleStringType.xwt">
+      <widget href="ui/MultipleStringType.xwt#/"/>
+    </sections>
+    <sections name="Multiple CustomType" sectionFile="ui/MultipleCustomType.xwt">
+      <widget href="ui/MultipleCustomType.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerOperator" sectionFile="ui/MultipleLayerOperator.xwt">
+      <widget href="ui/MultipleLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Multiple AbstractLayerOperator" sectionFile="ui/MultipleAbstractLayerOperator.xwt">
+      <widget href="ui/MultipleAbstractLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Multiple TopLayerOperator" sectionFile="ui/MultipleTopLayerOperator.xwt">
+      <widget href="ui/MultipleTopLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Multiple StackedLayerOperator" sectionFile="ui/MultipleStackedLayerOperator.xwt">
+      <widget href="ui/MultipleStackedLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Multiple CustomLayerOperator" sectionFile="ui/MultipleCustomLayerOperator.xwt">
+      <widget href="ui/MultipleCustomLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Multiple PropertyIndex" sectionFile="ui/MultiplePropertyIndex.xwt">
+      <widget href="ui/MultiplePropertyIndex.xwt#/"/>
+    </sections>
+    <sections name="Multiple StringToPropertyIndexMap" sectionFile="ui/MultipleStringToPropertyIndexMap.xwt">
+      <widget href="ui/MultipleStringToPropertyIndexMap.xwt#/"/>
+    </sections>
+    <sections name="Multiple SimpleLayerDescriptor" sectionFile="ui/MultipleSimpleLayerDescriptor.xwt">
+      <widget href="ui/MultipleSimpleLayerDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Multiple RegExpLayerDescriptor" sectionFile="ui/MultipleRegExpLayerDescriptor.xwt">
+      <widget href="ui/MultipleRegExpLayerDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Multiple NullInstance" sectionFile="ui/MultipleNullInstance.xwt">
+      <widget href="ui/MultipleNullInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple RegExpLayer" sectionFile="ui/MultipleRegExpLayer.xwt">
+      <widget href="ui/MultipleRegExpLayer.xwt#/"/>
+    </sections>
+    <sections name="Multiple Layer" sectionFile="ui/MultipleLayer.xwt">
+      <widget href="ui/MultipleLayer.xwt#/"/>
+    </sections>
+    <sections name="Multiple Color" sectionFile="ui/MultipleColor.xwt">
+      <widget href="ui/MultipleColor.xwt#/"/>
+    </sections>
+    <sections name="Multiple ColorInstance" sectionFile="ui/MultipleColorInstance.xwt">
+      <widget href="ui/MultipleColorInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple FillInstance" sectionFile="ui/MultipleFillInstance.xwt">
+      <widget href="ui/MultipleFillInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple Fill" sectionFile="ui/MultipleFill.xwt">
+      <widget href="ui/MultipleFill.xwt#/"/>
+    </sections>
+    <sections name="Multiple FillPropertySetter" sectionFile="ui/MultipleFillPropertySetter.xwt">
+      <widget href="ui/MultipleFillPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple IsValidPropertySetter" sectionFile="ui/MultipleIsValidPropertySetter.xwt">
+      <widget href="ui/MultipleIsValidPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple NullPropertySetter" sectionFile="ui/MultipleNullPropertySetter.xwt">
+      <widget href="ui/MultipleNullPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple LineType" sectionFile="ui/MultipleLineType.xwt">
+      <widget href="ui/MultipleLineType.xwt#/"/>
+    </sections>
+    <sections name="Multiple LineInstance" sectionFile="ui/MultipleLineInstance.xwt">
+      <widget href="ui/MultipleLineInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple LinePropertySetter" sectionFile="ui/MultipleLinePropertySetter.xwt">
+      <widget href="ui/MultipleLinePropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple FontPropertySetter" sectionFile="ui/MultipleFontPropertySetter.xwt">
+      <widget href="ui/MultipleFontPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple FontInstance" sectionFile="ui/MultipleFontInstance.xwt">
+      <widget href="ui/MultipleFontInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple FontType" sectionFile="ui/MultipleFontType.xwt">
+      <widget href="ui/MultipleFontType.xwt#/"/>
+    </sections>
+    <sections name="Multiple IsVisiblePropertySetter" sectionFile="ui/MultipleIsVisiblePropertySetter.xwt">
+      <widget href="ui/MultipleIsVisiblePropertySetter.xwt#/"/>
+    </sections>
+  </tabs>
+  <views name="Single LayerNamedStyle" sections="//@tabs.0/@sections.0" automaticContext="true" datacontexts="//@dataContexts.0/@elements.0">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerNamedStyle">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerNamedStyle"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single LayersStack" sections="//@tabs.0/@sections.1" automaticContext="true" datacontexts="//@dataContexts.0/@elements.1">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayersStack">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStack"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single LayerExpression" sections="//@tabs.0/@sections.2" automaticContext="true" datacontexts="//@dataContexts.0/@elements.2">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerExpression">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerExpression"/>
+    </constraints>
+  </views>
+  <views name="Single ApplicationDependantElement" sections="//@tabs.0/@sections.3" automaticContext="true" datacontexts="//@dataContexts.0/@elements.3">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleApplicationDependantElement">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="ApplicationDependantElement"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single LayersStackApplication" sections="//@tabs.0/@sections.4" automaticContext="true" datacontexts="//@dataContexts.0/@elements.4">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayersStackApplication">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStackApplication"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single FolderElement" sections="//@tabs.0/@sections.5" automaticContext="true" datacontexts="//@dataContexts.0/@elements.5">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFolderElement">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FolderElement"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single LayerStackDescriptorRegistry" sections="//@tabs.0/@sections.6" automaticContext="true" datacontexts="//@dataContexts.0/@elements.6">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerStackDescriptorRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerStackDescriptorRegistry"/>
+    </constraints>
+  </views>
+  <views name="Single PropertyRegistry" sections="//@tabs.0/@sections.7" automaticContext="true" datacontexts="//@dataContexts.0/@elements.7">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertyRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyRegistry"/>
+    </constraints>
+  </views>
+  <views name="Single Property" sections="//@tabs.0/@sections.8" automaticContext="true" datacontexts="//@dataContexts.0/@elements.8">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleProperty">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Property"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single Type" sections="//@tabs.0/@sections.9" automaticContext="true" datacontexts="//@dataContexts.0/@elements.9">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Type"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single Metamodel" sections="//@tabs.0/@sections.10" automaticContext="true" datacontexts="//@dataContexts.0/@elements.10">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleMetamodel">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Metamodel"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single TypeInstance" sections="//@tabs.0/@sections.11" automaticContext="true" datacontexts="//@dataContexts.0/@elements.11">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleTypeInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="TypeInstance"/>
+    </constraints>
+  </views>
+  <views name="Single ComputePropertyValueCommandItf" sections="//@tabs.0/@sections.12" automaticContext="true" datacontexts="//@dataContexts.0/@elements.12">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleComputePropertyValueCommandItf">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="ComputePropertyValueCommandItf"/>
+    </constraints>
+  </views>
+  <views name="Single TypeRegistry" sections="//@tabs.0/@sections.13" automaticContext="true" datacontexts="//@dataContexts.0/@elements.13">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleTypeRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="TypeRegistry"/>
+    </constraints>
+  </views>
+  <views name="Single StringToTypeMap" sections="//@tabs.0/@sections.14" automaticContext="true" datacontexts="//@dataContexts.0/@elements.14">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToTypeMap">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeMap"/>
+    </constraints>
+  </views>
+  <views name="Single LayerDescriptorRegistry" sections="//@tabs.0/@sections.15" automaticContext="true" datacontexts="//@dataContexts.0/@elements.15">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerDescriptorRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptorRegistry"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single LayerDescriptor" sections="//@tabs.0/@sections.16" automaticContext="true" datacontexts="//@dataContexts.0/@elements.16">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptor"/>
+    </constraints>
+  </views>
+  <views name="Single LayerApplicationFactory" sections="//@tabs.0/@sections.17" automaticContext="true" datacontexts="//@dataContexts.0/@elements.17">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerApplicationFactory">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerApplicationFactory"/>
+    </constraints>
+  </views>
+  <views name="Single PropertySetterRegistry" sections="//@tabs.0/@sections.18" automaticContext="true" datacontexts="//@dataContexts.0/@elements.18">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertySetterRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetterRegistry"/>
+    </constraints>
+  </views>
+  <views name="Single PropertySetter" sections="//@tabs.0/@sections.19" automaticContext="true" datacontexts="//@dataContexts.0/@elements.19">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetter"/>
+    </constraints>
+  </views>
+  <views name="Single StringToPropertySetter" sections="//@tabs.0/@sections.20" automaticContext="true" datacontexts="//@dataContexts.0/@elements.20">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single AbstractLayer" sections="//@tabs.0/@sections.21" automaticContext="true" datacontexts="//@dataContexts.0/@elements.21">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleAbstractLayer">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayer"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single StringToTypeInstanceMap" sections="//@tabs.0/@sections.22" automaticContext="true" datacontexts="//@dataContexts.0/@elements.22">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToTypeInstanceMap">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeInstanceMap"/>
+    </constraints>
+  </views>
+  <views name="Single Folder" sections="//@tabs.0/@sections.23" automaticContext="true" datacontexts="//@dataContexts.0/@elements.23">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFolder">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Folder"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single IntInstance" sections="//@tabs.0/@sections.24" automaticContext="true" datacontexts="//@dataContexts.0/@elements.24">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIntInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IntInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single BooleanInstance" sections="//@tabs.0/@sections.25" automaticContext="true" datacontexts="//@dataContexts.0/@elements.25">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleBooleanInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanInstance"/>
+    </constraints>
+  </views>
+  <views name="Single StringInstance" sections="//@tabs.0/@sections.26" automaticContext="true" datacontexts="//@dataContexts.0/@elements.26">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringInstance"/>
+    </constraints>
+  </views>
+  <views name="Single IntType" sections="//@tabs.0/@sections.27" automaticContext="true" datacontexts="//@dataContexts.0/@elements.27">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIntType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IntType"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single BooleanType" sections="//@tabs.0/@sections.28" automaticContext="true" datacontexts="//@dataContexts.0/@elements.28">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleBooleanType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanType"/>
+    </constraints>
+  </views>
+  <views name="Single StringType" sections="//@tabs.0/@sections.29" automaticContext="true" datacontexts="//@dataContexts.0/@elements.29">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringType"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single CustomType" sections="//@tabs.0/@sections.30" automaticContext="true" datacontexts="//@dataContexts.0/@elements.30">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleCustomType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="CustomType"/>
+    </constraints>
+  </views>
+  <views name="Single LayerOperator" sections="//@tabs.0/@sections.31" automaticContext="true" datacontexts="//@dataContexts.0/@elements.31">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperator"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single AbstractLayerOperator" sections="//@tabs.0/@sections.32" automaticContext="true" datacontexts="//@dataContexts.0/@elements.32">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleAbstractLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayerOperator"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single TopLayerOperator" sections="//@tabs.0/@sections.33" automaticContext="true" datacontexts="//@dataContexts.0/@elements.33">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleTopLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="TopLayerOperator"/>
+    </constraints>
+  </views>
+  <views name="Single StackedLayerOperator" sections="//@tabs.0/@sections.34" automaticContext="true" datacontexts="//@dataContexts.0/@elements.34">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStackedLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StackedLayerOperator"/>
+    </constraints>
+  </views>
+  <views name="Single CustomLayerOperator" sections="//@tabs.0/@sections.35" automaticContext="true" datacontexts="//@dataContexts.0/@elements.35">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleCustomLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="CustomLayerOperator"/>
+    </constraints>
+  </views>
+  <views name="Single PropertyIndex" sections="//@tabs.0/@sections.36" automaticContext="true" datacontexts="//@dataContexts.0/@elements.36">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertyIndex">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyIndex"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single StringToPropertyIndexMap" sections="//@tabs.0/@sections.37" automaticContext="true" datacontexts="//@dataContexts.0/@elements.37">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToPropertyIndexMap">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertyIndexMap"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single SimpleLayerDescriptor" sections="//@tabs.0/@sections.38" automaticContext="true" datacontexts="//@dataContexts.0/@elements.38">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleSimpleLayerDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="SimpleLayerDescriptor"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single RegExpLayerDescriptor" sections="//@tabs.0/@sections.39" automaticContext="true" datacontexts="//@dataContexts.0/@elements.39">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleRegExpLayerDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayerDescriptor"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single NullInstance" sections="//@tabs.0/@sections.40" automaticContext="true" datacontexts="//@dataContexts.0/@elements.40">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleNullInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="NullInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single RegExpLayer" sections="//@tabs.0/@sections.41" automaticContext="true" datacontexts="//@dataContexts.0/@elements.41">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleRegExpLayer">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayer"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single Layer" sections="//@tabs.0/@sections.42" automaticContext="true" datacontexts="//@dataContexts.0/@elements.42">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayer">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Layer"/>
+    </constraints>
+  </views>
+  <views name="Single Color" sections="//@tabs.0/@sections.43" automaticContext="true" datacontexts="//@dataContexts.0/@elements.43">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleColor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Color"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single ColorInstances" sections="//@tabs.0/@sections.44" automaticContext="true" datacontexts="//@dataContexts.0/@elements.44">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleColorInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="ColorInstance"/>
+    </constraints>
+  </views>
+  <views name="Single FillInstance" sections="//@tabs.0/@sections.45" automaticContext="true" datacontexts="//@dataContexts.0/@elements.45">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFillInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FillInstance"/>
+    </constraints>
+  </views>
+  <views name="Single Fill" sections="//@tabs.0/@sections.46" automaticContext="true" datacontexts="//@dataContexts.0/@elements.46">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFill">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Fill"/>
+    </constraints>
+  </views>
+  <views name="Single FillPropertySetter" sections="//@tabs.0/@sections.47" automaticContext="true" datacontexts="//@dataContexts.0/@elements.47">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFillPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FillPropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single IsValidPropertySetter" sections="//@tabs.0/@sections.48" automaticContext="true" datacontexts="//@dataContexts.0/@elements.48">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIsValidPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IsValidPropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single NullPropertySetter" sections="//@tabs.0/@sections.49" automaticContext="true" datacontexts="//@dataContexts.0/@elements.49">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleNullPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="NullPropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single LineType" sections="//@tabs.0/@sections.50" automaticContext="true" datacontexts="//@dataContexts.0/@elements.50">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLineType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LineType"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single LineInstance" sections="//@tabs.0/@sections.51" automaticContext="true" datacontexts="//@dataContexts.0/@elements.51">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLineInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LineInstance"/>
+    </constraints>
+  </views>
+  <views name="Single LinePropertySetter" sections="//@tabs.0/@sections.52" automaticContext="true" datacontexts="//@dataContexts.0/@elements.52">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLinePropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LinePropertySetter"/>
+    </constraints>
+  </views>
+  <views name="Single FontPropertySetter" sections="//@tabs.0/@sections.53" automaticContext="true" datacontexts="//@dataContexts.0/@elements.53">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFontPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FontPropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single FontInstance" sections="//@tabs.0/@sections.54" automaticContext="true" datacontexts="//@dataContexts.0/@elements.54">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFontInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FontInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single FontType" sections="//@tabs.0/@sections.55" automaticContext="true" datacontexts="//@dataContexts.0/@elements.55">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFontType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FontType"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single IsVisiblePropertySetter" sections="//@tabs.0/@sections.56" automaticContext="true" datacontexts="//@dataContexts.0/@elements.56">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIsVisiblePropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IsVisiblePropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerNamedStyle" sections="//@tabs.0/@sections.57" automaticContext="true" datacontexts="//@dataContexts.0/@elements.0">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerNamedStyle">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerNamedStyle"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayersStack" sections="//@tabs.0/@sections.58" automaticContext="true" datacontexts="//@dataContexts.0/@elements.1">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayersStack">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStack"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerExpression" sections="//@tabs.0/@sections.59" automaticContext="true" datacontexts="//@dataContexts.0/@elements.2">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerExpression">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerExpression"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple ApplicationDependantElement" sections="//@tabs.0/@sections.60" automaticContext="true" datacontexts="//@dataContexts.0/@elements.3">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleApplicationDependantElement">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="ApplicationDependantElement"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayersStackApplication" sections="//@tabs.0/@sections.61" automaticContext="true" datacontexts="//@dataContexts.0/@elements.4">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayersStackApplication">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStackApplication"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple FolderElement" sections="//@tabs.0/@sections.62" automaticContext="true" datacontexts="//@dataContexts.0/@elements.5">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFolderElement">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FolderElement"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerStackDescriptorRegistry" sections="//@tabs.0/@sections.63" automaticContext="true" datacontexts="//@dataContexts.0/@elements.6">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerStackDescriptorRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerStackDescriptorRegistry"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple PropertyRegistry" sections="//@tabs.0/@sections.64" automaticContext="true" datacontexts="//@dataContexts.0/@elements.7">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertyRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyRegistry"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple Property" sections="//@tabs.0/@sections.65" automaticContext="true" datacontexts="//@dataContexts.0/@elements.8">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleProperty">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Property"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple Type" sections="//@tabs.0/@sections.66" automaticContext="true" datacontexts="//@dataContexts.0/@elements.9">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Type"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple Metamodel" sections="//@tabs.0/@sections.67" automaticContext="true" datacontexts="//@dataContexts.0/@elements.10">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleMetamodel">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Metamodel"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple TypeInstance" sections="//@tabs.0/@sections.68" automaticContext="true" datacontexts="//@dataContexts.0/@elements.11">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleTypeInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="TypeInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple ComputePropertyValueCommandItf" sections="//@tabs.0/@sections.69" automaticContext="true" datacontexts="//@dataContexts.0/@elements.12">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleComputePropertyValueCommandItf">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="ComputePropertyValueCommandItf"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple TypeRegistry" sections="//@tabs.0/@sections.70" automaticContext="true" datacontexts="//@dataContexts.0/@elements.13">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleTypeRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="TypeRegistry"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple StringToTypeMap" sections="//@tabs.0/@sections.71" automaticContext="true" datacontexts="//@dataContexts.0/@elements.14">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToTypeMap">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeMap"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerDescriptorRegistry" sections="//@tabs.0/@sections.72" automaticContext="true" datacontexts="//@dataContexts.0/@elements.15">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerDescriptorRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptorRegistry"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerDescriptor" sections="//@tabs.0/@sections.73" automaticContext="true" datacontexts="//@dataContexts.0/@elements.16">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptor"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerApplicationFactory" sections="//@tabs.0/@sections.74" automaticContext="true" datacontexts="//@dataContexts.0/@elements.17">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerApplicationFactory">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerApplicationFactory"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple PropertySetterRegistry" sections="//@tabs.0/@sections.75" automaticContext="true" datacontexts="//@dataContexts.0/@elements.18">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertySetterRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetterRegistry"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple PropertySetter" sections="//@tabs.0/@sections.76" automaticContext="true" datacontexts="//@dataContexts.0/@elements.19">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple StringToPropertySetter" sections="//@tabs.0/@sections.77" automaticContext="true" datacontexts="//@dataContexts.0/@elements.20">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertySetter"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple AbstractLayer" sections="//@tabs.0/@sections.78" automaticContext="true" datacontexts="//@dataContexts.0/@elements.21">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleAbstractLayer">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayer"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple StringToTypeInstanceMap" sections="//@tabs.0/@sections.79" automaticContext="true" datacontexts="//@dataContexts.0/@elements.22">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToTypeInstanceMap">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeInstanceMap"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple Folder" sections="//@tabs.0/@sections.80" automaticContext="true" datacontexts="//@dataContexts.0/@elements.23">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFolder">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Folder"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple IntInstance" sections="//@tabs.0/@sections.81" automaticContext="true" datacontexts="//@dataContexts.0/@elements.24">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIntInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IntInstance"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple BooleanInstance" sections="//@tabs.0/@sections.82" automaticContext="true" datacontexts="//@dataContexts.0/@elements.25">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleBooleanInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanInstance"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple StringInstance" sections="//@tabs.0/@sections.83" automaticContext="true" datacontexts="//@dataContexts.0/@elements.26">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple IntType" sections="//@tabs.0/@sections.84" automaticContext="true" datacontexts="//@dataContexts.0/@elements.27">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIntType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IntType"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple BooleanType" sections="//@tabs.0/@sections.85" automaticContext="true" datacontexts="//@dataContexts.0/@elements.28">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleBooleanType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanType"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple StringType" sections="//@tabs.0/@sections.86" automaticContext="true" datacontexts="//@dataContexts.0/@elements.29">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringType"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple CustomType" sections="//@tabs.0/@sections.87" automaticContext="true" datacontexts="//@dataContexts.0/@elements.30">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleCustomType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="CustomType"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerOperator" sections="//@tabs.0/@sections.88" automaticContext="true" datacontexts="//@dataContexts.0/@elements.31">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperator"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple AbstractLayerOperator" sections="//@tabs.0/@sections.89" automaticContext="true" datacontexts="//@dataContexts.0/@elements.32">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleAbstractLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayerOperator"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple TopLayerOperator" sections="//@tabs.0/@sections.90" automaticContext="true" datacontexts="//@dataContexts.0/@elements.33">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleTopLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="TopLayerOperator"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple StackedLayerOperator" sections="//@tabs.0/@sections.91" automaticContext="true" datacontexts="//@dataContexts.0/@elements.34">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStackedLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StackedLayerOperator"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple CustomLayerOperator" sections="//@tabs.0/@sections.92" automaticContext="true" datacontexts="//@dataContexts.0/@elements.35">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleCustomLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="CustomLayerOperator"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple PropertyIndex" sections="//@tabs.0/@sections.93" automaticContext="true" datacontexts="//@dataContexts.0/@elements.36">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertyIndex">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyIndex"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple StringToPropertyIndexMap" sections="//@tabs.0/@sections.94" automaticContext="true" datacontexts="//@dataContexts.0/@elements.37">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToPropertyIndexMap">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertyIndexMap"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple SimpleLayerDescriptor" sections="//@tabs.0/@sections.95" automaticContext="true" datacontexts="//@dataContexts.0/@elements.38">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleSimpleLayerDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="SimpleLayerDescriptor"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple RegExpLayerDescriptor" sections="//@tabs.0/@sections.96" automaticContext="true" datacontexts="//@dataContexts.0/@elements.39">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleRegExpLayerDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayerDescriptor"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple NullInstance" sections="//@tabs.0/@sections.97" automaticContext="true" datacontexts="//@dataContexts.0/@elements.40">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleNullInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="NullInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple RegExpLayer" sections="//@tabs.0/@sections.98" automaticContext="true" datacontexts="//@dataContexts.0/@elements.41">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleRegExpLayer">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayer"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple Layer" sections="//@tabs.0/@sections.99" automaticContext="true" datacontexts="//@dataContexts.0/@elements.42">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayer">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Layer"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple Color" sections="//@tabs.0/@sections.100" automaticContext="true" datacontexts="//@dataContexts.0/@elements.43">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleColor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Color"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple ColorInstance" sections="//@tabs.0/@sections.101" automaticContext="true" datacontexts="//@dataContexts.0/@elements.44">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleColorInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="ColorInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple FillInstance" sections="//@tabs.0/@sections.102" automaticContext="true" datacontexts="//@dataContexts.0/@elements.45">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFillInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FillInstance"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple Fill" sections="//@tabs.0/@sections.103" automaticContext="true" datacontexts="//@dataContexts.0/@elements.46">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFill">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Fill"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple FillPropertySetter" sections="//@tabs.0/@sections.104" automaticContext="true" datacontexts="//@dataContexts.0/@elements.47">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFillPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FillPropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple IsValidPropertySetter" sections="//@tabs.0/@sections.105" automaticContext="true" datacontexts="//@dataContexts.0/@elements.48">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIsValidPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IsValidPropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple NullPropertySetter" sections="//@tabs.0/@sections.106" automaticContext="true" datacontexts="//@dataContexts.0/@elements.49">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleNullPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="NullPropertySetter"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LineType" sections="//@tabs.0/@sections.107" automaticContext="true" datacontexts="//@dataContexts.0/@elements.50">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLineType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LineType"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LineInstance" sections="//@tabs.0/@sections.108" automaticContext="true" datacontexts="//@dataContexts.0/@elements.51">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLineInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LineInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LinePropertySetter" sections="//@tabs.0/@sections.109" automaticContext="true" datacontexts="//@dataContexts.0/@elements.52">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLinePropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LinePropertySetter"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple FontPropertySetter" sections="//@tabs.0/@sections.110" automaticContext="true" datacontexts="//@dataContexts.0/@elements.53">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFontPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FontPropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple FontInstance" sections="//@tabs.0/@sections.111" automaticContext="true" datacontexts="//@dataContexts.0/@elements.54">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFontInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FontInstance"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple FontType" sections="//@tabs.0/@sections.112" automaticContext="true" datacontexts="//@dataContexts.0/@elements.55">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFontType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FontType"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple IsVisiblePropertySetter" sections="//@tabs.0/@sections.113" automaticContext="true" datacontexts="//@dataContexts.0/@elements.56">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIsVisiblePropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IsVisiblePropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <dataContexts name="layers" label="layers">
+    <elements name="LayerNamedStyle">
+      <properties name="layersStack" type="Reference" multiplicity="-1"/>
+    </elements>
+    <elements name="LayersStack">
+      <properties name="layers" type="Reference"/>
+      <properties name="name"/>
+      <properties name="description"/>
+      <properties name="diagram" type="Reference"/>
+    </elements>
+    <elements name="LayerExpression" supertypes="//@dataContexts.0/@elements.3">
+      <properties name="name"/>
+      <properties name="description"/>
+    </elements>
+    <elements name="ApplicationDependantElement">
+      <properties name="application" type="Reference"/>
+    </elements>
+    <elements name="LayersStackApplication" supertypes="//@dataContexts.0/@elements.5">
+      <properties name="layersStacks" type="Reference" multiplicity="-1"/>
+      <properties name="layerStackRegistry" type="Reference"/>
+      <properties name="propertyRegistry" type="Reference"/>
+      <properties name="layerDescriptorRegistry" type="Reference"/>
+      <properties name="factory" type="Reference"/>
+      <properties name="propertySetterRegistry" type="Reference"/>
+    </elements>
+    <elements name="FolderElement"/>
+    <elements name="LayerStackDescriptorRegistry"/>
+    <elements name="PropertyRegistry">
+      <properties name="properties" type="Reference" multiplicity="-1"/>
+      <properties name="typeRegistry" type="Reference"/>
+    </elements>
+    <elements name="Property" supertypes="//@dataContexts.0/@elements.5">
+      <properties name="type" type="Reference"/>
+      <properties name="defaultValue" type="Reference"/>
+      <properties name="name"/>
+      <properties name="description"/>
+      <properties name="index" type="Integer"/>
+    </elements>
+    <elements name="Type" supertypes="//@dataContexts.0/@elements.5">
+      <properties name="metamodel" type="Reference"/>
+      <properties name="name"/>
+      <properties name="description"/>
+    </elements>
+    <elements name="Metamodel" supertypes="//@dataContexts.0/@elements.5">
+      <properties name="name"/>
+      <properties name="description"/>
+      <properties name="nsuri"/>
+      <properties name="pluginID"/>
+      <properties name="ePackageInstanceName"/>
+      <properties name="isTypeValid" type="Boolean"/>
+    </elements>
+    <elements name="TypeInstance" supertypes="//@dataContexts.0/@elements.12"/>
+    <elements name="ComputePropertyValueCommandItf"/>
+    <elements name="TypeRegistry">
+      <properties name="types" type="Reference" multiplicity="-1"/>
+    </elements>
+    <elements name="StringToTypeMap">
+      <properties name="value" type="Reference"/>
+      <properties name="key"/>
+    </elements>
+    <elements name="LayerDescriptorRegistry">
+      <properties name="layerDescriptors" type="Reference" multiplicity="-1"/>
+    </elements>
+    <elements name="LayerDescriptor">
+      <properties name="propertyRegistry" type="Reference"/>
+    </elements>
+    <elements name="LayerApplicationFactory">
+      <properties name="application" type="Reference"/>
+    </elements>
+    <elements name="PropertySetterRegistry">
+      <properties name="propertySetters" type="Reference" multiplicity="-1"/>
+      <properties name="setterMap" type="Reference" multiplicity="-1"/>
+      <properties name="application" type="Reference"/>
+    </elements>
+    <elements name="PropertySetter">
+      <properties name="property" type="Reference"/>
+      <properties name="propertyName"/>
+    </elements>
+    <elements name="StringToPropertySetter">
+      <properties name="key"/>
+      <properties name="value" type="Reference"/>
+    </elements>
+    <elements name="AbstractLayer" supertypes="//@dataContexts.0/@elements.2">
+      <properties name="propertyValues" type="Reference" multiplicity="-1"/>
+      <properties name="propertyValueMap" type="Reference" multiplicity="-1"/>
+      <properties name="layerDescriptor" type="Reference"/>
+      <properties name="views" type="Reference" multiplicity="-1"/>
+      <properties name="attachedProperties" type="Reference" multiplicity="-1"/>
+    </elements>
+    <elements name="StringToTypeInstanceMap">
+      <properties name="key"/>
+      <properties name="value" type="Reference"/>
+    </elements>
+    <elements name="Folder" supertypes="//@dataContexts.0/@elements.5">
+      <properties name="elements" type="Reference" multiplicity="-1"/>
+      <properties name="name"/>
+    </elements>
+    <elements name="IntInstance" supertypes="//@dataContexts.0/@elements.11">
+      <properties name="value" type="Integer"/>
+    </elements>
+    <elements name="BooleanInstance" supertypes="//@dataContexts.0/@elements.11">
+      <properties name="value" type="Boolean"/>
+    </elements>
+    <elements name="StringInstance" supertypes="//@dataContexts.0/@elements.11">
+      <properties name="value"/>
+    </elements>
+    <elements name="IntType" supertypes="//@dataContexts.0/@elements.9"/>
+    <elements name="BooleanType" supertypes="//@dataContexts.0/@elements.9"/>
+    <elements name="StringType" supertypes="//@dataContexts.0/@elements.9"/>
+    <elements name="CustomType" supertypes="//@dataContexts.0/@elements.9">
+      <properties name="classifier"/>
+    </elements>
+    <elements name="LayerOperator" supertypes="//@dataContexts.0/@elements.2">
+      <properties name="layers" type="Reference" multiplicity="-1"/>
+    </elements>
+    <elements name="AbstractLayerOperator" supertypes="//@dataContexts.0/@elements.31"/>
+    <elements name="TopLayerOperator" supertypes="//@dataContexts.0/@elements.32"/>
+    <elements name="StackedLayerOperator" supertypes="//@dataContexts.0/@elements.32"/>
+    <elements name="CustomLayerOperator" supertypes="//@dataContexts.0/@elements.31"/>
+    <elements name="PropertyIndex">
+      <properties name="property" type="Reference"/>
+      <properties name="index" type="Integer"/>
+    </elements>
+    <elements name="StringToPropertyIndexMap">
+      <properties name="value" type="Reference"/>
+      <properties name="key"/>
+    </elements>
+    <elements name="SimpleLayerDescriptor" supertypes="//@dataContexts.0/@elements.16"/>
+    <elements name="RegExpLayerDescriptor" supertypes="//@dataContexts.0/@elements.16"/>
+    <elements name="NullInstance" supertypes="//@dataContexts.0/@elements.11"/>
+    <elements name="RegExpLayer" supertypes="//@dataContexts.0/@elements.21"/>
+    <elements name="Layer" supertypes="//@dataContexts.0/@elements.21"/>
+    <elements name="Color" supertypes="//@dataContexts.0/@elements.9"/>
+    <elements name="ColorInstance" supertypes="//@dataContexts.0/@elements.11">
+      <properties name="value" type="Integer"/>
+    </elements>
+    <elements name="FillInstance" supertypes="//@dataContexts.0/@elements.11">
+      <properties name="transparency" type="Integer"/>
+      <properties name="fillColor" type="Reference"/>
+    </elements>
+    <elements name="Fill" supertypes="//@dataContexts.0/@elements.9"/>
+    <elements name="FillPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+    <elements name="IsValidPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+    <elements name="NullPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+    <elements name="LineType" supertypes="//@dataContexts.0/@elements.9"/>
+    <elements name="LineInstance" supertypes="//@dataContexts.0/@elements.11">
+      <properties name="lineColor" type="Integer"/>
+      <properties name="lineWith" type="Integer"/>
+    </elements>
+    <elements name="LinePropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+    <elements name="FontPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+    <elements name="FontInstance" supertypes="//@dataContexts.0/@elements.11">
+      <properties name="fontColor" type="Integer"/>
+      <properties name="fontName"/>
+      <properties name="fontHeigh" type="Integer"/>
+      <properties name="bold" type="Boolean"/>
+    </elements>
+    <elements name="FontType" supertypes="//@dataContexts.0/@elements.9"/>
+    <elements name="IsVisiblePropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+    <modelElementFactory href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@modelElementFactories.0"/>
+  </dataContexts>
+</contexts:Context>
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/properties-v2.ctx b/layers/org.eclipse.papyrus.layers.ui/properties/properties-v2.ctx
new file mode 100755
index 0000000..d0a6cfb
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/properties-v2.ctx
@@ -0,0 +1,1540 @@
+<?xml version="1.0" encoding="ASCII"?>
+<contexts:Context xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:constraints="http://www.eclipse.org/papyrus/constraints/0.9" xmlns:contexts="http://www.eclipse.org/papyrus/properties/contexts/0.9" name="layers">
+  <tabs label="layers" id="layers" priority="100">
+    <sections name="Single LayerNamedStyle" sectionFile="ui/SingleLayerNamedStyle.xwt">
+      <widget href="ui/SingleLayerNamedStyle.xwt#/"/>
+    </sections>
+    <sections name="Single LayersStack" sectionFile="ui/SingleLayersStack.xwt">
+      <widget href="ui/SingleLayersStack.xwt#/"/>
+    </sections>
+    <sections name="Single LayerExpression" sectionFile="ui/SingleLayerExpression.xwt">
+      <widget href="ui/SingleLayerExpression.xwt#/"/>
+    </sections>
+    <sections name="Single ApplicationDependantElement" sectionFile="ui/SingleApplicationDependantElement.xwt">
+      <widget href="ui/SingleApplicationDependantElement.xwt#/"/>
+    </sections>
+    <sections name="Single LayersStackApplication" sectionFile="ui/SingleLayersStackApplication.xwt">
+      <widget href="ui/SingleLayersStackApplication.xwt#/"/>
+    </sections>
+    <sections name="Single FolderElement" sectionFile="ui/SingleFolderElement.xwt">
+      <widget href="ui/SingleFolderElement.xwt#/"/>
+    </sections>
+    <sections name="Single LayerStackDescriptorRegistry" sectionFile="ui/SingleLayerStackDescriptorRegistry.xwt">
+      <widget href="ui/SingleLayerStackDescriptorRegistry.xwt#/"/>
+    </sections>
+    <sections name="Single PropertyRegistry" sectionFile="ui/SinglePropertyRegistry.xwt">
+      <widget href="ui/SinglePropertyRegistry.xwt#/"/>
+    </sections>
+    <sections name="Single Property" sectionFile="ui/SingleProperty.xwt">
+      <widget href="ui/SingleProperty.xwt#/"/>
+    </sections>
+    <sections name="Single Type" sectionFile="ui/SingleType.xwt">
+      <widget href="ui/SingleType.xwt#/"/>
+    </sections>
+    <sections name="Single Metamodel" sectionFile="ui/SingleMetamodel.xwt">
+      <widget href="ui/SingleMetamodel.xwt#/"/>
+    </sections>
+    <sections name="Single TypeInstance" sectionFile="ui/SingleTypeInstance.xwt">
+      <widget href="ui/SingleTypeInstance.xwt#/"/>
+    </sections>
+    <sections name="Single ComputePropertyValueCommandItf" sectionFile="ui/SingleComputePropertyValueCommandItf.xwt">
+      <widget href="ui/SingleComputePropertyValueCommandItf.xwt#/"/>
+    </sections>
+    <sections name="Single TypeRegistry" sectionFile="ui/SingleTypeRegistry.xwt">
+      <widget href="ui/SingleTypeRegistry.xwt#/"/>
+    </sections>
+    <sections name="Single StringToTypeMap" sectionFile="ui/SingleStringToTypeMap.xwt">
+      <widget href="ui/SingleStringToTypeMap.xwt#/"/>
+    </sections>
+    <sections name="Single LayerDescriptorRegistry" sectionFile="ui/SingleLayerDescriptorRegistry.xwt">
+      <widget href="ui/SingleLayerDescriptorRegistry.xwt#/"/>
+    </sections>
+    <sections name="Single LayerDescriptor" sectionFile="ui/SingleLayerDescriptor.xwt">
+      <widget href="ui/SingleLayerDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Single LayerApplicationFactory" sectionFile="ui/SingleLayerApplicationFactory.xwt">
+      <widget href="ui/SingleLayerApplicationFactory.xwt#/"/>
+    </sections>
+    <sections name="Single PropertySetterRegistry" sectionFile="ui/SinglePropertySetterRegistry.xwt">
+      <widget href="ui/SinglePropertySetterRegistry.xwt#/"/>
+    </sections>
+    <sections name="Single PropertySetter" sectionFile="ui/SinglePropertySetter.xwt">
+      <widget href="ui/SinglePropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Single StringToPropertySetter" sectionFile="ui/SingleStringToPropertySetter.xwt">
+      <widget href="ui/SingleStringToPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Single LayerOperatorDescriptorRegistry" sectionFile="ui/SingleLayerOperatorDescriptorRegistry.xwt">
+      <widget href="ui/SingleLayerOperatorDescriptorRegistry.xwt#/"/>
+    </sections>
+    <sections name="Single LayerOperatorDescriptor" sectionFile="ui/SingleLayerOperatorDescriptor.xwt">
+      <widget href="ui/SingleLayerOperatorDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Single PropertyOperator" sectionFile="ui/SinglePropertyOperator.xwt">
+      <widget href="ui/SinglePropertyOperator.xwt#/"/>
+    </sections>
+    <sections name="Single AbstractLayerOperator" sectionFile="ui/SingleAbstractLayerOperator.xwt">
+      <widget href="ui/SingleAbstractLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Single LayerOperator" sectionFile="ui/SingleLayerOperator.xwt">
+      <widget href="ui/SingleLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Single DefaultPropertyOperator" sectionFile="ui/SingleDefaultPropertyOperator.xwt">
+      <widget href="ui/SingleDefaultPropertyOperator.xwt#/"/>
+    </sections>
+    <sections name="Single AbstractLayer" sectionFile="ui/SingleAbstractLayer.xwt">
+      <widget href="ui/SingleAbstractLayer.xwt#/"/>
+    </sections>
+    <sections name="Single StringToTypeInstanceMap" sectionFile="ui/SingleStringToTypeInstanceMap.xwt">
+      <widget href="ui/SingleStringToTypeInstanceMap.xwt#/"/>
+    </sections>
+    <sections name="Single Folder" sectionFile="ui/SingleFolder.xwt">
+      <widget href="ui/SingleFolder.xwt#/"/>
+    </sections>
+    <sections name="Single IntInstance" sectionFile="ui/SingleIntInstance.xwt">
+      <widget href="ui/SingleIntInstance.xwt#/"/>
+    </sections>
+    <sections name="Single BooleanInstance" sectionFile="ui/SingleBooleanInstance.xwt">
+      <widget href="ui/SingleBooleanInstance.xwt#/"/>
+    </sections>
+    <sections name="Single StringInstance" sectionFile="ui/SingleStringInstance.xwt">
+      <widget href="ui/SingleStringInstance.xwt#/"/>
+    </sections>
+    <sections name="Single IntType" sectionFile="ui/SingleIntType.xwt">
+      <widget href="ui/SingleIntType.xwt#/"/>
+    </sections>
+    <sections name="Single BooleanType" sectionFile="ui/SingleBooleanType.xwt">
+      <widget href="ui/SingleBooleanType.xwt#/"/>
+    </sections>
+    <sections name="Single StringType" sectionFile="ui/SingleStringType.xwt">
+      <widget href="ui/SingleStringType.xwt#/"/>
+    </sections>
+    <sections name="Single CustomType" sectionFile="ui/SingleCustomType.xwt">
+      <widget href="ui/SingleCustomType.xwt#/"/>
+    </sections>
+    <sections name="Single TopLayerOperator" sectionFile="ui/SingleTopLayerOperator.xwt">
+      <widget href="ui/SingleTopLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Single StackedLayerOperator" sectionFile="ui/SingleStackedLayerOperator.xwt">
+      <widget href="ui/SingleStackedLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Single CustomLayerOperator" sectionFile="ui/SingleCustomLayerOperator.xwt">
+      <widget href="ui/SingleCustomLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Single PropertyIndex" sectionFile="ui/SinglePropertyIndex.xwt">
+      <widget href="ui/SinglePropertyIndex.xwt#/"/>
+    </sections>
+    <sections name="Single StringToPropertyIndexMap" sectionFile="ui/SingleStringToPropertyIndexMap.xwt">
+      <widget href="ui/SingleStringToPropertyIndexMap.xwt#/"/>
+    </sections>
+    <sections name="Single SimpleLayerDescriptor" sectionFile="ui/SingleSimpleLayerDescriptor.xwt">
+      <widget href="ui/SingleSimpleLayerDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Single RegExpLayerDescriptor" sectionFile="ui/SingleRegExpLayerDescriptor.xwt">
+      <widget href="ui/SingleRegExpLayerDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Single NullInstance" sectionFile="ui/SingleNullInstance.xwt">
+      <widget href="ui/SingleNullInstance.xwt#/"/>
+    </sections>
+    <sections name="Single RegExpLayer" sectionFile="ui/SingleRegExpLayer.xwt">
+      <widget href="ui/SingleRegExpLayer.xwt#/"/>
+    </sections>
+    <sections name="Single Layer" sectionFile="ui/SingleLayer.xwt">
+      <widget href="ui/SingleLayer.xwt#/"/>
+    </sections>
+    <sections name="Single Color" sectionFile="ui/SingleColor.xwt">
+      <widget href="ui/SingleColor.xwt#/"/>
+    </sections>
+    <sections name="Single ColorInstance" sectionFile="ui/SingleColorInstance.xwt">
+      <widget href="ui/SingleColorInstance.xwt#/"/>
+    </sections>
+    <sections name="Single FillInstance" sectionFile="ui/SingleFillInstance.xwt">
+      <widget href="ui/SingleFillInstance.xwt#/"/>
+    </sections>
+    <sections name="Single Fill" sectionFile="ui/SingleFill.xwt">
+      <widget href="ui/SingleFill.xwt#/"/>
+    </sections>
+    <sections name="Single FillPropertySetter" sectionFile="ui/SingleFillPropertySetter.xwt">
+      <widget href="ui/SingleFillPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Single IsValidPropertySetter" sectionFile="ui/SingleIsValidPropertySetter.xwt">
+      <widget href="ui/SingleIsValidPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Single NullPropertySetter" sectionFile="ui/SingleNullPropertySetter.xwt">
+      <widget href="ui/SingleNullPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Single LineType" sectionFile="ui/SingleLineType.xwt">
+      <widget href="ui/SingleLineType.xwt#/"/>
+    </sections>
+    <sections name="Single LineInstance" sectionFile="ui/SingleLineInstance.xwt">
+      <widget href="ui/SingleLineInstance.xwt#/"/>
+    </sections>
+    <sections name="Single LinePropertySetter" sectionFile="ui/SingleLinePropertySetter.xwt">
+      <widget href="ui/SingleLinePropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Single FontPropertySetter" sectionFile="ui/SingleFontPropertySetter.xwt">
+      <widget href="ui/SingleFontPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Single FontInstance" sectionFile="ui/SingleFontInstance.xwt">
+      <widget href="ui/SingleFontInstance.xwt#/"/>
+    </sections>
+    <sections name="Single FontType" sectionFile="ui/SingleFontType.xwt">
+      <widget href="ui/SingleFontType.xwt#/"/>
+    </sections>
+    <sections name="Single IsVisiblePropertySetter" sectionFile="ui/SingleIsVisiblePropertySetter.xwt">
+      <widget href="ui/SingleIsVisiblePropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Single TopLayerOperatorDescriptor" sectionFile="ui/SingleTopLayerOperatorDescriptor.xwt">
+      <widget href="ui/SingleTopLayerOperatorDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Single StackedLayerOperatorDescriptor" sectionFile="ui/SingleStackedLayerOperatorDescriptor.xwt">
+      <widget href="ui/SingleStackedLayerOperatorDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Single CustomPropertyOperator" sectionFile="ui/SingleCustomPropertyOperator.xwt">
+      <widget href="ui/SingleCustomPropertyOperator.xwt#/"/>
+    </sections>
+    <sections name="Single AndStackedLayerOperatorDescriptor" sectionFile="ui/SingleAndStackedLayerOperatorDescriptor.xwt">
+      <widget href="ui/SingleAndStackedLayerOperatorDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Single OrStackedLayerOperatorDescriptor" sectionFile="ui/SingleOrStackedLayerOperatorDescriptor.xwt">
+      <widget href="ui/SingleOrStackedLayerOperatorDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Single IsAbstractUmlSetter" sectionFile="ui/SingleIsAbstractUmlSetter.xwt">
+      <widget href="ui/SingleIsAbstractUmlSetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerNamedStyle" sectionFile="ui/MultipleLayerNamedStyle.xwt">
+      <widget href="ui/MultipleLayerNamedStyle.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayersStack" sectionFile="ui/MultipleLayersStack.xwt">
+      <widget href="ui/MultipleLayersStack.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerExpression" sectionFile="ui/MultipleLayerExpression.xwt">
+      <widget href="ui/MultipleLayerExpression.xwt#/"/>
+    </sections>
+    <sections name="Multiple ApplicationDependantElement" sectionFile="ui/MultipleApplicationDependantElement.xwt">
+      <widget href="ui/MultipleApplicationDependantElement.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayersStackApplication" sectionFile="ui/MultipleLayersStackApplication.xwt">
+      <widget href="ui/MultipleLayersStackApplication.xwt#/"/>
+    </sections>
+    <sections name="Multiple FolderElement" sectionFile="ui/MultipleFolderElement.xwt">
+      <widget href="ui/MultipleFolderElement.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerStackDescriptorRegistry" sectionFile="ui/MultipleLayerStackDescriptorRegistry.xwt">
+      <widget href="ui/MultipleLayerStackDescriptorRegistry.xwt#/"/>
+    </sections>
+    <sections name="Multiple PropertyRegistry" sectionFile="ui/MultiplePropertyRegistry.xwt">
+      <widget href="ui/MultiplePropertyRegistry.xwt#/"/>
+    </sections>
+    <sections name="Multiple Property" sectionFile="ui/MultipleProperty.xwt">
+      <widget href="ui/MultipleProperty.xwt#/"/>
+    </sections>
+    <sections name="Multiple Type" sectionFile="ui/MultipleType.xwt">
+      <widget href="ui/MultipleType.xwt#/"/>
+    </sections>
+    <sections name="Multiple Metamodel" sectionFile="ui/MultipleMetamodel.xwt">
+      <widget href="ui/MultipleMetamodel.xwt#/"/>
+    </sections>
+    <sections name="Multiple TypeInstance" sectionFile="ui/MultipleTypeInstance.xwt">
+      <widget href="ui/MultipleTypeInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple ComputePropertyValueCommandItf" sectionFile="ui/MultipleComputePropertyValueCommandItf.xwt">
+      <widget href="ui/MultipleComputePropertyValueCommandItf.xwt#/"/>
+    </sections>
+    <sections name="Multiple TypeRegistry" sectionFile="ui/MultipleTypeRegistry.xwt">
+      <widget href="ui/MultipleTypeRegistry.xwt#/"/>
+    </sections>
+    <sections name="Multiple StringToTypeMap" sectionFile="ui/MultipleStringToTypeMap.xwt">
+      <widget href="ui/MultipleStringToTypeMap.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerDescriptorRegistry" sectionFile="ui/MultipleLayerDescriptorRegistry.xwt">
+      <widget href="ui/MultipleLayerDescriptorRegistry.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerDescriptor" sectionFile="ui/MultipleLayerDescriptor.xwt">
+      <widget href="ui/MultipleLayerDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerApplicationFactory" sectionFile="ui/MultipleLayerApplicationFactory.xwt">
+      <widget href="ui/MultipleLayerApplicationFactory.xwt#/"/>
+    </sections>
+    <sections name="Multiple PropertySetterRegistry" sectionFile="ui/MultiplePropertySetterRegistry.xwt">
+      <widget href="ui/MultiplePropertySetterRegistry.xwt#/"/>
+    </sections>
+    <sections name="Multiple PropertySetter" sectionFile="ui/MultiplePropertySetter.xwt">
+      <widget href="ui/MultiplePropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple StringToPropertySetter" sectionFile="ui/MultipleStringToPropertySetter.xwt">
+      <widget href="ui/MultipleStringToPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerOperatorDescriptorRegistry" sectionFile="ui/MultipleLayerOperatorDescriptorRegistry.xwt">
+      <widget href="ui/MultipleLayerOperatorDescriptorRegistry.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerOperatorDescriptor" sectionFile="ui/MultipleLayerOperatorDescriptor.xwt">
+      <widget href="ui/MultipleLayerOperatorDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Multiple PropertyOperator" sectionFile="ui/MultiplePropertyOperator.xwt">
+      <widget href="ui/MultiplePropertyOperator.xwt#/"/>
+    </sections>
+    <sections name="Multiple AbstractLayerOperator" sectionFile="ui/MultipleAbstractLayerOperator.xwt">
+      <widget href="ui/MultipleAbstractLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerOperator" sectionFile="ui/MultipleLayerOperator.xwt">
+      <widget href="ui/MultipleLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Multiple DefaultPropertyOperator" sectionFile="ui/MultipleDefaultPropertyOperator.xwt">
+      <widget href="ui/MultipleDefaultPropertyOperator.xwt#/"/>
+    </sections>
+    <sections name="Multiple AbstractLayer" sectionFile="ui/MultipleAbstractLayer.xwt">
+      <widget href="ui/MultipleAbstractLayer.xwt#/"/>
+    </sections>
+    <sections name="Multiple StringToTypeInstanceMap" sectionFile="ui/MultipleStringToTypeInstanceMap.xwt">
+      <widget href="ui/MultipleStringToTypeInstanceMap.xwt#/"/>
+    </sections>
+    <sections name="Multiple Folder" sectionFile="ui/MultipleFolder.xwt">
+      <widget href="ui/MultipleFolder.xwt#/"/>
+    </sections>
+    <sections name="Multiple IntInstance" sectionFile="ui/MultipleIntInstance.xwt">
+      <widget href="ui/MultipleIntInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple BooleanInstance" sectionFile="ui/MultipleBooleanInstance.xwt">
+      <widget href="ui/MultipleBooleanInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple StringInstance" sectionFile="ui/MultipleStringInstance.xwt">
+      <widget href="ui/MultipleStringInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple IntType" sectionFile="ui/MultipleIntType.xwt">
+      <widget href="ui/MultipleIntType.xwt#/"/>
+    </sections>
+    <sections name="Multiple BooleanType" sectionFile="ui/MultipleBooleanType.xwt">
+      <widget href="ui/MultipleBooleanType.xwt#/"/>
+    </sections>
+    <sections name="Multiple StringType" sectionFile="ui/MultipleStringType.xwt">
+      <widget href="ui/MultipleStringType.xwt#/"/>
+    </sections>
+    <sections name="Multiple CustomType" sectionFile="ui/MultipleCustomType.xwt">
+      <widget href="ui/MultipleCustomType.xwt#/"/>
+    </sections>
+    <sections name="Multiple TopLayerOperator" sectionFile="ui/MultipleTopLayerOperator.xwt">
+      <widget href="ui/MultipleTopLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Multiple StackedLayerOperator" sectionFile="ui/MultipleStackedLayerOperator.xwt">
+      <widget href="ui/MultipleStackedLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Multiple CustomLayerOperator" sectionFile="ui/MultipleCustomLayerOperator.xwt">
+      <widget href="ui/MultipleCustomLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Multiple PropertyIndex" sectionFile="ui/MultiplePropertyIndex.xwt">
+      <widget href="ui/MultiplePropertyIndex.xwt#/"/>
+    </sections>
+    <sections name="Multiple StringToPropertyIndexMap" sectionFile="ui/MultipleStringToPropertyIndexMap.xwt">
+      <widget href="ui/MultipleStringToPropertyIndexMap.xwt#/"/>
+    </sections>
+    <sections name="Multiple SimpleLayerDescriptor" sectionFile="ui/MultipleSimpleLayerDescriptor.xwt">
+      <widget href="ui/MultipleSimpleLayerDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Multiple RegExpLayerDescriptor" sectionFile="ui/MultipleRegExpLayerDescriptor.xwt">
+      <widget href="ui/MultipleRegExpLayerDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Multiple NullInstance" sectionFile="ui/MultipleNullInstance.xwt">
+      <widget href="ui/MultipleNullInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple RegExpLayer" sectionFile="ui/MultipleRegExpLayer.xwt">
+      <widget href="ui/MultipleRegExpLayer.xwt#/"/>
+    </sections>
+    <sections name="Multiple Layer" sectionFile="ui/MultipleLayer.xwt">
+      <widget href="ui/MultipleLayer.xwt#/"/>
+    </sections>
+    <sections name="Multiple Color" sectionFile="ui/MultipleColor.xwt">
+      <widget href="ui/MultipleColor.xwt#/"/>
+    </sections>
+    <sections name="Multiple ColorInstance" sectionFile="ui/MultipleColorInstance.xwt">
+      <widget href="ui/MultipleColorInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple FillInstance" sectionFile="ui/MultipleFillInstance.xwt">
+      <widget href="ui/MultipleFillInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple Fill" sectionFile="ui/MultipleFill.xwt">
+      <widget href="ui/MultipleFill.xwt#/"/>
+    </sections>
+    <sections name="Multiple FillPropertySetter" sectionFile="ui/MultipleFillPropertySetter.xwt">
+      <widget href="ui/MultipleFillPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple IsValidPropertySetter" sectionFile="ui/MultipleIsValidPropertySetter.xwt">
+      <widget href="ui/MultipleIsValidPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple NullPropertySetter" sectionFile="ui/MultipleNullPropertySetter.xwt">
+      <widget href="ui/MultipleNullPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple LineType" sectionFile="ui/MultipleLineType.xwt">
+      <widget href="ui/MultipleLineType.xwt#/"/>
+    </sections>
+    <sections name="Multiple LineInstance" sectionFile="ui/MultipleLineInstance.xwt">
+      <widget href="ui/MultipleLineInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple LinePropertySetter" sectionFile="ui/MultipleLinePropertySetter.xwt">
+      <widget href="ui/MultipleLinePropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple FontPropertySetter" sectionFile="ui/MultipleFontPropertySetter.xwt">
+      <widget href="ui/MultipleFontPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple FontInstance" sectionFile="ui/MultipleFontInstance.xwt">
+      <widget href="ui/MultipleFontInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple FontType" sectionFile="ui/MultipleFontType.xwt">
+      <widget href="ui/MultipleFontType.xwt#/"/>
+    </sections>
+    <sections name="Multiple IsVisiblePropertySetter" sectionFile="ui/MultipleIsVisiblePropertySetter.xwt">
+      <widget href="ui/MultipleIsVisiblePropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple TopLayerOperatorDescriptor" sectionFile="ui/MultipleTopLayerOperatorDescriptor.xwt">
+      <widget href="ui/MultipleTopLayerOperatorDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Multiple StackedLayerOperatorDescriptor" sectionFile="ui/MultipleStackedLayerOperatorDescriptor.xwt">
+      <widget href="ui/MultipleStackedLayerOperatorDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Multiple CustomPropertyOperator" sectionFile="ui/MultipleCustomPropertyOperator.xwt">
+      <widget href="ui/MultipleCustomPropertyOperator.xwt#/"/>
+    </sections>
+    <sections name="Multiple AndStackedLayerOperatorDescriptor" sectionFile="ui/MultipleAndStackedLayerOperatorDescriptor.xwt">
+      <widget href="ui/MultipleAndStackedLayerOperatorDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Multiple OrStackedLayerOperatorDescriptor" sectionFile="ui/MultipleOrStackedLayerOperatorDescriptor.xwt">
+      <widget href="ui/MultipleOrStackedLayerOperatorDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Multiple IsAbstractUmlSetter" sectionFile="ui/MultipleIsAbstractUmlSetter.xwt">
+      <widget href="ui/MultipleIsAbstractUmlSetter.xwt#/"/>
+    </sections>
+  </tabs>
+  <views name="Single LayerNamedStyle" sections="//@tabs.0/@sections.0" automaticContext="true" datacontexts="//@dataContexts.0/@elements.0">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerNamedStyle">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerNamedStyle"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single LayersStack" sections="//@tabs.0/@sections.1" automaticContext="true" datacontexts="//@dataContexts.0/@elements.1">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayersStack">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStack"/>
+    </constraints>
+  </views>
+  <views name="Single LayerExpression" sections="//@tabs.0/@sections.2" automaticContext="true" datacontexts="//@dataContexts.0/@elements.2">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerExpression">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerExpression"/>
+    </constraints>
+  </views>
+  <views name="Single ApplicationDependantElement" sections="//@tabs.0/@sections.3" automaticContext="true" datacontexts="//@dataContexts.0/@elements.3">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleApplicationDependantElement">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="ApplicationDependantElement"/>
+    </constraints>
+  </views>
+  <views name="Single LayersStackApplication" sections="//@tabs.0/@sections.4" automaticContext="true" datacontexts="//@dataContexts.0/@elements.4">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayersStackApplication">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStackApplication"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single FolderElement" sections="//@tabs.0/@sections.5" automaticContext="true" datacontexts="//@dataContexts.0/@elements.5">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFolderElement">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FolderElement"/>
+    </constraints>
+  </views>
+  <views name="Single LayerStackDescriptorRegistry" sections="//@tabs.0/@sections.6" automaticContext="true" datacontexts="//@dataContexts.0/@elements.6">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerStackDescriptorRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerStackDescriptorRegistry"/>
+    </constraints>
+  </views>
+  <views name="Single PropertyRegistry" sections="//@tabs.0/@sections.7" automaticContext="true" datacontexts="//@dataContexts.0/@elements.7">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertyRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyRegistry"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single Property" sections="//@tabs.0/@sections.8" automaticContext="true" datacontexts="//@dataContexts.0/@elements.8">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleProperty">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Property"/>
+    </constraints>
+  </views>
+  <views name="Single Type" sections="//@tabs.0/@sections.9" automaticContext="true" datacontexts="//@dataContexts.0/@elements.9">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Type"/>
+    </constraints>
+  </views>
+  <views name="Single Metamodel" sections="//@tabs.0/@sections.10" automaticContext="true" datacontexts="//@dataContexts.0/@elements.10">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleMetamodel">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Metamodel"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single TypeInstance" sections="//@tabs.0/@sections.11" automaticContext="true" datacontexts="//@dataContexts.0/@elements.11">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleTypeInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="TypeInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single ComputePropertyValueCommandItf" sections="//@tabs.0/@sections.12" automaticContext="true" datacontexts="//@dataContexts.0/@elements.12">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleComputePropertyValueCommandItf">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="ComputePropertyValueCommandItf"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single TypeRegistry" sections="//@tabs.0/@sections.13" automaticContext="true" datacontexts="//@dataContexts.0/@elements.13">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleTypeRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="TypeRegistry"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single StringToTypeMap" sections="//@tabs.0/@sections.14" automaticContext="true" datacontexts="//@dataContexts.0/@elements.14">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToTypeMap">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeMap"/>
+    </constraints>
+  </views>
+  <views name="Single LayerDescriptorRegistry" sections="//@tabs.0/@sections.15" automaticContext="true" datacontexts="//@dataContexts.0/@elements.15">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerDescriptorRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptorRegistry"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single LayerDescriptor" sections="//@tabs.0/@sections.16" automaticContext="true" datacontexts="//@dataContexts.0/@elements.16">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptor"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single LayerApplicationFactory" sections="//@tabs.0/@sections.17" automaticContext="true" datacontexts="//@dataContexts.0/@elements.17">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerApplicationFactory">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerApplicationFactory"/>
+    </constraints>
+  </views>
+  <views name="Single PropertySetterRegistry" sections="//@tabs.0/@sections.18" automaticContext="true" datacontexts="//@dataContexts.0/@elements.18">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertySetterRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetterRegistry"/>
+    </constraints>
+  </views>
+  <views name="Single PropertySetter" sections="//@tabs.0/@sections.19" automaticContext="true" datacontexts="//@dataContexts.0/@elements.19">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single StringToPropertySetter" sections="//@tabs.0/@sections.20" automaticContext="true" datacontexts="//@dataContexts.0/@elements.20">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single LayerOperatorDescriptorRegistry" sections="//@tabs.0/@sections.21" automaticContext="true" datacontexts="//@dataContexts.0/@elements.21">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerOperatorDescriptorRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperatorDescriptorRegistry"/>
+    </constraints>
+  </views>
+  <views name="Single LayerOperatorDescriptor" sections="//@tabs.0/@sections.22" automaticContext="true" datacontexts="//@dataContexts.0/@elements.22">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerOperatorDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperatorDescriptor"/>
+    </constraints>
+  </views>
+  <views name="Single PropertyOperator" sections="//@tabs.0/@sections.23" automaticContext="true" datacontexts="//@dataContexts.0/@elements.23">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertyOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyOperator"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single AbstractLayerOperator" sections="//@tabs.0/@sections.24" automaticContext="true" datacontexts="//@dataContexts.0/@elements.24">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleAbstractLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayerOperator"/>
+    </constraints>
+  </views>
+  <views name="Single LayerOperator" sections="//@tabs.0/@sections.25" automaticContext="true" datacontexts="//@dataContexts.0/@elements.25">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperator"/>
+    </constraints>
+  </views>
+  <views name="Single DefaultPropertyOperator" sections="//@tabs.0/@sections.26" automaticContext="true" datacontexts="//@dataContexts.0/@elements.26">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleDefaultPropertyOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="DefaultPropertyOperator"/>
+    </constraints>
+  </views>
+  <views name="Single AbstractLayer" sections="//@tabs.0/@sections.27" automaticContext="true" datacontexts="//@dataContexts.0/@elements.27">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleAbstractLayer">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayer"/>
+    </constraints>
+  </views>
+  <views name="Single StringToTypeInstanceMap" sections="//@tabs.0/@sections.28" automaticContext="true" datacontexts="//@dataContexts.0/@elements.28">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToTypeInstanceMap">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeInstanceMap"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single Folder" sections="//@tabs.0/@sections.29" automaticContext="true" datacontexts="//@dataContexts.0/@elements.29">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFolder">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Folder"/>
+    </constraints>
+  </views>
+  <views name="Single IntInstance" sections="//@tabs.0/@sections.30" automaticContext="true" datacontexts="//@dataContexts.0/@elements.30">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIntInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IntInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single BooleanInstance" sections="//@tabs.0/@sections.31" automaticContext="true" datacontexts="//@dataContexts.0/@elements.31">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleBooleanInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanInstance"/>
+    </constraints>
+  </views>
+  <views name="Single StringInstance" sections="//@tabs.0/@sections.32" automaticContext="true" datacontexts="//@dataContexts.0/@elements.32">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringInstance"/>
+    </constraints>
+  </views>
+  <views name="Single IntType" sections="//@tabs.0/@sections.33" automaticContext="true" datacontexts="//@dataContexts.0/@elements.33">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIntType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IntType"/>
+    </constraints>
+  </views>
+  <views name="Single BooleanType" sections="//@tabs.0/@sections.34" automaticContext="true" datacontexts="//@dataContexts.0/@elements.34">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleBooleanType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanType"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single StringType" sections="//@tabs.0/@sections.35" automaticContext="true" datacontexts="//@dataContexts.0/@elements.35">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringType"/>
+    </constraints>
+  </views>
+  <views name="Single CustomType" sections="//@tabs.0/@sections.36" automaticContext="true" datacontexts="//@dataContexts.0/@elements.36">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleCustomType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="CustomType"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single TopLayerOperator" sections="//@tabs.0/@sections.37" automaticContext="true" datacontexts="//@dataContexts.0/@elements.37">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleTopLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="TopLayerOperator"/>
+    </constraints>
+  </views>
+  <views name="Single StackedLayerOperator" sections="//@tabs.0/@sections.38" automaticContext="true" datacontexts="//@dataContexts.0/@elements.38">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStackedLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StackedLayerOperator"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single CustomLayerOperator" sections="//@tabs.0/@sections.39" automaticContext="true" datacontexts="//@dataContexts.0/@elements.39">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleCustomLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="CustomLayerOperator"/>
+    </constraints>
+  </views>
+  <views name="Single PropertyIndex" sections="//@tabs.0/@sections.40" automaticContext="true" datacontexts="//@dataContexts.0/@elements.40">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertyIndex">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyIndex"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single StringToPropertyIndexMap" sections="//@tabs.0/@sections.41" automaticContext="true" datacontexts="//@dataContexts.0/@elements.41">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToPropertyIndexMap">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertyIndexMap"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single SimpleLayerDescriptor" sections="//@tabs.0/@sections.42" automaticContext="true" datacontexts="//@dataContexts.0/@elements.42">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleSimpleLayerDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="SimpleLayerDescriptor"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single RegExpLayerDescriptor" sections="//@tabs.0/@sections.43" automaticContext="true" datacontexts="//@dataContexts.0/@elements.43">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleRegExpLayerDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayerDescriptor"/>
+    </constraints>
+  </views>
+  <views name="Single NullInstance" sections="//@tabs.0/@sections.44" automaticContext="true" datacontexts="//@dataContexts.0/@elements.44">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleNullInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="NullInstance"/>
+    </constraints>
+  </views>
+  <views name="Single RegExpLayer" sections="//@tabs.0/@sections.45" automaticContext="true" datacontexts="//@dataContexts.0/@elements.45">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleRegExpLayer">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayer"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single Layer" sections="//@tabs.0/@sections.46" automaticContext="true" datacontexts="//@dataContexts.0/@elements.46">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayer">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Layer"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single Color" sections="//@tabs.0/@sections.47" automaticContext="true" datacontexts="//@dataContexts.0/@elements.47">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleColor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Color"/>
+    </constraints>
+  </views>
+  <views name="Single ColorInstance" sections="//@tabs.0/@sections.48" automaticContext="true" datacontexts="//@dataContexts.0/@elements.48">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleColorInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="ColorInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single FillInstance" sections="//@tabs.0/@sections.49" automaticContext="true" datacontexts="//@dataContexts.0/@elements.49">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFillInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FillInstance"/>
+    </constraints>
+  </views>
+  <views name="Single Fill" sections="//@tabs.0/@sections.50" automaticContext="true" datacontexts="//@dataContexts.0/@elements.50">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFill">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Fill"/>
+    </constraints>
+  </views>
+  <views name="Single FillPropertySetter" sections="//@tabs.0/@sections.51" automaticContext="true" datacontexts="//@dataContexts.0/@elements.51">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFillPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FillPropertySetter"/>
+    </constraints>
+  </views>
+  <views name="Single IsValidPropertySetter" sections="//@tabs.0/@sections.52" automaticContext="true" datacontexts="//@dataContexts.0/@elements.52">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIsValidPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IsValidPropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single NullPropertySetter" sections="//@tabs.0/@sections.53" automaticContext="true" datacontexts="//@dataContexts.0/@elements.53">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleNullPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="NullPropertySetter"/>
+    </constraints>
+  </views>
+  <views name="Single LineType" sections="//@tabs.0/@sections.54" automaticContext="true" datacontexts="//@dataContexts.0/@elements.54">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLineType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LineType"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single LineInstance" sections="//@tabs.0/@sections.55" automaticContext="true" datacontexts="//@dataContexts.0/@elements.55">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLineInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LineInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single LinePropertySetter" sections="//@tabs.0/@sections.56" automaticContext="true" datacontexts="//@dataContexts.0/@elements.56">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLinePropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LinePropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single FontPropertySetter" sections="//@tabs.0/@sections.57" automaticContext="true" datacontexts="//@dataContexts.0/@elements.57">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFontPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FontPropertySetter"/>
+    </constraints>
+  </views>
+  <views name="Single FontInstance" sections="//@tabs.0/@sections.58" automaticContext="true" datacontexts="//@dataContexts.0/@elements.58">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFontInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FontInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single FontType" sections="//@tabs.0/@sections.59" automaticContext="true" datacontexts="//@dataContexts.0/@elements.59">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFontType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FontType"/>
+    </constraints>
+  </views>
+  <views name="Single IsVisiblePropertySetter" sections="//@tabs.0/@sections.60" automaticContext="true" datacontexts="//@dataContexts.0/@elements.60">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIsVisiblePropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IsVisiblePropertySetter"/>
+    </constraints>
+  </views>
+  <views name="Single TopLayerOperatorDescriptor" sections="//@tabs.0/@sections.61" automaticContext="true" datacontexts="//@dataContexts.0/@elements.61">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleTopLayerOperatorDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="TopLayerOperatorDescriptor"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single StackedLayerOperatorDescriptor" sections="//@tabs.0/@sections.62" automaticContext="true" datacontexts="//@dataContexts.0/@elements.62">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStackedLayerOperatorDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StackedLayerOperatorDescriptor"/>
+    </constraints>
+  </views>
+  <views name="Single CustomPropertyOperator" sections="//@tabs.0/@sections.63" automaticContext="true" datacontexts="//@dataContexts.0/@elements.63">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleCustomPropertyOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="CustomPropertyOperator"/>
+    </constraints>
+  </views>
+  <views name="Single AndStackedLayerOperatorDescriptor" sections="//@tabs.0/@sections.64" automaticContext="true" datacontexts="//@dataContexts.0/@elements.64">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleAndStackedLayerOperatorDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="AndStackedLayerOperatorDescriptor"/>
+    </constraints>
+  </views>
+  <views name="Single OrStackedLayerOperatorDescriptor" sections="//@tabs.0/@sections.65" automaticContext="true" datacontexts="//@dataContexts.0/@elements.65">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleOrStackedLayerOperatorDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="OrStackedLayerOperatorDescriptor"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single IsAbstractUmlSetter" sections="//@tabs.0/@sections.66" automaticContext="true" datacontexts="//@dataContexts.0/@elements.66">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIsAbstractUmlSetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IsAbstractUmlSetter"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerNamedStyle" sections="//@tabs.0/@sections.67" automaticContext="true" datacontexts="//@dataContexts.0/@elements.0">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerNamedStyle">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerNamedStyle"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayersStack" sections="//@tabs.0/@sections.68" automaticContext="true" datacontexts="//@dataContexts.0/@elements.1">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayersStack">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStack"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerExpression" sections="//@tabs.0/@sections.69" automaticContext="true" datacontexts="//@dataContexts.0/@elements.2">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerExpression">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerExpression"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple ApplicationDependantElement" sections="//@tabs.0/@sections.70" automaticContext="true" datacontexts="//@dataContexts.0/@elements.3">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleApplicationDependantElement">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="ApplicationDependantElement"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayersStackApplication" sections="//@tabs.0/@sections.71" automaticContext="true" datacontexts="//@dataContexts.0/@elements.4">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayersStackApplication">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStackApplication"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple FolderElement" sections="//@tabs.0/@sections.72" automaticContext="true" datacontexts="//@dataContexts.0/@elements.5">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFolderElement">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FolderElement"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerStackDescriptorRegistry" sections="//@tabs.0/@sections.73" automaticContext="true" datacontexts="//@dataContexts.0/@elements.6">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerStackDescriptorRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerStackDescriptorRegistry"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple PropertyRegistry" sections="//@tabs.0/@sections.74" automaticContext="true" datacontexts="//@dataContexts.0/@elements.7">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertyRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyRegistry"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple Property" sections="//@tabs.0/@sections.75" automaticContext="true" datacontexts="//@dataContexts.0/@elements.8">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleProperty">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Property"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple Type" sections="//@tabs.0/@sections.76" automaticContext="true" datacontexts="//@dataContexts.0/@elements.9">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Type"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple Metamodel" sections="//@tabs.0/@sections.77" automaticContext="true" datacontexts="//@dataContexts.0/@elements.10">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleMetamodel">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Metamodel"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple TypeInstance" sections="//@tabs.0/@sections.78" automaticContext="true" datacontexts="//@dataContexts.0/@elements.11">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleTypeInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="TypeInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple ComputePropertyValueCommandItf" sections="//@tabs.0/@sections.79" automaticContext="true" datacontexts="//@dataContexts.0/@elements.12">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleComputePropertyValueCommandItf">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="ComputePropertyValueCommandItf"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple TypeRegistry" sections="//@tabs.0/@sections.80" automaticContext="true" datacontexts="//@dataContexts.0/@elements.13">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleTypeRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="TypeRegistry"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple StringToTypeMap" sections="//@tabs.0/@sections.81" automaticContext="true" datacontexts="//@dataContexts.0/@elements.14">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToTypeMap">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeMap"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerDescriptorRegistry" sections="//@tabs.0/@sections.82" automaticContext="true" datacontexts="//@dataContexts.0/@elements.15">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerDescriptorRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptorRegistry"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerDescriptor" sections="//@tabs.0/@sections.83" automaticContext="true" datacontexts="//@dataContexts.0/@elements.16">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptor"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerApplicationFactory" sections="//@tabs.0/@sections.84" automaticContext="true" datacontexts="//@dataContexts.0/@elements.17">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerApplicationFactory">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerApplicationFactory"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple PropertySetterRegistry" sections="//@tabs.0/@sections.85" automaticContext="true" datacontexts="//@dataContexts.0/@elements.18">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertySetterRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetterRegistry"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple PropertySetter" sections="//@tabs.0/@sections.86" automaticContext="true" datacontexts="//@dataContexts.0/@elements.19">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetter"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple StringToPropertySetter" sections="//@tabs.0/@sections.87" automaticContext="true" datacontexts="//@dataContexts.0/@elements.20">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertySetter"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerOperatorDescriptorRegistry" sections="//@tabs.0/@sections.88" automaticContext="true" datacontexts="//@dataContexts.0/@elements.21">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerOperatorDescriptorRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperatorDescriptorRegistry"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerOperatorDescriptor" sections="//@tabs.0/@sections.89" automaticContext="true" datacontexts="//@dataContexts.0/@elements.22">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerOperatorDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperatorDescriptor"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple PropertyOperator" sections="//@tabs.0/@sections.90" automaticContext="true" datacontexts="//@dataContexts.0/@elements.23">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertyOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyOperator"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple AbstractLayerOperator" sections="//@tabs.0/@sections.91" automaticContext="true" datacontexts="//@dataContexts.0/@elements.24">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleAbstractLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayerOperator"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerOperator" sections="//@tabs.0/@sections.92" automaticContext="true" datacontexts="//@dataContexts.0/@elements.25">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperator"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple DefaultPropertyOperator" sections="//@tabs.0/@sections.93" automaticContext="true" datacontexts="//@dataContexts.0/@elements.26">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleDefaultPropertyOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="DefaultPropertyOperator"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple AbstractLayer" sections="//@tabs.0/@sections.94" automaticContext="true" datacontexts="//@dataContexts.0/@elements.27">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleAbstractLayer">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayer"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple StringToTypeInstanceMap" sections="//@tabs.0/@sections.95" automaticContext="true" datacontexts="//@dataContexts.0/@elements.28">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToTypeInstanceMap">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeInstanceMap"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple Folder" sections="//@tabs.0/@sections.96" automaticContext="true" datacontexts="//@dataContexts.0/@elements.29">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFolder">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Folder"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple IntInstance" sections="//@tabs.0/@sections.97" automaticContext="true" datacontexts="//@dataContexts.0/@elements.30">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIntInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IntInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple BooleanInstance" sections="//@tabs.0/@sections.98" automaticContext="true" datacontexts="//@dataContexts.0/@elements.31">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleBooleanInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple StringInstance" sections="//@tabs.0/@sections.99" automaticContext="true" datacontexts="//@dataContexts.0/@elements.32">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringInstance"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple IntType" sections="//@tabs.0/@sections.100" automaticContext="true" datacontexts="//@dataContexts.0/@elements.33">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIntType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IntType"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple BooleanType" sections="//@tabs.0/@sections.101" automaticContext="true" datacontexts="//@dataContexts.0/@elements.34">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleBooleanType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanType"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple StringType" sections="//@tabs.0/@sections.102" automaticContext="true" datacontexts="//@dataContexts.0/@elements.35">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringType"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple CustomType" sections="//@tabs.0/@sections.103" automaticContext="true" datacontexts="//@dataContexts.0/@elements.36">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleCustomType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="CustomType"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple TopLayerOperator" sections="//@tabs.0/@sections.104" automaticContext="true" datacontexts="//@dataContexts.0/@elements.37">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleTopLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="TopLayerOperator"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple StackedLayerOperator" sections="//@tabs.0/@sections.105" automaticContext="true" datacontexts="//@dataContexts.0/@elements.38">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStackedLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StackedLayerOperator"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple CustomLayerOperator" sections="//@tabs.0/@sections.106" automaticContext="true" datacontexts="//@dataContexts.0/@elements.39">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleCustomLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="CustomLayerOperator"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple PropertyIndex" sections="//@tabs.0/@sections.107" automaticContext="true" datacontexts="//@dataContexts.0/@elements.40">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertyIndex">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyIndex"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple StringToPropertyIndexMap" sections="//@tabs.0/@sections.108" automaticContext="true" datacontexts="//@dataContexts.0/@elements.41">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToPropertyIndexMap">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertyIndexMap"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple SimpleLayerDescriptor" sections="//@tabs.0/@sections.109" automaticContext="true" datacontexts="//@dataContexts.0/@elements.42">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleSimpleLayerDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="SimpleLayerDescriptor"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple RegExpLayerDescriptor" sections="//@tabs.0/@sections.110" automaticContext="true" datacontexts="//@dataContexts.0/@elements.43">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleRegExpLayerDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayerDescriptor"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple NullInstance" sections="//@tabs.0/@sections.111" automaticContext="true" datacontexts="//@dataContexts.0/@elements.44">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleNullInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="NullInstance"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple RegExpLayer" sections="//@tabs.0/@sections.112" automaticContext="true" datacontexts="//@dataContexts.0/@elements.45">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleRegExpLayer">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayer"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple Layer" sections="//@tabs.0/@sections.113" automaticContext="true" datacontexts="//@dataContexts.0/@elements.46">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayer">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Layer"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple Color" sections="//@tabs.0/@sections.114" automaticContext="true" datacontexts="//@dataContexts.0/@elements.47">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleColor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Color"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple ColorInstance" sections="//@tabs.0/@sections.115" automaticContext="true" datacontexts="//@dataContexts.0/@elements.48">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleColorInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="ColorInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple FillInstance" sections="//@tabs.0/@sections.116" automaticContext="true" datacontexts="//@dataContexts.0/@elements.49">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFillInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FillInstance"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple Fill" sections="//@tabs.0/@sections.117" automaticContext="true" datacontexts="//@dataContexts.0/@elements.50">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFill">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Fill"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple FillPropertySetter" sections="//@tabs.0/@sections.118" automaticContext="true" datacontexts="//@dataContexts.0/@elements.51">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFillPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FillPropertySetter"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple IsValidPropertySetter" sections="//@tabs.0/@sections.119" automaticContext="true" datacontexts="//@dataContexts.0/@elements.52">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIsValidPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IsValidPropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple NullPropertySetter" sections="//@tabs.0/@sections.120" automaticContext="true" datacontexts="//@dataContexts.0/@elements.53">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleNullPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="NullPropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LineType" sections="//@tabs.0/@sections.121" automaticContext="true" datacontexts="//@dataContexts.0/@elements.54">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLineType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LineType"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LineInstance" sections="//@tabs.0/@sections.122" automaticContext="true" datacontexts="//@dataContexts.0/@elements.55">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLineInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LineInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LinePropertySetter" sections="//@tabs.0/@sections.123" automaticContext="true" datacontexts="//@dataContexts.0/@elements.56">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLinePropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LinePropertySetter"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple FontPropertySetter" sections="//@tabs.0/@sections.124" automaticContext="true" datacontexts="//@dataContexts.0/@elements.57">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFontPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FontPropertySetter"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple FontInstance" sections="//@tabs.0/@sections.125" automaticContext="true" datacontexts="//@dataContexts.0/@elements.58">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFontInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FontInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple FontType" sections="//@tabs.0/@sections.126" automaticContext="true" datacontexts="//@dataContexts.0/@elements.59">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFontType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FontType"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple IsVisiblePropertySetter" sections="//@tabs.0/@sections.127" automaticContext="true" datacontexts="//@dataContexts.0/@elements.60">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIsVisiblePropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IsVisiblePropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple TopLayerOperatorDescriptor" sections="//@tabs.0/@sections.128" automaticContext="true" datacontexts="//@dataContexts.0/@elements.61">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleTopLayerOperatorDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="TopLayerOperatorDescriptor"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple StackedLayerOperatorDescriptor" sections="//@tabs.0/@sections.129" automaticContext="true" datacontexts="//@dataContexts.0/@elements.62">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStackedLayerOperatorDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StackedLayerOperatorDescriptor"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple CustomPropertyOperator" sections="//@tabs.0/@sections.130" automaticContext="true" datacontexts="//@dataContexts.0/@elements.63">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleCustomPropertyOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="CustomPropertyOperator"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple AndStackedLayerOperatorDescriptor" sections="//@tabs.0/@sections.131" automaticContext="true" datacontexts="//@dataContexts.0/@elements.64">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleAndStackedLayerOperatorDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="AndStackedLayerOperatorDescriptor"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple OrStackedLayerOperatorDescriptor" sections="//@tabs.0/@sections.132" automaticContext="true" datacontexts="//@dataContexts.0/@elements.65">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleOrStackedLayerOperatorDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="OrStackedLayerOperatorDescriptor"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple IsAbstractUmlSetter" sections="//@tabs.0/@sections.133" automaticContext="true" datacontexts="//@dataContexts.0/@elements.66">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIsAbstractUmlSetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IsAbstractUmlSetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <dataContexts name="layers" label="layers">
+    <elements name="LayerNamedStyle">
+      <properties name="layersStack" type="Reference" multiplicity="-1"/>
+    </elements>
+    <elements name="LayersStack">
+      <properties name="layers" type="Reference"/>
+      <properties name="name"/>
+      <properties name="description"/>
+      <properties name="diagram" type="Reference"/>
+    </elements>
+    <elements name="LayerExpression" supertypes="//@dataContexts.0/@elements.3">
+      <properties name="name"/>
+      <properties name="description"/>
+      <properties name="isLayerEnabledInternal" type="Boolean"/>
+      <properties name="isLayerEnabled" type="Boolean"/>
+    </elements>
+    <elements name="ApplicationDependantElement">
+      <properties name="application" type="Reference"/>
+    </elements>
+    <elements name="LayersStackApplication" supertypes="//@dataContexts.0/@elements.5">
+      <properties name="layersStacks" type="Reference" multiplicity="-1"/>
+      <properties name="layerStackRegistry" type="Reference"/>
+      <properties name="propertyRegistry" type="Reference"/>
+      <properties name="layerDescriptorRegistry" type="Reference"/>
+      <properties name="factory" type="Reference"/>
+      <properties name="propertySetterRegistry" type="Reference"/>
+      <properties name="layerOperatorDescriptorRegistry" type="Reference"/>
+    </elements>
+    <elements name="FolderElement"/>
+    <elements name="LayerStackDescriptorRegistry"/>
+    <elements name="PropertyRegistry">
+      <properties name="properties" type="Reference" multiplicity="-1"/>
+      <properties name="typeRegistry" type="Reference"/>
+      <properties name="propertiesCount" type="Integer"/>
+    </elements>
+    <elements name="Property" supertypes="//@dataContexts.0/@elements.5">
+      <properties name="type" type="Reference"/>
+      <properties name="defaultValue" type="Reference"/>
+      <properties name="name"/>
+      <properties name="description"/>
+      <properties name="index" type="Integer"/>
+    </elements>
+    <elements name="Type" supertypes="//@dataContexts.0/@elements.5">
+      <properties name="metamodel" type="Reference"/>
+      <properties name="name"/>
+      <properties name="description"/>
+    </elements>
+    <elements name="Metamodel" supertypes="//@dataContexts.0/@elements.5">
+      <properties name="name"/>
+      <properties name="description"/>
+      <properties name="nsuri"/>
+      <properties name="pluginID"/>
+      <properties name="ePackageInstanceName"/>
+      <properties name="isTypeValid" type="Boolean"/>
+    </elements>
+    <elements name="TypeInstance" supertypes="//@dataContexts.0/@elements.12"/>
+    <elements name="ComputePropertyValueCommandItf"/>
+    <elements name="TypeRegistry">
+      <properties name="types" type="Reference" multiplicity="-1"/>
+    </elements>
+    <elements name="StringToTypeMap">
+      <properties name="value" type="Reference"/>
+      <properties name="key"/>
+    </elements>
+    <elements name="LayerDescriptorRegistry">
+      <properties name="layerDescriptors" type="Reference" multiplicity="-1"/>
+    </elements>
+    <elements name="LayerDescriptor">
+      <properties name="propertyRegistry" type="Reference"/>
+    </elements>
+    <elements name="LayerApplicationFactory">
+      <properties name="application" type="Reference"/>
+    </elements>
+    <elements name="PropertySetterRegistry">
+      <properties name="propertySetters" type="Reference" multiplicity="-1"/>
+      <properties name="setterMap" type="Reference" multiplicity="-1"/>
+      <properties name="application" type="Reference"/>
+    </elements>
+    <elements name="PropertySetter">
+      <properties name="property" type="Reference"/>
+      <properties name="propertyName"/>
+    </elements>
+    <elements name="StringToPropertySetter">
+      <properties name="key"/>
+      <properties name="value" type="Reference"/>
+    </elements>
+    <elements name="LayerOperatorDescriptorRegistry">
+      <properties name="descriptors" type="Reference" multiplicity="-1"/>
+      <properties name="propertyOperators" type="Reference" multiplicity="-1"/>
+      <properties name="propertyCollectionSize" type="Integer"/>
+      <properties name="defaultOperator" type="Reference"/>
+    </elements>
+    <elements name="LayerOperatorDescriptor">
+      <properties name="propertyOperators" type="Reference" multiplicity="-1"/>
+      <properties name="name"/>
+    </elements>
+    <elements name="PropertyOperator">
+      <properties name="name"/>
+    </elements>
+    <elements name="AbstractLayerOperator" supertypes="//@dataContexts.0/@elements.25">
+      <properties name="layerOperatorDescriptor" type="Reference"/>
+      <properties name="layerOperatorDescriptorName"/>
+    </elements>
+    <elements name="LayerOperator" supertypes="//@dataContexts.0/@elements.2">
+      <properties name="layers" type="Reference" multiplicity="-1"/>
+    </elements>
+    <elements name="DefaultPropertyOperator" supertypes="//@dataContexts.0/@elements.23"/>
+    <elements name="AbstractLayer" supertypes="//@dataContexts.0/@elements.2">
+      <properties name="propertyValues" type="Reference" multiplicity="-1"/>
+      <properties name="propertyValueMap" type="Reference" multiplicity="-1"/>
+      <properties name="layerDescriptor" type="Reference"/>
+      <properties name="views" type="Reference" multiplicity="-1"/>
+      <properties name="attachedProperties" type="Reference" multiplicity="-1"/>
+    </elements>
+    <elements name="StringToTypeInstanceMap">
+      <properties name="key"/>
+      <properties name="value" type="Reference"/>
+    </elements>
+    <elements name="Folder" supertypes="//@dataContexts.0/@elements.5">
+      <properties name="elements" type="Reference" multiplicity="-1"/>
+      <properties name="name"/>
+    </elements>
+    <elements name="IntInstance" supertypes="//@dataContexts.0/@elements.11">
+      <properties name="value" type="Integer"/>
+    </elements>
+    <elements name="BooleanInstance" supertypes="//@dataContexts.0/@elements.11">
+      <properties name="value" type="Boolean"/>
+    </elements>
+    <elements name="StringInstance" supertypes="//@dataContexts.0/@elements.11">
+      <properties name="value"/>
+    </elements>
+    <elements name="IntType" supertypes="//@dataContexts.0/@elements.9"/>
+    <elements name="BooleanType" supertypes="//@dataContexts.0/@elements.9"/>
+    <elements name="StringType" supertypes="//@dataContexts.0/@elements.9"/>
+    <elements name="CustomType" supertypes="//@dataContexts.0/@elements.9">
+      <properties name="classifier"/>
+    </elements>
+    <elements name="TopLayerOperator" supertypes="//@dataContexts.0/@elements.24"/>
+    <elements name="StackedLayerOperator" supertypes="//@dataContexts.0/@elements.24"/>
+    <elements name="CustomLayerOperator" supertypes="//@dataContexts.0/@elements.25"/>
+    <elements name="PropertyIndex">
+      <properties name="property" type="Reference"/>
+      <properties name="index" type="Integer"/>
+    </elements>
+    <elements name="StringToPropertyIndexMap">
+      <properties name="value" type="Reference"/>
+      <properties name="key"/>
+    </elements>
+    <elements name="SimpleLayerDescriptor" supertypes="//@dataContexts.0/@elements.16"/>
+    <elements name="RegExpLayerDescriptor" supertypes="//@dataContexts.0/@elements.16"/>
+    <elements name="NullInstance" supertypes="//@dataContexts.0/@elements.11"/>
+    <elements name="RegExpLayer" supertypes="//@dataContexts.0/@elements.27">
+      <properties name="expr"/>
+      <properties name="language"/>
+    </elements>
+    <elements name="Layer" supertypes="//@dataContexts.0/@elements.27"/>
+    <elements name="Color" supertypes="//@dataContexts.0/@elements.9"/>
+    <elements name="ColorInstance" supertypes="//@dataContexts.0/@elements.11">
+      <properties name="value" type="Integer"/>
+    </elements>
+    <elements name="FillInstance" supertypes="//@dataContexts.0/@elements.11">
+      <properties name="transparency" type="Integer"/>
+      <properties name="fillColor" type="Reference"/>
+    </elements>
+    <elements name="Fill" supertypes="//@dataContexts.0/@elements.9"/>
+    <elements name="FillPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+    <elements name="IsValidPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+    <elements name="NullPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+    <elements name="LineType" supertypes="//@dataContexts.0/@elements.9"/>
+    <elements name="LineInstance" supertypes="//@dataContexts.0/@elements.11">
+      <properties name="lineColor" type="Integer"/>
+      <properties name="lineWith" type="Integer"/>
+    </elements>
+    <elements name="LinePropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+    <elements name="FontPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+    <elements name="FontInstance" supertypes="//@dataContexts.0/@elements.11">
+      <properties name="fontColor" type="Integer"/>
+      <properties name="fontName"/>
+      <properties name="fontHeigh" type="Integer"/>
+      <properties name="bold" type="Boolean"/>
+    </elements>
+    <elements name="FontType" supertypes="//@dataContexts.0/@elements.9"/>
+    <elements name="IsVisiblePropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+    <elements name="TopLayerOperatorDescriptor" supertypes="//@dataContexts.0/@elements.22"/>
+    <elements name="StackedLayerOperatorDescriptor" supertypes="//@dataContexts.0/@elements.22"/>
+    <elements name="CustomPropertyOperator" supertypes="//@dataContexts.0/@elements.23">
+      <properties name="classname"/>
+      <properties name="operatorInstance"/>
+      <properties name="classBundleID"/>
+    </elements>
+    <elements name="AndStackedLayerOperatorDescriptor" supertypes="//@dataContexts.0/@elements.62"/>
+    <elements name="OrStackedLayerOperatorDescriptor" supertypes="//@dataContexts.0/@elements.62"/>
+    <elements name="IsAbstractUmlSetter" supertypes="//@dataContexts.0/@elements.19"/>
+    <modelElementFactory href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@modelElementFactories.0"/>
+  </dataContexts>
+</contexts:Context>
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/properties.ctx b/layers/org.eclipse.papyrus.layers.ui/properties/properties.ctx
new file mode 100755
index 0000000..93b400a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/properties.ctx
@@ -0,0 +1,1517 @@
+<?xml version="1.0" encoding="ASCII"?>
+<contexts:Context xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:constraints="http://www.eclipse.org/papyrus/constraints/0.9" xmlns:contexts="http://www.eclipse.org/papyrus/properties/contexts/0.9" name="layers">
+  <tabs label="layers" id="layers" priority="100">
+    <sections name="Single LayerNamedStyle" sectionFile="ui/SingleLayerNamedStyle.xwt">
+      <widget href="ui/SingleLayerNamedStyle.xwt#/"/>
+    </sections>
+    <sections name="Single LayersStack" sectionFile="ui/SingleLayersStack.xwt">
+      <widget href="ui/SingleLayersStack.xwt#/"/>
+    </sections>
+    <sections name="Single LayerExpression" sectionFile="ui/SingleLayerExpression.xwt">
+      <widget href="ui/SingleLayerExpression.xwt#/"/>
+    </sections>
+    <sections name="Single ApplicationDependantElement" sectionFile="ui/SingleApplicationDependantElement.xwt">
+      <widget href="ui/SingleApplicationDependantElement.xwt#/"/>
+    </sections>
+    <sections name="Single LayersStackApplication" sectionFile="ui/SingleLayersStackApplication.xwt">
+      <widget href="ui/SingleLayersStackApplication.xwt#/"/>
+    </sections>
+    <sections name="Single FolderElement" sectionFile="ui/SingleFolderElement.xwt">
+      <widget href="ui/SingleFolderElement.xwt#/"/>
+    </sections>
+    <sections name="Single LayerStackDescriptorRegistry" sectionFile="ui/SingleLayerStackDescriptorRegistry.xwt">
+      <widget href="ui/SingleLayerStackDescriptorRegistry.xwt#/"/>
+    </sections>
+    <sections name="Single PropertyRegistry" sectionFile="ui/SinglePropertyRegistry.xwt">
+      <widget href="ui/SinglePropertyRegistry.xwt#/"/>
+    </sections>
+    <sections name="Single Property" sectionFile="ui/SingleProperty.xwt">
+      <widget href="ui/SingleProperty.xwt#/"/>
+    </sections>
+    <sections name="Single Type" sectionFile="ui/SingleType.xwt">
+      <widget href="ui/SingleType.xwt#/"/>
+    </sections>
+    <sections name="Single Metamodel" sectionFile="ui/SingleMetamodel.xwt">
+      <widget href="ui/SingleMetamodel.xwt#/"/>
+    </sections>
+    <sections name="Single TypeInstance" sectionFile="ui/SingleTypeInstance.xwt">
+      <widget href="ui/SingleTypeInstance.xwt#/"/>
+    </sections>
+    <sections name="Single ComputePropertyValueCommandItf" sectionFile="ui/SingleComputePropertyValueCommandItf.xwt">
+      <widget href="ui/SingleComputePropertyValueCommandItf.xwt#/"/>
+    </sections>
+    <sections name="Single TypeRegistry" sectionFile="ui/SingleTypeRegistry.xwt">
+      <widget href="ui/SingleTypeRegistry.xwt#/"/>
+    </sections>
+    <sections name="Single StringToTypeMap" sectionFile="ui/SingleStringToTypeMap.xwt">
+      <widget href="ui/SingleStringToTypeMap.xwt#/"/>
+    </sections>
+    <sections name="Single LayerDescriptorRegistry" sectionFile="ui/SingleLayerDescriptorRegistry.xwt">
+      <widget href="ui/SingleLayerDescriptorRegistry.xwt#/"/>
+    </sections>
+    <sections name="Single LayerDescriptor" sectionFile="ui/SingleLayerDescriptor.xwt">
+      <widget href="ui/SingleLayerDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Single LayerApplicationFactory" sectionFile="ui/SingleLayerApplicationFactory.xwt">
+      <widget href="ui/SingleLayerApplicationFactory.xwt#/"/>
+    </sections>
+    <sections name="Single PropertySetterRegistry" sectionFile="ui/SinglePropertySetterRegistry.xwt">
+      <widget href="ui/SinglePropertySetterRegistry.xwt#/"/>
+    </sections>
+    <sections name="Single PropertySetter" sectionFile="ui/SinglePropertySetter.xwt">
+      <widget href="ui/SinglePropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Single StringToPropertySetter" sectionFile="ui/SingleStringToPropertySetter.xwt">
+      <widget href="ui/SingleStringToPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Single LayerOperatorDescriptorRegistry" sectionFile="ui/SingleLayerOperatorDescriptorRegistry.xwt">
+      <widget href="ui/SingleLayerOperatorDescriptorRegistry.xwt#/"/>
+    </sections>
+    <sections name="Single LayerOperatorDescriptor" sectionFile="ui/SingleLayerOperatorDescriptor.xwt">
+      <widget href="ui/SingleLayerOperatorDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Single PropertyOperator" sectionFile="ui/SinglePropertyOperator.xwt">
+      <widget href="ui/SinglePropertyOperator.xwt#/"/>
+    </sections>
+    <sections name="Single AbstractLayerOperator" sectionFile="ui/SingleAbstractLayerOperator.xwt">
+      <widget href="ui/SingleAbstractLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Single LayerOperator" sectionFile="ui/SingleLayerOperator.xwt">
+      <widget href="ui/SingleLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Single DefaultPropertyOperator" sectionFile="ui/SingleDefaultPropertyOperator.xwt">
+      <widget href="ui/SingleDefaultPropertyOperator.xwt#/"/>
+    </sections>
+    <sections name="Single AbstractLayer" sectionFile="ui/SingleAbstractLayer.xwt">
+      <widget href="ui/SingleAbstractLayer.xwt#/"/>
+    </sections>
+    <sections name="Single StringToTypeInstanceMap" sectionFile="ui/SingleStringToTypeInstanceMap.xwt">
+      <widget href="ui/SingleStringToTypeInstanceMap.xwt#/"/>
+    </sections>
+    <sections name="Single Folder" sectionFile="ui/SingleFolder.xwt">
+      <widget href="ui/SingleFolder.xwt#/"/>
+    </sections>
+    <sections name="Single IntInstance" sectionFile="ui/SingleIntInstance.xwt">
+      <widget href="ui/SingleIntInstance.xwt#/"/>
+    </sections>
+    <sections name="Single BooleanInstance" sectionFile="ui/SingleBooleanInstance.xwt">
+      <widget href="ui/SingleBooleanInstance.xwt#/"/>
+    </sections>
+    <sections name="Single StringInstance" sectionFile="ui/SingleStringInstance.xwt">
+      <widget href="ui/SingleStringInstance.xwt#/"/>
+    </sections>
+    <sections name="Single IntType" sectionFile="ui/SingleIntType.xwt">
+      <widget href="ui/SingleIntType.xwt#/"/>
+    </sections>
+    <sections name="Single BooleanType" sectionFile="ui/SingleBooleanType.xwt">
+      <widget href="ui/SingleBooleanType.xwt#/"/>
+    </sections>
+    <sections name="Single StringType" sectionFile="ui/SingleStringType.xwt">
+      <widget href="ui/SingleStringType.xwt#/"/>
+    </sections>
+    <sections name="Single CustomType" sectionFile="ui/SingleCustomType.xwt">
+      <widget href="ui/SingleCustomType.xwt#/"/>
+    </sections>
+    <sections name="Single TopLayerOperator" sectionFile="ui/SingleTopLayerOperator.xwt">
+      <widget href="ui/SingleTopLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Single StackedLayerOperator" sectionFile="ui/SingleStackedLayerOperator.xwt">
+      <widget href="ui/SingleStackedLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Single CustomLayerOperator" sectionFile="ui/SingleCustomLayerOperator.xwt">
+      <widget href="ui/SingleCustomLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Single PropertyIndex" sectionFile="ui/SinglePropertyIndex.xwt">
+      <widget href="ui/SinglePropertyIndex.xwt#/"/>
+    </sections>
+    <sections name="Single StringToPropertyIndexMap" sectionFile="ui/SingleStringToPropertyIndexMap.xwt">
+      <widget href="ui/SingleStringToPropertyIndexMap.xwt#/"/>
+    </sections>
+    <sections name="Single SimpleLayerDescriptor" sectionFile="ui/SingleSimpleLayerDescriptor.xwt">
+      <widget href="ui/SingleSimpleLayerDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Single RegExpLayerDescriptor" sectionFile="ui/SingleRegExpLayerDescriptor.xwt">
+      <widget href="ui/SingleRegExpLayerDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Single NullInstance" sectionFile="ui/SingleNullInstance.xwt">
+      <widget href="ui/SingleNullInstance.xwt#/"/>
+    </sections>
+    <sections name="Single RegExpLayer" sectionFile="ui/SingleRegExpLayer.xwt">
+      <widget href="ui/SingleRegExpLayer.xwt#/"/>
+    </sections>
+    <sections name="Single Layer" sectionFile="ui/SingleLayer.xwt">
+      <widget href="ui/SingleLayer.xwt#/"/>
+    </sections>
+    <sections name="Single Color" sectionFile="ui/SingleColor.xwt">
+      <widget href="ui/SingleColor.xwt#/"/>
+    </sections>
+    <sections name="Single ColorInstance" sectionFile="ui/SingleColorInstance.xwt">
+      <widget href="ui/SingleColorInstance.xwt#/"/>
+    </sections>
+    <sections name="Single FillInstance" sectionFile="ui/SingleFillInstance.xwt">
+      <widget href="ui/SingleFillInstance.xwt#/"/>
+    </sections>
+    <sections name="Single Fill" sectionFile="ui/SingleFill.xwt">
+      <widget href="ui/SingleFill.xwt#/"/>
+    </sections>
+    <sections name="Single FillPropertySetter" sectionFile="ui/SingleFillPropertySetter.xwt">
+      <widget href="ui/SingleFillPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Single IsValidPropertySetter" sectionFile="ui/SingleIsValidPropertySetter.xwt">
+      <widget href="ui/SingleIsValidPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Single NullPropertySetter" sectionFile="ui/SingleNullPropertySetter.xwt">
+      <widget href="ui/SingleNullPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Single LineType" sectionFile="ui/SingleLineType.xwt">
+      <widget href="ui/SingleLineType.xwt#/"/>
+    </sections>
+    <sections name="Single LineInstance" sectionFile="ui/SingleLineInstance.xwt">
+      <widget href="ui/SingleLineInstance.xwt#/"/>
+    </sections>
+    <sections name="Single LinePropertySetter" sectionFile="ui/SingleLinePropertySetter.xwt">
+      <widget href="ui/SingleLinePropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Single FontPropertySetter" sectionFile="ui/SingleFontPropertySetter.xwt">
+      <widget href="ui/SingleFontPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Single FontInstance" sectionFile="ui/SingleFontInstance.xwt">
+      <widget href="ui/SingleFontInstance.xwt#/"/>
+    </sections>
+    <sections name="Single FontType" sectionFile="ui/SingleFontType.xwt">
+      <widget href="ui/SingleFontType.xwt#/"/>
+    </sections>
+    <sections name="Single IsVisiblePropertySetter" sectionFile="ui/SingleIsVisiblePropertySetter.xwt">
+      <widget href="ui/SingleIsVisiblePropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Single TopLayerOperatorDescriptor" sectionFile="ui/SingleTopLayerOperatorDescriptor.xwt">
+      <widget href="ui/SingleTopLayerOperatorDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Single StackedLayerOperatorDescriptor" sectionFile="ui/SingleStackedLayerOperatorDescriptor.xwt">
+      <widget href="ui/SingleStackedLayerOperatorDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Single CustomPropertyOperator" sectionFile="ui/SingleCustomPropertyOperator.xwt">
+      <widget href="ui/SingleCustomPropertyOperator.xwt#/"/>
+    </sections>
+    <sections name="Single AndStackedLayerOperatorDescriptor" sectionFile="ui/SingleAndStackedLayerOperatorDescriptor.xwt">
+      <widget href="ui/SingleAndStackedLayerOperatorDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Single OrStackedLayerOperatorDescriptor" sectionFile="ui/SingleOrStackedLayerOperatorDescriptor.xwt">
+      <widget href="ui/SingleOrStackedLayerOperatorDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Single IsAbstractUmlSetter" sectionFile="ui/SingleIsAbstractUmlSetter.xwt">
+      <widget href="ui/SingleIsAbstractUmlSetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerNamedStyle" sectionFile="ui/MultipleLayerNamedStyle.xwt">
+      <widget href="ui/MultipleLayerNamedStyle.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayersStack" sectionFile="ui/MultipleLayersStack.xwt">
+      <widget href="ui/MultipleLayersStack.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerExpression" sectionFile="ui/MultipleLayerExpression.xwt">
+      <widget href="ui/MultipleLayerExpression.xwt#/"/>
+    </sections>
+    <sections name="Multiple ApplicationDependantElement" sectionFile="ui/MultipleApplicationDependantElement.xwt">
+      <widget href="ui/MultipleApplicationDependantElement.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayersStackApplication" sectionFile="ui/MultipleLayersStackApplication.xwt">
+      <widget href="ui/MultipleLayersStackApplication.xwt#/"/>
+    </sections>
+    <sections name="Multiple FolderElement" sectionFile="ui/MultipleFolderElement.xwt">
+      <widget href="ui/MultipleFolderElement.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerStackDescriptorRegistry" sectionFile="ui/MultipleLayerStackDescriptorRegistry.xwt">
+      <widget href="ui/MultipleLayerStackDescriptorRegistry.xwt#/"/>
+    </sections>
+    <sections name="Multiple PropertyRegistry" sectionFile="ui/MultiplePropertyRegistry.xwt">
+      <widget href="ui/MultiplePropertyRegistry.xwt#/"/>
+    </sections>
+    <sections name="Multiple Property" sectionFile="ui/MultipleProperty.xwt">
+      <widget href="ui/MultipleProperty.xwt#/"/>
+    </sections>
+    <sections name="Multiple Type" sectionFile="ui/MultipleType.xwt">
+      <widget href="ui/MultipleType.xwt#/"/>
+    </sections>
+    <sections name="Multiple Metamodel" sectionFile="ui/MultipleMetamodel.xwt">
+      <widget href="ui/MultipleMetamodel.xwt#/"/>
+    </sections>
+    <sections name="Multiple TypeInstance" sectionFile="ui/MultipleTypeInstance.xwt">
+      <widget href="ui/MultipleTypeInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple ComputePropertyValueCommandItf" sectionFile="ui/MultipleComputePropertyValueCommandItf.xwt">
+      <widget href="ui/MultipleComputePropertyValueCommandItf.xwt#/"/>
+    </sections>
+    <sections name="Multiple TypeRegistry" sectionFile="ui/MultipleTypeRegistry.xwt">
+      <widget href="ui/MultipleTypeRegistry.xwt#/"/>
+    </sections>
+    <sections name="Multiple StringToTypeMap" sectionFile="ui/MultipleStringToTypeMap.xwt">
+      <widget href="ui/MultipleStringToTypeMap.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerDescriptorRegistry" sectionFile="ui/MultipleLayerDescriptorRegistry.xwt">
+      <widget href="ui/MultipleLayerDescriptorRegistry.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerDescriptor" sectionFile="ui/MultipleLayerDescriptor.xwt">
+      <widget href="ui/MultipleLayerDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerApplicationFactory" sectionFile="ui/MultipleLayerApplicationFactory.xwt">
+      <widget href="ui/MultipleLayerApplicationFactory.xwt#/"/>
+    </sections>
+    <sections name="Multiple PropertySetterRegistry" sectionFile="ui/MultiplePropertySetterRegistry.xwt">
+      <widget href="ui/MultiplePropertySetterRegistry.xwt#/"/>
+    </sections>
+    <sections name="Multiple PropertySetter" sectionFile="ui/MultiplePropertySetter.xwt">
+      <widget href="ui/MultiplePropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple StringToPropertySetter" sectionFile="ui/MultipleStringToPropertySetter.xwt">
+      <widget href="ui/MultipleStringToPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerOperatorDescriptorRegistry" sectionFile="ui/MultipleLayerOperatorDescriptorRegistry.xwt">
+      <widget href="ui/MultipleLayerOperatorDescriptorRegistry.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerOperatorDescriptor" sectionFile="ui/MultipleLayerOperatorDescriptor.xwt">
+      <widget href="ui/MultipleLayerOperatorDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Multiple PropertyOperator" sectionFile="ui/MultiplePropertyOperator.xwt">
+      <widget href="ui/MultiplePropertyOperator.xwt#/"/>
+    </sections>
+    <sections name="Multiple AbstractLayerOperator" sectionFile="ui/MultipleAbstractLayerOperator.xwt">
+      <widget href="ui/MultipleAbstractLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Multiple LayerOperator" sectionFile="ui/MultipleLayerOperator.xwt">
+      <widget href="ui/MultipleLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Multiple DefaultPropertyOperator" sectionFile="ui/MultipleDefaultPropertyOperator.xwt">
+      <widget href="ui/MultipleDefaultPropertyOperator.xwt#/"/>
+    </sections>
+    <sections name="Multiple AbstractLayer" sectionFile="ui/MultipleAbstractLayer.xwt">
+      <widget href="ui/MultipleAbstractLayer.xwt#/"/>
+    </sections>
+    <sections name="Multiple StringToTypeInstanceMap" sectionFile="ui/MultipleStringToTypeInstanceMap.xwt">
+      <widget href="ui/MultipleStringToTypeInstanceMap.xwt#/"/>
+    </sections>
+    <sections name="Multiple Folder" sectionFile="ui/MultipleFolder.xwt">
+      <widget href="ui/MultipleFolder.xwt#/"/>
+    </sections>
+    <sections name="Multiple IntInstance" sectionFile="ui/MultipleIntInstance.xwt">
+      <widget href="ui/MultipleIntInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple BooleanInstance" sectionFile="ui/MultipleBooleanInstance.xwt">
+      <widget href="ui/MultipleBooleanInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple StringInstance" sectionFile="ui/MultipleStringInstance.xwt">
+      <widget href="ui/MultipleStringInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple IntType" sectionFile="ui/MultipleIntType.xwt">
+      <widget href="ui/MultipleIntType.xwt#/"/>
+    </sections>
+    <sections name="Multiple BooleanType" sectionFile="ui/MultipleBooleanType.xwt">
+      <widget href="ui/MultipleBooleanType.xwt#/"/>
+    </sections>
+    <sections name="Multiple StringType" sectionFile="ui/MultipleStringType.xwt">
+      <widget href="ui/MultipleStringType.xwt#/"/>
+    </sections>
+    <sections name="Multiple CustomType" sectionFile="ui/MultipleCustomType.xwt">
+      <widget href="ui/MultipleCustomType.xwt#/"/>
+    </sections>
+    <sections name="Multiple TopLayerOperator" sectionFile="ui/MultipleTopLayerOperator.xwt">
+      <widget href="ui/MultipleTopLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Multiple StackedLayerOperator" sectionFile="ui/MultipleStackedLayerOperator.xwt">
+      <widget href="ui/MultipleStackedLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Multiple CustomLayerOperator" sectionFile="ui/MultipleCustomLayerOperator.xwt">
+      <widget href="ui/MultipleCustomLayerOperator.xwt#/"/>
+    </sections>
+    <sections name="Multiple PropertyIndex" sectionFile="ui/MultiplePropertyIndex.xwt">
+      <widget href="ui/MultiplePropertyIndex.xwt#/"/>
+    </sections>
+    <sections name="Multiple StringToPropertyIndexMap" sectionFile="ui/MultipleStringToPropertyIndexMap.xwt">
+      <widget href="ui/MultipleStringToPropertyIndexMap.xwt#/"/>
+    </sections>
+    <sections name="Multiple SimpleLayerDescriptor" sectionFile="ui/MultipleSimpleLayerDescriptor.xwt">
+      <widget href="ui/MultipleSimpleLayerDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Multiple RegExpLayerDescriptor" sectionFile="ui/MultipleRegExpLayerDescriptor.xwt">
+      <widget href="ui/MultipleRegExpLayerDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Multiple NullInstance" sectionFile="ui/MultipleNullInstance.xwt">
+      <widget href="ui/MultipleNullInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple RegExpLayer" sectionFile="ui/MultipleRegExpLayer.xwt">
+      <widget href="ui/MultipleRegExpLayer.xwt#/"/>
+    </sections>
+    <sections name="Multiple Layer" sectionFile="ui/MultipleLayer.xwt">
+      <widget href="ui/MultipleLayer.xwt#/"/>
+    </sections>
+    <sections name="Multiple Color" sectionFile="ui/MultipleColor.xwt">
+      <widget href="ui/MultipleColor.xwt#/"/>
+    </sections>
+    <sections name="Multiple ColorInstance" sectionFile="ui/MultipleColorInstance.xwt">
+      <widget href="ui/MultipleColorInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple FillInstance" sectionFile="ui/MultipleFillInstance.xwt">
+      <widget href="ui/MultipleFillInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple Fill" sectionFile="ui/MultipleFill.xwt">
+      <widget href="ui/MultipleFill.xwt#/"/>
+    </sections>
+    <sections name="Multiple FillPropertySetter" sectionFile="ui/MultipleFillPropertySetter.xwt">
+      <widget href="ui/MultipleFillPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple IsValidPropertySetter" sectionFile="ui/MultipleIsValidPropertySetter.xwt">
+      <widget href="ui/MultipleIsValidPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple NullPropertySetter" sectionFile="ui/MultipleNullPropertySetter.xwt">
+      <widget href="ui/MultipleNullPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple LineType" sectionFile="ui/MultipleLineType.xwt">
+      <widget href="ui/MultipleLineType.xwt#/"/>
+    </sections>
+    <sections name="Multiple LineInstance" sectionFile="ui/MultipleLineInstance.xwt">
+      <widget href="ui/MultipleLineInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple LinePropertySetter" sectionFile="ui/MultipleLinePropertySetter.xwt">
+      <widget href="ui/MultipleLinePropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple FontPropertySetter" sectionFile="ui/MultipleFontPropertySetter.xwt">
+      <widget href="ui/MultipleFontPropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple FontInstance" sectionFile="ui/MultipleFontInstance.xwt">
+      <widget href="ui/MultipleFontInstance.xwt#/"/>
+    </sections>
+    <sections name="Multiple FontType" sectionFile="ui/MultipleFontType.xwt">
+      <widget href="ui/MultipleFontType.xwt#/"/>
+    </sections>
+    <sections name="Multiple IsVisiblePropertySetter" sectionFile="ui/MultipleIsVisiblePropertySetter.xwt">
+      <widget href="ui/MultipleIsVisiblePropertySetter.xwt#/"/>
+    </sections>
+    <sections name="Multiple TopLayerOperatorDescriptor" sectionFile="ui/MultipleTopLayerOperatorDescriptor.xwt">
+      <widget href="ui/MultipleTopLayerOperatorDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Multiple StackedLayerOperatorDescriptor" sectionFile="ui/MultipleStackedLayerOperatorDescriptor.xwt">
+      <widget href="ui/MultipleStackedLayerOperatorDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Multiple CustomPropertyOperator" sectionFile="ui/MultipleCustomPropertyOperator.xwt">
+      <widget href="ui/MultipleCustomPropertyOperator.xwt#/"/>
+    </sections>
+    <sections name="Multiple AndStackedLayerOperatorDescriptor" sectionFile="ui/MultipleAndStackedLayerOperatorDescriptor.xwt">
+      <widget href="ui/MultipleAndStackedLayerOperatorDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Multiple OrStackedLayerOperatorDescriptor" sectionFile="ui/MultipleOrStackedLayerOperatorDescriptor.xwt">
+      <widget href="ui/MultipleOrStackedLayerOperatorDescriptor.xwt#/"/>
+    </sections>
+    <sections name="Multiple IsAbstractUmlSetter" sectionFile="ui/MultipleIsAbstractUmlSetter.xwt">
+      <widget href="ui/MultipleIsAbstractUmlSetter.xwt#/"/>
+    </sections>
+  </tabs>
+  <views name="Single LayersStack" sections="//@tabs.0/@sections.1" automaticContext="true" datacontexts="//@dataContexts.0/@elements.1">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayersStack">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStack"/>
+    </constraints>
+  </views>
+  <views name="Single LayerExpression" sections="//@tabs.0/@sections.2" automaticContext="true" datacontexts="//@dataContexts.0/@elements.2">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerExpression">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerExpression"/>
+    </constraints>
+  </views>
+  <views name="Single LayersStackApplication" sections="//@tabs.0/@sections.4" automaticContext="true" datacontexts="//@dataContexts.0/@elements.4">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayersStackApplication">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStackApplication"/>
+    </constraints>
+  </views>
+  <views name="Single FolderElement" sections="//@tabs.0/@sections.5" automaticContext="true" datacontexts="//@dataContexts.0/@elements.5">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFolderElement">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FolderElement"/>
+    </constraints>
+  </views>
+  <views name="Single LayerStackDescriptorRegistry" sections="//@tabs.0/@sections.6" automaticContext="true" datacontexts="//@dataContexts.0/@elements.6">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerStackDescriptorRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerStackDescriptorRegistry"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single PropertyRegistry" sections="//@tabs.0/@sections.7" automaticContext="true" datacontexts="//@dataContexts.0/@elements.7">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertyRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyRegistry"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single Property" sections="//@tabs.0/@sections.8" automaticContext="true" datacontexts="//@dataContexts.0/@elements.8">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleProperty">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Property"/>
+    </constraints>
+  </views>
+  <views name="Single Type" sections="//@tabs.0/@sections.9" automaticContext="true" datacontexts="//@dataContexts.0/@elements.9">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Type"/>
+    </constraints>
+  </views>
+  <views name="Single Metamodel" sections="//@tabs.0/@sections.10" automaticContext="true" datacontexts="//@dataContexts.0/@elements.10">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleMetamodel">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Metamodel"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single TypeInstance" sections="//@tabs.0/@sections.11" automaticContext="true" datacontexts="//@dataContexts.0/@elements.11">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleTypeInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="TypeInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single TypeRegistry" sections="//@tabs.0/@sections.13" automaticContext="true" datacontexts="//@dataContexts.0/@elements.13">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleTypeRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="TypeRegistry"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single StringToTypeMap" sections="//@tabs.0/@sections.14" automaticContext="true" datacontexts="//@dataContexts.0/@elements.14">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToTypeMap">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeMap"/>
+    </constraints>
+  </views>
+  <views name="Single LayerDescriptorRegistry" sections="//@tabs.0/@sections.15" automaticContext="true" datacontexts="//@dataContexts.0/@elements.15">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerDescriptorRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptorRegistry"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single LayerDescriptor" sections="//@tabs.0/@sections.16" automaticContext="true" datacontexts="//@dataContexts.0/@elements.16">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptor"/>
+    </constraints>
+  </views>
+  <views name="Single LayerApplicationFactory" sections="//@tabs.0/@sections.17" automaticContext="true" datacontexts="//@dataContexts.0/@elements.17">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerApplicationFactory">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerApplicationFactory"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single PropertySetterRegistry" sections="//@tabs.0/@sections.18" automaticContext="true" datacontexts="//@dataContexts.0/@elements.18">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertySetterRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetterRegistry"/>
+    </constraints>
+  </views>
+  <views name="Single PropertySetter" sections="//@tabs.0/@sections.19" automaticContext="true" datacontexts="//@dataContexts.0/@elements.19">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetter"/>
+    </constraints>
+  </views>
+  <views name="Single StringToPropertySetter" sections="//@tabs.0/@sections.20" automaticContext="true" datacontexts="//@dataContexts.0/@elements.20">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertySetter"/>
+    </constraints>
+  </views>
+  <views name="Single LayerOperatorDescriptorRegistry" sections="//@tabs.0/@sections.21" automaticContext="true" datacontexts="//@dataContexts.0/@elements.21">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerOperatorDescriptorRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperatorDescriptorRegistry"/>
+    </constraints>
+  </views>
+  <views name="Single LayerOperatorDescriptor" sections="//@tabs.0/@sections.22" automaticContext="true" datacontexts="//@dataContexts.0/@elements.22">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerOperatorDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperatorDescriptor"/>
+    </constraints>
+  </views>
+  <views name="Single PropertyOperator" sections="//@tabs.0/@sections.23" automaticContext="true" datacontexts="//@dataContexts.0/@elements.23">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertyOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyOperator"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single AbstractLayerOperator" sections="//@tabs.0/@sections.24" automaticContext="true" datacontexts="//@dataContexts.0/@elements.24">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleAbstractLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayerOperator"/>
+    </constraints>
+  </views>
+  <views name="Single LayerOperator" sections="//@tabs.0/@sections.25" automaticContext="true" datacontexts="//@dataContexts.0/@elements.25">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperator"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single DefaultPropertyOperator" sections="//@tabs.0/@sections.26" automaticContext="true" datacontexts="//@dataContexts.0/@elements.26">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleDefaultPropertyOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="DefaultPropertyOperator"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single AbstractLayer" sections="//@tabs.0/@sections.27" automaticContext="true" datacontexts="//@dataContexts.0/@elements.27">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleAbstractLayer">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayer"/>
+    </constraints>
+  </views>
+  <views name="Single StringToTypeInstanceMap" sections="//@tabs.0/@sections.28" automaticContext="true" datacontexts="//@dataContexts.0/@elements.28">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToTypeInstanceMap">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeInstanceMap"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single Folder" sections="//@tabs.0/@sections.29" automaticContext="true" datacontexts="//@dataContexts.0/@elements.29">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFolder">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Folder"/>
+    </constraints>
+  </views>
+  <views name="Single IntInstance" sections="//@tabs.0/@sections.30" automaticContext="true" datacontexts="//@dataContexts.0/@elements.30">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIntInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IntInstance"/>
+    </constraints>
+  </views>
+  <views name="Single BooleanInstance" sections="//@tabs.0/@sections.31" automaticContext="true" datacontexts="//@dataContexts.0/@elements.31">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleBooleanInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanInstance"/>
+    </constraints>
+  </views>
+  <views name="Single StringInstance" sections="//@tabs.0/@sections.32" automaticContext="true" datacontexts="//@dataContexts.0/@elements.32">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single IntType" sections="//@tabs.0/@sections.33" automaticContext="true" datacontexts="//@dataContexts.0/@elements.33">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIntType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IntType"/>
+    </constraints>
+  </views>
+  <views name="Single BooleanType" sections="//@tabs.0/@sections.34" automaticContext="true" datacontexts="//@dataContexts.0/@elements.34">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleBooleanType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanType"/>
+    </constraints>
+  </views>
+  <views name="Single StringType" sections="//@tabs.0/@sections.35" automaticContext="true" datacontexts="//@dataContexts.0/@elements.35">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringType"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single CustomType" sections="//@tabs.0/@sections.36" automaticContext="true" datacontexts="//@dataContexts.0/@elements.36">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleCustomType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="CustomType"/>
+    </constraints>
+  </views>
+  <views name="Single TopLayerOperator" sections="//@tabs.0/@sections.37" automaticContext="true" datacontexts="//@dataContexts.0/@elements.37">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleTopLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="TopLayerOperator"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single StackedLayerOperator" sections="//@tabs.0/@sections.38" automaticContext="true" datacontexts="//@dataContexts.0/@elements.38">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStackedLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StackedLayerOperator"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single CustomLayerOperator" sections="//@tabs.0/@sections.39" automaticContext="true" datacontexts="//@dataContexts.0/@elements.39">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleCustomLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="CustomLayerOperator"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single PropertyIndex" sections="//@tabs.0/@sections.40" automaticContext="true" datacontexts="//@dataContexts.0/@elements.40">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSinglePropertyIndex">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyIndex"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single StringToPropertyIndexMap" sections="//@tabs.0/@sections.41" automaticContext="true" datacontexts="//@dataContexts.0/@elements.41">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStringToPropertyIndexMap">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertyIndexMap"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single SimpleLayerDescriptor" sections="//@tabs.0/@sections.42" automaticContext="true" datacontexts="//@dataContexts.0/@elements.42">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleSimpleLayerDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="SimpleLayerDescriptor"/>
+    </constraints>
+  </views>
+  <views name="Single RegExpLayerDescriptor" sections="//@tabs.0/@sections.43" automaticContext="true" datacontexts="//@dataContexts.0/@elements.43">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleRegExpLayerDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayerDescriptor"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single NullInstance" sections="//@tabs.0/@sections.44" automaticContext="true" datacontexts="//@dataContexts.0/@elements.44">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleNullInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="NullInstance"/>
+    </constraints>
+  </views>
+  <views name="Single RegExpLayer" sections="//@tabs.0/@sections.45" automaticContext="true" datacontexts="//@dataContexts.0/@elements.45">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleRegExpLayer">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayer"/>
+    </constraints>
+  </views>
+  <views name="Single Layer" sections="//@tabs.0/@sections.46" automaticContext="true" datacontexts="//@dataContexts.0/@elements.46">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLayer">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Layer"/>
+    </constraints>
+  </views>
+  <views name="Single Color" sections="//@tabs.0/@sections.47" automaticContext="true" datacontexts="//@dataContexts.0/@elements.47">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleColor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Color"/>
+    </constraints>
+  </views>
+  <views name="Single ColorInstance" sections="//@tabs.0/@sections.48" automaticContext="true" datacontexts="//@dataContexts.0/@elements.48">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleColorInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="ColorInstance"/>
+    </constraints>
+  </views>
+  <views name="Single FillInstance" sections="//@tabs.0/@sections.49" automaticContext="true" datacontexts="//@dataContexts.0/@elements.49">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFillInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FillInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single Fill" sections="//@tabs.0/@sections.50" automaticContext="true" datacontexts="//@dataContexts.0/@elements.50">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFill">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Fill"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single FillPropertySetter" sections="//@tabs.0/@sections.51" automaticContext="true" datacontexts="//@dataContexts.0/@elements.51">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFillPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FillPropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single IsValidPropertySetter" sections="//@tabs.0/@sections.52" automaticContext="true" datacontexts="//@dataContexts.0/@elements.52">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIsValidPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IsValidPropertySetter"/>
+    </constraints>
+  </views>
+  <views name="Single NullPropertySetter" sections="//@tabs.0/@sections.53" automaticContext="true" datacontexts="//@dataContexts.0/@elements.53">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleNullPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="NullPropertySetter"/>
+    </constraints>
+  </views>
+  <views name="Single LineType" sections="//@tabs.0/@sections.54" automaticContext="true" datacontexts="//@dataContexts.0/@elements.54">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLineType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LineType"/>
+    </constraints>
+  </views>
+  <views name="Single LineInstance" sections="//@tabs.0/@sections.55" automaticContext="true" datacontexts="//@dataContexts.0/@elements.55">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLineInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LineInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single LinePropertySetter" sections="//@tabs.0/@sections.56" automaticContext="true" datacontexts="//@dataContexts.0/@elements.56">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleLinePropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LinePropertySetter"/>
+    </constraints>
+  </views>
+  <views name="Single FontPropertySetter" sections="//@tabs.0/@sections.57" automaticContext="true" datacontexts="//@dataContexts.0/@elements.57">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFontPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FontPropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single FontInstance" sections="//@tabs.0/@sections.58" automaticContext="true" datacontexts="//@dataContexts.0/@elements.58">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFontInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FontInstance"/>
+    </constraints>
+  </views>
+  <views name="Single FontType" sections="//@tabs.0/@sections.59" automaticContext="true" datacontexts="//@dataContexts.0/@elements.59">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleFontType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FontType"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single IsVisiblePropertySetter" sections="//@tabs.0/@sections.60" automaticContext="true" datacontexts="//@dataContexts.0/@elements.60">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIsVisiblePropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IsVisiblePropertySetter"/>
+    </constraints>
+  </views>
+  <views name="Single TopLayerOperatorDescriptor" sections="//@tabs.0/@sections.61" automaticContext="true" datacontexts="//@dataContexts.0/@elements.61">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleTopLayerOperatorDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="TopLayerOperatorDescriptor"/>
+    </constraints>
+  </views>
+  <views name="Single StackedLayerOperatorDescriptor" sections="//@tabs.0/@sections.62" automaticContext="true" datacontexts="//@dataContexts.0/@elements.62">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleStackedLayerOperatorDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StackedLayerOperatorDescriptor"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single CustomPropertyOperator" sections="//@tabs.0/@sections.63" automaticContext="true" datacontexts="//@dataContexts.0/@elements.63">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleCustomPropertyOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="CustomPropertyOperator"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single AndStackedLayerOperatorDescriptor" sections="//@tabs.0/@sections.64" automaticContext="true" datacontexts="//@dataContexts.0/@elements.64">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleAndStackedLayerOperatorDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="AndStackedLayerOperatorDescriptor"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views name="Single OrStackedLayerOperatorDescriptor" sections="//@tabs.0/@sections.65" automaticContext="true" datacontexts="//@dataContexts.0/@elements.65">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleOrStackedLayerOperatorDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="OrStackedLayerOperatorDescriptor"/>
+    </constraints>
+  </views>
+  <views name="Single IsAbstractUmlSetter" sections="//@tabs.0/@sections.66" automaticContext="true" datacontexts="//@dataContexts.0/@elements.66">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isSingleIsAbstractUmlSetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IsAbstractUmlSetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayersStack" sections="//@tabs.0/@sections.68" automaticContext="true" datacontexts="//@dataContexts.0/@elements.1">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayersStack">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStack"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerExpression" sections="//@tabs.0/@sections.69" automaticContext="true" datacontexts="//@dataContexts.0/@elements.2">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerExpression">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerExpression"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple ApplicationDependantElement" sections="//@tabs.0/@sections.70" automaticContext="true" datacontexts="//@dataContexts.0/@elements.3">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleApplicationDependantElement">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="ApplicationDependantElement"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayersStackApplication" sections="//@tabs.0/@sections.71" automaticContext="true" datacontexts="//@dataContexts.0/@elements.4">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayersStackApplication">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayersStackApplication"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple FolderElement" sections="//@tabs.0/@sections.72" automaticContext="true" datacontexts="//@dataContexts.0/@elements.5">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFolderElement">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FolderElement"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerStackDescriptorRegistry" sections="//@tabs.0/@sections.73" automaticContext="true" datacontexts="//@dataContexts.0/@elements.6">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerStackDescriptorRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerStackDescriptorRegistry"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple PropertyRegistry" sections="//@tabs.0/@sections.74" automaticContext="true" datacontexts="//@dataContexts.0/@elements.7">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertyRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyRegistry"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple Property" sections="//@tabs.0/@sections.75" automaticContext="true" datacontexts="//@dataContexts.0/@elements.8">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleProperty">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Property"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple Type" sections="//@tabs.0/@sections.76" automaticContext="true" datacontexts="//@dataContexts.0/@elements.9">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Type"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple Metamodel" sections="//@tabs.0/@sections.77" automaticContext="true" datacontexts="//@dataContexts.0/@elements.10">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleMetamodel">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Metamodel"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple TypeInstance" sections="//@tabs.0/@sections.78" automaticContext="true" datacontexts="//@dataContexts.0/@elements.11">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleTypeInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="TypeInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple ComputePropertyValueCommandItf" sections="//@tabs.0/@sections.79" automaticContext="true" datacontexts="//@dataContexts.0/@elements.12">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleComputePropertyValueCommandItf">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="ComputePropertyValueCommandItf"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple TypeRegistry" sections="//@tabs.0/@sections.80" automaticContext="true" datacontexts="//@dataContexts.0/@elements.13">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleTypeRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="TypeRegistry"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple StringToTypeMap" sections="//@tabs.0/@sections.81" automaticContext="true" datacontexts="//@dataContexts.0/@elements.14">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToTypeMap">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeMap"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerDescriptorRegistry" sections="//@tabs.0/@sections.82" automaticContext="true" datacontexts="//@dataContexts.0/@elements.15">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerDescriptorRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptorRegistry"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerDescriptor" sections="//@tabs.0/@sections.83" automaticContext="true" datacontexts="//@dataContexts.0/@elements.16">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerDescriptor"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerApplicationFactory" sections="//@tabs.0/@sections.84" automaticContext="true" datacontexts="//@dataContexts.0/@elements.17">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerApplicationFactory">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerApplicationFactory"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple PropertySetterRegistry" sections="//@tabs.0/@sections.85" automaticContext="true" datacontexts="//@dataContexts.0/@elements.18">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertySetterRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetterRegistry"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple PropertySetter" sections="//@tabs.0/@sections.86" automaticContext="true" datacontexts="//@dataContexts.0/@elements.19">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple StringToPropertySetter" sections="//@tabs.0/@sections.87" automaticContext="true" datacontexts="//@dataContexts.0/@elements.20">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerOperatorDescriptorRegistry" sections="//@tabs.0/@sections.88" automaticContext="true" datacontexts="//@dataContexts.0/@elements.21">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerOperatorDescriptorRegistry">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperatorDescriptorRegistry"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerOperatorDescriptor" sections="//@tabs.0/@sections.89" automaticContext="true" datacontexts="//@dataContexts.0/@elements.22">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerOperatorDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperatorDescriptor"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple PropertyOperator" sections="//@tabs.0/@sections.90" automaticContext="true" datacontexts="//@dataContexts.0/@elements.23">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertyOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyOperator"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple AbstractLayerOperator" sections="//@tabs.0/@sections.91" automaticContext="true" datacontexts="//@dataContexts.0/@elements.24">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleAbstractLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayerOperator"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LayerOperator" sections="//@tabs.0/@sections.92" automaticContext="true" datacontexts="//@dataContexts.0/@elements.25">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LayerOperator"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple DefaultPropertyOperator" sections="//@tabs.0/@sections.93" automaticContext="true" datacontexts="//@dataContexts.0/@elements.26">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleDefaultPropertyOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="DefaultPropertyOperator"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple AbstractLayer" sections="//@tabs.0/@sections.94" automaticContext="true" datacontexts="//@dataContexts.0/@elements.27">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleAbstractLayer">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="AbstractLayer"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple StringToTypeInstanceMap" sections="//@tabs.0/@sections.95" automaticContext="true" datacontexts="//@dataContexts.0/@elements.28">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToTypeInstanceMap">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToTypeInstanceMap"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple Folder" sections="//@tabs.0/@sections.96" automaticContext="true" datacontexts="//@dataContexts.0/@elements.29">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFolder">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Folder"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple IntInstance" sections="//@tabs.0/@sections.97" automaticContext="true" datacontexts="//@dataContexts.0/@elements.30">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIntInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IntInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple BooleanInstance" sections="//@tabs.0/@sections.98" automaticContext="true" datacontexts="//@dataContexts.0/@elements.31">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleBooleanInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanInstance"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple StringInstance" sections="//@tabs.0/@sections.99" automaticContext="true" datacontexts="//@dataContexts.0/@elements.32">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple IntType" sections="//@tabs.0/@sections.100" automaticContext="true" datacontexts="//@dataContexts.0/@elements.33">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIntType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IntType"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple BooleanType" sections="//@tabs.0/@sections.101" automaticContext="true" datacontexts="//@dataContexts.0/@elements.34">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleBooleanType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="BooleanType"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple StringType" sections="//@tabs.0/@sections.102" automaticContext="true" datacontexts="//@dataContexts.0/@elements.35">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringType"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple CustomType" sections="//@tabs.0/@sections.103" automaticContext="true" datacontexts="//@dataContexts.0/@elements.36">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleCustomType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="CustomType"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple TopLayerOperator" sections="//@tabs.0/@sections.104" automaticContext="true" datacontexts="//@dataContexts.0/@elements.37">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleTopLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="TopLayerOperator"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple StackedLayerOperator" sections="//@tabs.0/@sections.105" automaticContext="true" datacontexts="//@dataContexts.0/@elements.38">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStackedLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StackedLayerOperator"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple CustomLayerOperator" sections="//@tabs.0/@sections.106" automaticContext="true" datacontexts="//@dataContexts.0/@elements.39">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleCustomLayerOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="CustomLayerOperator"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple PropertyIndex" sections="//@tabs.0/@sections.107" automaticContext="true" datacontexts="//@dataContexts.0/@elements.40">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultiplePropertyIndex">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="PropertyIndex"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple StringToPropertyIndexMap" sections="//@tabs.0/@sections.108" automaticContext="true" datacontexts="//@dataContexts.0/@elements.41">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStringToPropertyIndexMap">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StringToPropertyIndexMap"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple SimpleLayerDescriptor" sections="//@tabs.0/@sections.109" automaticContext="true" datacontexts="//@dataContexts.0/@elements.42">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleSimpleLayerDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="SimpleLayerDescriptor"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple RegExpLayerDescriptor" sections="//@tabs.0/@sections.110" automaticContext="true" datacontexts="//@dataContexts.0/@elements.43">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleRegExpLayerDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayerDescriptor"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple NullInstance" sections="//@tabs.0/@sections.111" automaticContext="true" datacontexts="//@dataContexts.0/@elements.44">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleNullInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="NullInstance"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple RegExpLayer" sections="//@tabs.0/@sections.112" automaticContext="true" datacontexts="//@dataContexts.0/@elements.45">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleRegExpLayer">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="RegExpLayer"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple Layer" sections="//@tabs.0/@sections.113" automaticContext="true" datacontexts="//@dataContexts.0/@elements.46">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLayer">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Layer"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple Color" sections="//@tabs.0/@sections.114" automaticContext="true" datacontexts="//@dataContexts.0/@elements.47">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleColor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Color"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple ColorInstance" sections="//@tabs.0/@sections.115" automaticContext="true" datacontexts="//@dataContexts.0/@elements.48">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleColorInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="ColorInstance"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple FillInstance" sections="//@tabs.0/@sections.116" automaticContext="true" datacontexts="//@dataContexts.0/@elements.49">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFillInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FillInstance"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple Fill" sections="//@tabs.0/@sections.117" automaticContext="true" datacontexts="//@dataContexts.0/@elements.50">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFill">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="Fill"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple FillPropertySetter" sections="//@tabs.0/@sections.118" automaticContext="true" datacontexts="//@dataContexts.0/@elements.51">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFillPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FillPropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple IsValidPropertySetter" sections="//@tabs.0/@sections.119" automaticContext="true" datacontexts="//@dataContexts.0/@elements.52">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIsValidPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IsValidPropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple NullPropertySetter" sections="//@tabs.0/@sections.120" automaticContext="true" datacontexts="//@dataContexts.0/@elements.53">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleNullPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="NullPropertySetter"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LineType" sections="//@tabs.0/@sections.121" automaticContext="true" datacontexts="//@dataContexts.0/@elements.54">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLineType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LineType"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LineInstance" sections="//@tabs.0/@sections.122" automaticContext="true" datacontexts="//@dataContexts.0/@elements.55">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLineInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LineInstance"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple LinePropertySetter" sections="//@tabs.0/@sections.123" automaticContext="true" datacontexts="//@dataContexts.0/@elements.56">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleLinePropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="LinePropertySetter"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple FontPropertySetter" sections="//@tabs.0/@sections.124" automaticContext="true" datacontexts="//@dataContexts.0/@elements.57">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFontPropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FontPropertySetter"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple FontInstance" sections="//@tabs.0/@sections.125" automaticContext="true" datacontexts="//@dataContexts.0/@elements.58">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFontInstance">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FontInstance"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple FontType" sections="//@tabs.0/@sections.126" automaticContext="true" datacontexts="//@dataContexts.0/@elements.59">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleFontType">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="FontType"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple IsVisiblePropertySetter" sections="//@tabs.0/@sections.127" automaticContext="true" datacontexts="//@dataContexts.0/@elements.60">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIsVisiblePropertySetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IsVisiblePropertySetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple TopLayerOperatorDescriptor" sections="//@tabs.0/@sections.128" automaticContext="true" datacontexts="//@dataContexts.0/@elements.61">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleTopLayerOperatorDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="TopLayerOperatorDescriptor"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple StackedLayerOperatorDescriptor" sections="//@tabs.0/@sections.129" automaticContext="true" datacontexts="//@dataContexts.0/@elements.62">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleStackedLayerOperatorDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="StackedLayerOperatorDescriptor"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple CustomPropertyOperator" sections="//@tabs.0/@sections.130" automaticContext="true" datacontexts="//@dataContexts.0/@elements.63">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleCustomPropertyOperator">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="CustomPropertyOperator"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple AndStackedLayerOperatorDescriptor" sections="//@tabs.0/@sections.131" automaticContext="true" datacontexts="//@dataContexts.0/@elements.64">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleAndStackedLayerOperatorDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="AndStackedLayerOperatorDescriptor"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple OrStackedLayerOperatorDescriptor" sections="//@tabs.0/@sections.132" automaticContext="true" datacontexts="//@dataContexts.0/@elements.65">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleOrStackedLayerOperatorDescriptor">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="OrStackedLayerOperatorDescriptor"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <views elementMultiplicity="-1" name="Multiple IsAbstractUmlSetter" sections="//@tabs.0/@sections.133" automaticContext="true" datacontexts="//@dataContexts.0/@elements.66">
+    <constraints xsi:type="constraints:SimpleConstraint" name="isMultipleIsAbstractUmlSetter">
+      <constraintType href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@constraintTypes.0"/>
+      <properties xsi:type="constraints:ValueProperty" name="className" value="IsAbstractUmlSetter"/>
+      <properties xsi:type="constraints:ValueProperty" name="nsUri" value="org.eclipse.papyrus.layers.0.10"/>
+    </constraints>
+  </views>
+  <dataContexts name="layers" label="layers">
+    <elements name="LayerNamedStyle">
+      <properties name="layersStack" type="Reference" multiplicity="-1"/>
+    </elements>
+    <elements name="LayersStack">
+      <properties name="layers" type="Reference"/>
+      <properties name="name"/>
+      <properties name="description"/>
+      <properties name="diagram" type="Reference"/>
+    </elements>
+    <elements name="LayerExpression" supertypes="//@dataContexts.0/@elements.3">
+      <properties name="name"/>
+      <properties name="description"/>
+      <properties name="isLayerEnabledInternal" type="Boolean"/>
+      <properties name="isLayerEnabled" type="Boolean"/>
+    </elements>
+    <elements name="ApplicationDependantElement">
+      <properties name="application" type="Reference"/>
+    </elements>
+    <elements name="LayersStackApplication" supertypes="//@dataContexts.0/@elements.5">
+      <properties name="layersStacks" type="Reference" multiplicity="-1"/>
+      <properties name="layerStackRegistry" type="Reference"/>
+      <properties name="propertyRegistry" type="Reference"/>
+      <properties name="layerDescriptorRegistry" type="Reference"/>
+      <properties name="factory" type="Reference"/>
+      <properties name="propertySetterRegistry" type="Reference"/>
+      <properties name="layerOperatorDescriptorRegistry" type="Reference"/>
+    </elements>
+    <elements name="FolderElement"/>
+    <elements name="LayerStackDescriptorRegistry"/>
+    <elements name="PropertyRegistry">
+      <properties name="properties" type="Reference" multiplicity="-1"/>
+      <properties name="typeRegistry" type="Reference"/>
+      <properties name="propertiesCount" type="Integer"/>
+    </elements>
+    <elements name="Property" supertypes="//@dataContexts.0/@elements.5">
+      <properties name="type" type="Reference"/>
+      <properties name="defaultValue" type="Reference"/>
+      <properties name="name"/>
+      <properties name="description"/>
+      <properties name="index" type="Integer"/>
+    </elements>
+    <elements name="Type" supertypes="//@dataContexts.0/@elements.5">
+      <properties name="metamodel" type="Reference"/>
+      <properties name="name"/>
+      <properties name="description"/>
+    </elements>
+    <elements name="Metamodel" supertypes="//@dataContexts.0/@elements.5">
+      <properties name="name"/>
+      <properties name="description"/>
+      <properties name="nsuri"/>
+      <properties name="pluginID"/>
+      <properties name="ePackageInstanceName"/>
+      <properties name="isTypeValid" type="Boolean"/>
+    </elements>
+    <elements name="TypeInstance" supertypes="//@dataContexts.0/@elements.12"/>
+    <elements name="ComputePropertyValueCommandItf"/>
+    <elements name="TypeRegistry">
+      <properties name="types" type="Reference" multiplicity="-1"/>
+    </elements>
+    <elements name="StringToTypeMap">
+      <properties name="value" type="Reference"/>
+      <properties name="key"/>
+    </elements>
+    <elements name="LayerDescriptorRegistry">
+      <properties name="layerDescriptors" type="Reference" multiplicity="-1"/>
+    </elements>
+    <elements name="LayerDescriptor">
+      <properties name="propertyRegistry" type="Reference"/>
+    </elements>
+    <elements name="LayerApplicationFactory">
+      <properties name="application" type="Reference"/>
+    </elements>
+    <elements name="PropertySetterRegistry">
+      <properties name="propertySetters" type="Reference" multiplicity="-1"/>
+      <properties name="setterMap" type="Reference" multiplicity="-1"/>
+      <properties name="application" type="Reference"/>
+    </elements>
+    <elements name="PropertySetter">
+      <properties name="property" type="Reference"/>
+      <properties name="propertyName"/>
+    </elements>
+    <elements name="StringToPropertySetter">
+      <properties name="key"/>
+      <properties name="value" type="Reference"/>
+    </elements>
+    <elements name="LayerOperatorDescriptorRegistry">
+      <properties name="descriptors" type="Reference" multiplicity="-1"/>
+      <properties name="propertyOperators" type="Reference" multiplicity="-1"/>
+      <properties name="propertyCollectionSize" type="Integer"/>
+      <properties name="defaultOperator" type="Reference"/>
+    </elements>
+    <elements name="LayerOperatorDescriptor">
+      <properties name="propertyOperators" type="Reference" multiplicity="-1"/>
+      <properties name="name"/>
+    </elements>
+    <elements name="PropertyOperator">
+      <properties name="name"/>
+    </elements>
+    <elements name="AbstractLayerOperator" supertypes="//@dataContexts.0/@elements.25">
+      <properties name="layerOperatorDescriptor" type="Reference"/>
+      <properties name="layerOperatorDescriptorName"/>
+    </elements>
+    <elements name="LayerOperator" supertypes="//@dataContexts.0/@elements.2">
+      <properties name="layers" type="Reference" multiplicity="-1"/>
+    </elements>
+    <elements name="DefaultPropertyOperator" supertypes="//@dataContexts.0/@elements.23"/>
+    <elements name="AbstractLayer" supertypes="//@dataContexts.0/@elements.2">
+      <properties name="propertyValues" type="Reference" multiplicity="-1"/>
+      <properties name="propertyValueMap" type="Reference" multiplicity="-1"/>
+      <properties name="layerDescriptor" type="Reference"/>
+      <properties name="views" type="Reference" multiplicity="-1"/>
+      <properties name="attachedProperties" type="Reference" multiplicity="-1"/>
+    </elements>
+    <elements name="StringToTypeInstanceMap">
+      <properties name="key"/>
+      <properties name="value" type="Reference"/>
+    </elements>
+    <elements name="Folder" supertypes="//@dataContexts.0/@elements.5">
+      <properties name="elements" type="Reference" multiplicity="-1"/>
+      <properties name="name"/>
+    </elements>
+    <elements name="IntInstance" supertypes="//@dataContexts.0/@elements.11">
+      <properties name="value" type="Integer"/>
+    </elements>
+    <elements name="BooleanInstance" supertypes="//@dataContexts.0/@elements.11">
+      <properties name="value" type="Boolean"/>
+    </elements>
+    <elements name="StringInstance" supertypes="//@dataContexts.0/@elements.11">
+      <properties name="value"/>
+    </elements>
+    <elements name="IntType" supertypes="//@dataContexts.0/@elements.9"/>
+    <elements name="BooleanType" supertypes="//@dataContexts.0/@elements.9"/>
+    <elements name="StringType" supertypes="//@dataContexts.0/@elements.9"/>
+    <elements name="CustomType" supertypes="//@dataContexts.0/@elements.9">
+      <properties name="classifier"/>
+    </elements>
+    <elements name="TopLayerOperator" supertypes="//@dataContexts.0/@elements.24"/>
+    <elements name="StackedLayerOperator" supertypes="//@dataContexts.0/@elements.24"/>
+    <elements name="CustomLayerOperator" supertypes="//@dataContexts.0/@elements.25"/>
+    <elements name="PropertyIndex">
+      <properties name="property" type="Reference"/>
+      <properties name="index" type="Integer"/>
+    </elements>
+    <elements name="StringToPropertyIndexMap">
+      <properties name="value" type="Reference"/>
+      <properties name="key"/>
+    </elements>
+    <elements name="SimpleLayerDescriptor" supertypes="//@dataContexts.0/@elements.16"/>
+    <elements name="RegExpLayerDescriptor" supertypes="//@dataContexts.0/@elements.16"/>
+    <elements name="NullInstance" supertypes="//@dataContexts.0/@elements.11"/>
+    <elements name="RegExpLayer" supertypes="//@dataContexts.0/@elements.27">
+      <properties name="expr"/>
+      <properties name="language"/>
+       <properties name="isDomainChangedEventDependant" type="Boolean"/>
+      <properties name="domainChangedEventLevel" type="Enumeration"/>
+      <properties name="isDiagramChangedEventDependant" type="Boolean"/>
+      <properties name="diagramChangedEventLevel" type="Enumeration"/>
+      <properties name="expressionContextObjectType"/>
+    </elements>
+    <elements name="Layer" supertypes="//@dataContexts.0/@elements.27"/>
+    <elements name="Color" supertypes="//@dataContexts.0/@elements.9"/>
+    <elements name="ColorInstance" supertypes="//@dataContexts.0/@elements.11">
+      <properties name="value" type="Integer"/>
+    </elements>
+    <elements name="FillInstance" supertypes="//@dataContexts.0/@elements.11">
+      <properties name="transparency" type="Integer"/>
+      <properties name="fillColor" type="Reference"/>
+    </elements>
+    <elements name="Fill" supertypes="//@dataContexts.0/@elements.9"/>
+    <elements name="FillPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+    <elements name="IsValidPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+    <elements name="NullPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+    <elements name="LineType" supertypes="//@dataContexts.0/@elements.9"/>
+    <elements name="LineInstance" supertypes="//@dataContexts.0/@elements.11">
+      <properties name="lineColor" type="Integer"/>
+      <properties name="lineWith" type="Integer"/>
+    </elements>
+    <elements name="LinePropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+    <elements name="FontPropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+    <elements name="FontInstance" supertypes="//@dataContexts.0/@elements.11">
+      <properties name="fontColor" type="Integer"/>
+      <properties name="fontName"/>
+      <properties name="fontHeigh" type="Integer"/>
+      <properties name="bold" type="Boolean"/>
+    </elements>
+    <elements name="FontType" supertypes="//@dataContexts.0/@elements.9"/>
+    <elements name="IsVisiblePropertySetter" supertypes="//@dataContexts.0/@elements.19"/>
+    <elements name="TopLayerOperatorDescriptor" supertypes="//@dataContexts.0/@elements.22"/>
+    <elements name="StackedLayerOperatorDescriptor" supertypes="//@dataContexts.0/@elements.22"/>
+    <elements name="CustomPropertyOperator" supertypes="//@dataContexts.0/@elements.23">
+      <properties name="classname"/>
+      <properties name="operatorInstance"/>
+      <properties name="classBundleID"/>
+    </elements>
+    <elements name="AndStackedLayerOperatorDescriptor" supertypes="//@dataContexts.0/@elements.62"/>
+    <elements name="OrStackedLayerOperatorDescriptor" supertypes="//@dataContexts.0/@elements.62"/>
+    <elements name="IsAbstractUmlSetter" supertypes="//@dataContexts.0/@elements.19"/>
+    <modelElementFactory href="ppe:/environment/org.eclipse.papyrus.infra.properties.ui/model/Environment.xmi#//@modelElementFactories.0"/>
+  </dataContexts>
+</contexts:Context>
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleAbstractLayer.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleAbstractLayer.xwt
new file mode 100755
index 0000000..519f358
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleAbstractLayer.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:BooleanRadio input="{Binding}"
+			property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanRadio>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleAbstractLayerOperator.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleAbstractLayerOperator.xwt
new file mode 100755
index 0000000..519f358
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleAbstractLayerOperator.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:BooleanRadio input="{Binding}"
+			property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanRadio>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleAndStackedLayerOperatorDescriptor.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleAndStackedLayerOperatorDescriptor.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleAndStackedLayerOperatorDescriptor.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleApplicationDependantElement.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleApplicationDependantElement.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleApplicationDependantElement.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleBooleanInstance.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleBooleanInstance.xwt
new file mode 100755
index 0000000..3a4a445
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleBooleanInstance.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:BooleanRadio input="{Binding}"
+			property="layers:BooleanInstance:value"></ppe:BooleanRadio>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleBooleanType.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleBooleanType.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleBooleanType.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleColor.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleColor.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleColor.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleColorInstance.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleColorInstance.xwt
new file mode 100755
index 0000000..b75785e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleColorInstance.xwt
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:j="clr-namespace:java.lang"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns="http://www.eclipse.org/xwt/presentation" xmlns:x="http://www.eclipse.org/xwt"
+	xmlns:gmf="clr-namespace:org.eclipse.papyrus.infra.gmfdiag.widgets.editors">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<gmf:XWTAwareColorPicker input="{Binding}"
+			property="layers:ColorInstance:value"></gmf:XWTAwareColorPicker>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleComputePropertyValueCommandItf.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleComputePropertyValueCommandItf.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleComputePropertyValueCommandItf.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleCustomLayerOperator.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleCustomLayerOperator.xwt
new file mode 100755
index 0000000..519f358
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleCustomLayerOperator.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:BooleanRadio input="{Binding}"
+			property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanRadio>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleCustomPropertyOperator.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleCustomPropertyOperator.xwt
new file mode 100755
index 0000000..8ebc8e7
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleCustomPropertyOperator.xwt
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:CustomPropertyOperator:classname"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:CustomPropertyOperator:operatorInstance"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:CustomPropertyOperator:classBundleID"></ppe:StringEditor>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleCustomType.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleCustomType.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleCustomType.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleDefaultPropertyOperator.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleDefaultPropertyOperator.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleDefaultPropertyOperator.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFill.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFill.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFill.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFillInstance.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFillInstance.xwt
new file mode 100755
index 0000000..a58f54b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFillInstance.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:x="http://www.eclipse.org/xwt" xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:j="clr-namespace:java.lang">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:IntegerSpinner input="{Binding}"
+			property="layers:FillInstance:transparency"></ppe:IntegerSpinner>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFillPropertySetter.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFillPropertySetter.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFillPropertySetter.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFolder.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFolder.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFolder.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFolderElement.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFolderElement.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFolderElement.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFontInstance.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFontInstance.xwt
new file mode 100755
index 0000000..2d07965
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFontInstance.xwt
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:j="clr-namespace:java.lang" xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt"
+	xmlns:gmf="clr-namespace:org.eclipse.papyrus.infra.gmfdiag.widgets.editors">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<gmf:XWTAwareFontEditor input="{Binding}"
+			property="layers:FontInstance:fontName"></gmf:XWTAwareFontEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:BooleanCheckbox input="{Binding}"
+			property="layers:FontInstance:bold"></ppe:BooleanCheckbox>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<gmf:XWTAwareColorPicker input="{Binding}"
+			property="layers:FontInstance:fontColor"></gmf:XWTAwareColorPicker>
+		<ppe:IntegerSpinner input="{Binding}"
+			property="layers:FontInstance:fontHeigh"></ppe:IntegerSpinner>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFontPropertySetter.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFontPropertySetter.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFontPropertySetter.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFontType.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFontType.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleFontType.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIntInstance.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIntInstance.xwt
new file mode 100755
index 0000000..fbe79f5
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIntInstance.xwt
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:j="clr-namespace:java.lang" xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:x="http://www.eclipse.org/xwt"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:IntegerEditor input="{Binding}" property="layers:IntInstance:value"></ppe:IntegerEditor>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIntType.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIntType.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIntType.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIsAbstractUmlSetter.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIsAbstractUmlSetter.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIsAbstractUmlSetter.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIsValidPropertySetter.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIsValidPropertySetter.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIsValidPropertySetter.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIsVisiblePropertySetter.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIsVisiblePropertySetter.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleIsVisiblePropertySetter.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayer.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayer.xwt
new file mode 100755
index 0000000..12a2f80
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayer.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:j="clr-namespace:java.lang" xmlns:x="http://www.eclipse.org/xwt"
+	xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:BooleanCheckbox input="{Binding}"
+			property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanCheckbox>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerApplicationFactory.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerApplicationFactory.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerApplicationFactory.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerDescriptor.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerDescriptor.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerDescriptor.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerDescriptorRegistry.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerDescriptorRegistry.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerDescriptorRegistry.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerExpression.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerExpression.xwt
new file mode 100755
index 0000000..2d59399
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerExpression.xwt
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:BooleanRadio input="{Binding}"
+			property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanRadio>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerNamedStyle.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerNamedStyle.xwt
new file mode 100755
index 0000000..6cb5800
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerNamedStyle.xwt
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerOperator.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerOperator.xwt
new file mode 100755
index 0000000..519f358
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerOperator.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:BooleanRadio input="{Binding}"
+			property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanRadio>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerOperatorDescriptor.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerOperatorDescriptor.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerOperatorDescriptor.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerOperatorDescriptorRegistry.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerOperatorDescriptorRegistry.xwt
new file mode 100755
index 0000000..93769e3
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerOperatorDescriptorRegistry.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:IntegerEditor input="{Binding}"
+			property="layers:LayerOperatorDescriptorRegistry:propertyCollectionSize"></ppe:IntegerEditor>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerStackDescriptorRegistry.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerStackDescriptorRegistry.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayerStackDescriptorRegistry.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayersStack.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayersStack.xwt
new file mode 100755
index 0000000..3b396a9
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayersStack.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:j="clr-namespace:java.lang" xmlns:x="http://www.eclipse.org/xwt"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayersStackApplication.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayersStackApplication.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLayersStackApplication.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLineInstance.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLineInstance.xwt
new file mode 100755
index 0000000..92d22dc
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLineInstance.xwt
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:j="clr-namespace:java.lang" xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt"
+	xmlns:gmf="clr-namespace:org.eclipse.papyrus.infra.gmfdiag.widgets.editors">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<gmf:XWTAwareColorPicker input="{Binding}"
+			property="layers:LineInstance:lineColor"></gmf:XWTAwareColorPicker>
+		<ppe:IntegerSpinner input="{Binding}"
+			property="layers:LineInstance:lineWith"></ppe:IntegerSpinner>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLinePropertySetter.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLinePropertySetter.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLinePropertySetter.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLineType.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLineType.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleLineType.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleMetamodel.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleMetamodel.xwt
new file mode 100755
index 0000000..eba41e2
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleMetamodel.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:BooleanRadio input="{Binding}"
+			property="layers:Metamodel:isTypeValid"></ppe:BooleanRadio>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleNullInstance.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleNullInstance.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleNullInstance.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleNullPropertySetter.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleNullPropertySetter.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleNullPropertySetter.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleOrStackedLayerOperatorDescriptor.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleOrStackedLayerOperatorDescriptor.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleOrStackedLayerOperatorDescriptor.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleProperty.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleProperty.xwt
new file mode 100755
index 0000000..44021ec
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleProperty.xwt
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:IntegerEditor input="{Binding}" property="layers:Property:index"></ppe:IntegerEditor>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertyIndex.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertyIndex.xwt
new file mode 100755
index 0000000..82e6423
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertyIndex.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:IntegerEditor input="{Binding}"
+			property="layers:PropertyIndex:index"></ppe:IntegerEditor>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertyOperator.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertyOperator.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertyOperator.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertyRegistry.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertyRegistry.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertyRegistry.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertySetter.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertySetter.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertySetter.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertySetterRegistry.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertySetterRegistry.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultiplePropertySetterRegistry.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleRegExpLayer.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleRegExpLayer.xwt
new file mode 100755
index 0000000..21ccf7e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleRegExpLayer.xwt
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:j="clr-namespace:java.lang" xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:x="http://www.eclipse.org/xwt">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}" property="layers:RegExpLayer:language"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:BooleanCheckbox input="{Binding}"
+			property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanCheckbox>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleRegExpLayerDescriptor.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleRegExpLayerDescriptor.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleRegExpLayerDescriptor.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleSimpleLayerDescriptor.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleSimpleLayerDescriptor.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleSimpleLayerDescriptor.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStackedLayerOperator.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStackedLayerOperator.xwt
new file mode 100755
index 0000000..519f358
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStackedLayerOperator.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:BooleanRadio input="{Binding}"
+			property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanRadio>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStackedLayerOperatorDescriptor.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStackedLayerOperatorDescriptor.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStackedLayerOperatorDescriptor.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringInstance.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringInstance.xwt
new file mode 100755
index 0000000..c27c4da
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringInstance.xwt
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}" property="layers:StringInstance:value"></ppe:StringEditor>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringToPropertyIndexMap.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringToPropertyIndexMap.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringToPropertyIndexMap.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringToPropertySetter.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringToPropertySetter.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringToPropertySetter.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringToTypeInstanceMap.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringToTypeInstanceMap.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringToTypeInstanceMap.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringToTypeMap.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringToTypeMap.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringToTypeMap.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringType.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringType.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleStringType.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleTopLayerOperator.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleTopLayerOperator.xwt
new file mode 100755
index 0000000..519f358
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleTopLayerOperator.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:BooleanRadio input="{Binding}"
+			property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanRadio>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleTopLayerOperatorDescriptor.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleTopLayerOperatorDescriptor.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleTopLayerOperatorDescriptor.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleType.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleType.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleType.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleTypeInstance.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleTypeInstance.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleTypeInstance.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleTypeRegistry.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleTypeRegistry.xwt
new file mode 100755
index 0000000..0fcb1ce
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/MultipleTypeRegistry.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleAbstractLayer.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleAbstractLayer.xwt
new file mode 100755
index 0000000..7e7333a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleAbstractLayer.xwt
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}" property="layers:LayerExpression:name"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:LayerExpression:description"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:BooleanRadio input="{Binding}"
+			property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanRadio>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceDialog input="{Binding}"
+			property="layers:AbstractLayer:layerDescriptor"></ppe:ReferenceDialog>
+		<ppe:ReferenceDialog input="{Binding}"
+			property="layers:ApplicationDependantElement:application"></ppe:ReferenceDialog>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:MultiReference input="{Binding}"
+			property="layers:AbstractLayer:propertyValues"></ppe:MultiReference>
+		<ppe:MultiReference input="{Binding}"
+			property="layers:AbstractLayer:views"></ppe:MultiReference>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleAbstractLayerOperator.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleAbstractLayerOperator.xwt
new file mode 100755
index 0000000..cf0b75e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleAbstractLayerOperator.xwt
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}" property="layers:LayerExpression:name"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:LayerExpression:description"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:AbstractLayerOperator:layerOperatorDescriptorName"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:BooleanRadio input="{Binding}"
+			property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanRadio>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceDialog input="{Binding}"
+			property="layers:AbstractLayerOperator:layerOperatorDescriptor"></ppe:ReferenceDialog>
+		<ppe:ReferenceDialog input="{Binding}"
+			property="layers:ApplicationDependantElement:application"></ppe:ReferenceDialog>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleAndStackedLayerOperatorDescriptor.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleAndStackedLayerOperatorDescriptor.xwt
new file mode 100755
index 0000000..4a255b1
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleAndStackedLayerOperatorDescriptor.xwt
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:LayerOperatorDescriptor:name"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:MultiReference input="{Binding}"
+			property="layers:LayerOperatorDescriptor:propertyOperators"></ppe:MultiReference>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleApplicationDependantElement.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleApplicationDependantElement.xwt
new file mode 100755
index 0000000..6242a62
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleApplicationDependantElement.xwt
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:j="clr-namespace:java.lang" xmlns:x="http://www.eclipse.org/xwt"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns="http://www.eclipse.org/xwt/presentation" xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceDialog input="{Binding}"
+			property="layers:ApplicationDependantElement:application"></ppe:ReferenceDialog>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleBooleanInstance.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleBooleanInstance.xwt
new file mode 100755
index 0000000..97913d9
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleBooleanInstance.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:j="clr-namespace:java.lang" xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:x="http://www.eclipse.org/xwt">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:BooleanRadio input="{Binding}"
+			property="layers:BooleanInstance:value"></ppe:BooleanRadio>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleBooleanType.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleBooleanType.xwt
new file mode 100755
index 0000000..8d15569
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleBooleanType.xwt
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}" property="layers:Type:name"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}" property="layers:Type:description"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceDialog input="{Binding}" property="layers:Type:metamodel"></ppe:ReferenceDialog>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleColor.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleColor.xwt
new file mode 100755
index 0000000..ae5914e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleColor.xwt
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns="http://www.eclipse.org/xwt/presentation" xmlns:x="http://www.eclipse.org/xwt"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:j="clr-namespace:java.lang">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}" property="layers:Type:name"></ppe:StringEditor>
+		<ppe:StringMultiline input="{Binding}"
+			property="layers:Type:description"></ppe:StringMultiline>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceDialog input="{Binding}" property="layers:Type:metamodel"></ppe:ReferenceDialog>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleColorInstance.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleColorInstance.xwt
new file mode 100755
index 0000000..723650c
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleColorInstance.xwt
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:j="clr-namespace:java.lang" xmlns:x="http://www.eclipse.org/xwt"
+	xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns="http://www.eclipse.org/xwt/presentation" xmlns:gmf="clr-namespace:org.eclipse.papyrus.infra.gmfdiag.widgets.editors">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<gmf:XWTAwareColorPicker input="{Binding}"
+			property="layers:ColorInstance:value"></gmf:XWTAwareColorPicker>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleComputePropertyValueCommandItf.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleComputePropertyValueCommandItf.xwt
new file mode 100755
index 0000000..78049e5
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleComputePropertyValueCommandItf.xwt
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:j="clr-namespace:java.lang" xmlns:x="http://www.eclipse.org/xwt"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleCustomLayerOperator.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleCustomLayerOperator.xwt
new file mode 100755
index 0000000..b7a66d5
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleCustomLayerOperator.xwt
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:x="http://www.eclipse.org/xwt" xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:j="clr-namespace:java.lang"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}" property="layers:LayerExpression:name"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:LayerExpression:description"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:BooleanCheckbox input="{Binding}"
+			property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanCheckbox>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceLabel input="{Binding}"
+			property="layers:ApplicationDependantElement:application" readOnly="true"></ppe:ReferenceLabel>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleCustomPropertyOperator.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleCustomPropertyOperator.xwt
new file mode 100755
index 0000000..5b069d1
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleCustomPropertyOperator.xwt
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:CustomPropertyOperator:classname"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:CustomPropertyOperator:operatorInstance"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:CustomPropertyOperator:classBundleID"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:PropertyOperator:name"></ppe:StringEditor>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleCustomType.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleCustomType.xwt
new file mode 100755
index 0000000..8813b8f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleCustomType.xwt
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}" property="layers:Type:name"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}" property="layers:Type:description"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:CustomType:classifier"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceDialog input="{Binding}" property="layers:Type:metamodel"></ppe:ReferenceDialog>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleDefaultPropertyOperator.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleDefaultPropertyOperator.xwt
new file mode 100755
index 0000000..a7d7bf3
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleDefaultPropertyOperator.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:PropertyOperator:name"></ppe:StringEditor>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFill.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFill.xwt
new file mode 100755
index 0000000..8d15569
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFill.xwt
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}" property="layers:Type:name"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}" property="layers:Type:description"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceDialog input="{Binding}" property="layers:Type:metamodel"></ppe:ReferenceDialog>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFillInstance.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFillInstance.xwt
new file mode 100755
index 0000000..8653461
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFillInstance.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:x="http://www.eclipse.org/xwt"
+	xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns="http://www.eclipse.org/xwt/presentation" xmlns:j="clr-namespace:java.lang"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:IntegerSpinner input="{Binding}"
+			property="layers:FillInstance:transparency"></ppe:IntegerSpinner>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFillPropertySetter.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFillPropertySetter.xwt
new file mode 100755
index 0000000..425fb60
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFillPropertySetter.xwt
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:PropertySetter:propertyName"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceDialog input="{Binding}"
+			property="layers:PropertySetter:property"></ppe:ReferenceDialog>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFolder.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFolder.xwt
new file mode 100755
index 0000000..b6e301a
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFolder.xwt
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}" property="layers:Folder:name"></ppe:StringEditor>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFolderElement.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFolderElement.xwt
new file mode 100755
index 0000000..6cb5800
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFolderElement.xwt
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFontInstance.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFontInstance.xwt
new file mode 100755
index 0000000..6964f45
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFontInstance.xwt
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:j="clr-namespace:java.lang" xmlns:x="http://www.eclipse.org/xwt"
+	xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns="http://www.eclipse.org/xwt/presentation" xmlns:gmf="clr-namespace:org.eclipse.papyrus.infra.gmfdiag.widgets.editors">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<gmf:XWTAwareFontEditor input="{Binding}"
+			property="layers:FontInstance:fontName"></gmf:XWTAwareFontEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:BooleanCheckbox input="{Binding}"
+			property="layers:FontInstance:bold"></ppe:BooleanCheckbox>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<gmf:XWTAwareColorPicker input="{Binding}"
+			property="layers:FontInstance:fontColor"></gmf:XWTAwareColorPicker>
+		<ppe:IntegerSpinner input="{Binding}"
+			property="layers:FontInstance:fontHeigh"></ppe:IntegerSpinner>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFontPropertySetter.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFontPropertySetter.xwt
new file mode 100755
index 0000000..425fb60
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFontPropertySetter.xwt
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:PropertySetter:propertyName"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceDialog input="{Binding}"
+			property="layers:PropertySetter:property"></ppe:ReferenceDialog>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFontType.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFontType.xwt
new file mode 100755
index 0000000..8d15569
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleFontType.xwt
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}" property="layers:Type:name"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}" property="layers:Type:description"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceDialog input="{Binding}" property="layers:Type:metamodel"></ppe:ReferenceDialog>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIntInstance.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIntInstance.xwt
new file mode 100755
index 0000000..b211634
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIntInstance.xwt
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:IntegerEditor input="{Binding}" property="layers:IntInstance:value"></ppe:IntegerEditor>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIntType.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIntType.xwt
new file mode 100755
index 0000000..8d15569
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIntType.xwt
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}" property="layers:Type:name"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}" property="layers:Type:description"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceDialog input="{Binding}" property="layers:Type:metamodel"></ppe:ReferenceDialog>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIsAbstractUmlSetter.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIsAbstractUmlSetter.xwt
new file mode 100755
index 0000000..425fb60
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIsAbstractUmlSetter.xwt
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:PropertySetter:propertyName"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceDialog input="{Binding}"
+			property="layers:PropertySetter:property"></ppe:ReferenceDialog>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIsValidPropertySetter.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIsValidPropertySetter.xwt
new file mode 100755
index 0000000..425fb60
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIsValidPropertySetter.xwt
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:PropertySetter:propertyName"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceDialog input="{Binding}"
+			property="layers:PropertySetter:property"></ppe:ReferenceDialog>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIsVisiblePropertySetter.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIsVisiblePropertySetter.xwt
new file mode 100755
index 0000000..425fb60
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleIsVisiblePropertySetter.xwt
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:PropertySetter:propertyName"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceDialog input="{Binding}"
+			property="layers:PropertySetter:property"></ppe:ReferenceDialog>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayer.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayer.xwt
new file mode 100755
index 0000000..396effe
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayer.xwt
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:x="http://www.eclipse.org/xwt"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:j="clr-namespace:java.lang" xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}" property="layers:LayerExpression:name"></ppe:StringEditor>
+		<ppe:StringMultiline input="{Binding}"
+			property="layers:LayerExpression:description"></ppe:StringMultiline>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:BooleanCheckbox input="{Binding}"
+			property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanCheckbox>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceLabel input="{Binding}"
+			property="layers:AbstractLayer:layerDescriptor" readOnly="true"></ppe:ReferenceLabel>
+		<ppe:ReferenceLabel input="{Binding}"
+			property="layers:ApplicationDependantElement:application" readOnly="true"></ppe:ReferenceLabel>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:MultiReferencePropertyEditorWithPropertyView
+			input="{Binding}" property="layers:AbstractLayer:propertyValues"
+			readOnly="true"></ppe:MultiReferencePropertyEditorWithPropertyView>
+		<ppe:MultiReferencePropertyEditorWithPropertyView
+			input="{Binding}" property="layers:AbstractLayer:views" readOnly="true"></ppe:MultiReferencePropertyEditorWithPropertyView>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerApplicationFactory.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerApplicationFactory.xwt
new file mode 100755
index 0000000..78049e5
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerApplicationFactory.xwt
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:j="clr-namespace:java.lang" xmlns:x="http://www.eclipse.org/xwt"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerDescriptor.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerDescriptor.xwt
new file mode 100755
index 0000000..1698831
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerDescriptor.xwt
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceLabel input="{Binding}"
+			property="layers:LayerDescriptor:propertyRegistry" readOnly="true"></ppe:ReferenceLabel>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerDescriptorRegistry.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerDescriptorRegistry.xwt
new file mode 100755
index 0000000..44f3cd0
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerDescriptorRegistry.xwt
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerExpression.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerExpression.xwt
new file mode 100755
index 0000000..85b1d81
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerExpression.xwt
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:x="http://www.eclipse.org/xwt"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:j="clr-namespace:java.lang">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}" property="layers:LayerExpression:name"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:LayerExpression:description"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:BooleanRadio input="{Binding}"
+			property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanRadio>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceDialog input="{Binding}"
+			property="layers:ApplicationDependantElement:application"></ppe:ReferenceDialog>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerNamedStyle.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerNamedStyle.xwt
new file mode 100755
index 0000000..0073f7b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerNamedStyle.xwt
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:j="clr-namespace:java.lang" xmlns:x="http://www.eclipse.org/xwt"
+	xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerOperator.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerOperator.xwt
new file mode 100755
index 0000000..3cfd5e5
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerOperator.xwt
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:j="clr-namespace:java.lang">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}" property="layers:LayerExpression:name"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:LayerExpression:description"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:BooleanRadio input="{Binding}"
+			property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanRadio>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceLabel input="{Binding}"
+			property="layers:ApplicationDependantElement:application" readOnly="true"></ppe:ReferenceLabel>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerOperatorDescriptor.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerOperatorDescriptor.xwt
new file mode 100755
index 0000000..4a255b1
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerOperatorDescriptor.xwt
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:LayerOperatorDescriptor:name"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:MultiReference input="{Binding}"
+			property="layers:LayerOperatorDescriptor:propertyOperators"></ppe:MultiReference>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerOperatorDescriptorRegistry.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerOperatorDescriptorRegistry.xwt
new file mode 100755
index 0000000..cd84418
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerOperatorDescriptorRegistry.xwt
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:j="clr-namespace:java.lang" xmlns:x="http://www.eclipse.org/xwt"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:IntegerEditor input="{Binding}"
+			property="layers:LayerOperatorDescriptorRegistry:propertyCollectionSize"></ppe:IntegerEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:MultiReference input="{Binding}"
+			property="layers:LayerOperatorDescriptorRegistry:descriptors"></ppe:MultiReference>
+		<ppe:MultiReference input="{Binding}"
+			property="layers:LayerOperatorDescriptorRegistry:propertyOperators"></ppe:MultiReference>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerStackDescriptorRegistry.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerStackDescriptorRegistry.xwt
new file mode 100755
index 0000000..12b8227
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayerStackDescriptorRegistry.xwt
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:j="clr-namespace:java.lang"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayersStack.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayersStack.xwt
new file mode 100755
index 0000000..dd0d063
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayersStack.xwt
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:x="http://www.eclipse.org/xwt"
+	xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:j="clr-namespace:java.lang" xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}" property="layers:LayersStack:name"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:LayersStack:description"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceDialog input="{Binding}"
+			property="layers:LayersStack:diagram" readOnly="true"></ppe:ReferenceDialog>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayersStackApplication.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayersStackApplication.xwt
new file mode 100755
index 0000000..3b396a9
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLayersStackApplication.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:j="clr-namespace:java.lang" xmlns:x="http://www.eclipse.org/xwt"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLineInstance.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLineInstance.xwt
new file mode 100755
index 0000000..f6b77a4
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLineInstance.xwt
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:j="clr-namespace:java.lang" xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:gmf="clr-namespace:org.eclipse.papyrus.infra.gmfdiag.widgets.editors">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<gmf:XWTAwareColorPicker input="{Binding}"
+			property="layers:LineInstance:lineColor"></gmf:XWTAwareColorPicker>
+		<ppe:IntegerSpinner input="{Binding}"
+			property="layers:LineInstance:lineWith"></ppe:IntegerSpinner>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLinePropertySetter.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLinePropertySetter.xwt
new file mode 100755
index 0000000..425fb60
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLinePropertySetter.xwt
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:PropertySetter:propertyName"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceDialog input="{Binding}"
+			property="layers:PropertySetter:property"></ppe:ReferenceDialog>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLineType.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLineType.xwt
new file mode 100755
index 0000000..923ded8
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleLineType.xwt
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:x="http://www.eclipse.org/xwt" xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:j="clr-namespace:java.lang"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}" property="layers:Type:name"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}" property="layers:Type:description"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceDialog input="{Binding}" property="layers:Type:metamodel"></ppe:ReferenceDialog>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleMetamodel.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleMetamodel.xwt
new file mode 100755
index 0000000..1b0f1d6
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleMetamodel.xwt
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:j="clr-namespace:java.lang" xmlns:x="http://www.eclipse.org/xwt"
+	xmlns="http://www.eclipse.org/xwt/presentation" xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}" property="layers:Metamodel:name"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:Metamodel:description"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}" property="layers:Metamodel:nsuri"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}" property="layers:Metamodel:pluginID"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:Metamodel:ePackageInstanceName"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:BooleanRadio input="{Binding}"
+			property="layers:Metamodel:isTypeValid"></ppe:BooleanRadio>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleNullInstance.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleNullInstance.xwt
new file mode 100755
index 0000000..3b396a9
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleNullInstance.xwt
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:j="clr-namespace:java.lang" xmlns:x="http://www.eclipse.org/xwt"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleNullPropertySetter.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleNullPropertySetter.xwt
new file mode 100755
index 0000000..425fb60
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleNullPropertySetter.xwt
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:PropertySetter:propertyName"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceDialog input="{Binding}"
+			property="layers:PropertySetter:property"></ppe:ReferenceDialog>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleOrStackedLayerOperatorDescriptor.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleOrStackedLayerOperatorDescriptor.xwt
new file mode 100755
index 0000000..4a255b1
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleOrStackedLayerOperatorDescriptor.xwt
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:LayerOperatorDescriptor:name"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:MultiReference input="{Binding}"
+			property="layers:LayerOperatorDescriptor:propertyOperators"></ppe:MultiReference>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleProperty.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleProperty.xwt
new file mode 100755
index 0000000..0959dd9
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleProperty.xwt
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:j="clr-namespace:java.lang"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns="http://www.eclipse.org/xwt/presentation" xmlns:x="http://www.eclipse.org/xwt">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}" property="layers:Property:name"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}" property="layers:Property:description"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:IntegerEditor input="{Binding}" property="layers:Property:index"
+			readOnly="true"></ppe:IntegerEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceDialog input="{Binding}" property="layers:Property:type"
+			readOnly="true"></ppe:ReferenceDialog>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertyIndex.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertyIndex.xwt
new file mode 100755
index 0000000..c3e94b6
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertyIndex.xwt
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:x="http://www.eclipse.org/xwt" xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:j="clr-namespace:java.lang" xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:IntegerEditor input="{Binding}"
+			property="layers:PropertyIndex:index"></ppe:IntegerEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceDialog input="{Binding}"
+			property="layers:PropertyIndex:property"></ppe:ReferenceDialog>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertyOperator.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertyOperator.xwt
new file mode 100755
index 0000000..6cc8863
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertyOperator.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:PropertyOperator:name"></ppe:StringEditor>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertyRegistry.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertyRegistry.xwt
new file mode 100755
index 0000000..b01b2ac
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertyRegistry.xwt
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:j="clr-namespace:java.lang" xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:IntegerEditor input="{Binding}"
+			property="layers:PropertyRegistry:propertiesCount" readOnly="true"></ppe:IntegerEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceDialog input="{Binding}"
+			property="layers:PropertyRegistry:typeRegistry" readOnly="true"></ppe:ReferenceDialog>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:MultiReference input="{Binding}"
+			property="layers:PropertyRegistry:properties" readOnly="true"></ppe:MultiReference>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertySetter.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertySetter.xwt
new file mode 100755
index 0000000..77e1d1d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertySetter.xwt
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:j="clr-namespace:java.lang">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:PropertySetter:propertyName"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceDialog input="{Binding}"
+			property="layers:PropertySetter:property"></ppe:ReferenceDialog>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertySetterRegistry.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertySetterRegistry.xwt
new file mode 100755
index 0000000..5b88c96
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SinglePropertySetterRegistry.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:j="clr-namespace:java.lang"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:MultiReference input="{Binding}"
+			property="layers:PropertySetterRegistry:propertySetters"></ppe:MultiReference>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleRegExpLayer.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleRegExpLayer.xwt
new file mode 100755
index 0000000..c221ddf
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleRegExpLayer.xwt
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:j="clr-namespace:java.lang" xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringMultiline input="{Binding}"
+			property="layers:RegExpLayer:expr"></ppe:StringMultiline>
+		<ppe:StringEditor input="{Binding}" property="layers:RegExpLayer:language"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}" property="layers:LayerExpression:name"></ppe:StringEditor>
+		<ppe:StringMultiline input="{Binding}"
+			property="layers:LayerExpression:description"></ppe:StringMultiline>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:BooleanCheckbox input="{Binding}"
+			property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanCheckbox>
+		<ppe:BooleanRadio input="{Binding}"
+			property="layers:RegExpLayer:isDomainChangedEventDependant"></ppe:BooleanRadio>
+		<ppe:BooleanRadio input="{Binding}"
+			property="layers:RegExpLayer:isDiagramChangedEventDependant"></ppe:BooleanRadio>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:EnumCombo input="{Binding}"
+			property="layers:RegExpLayer:domainChangedEventLevel"></ppe:EnumCombo>
+		<ppe:EnumCombo input="{Binding}"
+			property="layers:RegExpLayer:diagramChangedEventLevel"></ppe:EnumCombo>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceLabel input="{Binding}"
+			property="layers:AbstractLayer:layerDescriptor" readOnly="true"></ppe:ReferenceLabel>
+		<ppe:ReferenceLabel input="{Binding}"
+			property="layers:ApplicationDependantElement:application" readOnly="true"></ppe:ReferenceLabel>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:MultiReference input="{Binding}"
+			property="layers:AbstractLayer:propertyValues" readOnly="true"></ppe:MultiReference>
+		<ppe:MultiReference input="{Binding}"
+			property="layers:AbstractLayer:views"></ppe:MultiReference>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleRegExpLayerDescriptor.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleRegExpLayerDescriptor.xwt
new file mode 100755
index 0000000..a0da5b5
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleRegExpLayerDescriptor.xwt
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:x="http://www.eclipse.org/xwt"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:j="clr-namespace:java.lang">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceLabel input="{Binding}"
+			property="layers:LayerDescriptor:propertyRegistry" readOnly="true"></ppe:ReferenceLabel>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleSimpleLayerDescriptor.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleSimpleLayerDescriptor.xwt
new file mode 100755
index 0000000..d76b572
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleSimpleLayerDescriptor.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:x="http://www.eclipse.org/xwt"
+	xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns="http://www.eclipse.org/xwt/presentation" xmlns:j="clr-namespace:java.lang"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceLabel input="{Binding}"
+			property="layers:LayerDescriptor:propertyRegistry" readOnly="true"></ppe:ReferenceLabel>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStackedLayerOperator.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStackedLayerOperator.xwt
new file mode 100755
index 0000000..3b94066
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStackedLayerOperator.xwt
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:j="clr-namespace:java.lang" xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}" property="layers:LayerExpression:name"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:LayerExpression:description"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:AbstractLayerOperator:layerOperatorDescriptorName"
+			readOnly="true"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:BooleanCheckbox input="{Binding}"
+			property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanCheckbox>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceDialog input="{Binding}"
+			property="layers:AbstractLayerOperator:layerOperatorDescriptor"
+			readOnly="true"></ppe:ReferenceDialog>
+		<ppe:ReferenceDialog input="{Binding}"
+			property="layers:ApplicationDependantElement:application" readOnly="true"></ppe:ReferenceDialog>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStackedLayerOperatorDescriptor.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStackedLayerOperatorDescriptor.xwt
new file mode 100755
index 0000000..4a255b1
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStackedLayerOperatorDescriptor.xwt
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:LayerOperatorDescriptor:name"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:MultiReference input="{Binding}"
+			property="layers:LayerOperatorDescriptor:propertyOperators"></ppe:MultiReference>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringInstance.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringInstance.xwt
new file mode 100755
index 0000000..b5b7a21
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringInstance.xwt
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}" property="layers:StringInstance:value"></ppe:StringEditor>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringToPropertyIndexMap.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringToPropertyIndexMap.xwt
new file mode 100755
index 0000000..7823c6f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringToPropertyIndexMap.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:StringToPropertyIndexMap:key" readOnly="true"></ppe:StringEditor>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringToPropertySetter.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringToPropertySetter.xwt
new file mode 100755
index 0000000..53319e6
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringToPropertySetter.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:StringToPropertySetter:key" readOnly="true"></ppe:StringEditor>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringToTypeInstanceMap.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringToTypeInstanceMap.xwt
new file mode 100755
index 0000000..f06ec48
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringToTypeInstanceMap.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:j="clr-namespace:java.lang" xmlns:x="http://www.eclipse.org/xwt">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:StringToTypeInstanceMap:key" readOnly="true"></ppe:StringEditor>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringToTypeMap.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringToTypeMap.xwt
new file mode 100755
index 0000000..30b911c
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringToTypeMap.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:j="clr-namespace:java.lang" xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:x="http://www.eclipse.org/xwt"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}" property="layers:StringToTypeMap:key"
+			readOnly="true"></ppe:StringEditor>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringType.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringType.xwt
new file mode 100755
index 0000000..8d15569
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleStringType.xwt
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}" property="layers:Type:name"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}" property="layers:Type:description"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceDialog input="{Binding}" property="layers:Type:metamodel"></ppe:ReferenceDialog>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleTopLayerOperator.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleTopLayerOperator.xwt
new file mode 100755
index 0000000..5c64827
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleTopLayerOperator.xwt
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:j="clr-namespace:java.lang" xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:x="http://www.eclipse.org/xwt"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}" property="layers:LayerExpression:name"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:LayerExpression:description"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:AbstractLayerOperator:layerOperatorDescriptorName"
+			readOnly="true"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="2"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:BooleanCheckbox input="{Binding}"
+			property="layers:LayerExpression:isLayerEnabled"></ppe:BooleanCheckbox>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceLabel input="{Binding}"
+			property="layers:AbstractLayerOperator:layerOperatorDescriptor"
+			readOnly="true"></ppe:ReferenceLabel>
+		<ppe:ReferenceLabel input="{Binding}"
+			property="layers:ApplicationDependantElement:application" readOnly="true"></ppe:ReferenceLabel>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleTopLayerOperatorDescriptor.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleTopLayerOperatorDescriptor.xwt
new file mode 100755
index 0000000..4a255b1
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleTopLayerOperatorDescriptor.xwt
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns:x="http://www.eclipse.org/xwt" xmlns:j="clr-namespace:java.lang"
+	xmlns="http://www.eclipse.org/xwt/presentation">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}"
+			property="layers:LayerOperatorDescriptor:name"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:MultiReference input="{Binding}"
+			property="layers:LayerOperatorDescriptor:propertyOperators"></ppe:MultiReference>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleType.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleType.xwt
new file mode 100755
index 0000000..35ba776
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleType.xwt
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets"
+	xmlns:x="http://www.eclipse.org/xwt"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns="http://www.eclipse.org/xwt/presentation" xmlns:j="clr-namespace:java.lang">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:StringEditor input="{Binding}" property="layers:Type:name"></ppe:StringEditor>
+		<ppe:StringEditor input="{Binding}" property="layers:Type:description"></ppe:StringEditor>
+	</Composite>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:ReferenceDialog input="{Binding}" property="layers:Type:metamodel"></ppe:ReferenceDialog>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleTypeInstance.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleTypeInstance.xwt
new file mode 100755
index 0000000..78049e5
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleTypeInstance.xwt
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns="http://www.eclipse.org/xwt/presentation"
+	xmlns:j="clr-namespace:java.lang" xmlns:x="http://www.eclipse.org/xwt"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleTypeRegistry.xwt b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleTypeRegistry.xwt
new file mode 100755
index 0000000..c5855b9
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/properties/ui/SingleTypeRegistry.xwt
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Composite xmlns:x="http://www.eclipse.org/xwt"
+	xmlns:ppel="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets.layout"
+	xmlns="http://www.eclipse.org/xwt/presentation" xmlns:j="clr-namespace:java.lang"
+	xmlns:ppe="clr-namespace:org.eclipse.papyrus.infra.properties.ui.widgets">
+	<Composite.layout>
+		<ppel:PropertiesLayout></ppel:PropertiesLayout>
+	</Composite.layout>
+	<Composite>
+		<Composite.layout>
+			<ppel:PropertiesLayout numColumns="1"></ppel:PropertiesLayout>
+		</Composite.layout>
+		<ppe:MultiReference input="{Binding}"
+			property="layers:TypeRegistry:types" readOnly="true"></ppe:MultiReference>
+	</Composite>
+</Composite>
\ No newline at end of file
diff --git a/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers/ui/Activator.java b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers/ui/Activator.java
new file mode 100755
index 0000000..18a89cc
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers/ui/Activator.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers.ui;
+
+import org.eclipse.papyrus.infra.core.log.LogHelper;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.eclipse.papyrus.layers.ui";
+
+	// The shared instance
+	private static Activator plugin;
+
+	/** Logging helper */
+	public static LogHelper log;
+
+	/**
+	 * The constructor
+	 */
+	public Activator() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 *
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	@Override
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+		// register the login helper
+		log = new LogHelper(plugin);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 *
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	@Override
+	public void stop(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/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AbstractCreateLayerExpressionHandler.java b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AbstractCreateLayerExpressionHandler.java
new file mode 100755
index 0000000..60013db
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AbstractCreateLayerExpressionHandler.java
@@ -0,0 +1,124 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.commands;
+
+
+
+import static org.eclipse.papyrus.layers.ui.Activator.log;
+
+import java.util.List;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersContainer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+public abstract class AbstractCreateLayerExpressionHandler extends AbstractLayersCommand {
+
+	/**
+	 * Value used to compute new names.
+	 */
+	private static int creationCount = 0;
+
+	public AbstractCreateLayerExpressionHandler() {
+		super();
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers3.ui.commands.AbstractLayersCommand#doExecute(org.eclipse.core.commands.ExecutionEvent, org.eclipse.core.expressions.IEvaluationContext, java.util.List)
+	 *
+	 * @param event
+	 * @param context
+	 * @param selections
+	 */
+	@Override
+	protected void doExecute(ExecutionEvent event, IEvaluationContext context, List<Object> selections) {
+		if (log.isDebugEnabled()) {
+			log.debug(this.getClass().getSimpleName() + ".doExecute()");
+		}
+
+		if (!isEnabled(context, selections)) {
+			return;
+		}
+
+		// Get application
+		LayersStackApplication application;
+		try {
+			application = lookupLayersStackApplicationChecked(context);
+		} catch (NotFoundException e) {
+			// Silently fails
+			return;
+		} catch (org.eclipse.papyrus.infra.core.resource.NotFoundException e) {
+			// Silently fails
+			return;
+		} catch (ServiceException e) {
+			// Silently fails
+			return;
+		}
+
+
+		// Create a layer !
+		LayerExpression layer = createLayer();
+		layer.setName("layer" + creationCount++);
+		layer.setApplication(application);
+
+		if (log.isDebugEnabled()) {
+			log.debug(this.getClass().getSimpleName() + ". layerCreated");
+		}
+
+		// insert layer in selected object
+		Object selection = selections.get(0);
+		if (selection instanceof LayersContainer) {
+			LayersContainer stack = (LayersContainer) selection;
+			stack.addLayer(layer);
+		}
+		// if(selection instanceof LayersStack) {
+		// LayersStack stack = (LayersStack)selection;
+		// stack.setLayers(layer);
+		// }
+		// else {
+		// LayerOperator operator = (LayerOperator)selection;
+		// operator.getLayers().add(layer);
+		// }
+
+	}
+
+	/**
+	 * This method must create the Layer that will be populated and inserted in parent.
+	 *
+	 * @return
+	 */
+	protected abstract LayerExpression createLayer();
+
+
+	/**
+	 * Return true if it is possible to attach aLyerStack.
+	 */
+	@Override
+	public boolean isEnabled(IEvaluationContext context, List<Object> selections) {
+		if (selections.size() != 1) {
+			return false;
+		}
+		Object first = selections.get(0);
+		boolean res = (first instanceof LayerOperator) || (first instanceof LayersStack);
+		// if(log.isDebugEnabled()) {
+		// log.debug("isEnable(" + res + ")");
+		// }
+		return res;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AbstractLayerStackCommand.java b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AbstractLayerStackCommand.java
new file mode 100755
index 0000000..36aff65
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AbstractLayerStackCommand.java
@@ -0,0 +1,247 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ *     Christian W. Damus - bug 485220
+ *     
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.commands;
+
+
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.ISashWindowsContainer;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.ui.util.ServiceUtilsForIEvaluationContext;
+import org.eclipse.papyrus.layers.runtime.NotationDiagramHelper;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.ui.IEditorPart;
+
+/**
+ * Base class for Commands on Layers.
+ * This class provide utility methods to find the current Layer, LayerStack, ...
+ *
+ * @author cedric dumoulin
+ *
+ */
+public abstract class AbstractLayerStackCommand extends AbstractHandler {
+
+	/**
+	 * Constructor.
+	 *
+	 */
+	public AbstractLayerStackCommand() {
+		super();
+	}
+
+	/**
+	 * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+	 * @param event
+	 * @return
+	 * @throws ExecutionException
+	 *
+	 */
+	@Override
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+		executeTransaction(event);
+
+		return null;
+	}
+
+	/**
+	 * Execute as transaction
+	 *
+	 * @param event
+	 */
+	private void executeTransaction(final ExecutionEvent event) {
+
+		// Get requested objects
+		final NotationDiagramHelper notationDiagramHelper;
+		TransactionalEditingDomain editingDomain;
+		try {
+			IEvaluationContext context = getIEvaluationContext(event);
+			notationDiagramHelper = lookupNotationDiagramHelperChecked(context);
+			editingDomain = lookupTransactionalEditingDomain(context);
+		} catch (NotFoundException e) {
+			// silently fails
+			return;
+		} catch (ServiceException e) {
+			// silently fails
+			return;
+		}
+
+
+		Command cmd = new RecordingCommand(editingDomain, getCommandName()) {
+
+			@Override
+			protected void doExecute() {
+				AbstractLayerStackCommand.this.doExecute(event, notationDiagramHelper);
+			}
+
+
+		};
+
+		editingDomain.getCommandStack().execute(cmd);
+
+	}
+
+	/**
+	 * Get the name used in the {@link RecordingCommand}. This name will be visible in
+	 * undo/redo.
+	 *
+	 * @return The command name to show.
+	 */
+	public abstract String getCommandName();
+
+	/**
+	 * Do the execution of the command.
+	 * Subclass should implements this method.
+	 *
+	 * @param event
+	 *
+	 * @param notationDiagramHelper
+	 */
+	protected abstract void doExecute(ExecutionEvent event, NotationDiagramHelper notationDiagramHelper);
+
+	// /**
+	// *
+	// * @return
+	// * @throws NotFoundException
+	// */
+	// protected LayerStackMngr lookupLayerStackMngrChecked() throws NotFoundException {
+	//
+	// return lookupLayersViewChecked().getLayerStackMngrChecked();
+	//
+	// }
+
+
+	protected IEvaluationContext getIEvaluationContext(ExecutionEvent event) throws NotFoundException {
+		try {
+			return (IEvaluationContext) event.getApplicationContext();
+		} catch (ClassCastException e) {
+			throw new NotFoundException("IEvaluationContext can't be found.");
+		}
+
+	}
+
+	/**
+	 * Try to lookup the TransactionalEditingDomain.
+	 *
+	 * @return
+	 * @throws ServiceException
+	 *             If the Editing domain can't be found.
+	 */
+	protected TransactionalEditingDomain lookupTransactionalEditingDomain(IEvaluationContext context) throws ServiceException {
+
+		// Get page from the event !
+		// IWorkbenchPage page = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage();
+
+		return ServiceUtilsForIEvaluationContext.getInstance().getTransactionalEditingDomain(context);
+	}
+
+	/**
+	 * Called by framework. Need to set the enabled flag.
+	 *
+	 * @see org.eclipse.core.commands.AbstractHandler#setEnabled(java.lang.Object)
+	 *
+	 * @param evaluationContext
+	 */
+	@Override
+	public void setEnabled(Object evaluationContext) {
+
+		if (!(evaluationContext instanceof IEvaluationContext)) {
+			setBaseEnabled(false);
+			// System.out.println(getCommandName() + ".setEnabled(" + isEnabled() + ") - no context");
+			return;
+		}
+
+		IEvaluationContext context = (IEvaluationContext) evaluationContext;
+
+		try {
+			NotationDiagramHelper diagramHelper = lookupNotationDiagramHelperChecked(context);
+
+			// Ask the subclass
+			setBaseEnabled(isEnabled(diagramHelper));
+
+		} catch (ServiceException e) {
+			// Can't find ServiceRegistry: disable
+			setBaseEnabled(false);
+		} catch (NotFoundException e) {
+			// Can't find ServiceRegistry: disable
+			setBaseEnabled(false);
+		}
+
+
+		// System.out.println(getCommandName() + ".setEnabled(" + isEnabled() + ")");
+	}
+
+	/**
+	 * Return true if the action is enabled, false otherwise.
+	 * Subclasses should implements this method. The default implementation return true.
+	 *
+	 * @param notationDiagramHelper
+	 * @return
+	 */
+	public boolean isEnabled(NotationDiagramHelper notationDiagramHelper) {
+		return true;
+	}
+
+	// /**
+	// *
+	// * @return
+	// * @throws NotFoundException
+	// */
+	// protected LayerStackMngr lookupLayerStackMngrChecked() throws NotFoundException {
+	//
+	// return lookupLayersViewChecked().getLayerStackMngrChecked();
+	//
+	// }
+
+	/**
+	 * Get the notation diagram helper.
+	 * This method can be used from {@link #execute(ExecutionEvent)} or {@link #setEnabled(Object)}.
+	 *
+	 * @return The
+	 * @throws NotFoundException
+	 * @throws ServiceException
+	 */
+	protected NotationDiagramHelper lookupNotationDiagramHelperChecked(IEvaluationContext context) throws NotFoundException, ServiceException {
+
+
+		// Get page from the event !
+		// IWorkbenchPage page = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage();
+
+		IEditorPart editor = ServiceUtilsForIEvaluationContext.getInstance().getService(ISashWindowsContainer.class, context).getActiveEditor();
+
+		if (!(editor instanceof DiagramDocumentEditor)) {
+			throw new NotFoundException("Selected editor do not contains Diagram");
+		}
+		DiagramDocumentEditor diagramEditor = (DiagramDocumentEditor) editor;
+
+		Diagram diagram = diagramEditor.getDiagram();
+		if (diagram == null) {
+			throw new NotFoundException("Selected editor do not contains Diagram");
+		}
+
+		// Lookup the Layer model
+		LayersModel layersModel = (LayersModel) ServiceUtilsForIEvaluationContext.getInstance().getModelSet(context).getModel(LayersModel.MODEL_ID);
+		// Return a new instance of the Helper
+		return new NotationDiagramHelper(layersModel, diagram);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AbstractLayersCommand.java b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AbstractLayersCommand.java
new file mode 100755
index 0000000..49e6305
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AbstractLayersCommand.java
@@ -0,0 +1,367 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ *     Christian W. Damus - bug 485220
+ *     
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.commands;
+
+
+
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.ISashWindowsContainer;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.ui.util.ServiceUtilsForIEvaluationContext;
+import org.eclipse.papyrus.layers.runtime.NotationDiagramHelper;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.ui.IEditorPart;
+
+/**
+ * Base class for Commands on Layers.
+ * This class provide utility methods to find the current Layer, LayerStack, ...
+ *
+ * @author cedric dumoulin
+ *
+ */
+public abstract class AbstractLayersCommand extends AbstractHandler {
+
+	/**
+	 * Constructor.
+	 *
+	 */
+	public AbstractLayersCommand() {
+		super();
+	}
+
+	/**
+	 * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+	 * @param event
+	 * @return
+	 * @throws ExecutionException
+	 *
+	 */
+	@Override
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+
+		// Get requested objects
+		IEvaluationContext context;
+		List<Object> selections;
+		try {
+			context = getIEvaluationContext(event);
+			selections = getSelections(context);
+		} catch (NotFoundException e) {
+			// silently fails
+			return null;
+		}
+
+
+		// Execute the command in 3 phases
+		if (!preExecute(event, context, selections)) {
+			return null;
+		}
+		executeTransaction(event, context, selections);
+		postExecute(event, context, selections);
+
+		return null;
+	}
+
+	/**
+	 * Method call prior to doExecute
+	 * This method should be overloaded by subclass wishing to initialize the command
+	 * outside of the transaction.
+	 *
+	 * @param event
+	 * @param selections
+	 * @param context
+	 * @return true if the doExecute() should be called, false if the command should stop
+	 */
+	protected boolean preExecute(ExecutionEvent event, IEvaluationContext context, List<Object> selections) throws ExecutionException {
+		return true;
+	}
+
+	/**
+	 * Method call after {@link #doExecute(ExecutionEvent, IEvaluationContext, List)} This method should be overloaded by subclass wishing to do some post-processing
+	 * outside of the transaction.
+	 *
+	 * @param event
+	 * @param selections
+	 * @param context
+	 */
+	protected void postExecute(ExecutionEvent event, IEvaluationContext context, List<Object> selections) throws ExecutionException {
+		// TODO Auto-generated method stub
+
+	}
+
+
+	/**
+	 * Execute as transaction
+	 *
+	 * @param event
+	 * @param selections
+	 * @param context
+	 */
+	private void executeTransaction(ExecutionEvent event, final IEvaluationContext context, final List<Object> selections) {
+
+		// Get requested objects
+		final TransactionalEditingDomain editingDomain;
+		final ExecutionEvent finalEvent = event;
+		try {
+			editingDomain = lookupTransactionalEditingDomain(context);
+		} catch (ServiceException e) {
+			// silently fails
+			return;
+		}
+
+
+		Command cmd = new RecordingCommand(editingDomain, getCommandName()) {
+
+			@Override
+			protected void doExecute() {
+				AbstractLayersCommand.this.doExecute(finalEvent, context, selections);
+			}
+
+
+		};
+
+		editingDomain.getCommandStack().execute(cmd);
+
+	}
+
+	/**
+	 * get the selected objects from the context.
+	 *
+	 * @param context
+	 * @return
+	 */
+	@SuppressWarnings("unchecked")
+	protected List<Object> getSelections(IEvaluationContext context) {
+		Object sel = context.getVariable("selection");
+		if (!(sel instanceof IStructuredSelection)) {
+			return Collections.emptyList();
+		}
+
+		IStructuredSelection structuredSelection = (IStructuredSelection) sel;
+
+		return structuredSelection.toList();
+	}
+
+	/**
+	 * Get the name used in the {@link RecordingCommand}. This name will be visible in
+	 * undo/redo.
+	 *
+	 * @return The command name to show.
+	 */
+	public abstract String getCommandName();
+
+	/**
+	 * Do the execution of the command.
+	 * Subclass should implements this method.
+	 *
+	 * @param notationDiagramHelper
+	 */
+	protected abstract void doExecute(ExecutionEvent event, IEvaluationContext context, List<Object> selections);
+
+	// /**
+	// *
+	// * @return
+	// * @throws NotFoundException
+	// */
+	// protected LayerStackMngr lookupLayerStackMngrChecked() throws NotFoundException {
+	//
+	// return lookupLayersViewChecked().getLayerStackMngrChecked();
+	//
+	// }
+
+
+	protected IEvaluationContext getIEvaluationContext(ExecutionEvent event) throws NotFoundException {
+		try {
+			return (IEvaluationContext) event.getApplicationContext();
+		} catch (ClassCastException e) {
+			throw new NotFoundException("IEvaluationContext can't be found.");
+		}
+
+	}
+
+	/**
+	 * Try to lookup the TransactionalEditingDomain.
+	 *
+	 * @return
+	 * @throws ServiceException
+	 *             If the Editing domain can't be found.
+	 */
+	protected TransactionalEditingDomain lookupTransactionalEditingDomain(IEvaluationContext context) throws ServiceException {
+
+		// Get page from the event !
+		// IWorkbenchPage page = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage();
+
+		return ServiceUtilsForIEvaluationContext.getInstance().getTransactionalEditingDomain(context);
+	}
+
+	/**
+	 * Called by framework. Need to set the enabled flag.
+	 *
+	 * @see org.eclipse.core.commands.AbstractHandler#setEnabled(java.lang.Object)
+	 *
+	 * @param evaluationContext
+	 */
+	@Override
+	public void setEnabled(Object evaluationContext) {
+
+		if (!(evaluationContext instanceof IEvaluationContext)) {
+			setBaseEnabled(false);
+			// System.out.println(getCommandName() + ".setEnabled(" + isEnabled() + ") - no context");
+			return;
+		}
+
+		IEvaluationContext context = (IEvaluationContext) evaluationContext;
+
+		List<Object> selections = getSelections(context);
+		// Ask the subclass
+		setBaseEnabled(isEnabled(context, selections));
+
+
+		// System.out.println(getCommandName() + ".setEnabled(" + isEnabled() + ")");
+	}
+
+	/**
+	 * Return true if the action is enabled, false otherwise.
+	 * Subclasses should implements this method. The default implementation return true.
+	 *
+	 * @param context
+	 * @return
+	 */
+	public boolean isEnabled(IEvaluationContext context, List<Object> selections) {
+		return true;
+	}
+
+	// /**
+	// *
+	// * @return
+	// * @throws NotFoundException
+	// */
+	// protected LayerStackMngr lookupLayerStackMngrChecked() throws NotFoundException {
+	//
+	// return lookupLayersViewChecked().getLayerStackMngrChecked();
+	//
+	// }
+
+	/**
+	 * lookup the notation diagram helper.
+	 * This method can be used from {@link #execute(ExecutionEvent)} or {@link #setEnabled(Object)}.
+	 *
+	 * @return The
+	 * @throws NotFoundException
+	 * @throws ServiceException
+	 */
+	protected NotationDiagramHelper lookupNotationDiagramHelperChecked(IEvaluationContext context) throws NotFoundException, ServiceException {
+
+
+		// Get page from the event !
+		// IWorkbenchPage page = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage();
+
+		IEditorPart editor = ServiceUtilsForIEvaluationContext.getInstance().getService(ISashWindowsContainer.class, context).getActiveEditor();
+
+		if (!(editor instanceof DiagramDocumentEditor)) {
+			throw new NotFoundException("Selected editor do not contains Diagram");
+		}
+		DiagramDocumentEditor diagramEditor = (DiagramDocumentEditor) editor;
+
+		Diagram diagram = diagramEditor.getDiagram();
+		if (diagram == null) {
+			throw new NotFoundException("Selected editor do not contains Diagram");
+		}
+
+		// Lookup the Layer model
+		LayersModel layersModel = (LayersModel) ServiceUtilsForIEvaluationContext.getInstance().getModelSet(context).getModel(LayersModel.MODEL_ID);
+		// Return a new instance of the Helper
+		return new NotationDiagramHelper(layersModel, diagram);
+	}
+
+	/**
+	 * lookup the LayerStack application object from context..
+	 * This method can be used from {@link #execute(ExecutionEvent)} or {@link #setEnabled(Object)}.
+	 *
+	 * @return The
+	 * @throws NotFoundException
+	 * @throws ServiceException
+	 * @throws org.eclipse.papyrus.infra.core.resource.NotFoundException
+	 */
+	protected LayersStackApplication lookupLayersStackApplicationChecked(IEvaluationContext context) throws NotFoundException, ServiceException, org.eclipse.papyrus.infra.core.resource.NotFoundException {
+
+		ModelSet modelSet = ServiceUtilsForIEvaluationContext.getInstance().getModelSet(context);
+		LayersModel model = (LayersModel) modelSet.getModelChecked(LayersModel.MODEL_ID);
+
+		return model.lookupLayerStackApplication();
+	}
+
+	// /**
+	// *
+	// * @return
+	// * @throws NotFoundException
+	// */
+	// protected LayerStackMngr lookupLayerStackMngrChecked() throws NotFoundException {
+	//
+	// return lookupLayersViewChecked().getLayerStackMngrChecked();
+	//
+	// }
+
+	/**
+	 * Get the notation diagram helper.
+	 * This method can be used from {@link #execute(ExecutionEvent)} or {@link #setEnabled(Object)}.
+	 *
+	 * @return The
+	 * @throws NotFoundException
+	 * @throws ServiceException
+	 */
+	protected Diagram lookupNotationDiagramChecked(IEvaluationContext context) throws NotFoundException, ServiceException {
+
+		IEditorPart editor = ServiceUtilsForIEvaluationContext.getInstance().getService(ISashWindowsContainer.class, context).getActiveEditor();
+
+		if (!(editor instanceof DiagramDocumentEditor)) {
+			throw new NotFoundException("Selected editor do not contains Diagram"); //$NON-NLS-1$
+		}
+		DiagramDocumentEditor diagramEditor = (DiagramDocumentEditor) editor;
+
+		Diagram diagram = diagramEditor.getDiagram();
+		if (diagram == null) {
+			throw new NotFoundException("Selected editor do not contains Diagram"); //$NON-NLS-1$
+		}
+
+		// Return a new instance of the Helper
+		return diagram;
+	}
+
+	/**
+	 * Return true if the first element of the selection is instance of the specified type.
+	 */
+	protected boolean selectionFirstElementInstanceOf(List<Object> selections, Class<?> type) {
+		if (selections.size() != 1) {
+			return false;
+		}
+		Object first = selections.get(0);
+		return type.isInstance(first);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AttachDiagramViewsToLayer.java b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AttachDiagramViewsToLayer.java
new file mode 100755
index 0000000..363fbba
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AttachDiagramViewsToLayer.java
@@ -0,0 +1,201 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.commands;
+
+import static org.eclipse.papyrus.layers.ui.Activator.log;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.window.Window;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.layers.notationmodel.edit.NotationItemProviderAdapterFactory;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.dialogs.CheckedTreeSelectionDialog;
+import org.eclipse.uml2.uml.edit.providers.UMLItemProviderAdapterFactory;
+
+
+/**
+ * Handler used to select multiples views to attach to the selected Layer.
+ * Property are proposed in a selectable tree dialog.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class AttachDiagramViewsToLayer extends AbstractLayersCommand {
+
+	/**
+	 * Constructor.
+	 *
+	 */
+	public AttachDiagramViewsToLayer() {
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers3.ui.commands.AbstractLayersCommand#getCommandName()
+	 *
+	 * @return
+	 */
+	@Override
+	public String getCommandName() {
+		return "Attach multiple views";
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers3.ui.commands.AbstractLayersCommand#doExecute(org.eclipse.core.commands.ExecutionEvent, org.eclipse.core.expressions.IEvaluationContext, java.util.List)
+	 *
+	 * @param event
+	 * @param context
+	 * @param selections
+	 */
+	@Override
+	protected void doExecute(ExecutionEvent event, IEvaluationContext context, List<Object> selections) {
+
+		// check enable
+		if (!isEnabled(context, selections)) {
+			return;
+		}
+
+		// Open the dialog to ask the new name
+		// TODO dialog should not be in the transaction !! put it outside !
+
+		try {
+			// Get the layer and application
+			@SuppressWarnings("unused")
+			LayersStackApplication application = lookupLayersStackApplicationChecked(context);
+			AbstractLayer layer = (AbstractLayer) getSelections(context).get(0);
+
+			// Get the diagram and the views
+			Diagram diagram = layer.getOwningLayersStack().getDiagram();
+
+
+			// Label and content providers
+
+			AdapterFactory domainAdapterFactory = new UMLItemProviderAdapterFactory();
+			AdapterFactory adapterFactory = new NotationItemProviderAdapterFactory(domainAdapterFactory);
+			ITreeContentProvider contentProvider = new AdapterFactoryContentProvider(adapterFactory);
+			ILabelProvider labelProvider = new AdapterFactoryLabelProvider(adapterFactory);
+
+			// Test of SpecificViewContentProvider that do exatly the same filtering
+			// final Diagram diag2 = diagram;
+			// ILabelProvider labelProvider = ServiceUtilsForIEvaluationContext.getInstance().getService(LabelProviderService.class, context).getLabelProvider();
+			// ITreeContentProvider contentProvider = new SpecificViewContentProvider() {
+			// @Override
+			// public Object[] getElements(Object inputElement) {
+			// // TODO Auto-generated method stub
+			// return new EObject[]{ diag2};
+			// }
+			// };
+
+
+			CheckedTreeSelectionDialog dialog = new CheckedTreeSelectionDialog(Display.getCurrent().getActiveShell(), labelProvider, contentProvider);
+
+			dialog.setTitle("Diagram Views Selection");
+			dialog.setMessage("Select Views to attach to the current layer:");
+			dialog.setInput(diagram);
+			List<View> initialSelection = layer.getViews();
+			dialog.setInitialSelections(initialSelection.toArray(new View[0]));
+
+			if (dialog.open() != Window.OK) {
+				return;
+			}
+
+			// TODO: improve algorithm:
+			// use only the two list (or arrays) of initialSelection and finalSelection
+			// Walk the first, for each element,
+			// if the element is in the second list
+			// remove element in both list (set list[i]=null)
+			// else
+			// remove element from first list
+			// At the end,
+			// initialCollection contains unsetted elements (with nulls)
+			// finalSelection contains set elements (with nulls)
+			// Walk each array/list, and skip nulls.
+
+
+
+			// Process selected Properties
+			Object[] res = dialog.getResult();
+			// Create a list from the array. No better way ...
+			// In the same time, create unchanged and set lists
+			List<View> finalSelection = new ArrayList<View>(res.length);
+			List<View> unchangedProperties = new ArrayList<View>(initialSelection.size());
+			List<View> setProperties = new ArrayList<View>(finalSelection.size());
+
+			for (Object o : res) {
+				// Create a clone list of the result
+				finalSelection.add((View) o);
+				// Create the unchanged and set list
+				if (initialSelection.contains(o)) {
+					unchangedProperties.add((View) o);
+				}
+				else {
+					setProperties.add((View) o);
+				}
+			}
+
+			// We also need the unset list
+			// Obtain it by removing unchanged from initialSelection
+			List<View> unsetProperties = new ArrayList<View>(initialSelection);
+			unsetProperties.removeAll(unchangedProperties);
+
+			// Remove unset views
+			for (View property : unsetProperties) {
+				if (log.isDebugEnabled()) {
+					log.debug("unset view " + property.getElement());
+				}
+				layer.getViews().remove(property);
+			}
+
+			// add set instances
+			for (View property : setProperties) {
+				if (log.isDebugEnabled()) {
+					log.debug("set Property " + property.getElement());
+				}
+				layer.getViews().add(property);
+			}
+
+		} catch (LayersException e) {
+			// silently fails
+			e.printStackTrace();
+		} catch (org.eclipse.papyrus.infra.core.resource.NotFoundException e) {
+			// silently fails
+			e.printStackTrace();
+		} catch (ServiceException e) {
+			// silently fails
+			e.printStackTrace();
+		}
+
+
+	}
+
+	/**
+	 * Return true if it is possible to attach a property.
+	 */
+	@Override
+	public boolean isEnabled(IEvaluationContext context, List<Object> selections) {
+
+		return selectionFirstElementInstanceOf(selections, AbstractLayer.class);
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AttachLayerStackCommand.java b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AttachLayerStackCommand.java
new file mode 100755
index 0000000..15911b9
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AttachLayerStackCommand.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.commands;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.IHandler;
+import org.eclipse.papyrus.layers.runtime.NotationDiagramHelper;
+
+
+/**
+ * Add a layer stack to a diagram.
+ * This is performed on the current LayerStack Viewer.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class AttachLayerStackCommand extends AbstractLayerStackCommand implements IHandler {
+
+
+	/**
+	 * @see org.eclipse.papyrus.layers2.ui.view.commands.AbstractLayerCommand#getCommandName()
+	 *
+	 * @return
+	 */
+	@Override
+	public String getCommandName() {
+		return "Attach Layer Stack";
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers2.ui.view.commands.AbstractLayerCommand#doExecute(org.eclipse.papyrus.layers.application.NotationDiagramMngr)
+	 *
+	 * @param notationDiagramHelper
+	 */
+	@Override
+	protected void doExecute(ExecutionEvent event, NotationDiagramHelper notationDiagramHelper) {
+		// System.out.println( this.getClass().getSimpleName() + ".doExecute()");
+		notationDiagramHelper.attachLayersStack();
+
+		// ensure the Layers explorer is open
+		// LayersExplorerViewUtils.openView(event);
+	}
+
+
+	/**
+	 * Return true if it is possible to attach aLyerStack.
+	 */
+	@Override
+	public boolean isEnabled(NotationDiagramHelper notationDiagramHelper) {
+		return !notationDiagramHelper.isLayersStackAttached();
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AttachPropertyFromListToLayer.java b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AttachPropertyFromListToLayer.java
new file mode 100755
index 0000000..700c4d3
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AttachPropertyFromListToLayer.java
@@ -0,0 +1,203 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.commands;
+
+import static org.eclipse.papyrus.layers.ui.Activator.log;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.window.Window;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.dialogs.ListSelectionDialog;
+
+
+/**
+ * Attach a property to the selected Layer.
+ * Property are proposed in a list.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class AttachPropertyFromListToLayer extends AbstractLayersCommand {
+
+	/**
+	 * Constructor.
+	 *
+	 */
+	public AttachPropertyFromListToLayer() {
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers3.ui.commands.AbstractLayersCommand#getCommandName()
+	 *
+	 * @return
+	 */
+	@Override
+	public String getCommandName() {
+		return "Attach a property";
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers3.ui.commands.AbstractLayersCommand#doExecute(org.eclipse.core.commands.ExecutionEvent, org.eclipse.core.expressions.IEvaluationContext, java.util.List)
+	 *
+	 * @param event
+	 * @param context
+	 * @param selections
+	 */
+	@Override
+	protected void doExecute(ExecutionEvent event, IEvaluationContext context, List<Object> selections) {
+		// check enable
+		if (!isEnabled(context, selections)) {
+			return;
+		}
+
+		// Open the dialog to ask the new name
+		// TODO dialog should not be in the transaction !! put it outside !
+
+		try {
+			// Get the layer and application
+			LayersStackApplication application = lookupLayersStackApplicationChecked(context);
+			AbstractLayer layer = (AbstractLayer) getSelections(context).get(0);
+
+			// Get the list of available properties
+			Property[] properties = application.getPropertyRegistry().getProperties().toArray(new Property[0]);
+
+			IStructuredContentProvider contentProvider = new MyContentProvider();
+			ILabelProvider labelProvider = new MyLabelProvider();
+
+			ListSelectionDialog dialog = new ListSelectionDialog(Display.getCurrent().getActiveShell(), properties, contentProvider, labelProvider, "Select properties to attach");
+
+			List<Property> initialSelection = layer.getAttachedProperties();
+			dialog.setInitialSelections(initialSelection.toArray(new Property[initialSelection.size()]));
+
+			if (dialog.open() != Window.OK) {
+				return;
+			}
+
+			// TODO: improve algorithm:
+			// use only the two list (or arrays) of initialSelection and finalSelection
+			// Walk the first, for each element,
+			// if the element is in the second list
+			// remove element in both list (set list[i]=null)
+			// else
+			// remove element from first list
+			// At the end,
+			// initialCollection contains unsetted elements (with nulls)
+			// finalSelection contains set elements (with nulls)
+			// Walk each array/list, and skip nulls.
+
+
+
+			// Process selected Properties
+			Object[] res = dialog.getResult();
+			// Create a list from the array. No better way ...
+			// In the same time, create unchanged and set lists
+			List<Property> finalSelection = new ArrayList<Property>(res.length);
+			List<Property> unchangedProperties = new ArrayList<Property>(initialSelection.size());
+			List<Property> setProperties = new ArrayList<Property>(finalSelection.size());
+
+			for (Object o : res) {
+				// Create a clone list of the result
+				finalSelection.add((Property) o);
+				// Create the unchanged and set list
+				if (initialSelection.contains(o)) {
+					unchangedProperties.add((Property) o);
+				}
+				else {
+					setProperties.add((Property) o);
+				}
+			}
+
+			// We also need the unset list
+			// Obtain it by removing unchanged from initialSelection
+			List<Property> unsetProperties = new ArrayList<Property>(initialSelection);
+			unsetProperties.removeAll(unchangedProperties);
+
+			// Remove unset instances
+			for (Property property : unsetProperties) {
+				if (log.isDebugEnabled()) {
+					log.debug("unset Property " + property.getName());
+				}
+				layer.removePropertyInstance(property);
+			}
+
+			// add set instances
+			for (Property property : setProperties) {
+				if (log.isDebugEnabled()) {
+					log.debug("set Property " + property.getName());
+				}
+				layer.addPropertyInstance(property);
+			}
+
+		} catch (LayersException e) {
+			// silently fails
+			e.printStackTrace();
+		} catch (org.eclipse.papyrus.infra.core.resource.NotFoundException e) {
+			// silently fails
+			e.printStackTrace();
+		} catch (ServiceException e) {
+			// silently fails
+			e.printStackTrace();
+		}
+
+
+	}
+
+	/**
+	 * Return true if it is possible to attach a property.
+	 */
+	@Override
+	public boolean isEnabled(IEvaluationContext context, List<Object> selections) {
+
+		return selectionFirstElementInstanceOf(selections, AbstractLayer.class);
+	}
+
+	private class MyContentProvider implements IStructuredContentProvider {
+
+		@Override
+		public Object[] getElements(Object inputElement) {
+			return (Property[]) inputElement;
+		}
+
+		@Override
+		public void dispose() {
+
+		}
+
+		@Override
+		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+
+		}
+
+	}
+
+	private class MyLabelProvider extends LabelProvider {
+
+
+		@Override
+		public String getText(Object element) {
+			return ((Property) element).getName();
+		}
+
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AttachPropertyToLayer.java b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AttachPropertyToLayer.java
new file mode 100755
index 0000000..38b6e36
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/AttachPropertyToLayer.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.commands;
+
+import java.util.List;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.jface.dialogs.InputDialog;
+import org.eclipse.jface.window.Window;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.papyrus.layers.stackmodel.layers.Property;
+import org.eclipse.swt.widgets.Display;
+
+
+/**
+ * Attach a property to the selected Layer
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class AttachPropertyToLayer extends AbstractLayersCommand {
+
+	/**
+	 * Constructor.
+	 *
+	 */
+	public AttachPropertyToLayer() {
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers3.ui.commands.AbstractLayersCommand#getCommandName()
+	 *
+	 * @return
+	 */
+	@Override
+	public String getCommandName() {
+		return "Attach a property";
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers3.ui.commands.AbstractLayersCommand#doExecute(org.eclipse.core.commands.ExecutionEvent, org.eclipse.core.expressions.IEvaluationContext, java.util.List)
+	 *
+	 * @param event
+	 * @param context
+	 * @param selections
+	 */
+	@Override
+	protected void doExecute(ExecutionEvent event, IEvaluationContext context, List<Object> selections) {
+		// check enable
+		if (!isEnabled(context, selections)) {
+			return;
+		}
+
+		// Open the dialog to ask the new name
+		// TODO dialog should not be in the transaction !! put it outside !
+		String currentName = "";
+		String newName = null;
+		InputDialog dialog = new InputDialog(Display.getCurrent().getActiveShell(), "Attach a Property to Layer", "Enter the name of an existing property", currentName, null);
+		if (dialog.open() == Window.OK) {
+			newName = dialog.getValue();
+			if (newName == null || newName.length() <= 0) {
+				return;
+			}
+		} else {
+			// cancelled
+			return;
+		}
+
+		try {
+			LayersStackApplication application = lookupLayersStackApplicationChecked(context);
+			Property property = application.getPropertyRegistry().getProperty(newName);
+			// Get the layer
+			AbstractLayer layer = (AbstractLayer) getSelections(context).get(0);
+			layer.addPropertyInstance(property);
+		} catch (LayersException e) {
+			// silently fails
+			e.printStackTrace();
+		} catch (org.eclipse.papyrus.infra.core.resource.NotFoundException e) {
+			// silently fails
+			e.printStackTrace();
+		} catch (ServiceException e) {
+			// silently fails
+			e.printStackTrace();
+		}
+
+
+	}
+
+	/**
+	 * Return true if it is possible to attach a property.
+	 */
+	@Override
+	public boolean isEnabled(IEvaluationContext context, List<Object> selections) {
+
+		return selectionFirstElementInstanceOf(selections, AbstractLayer.class);
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateLayerHandler.java b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateLayerHandler.java
new file mode 100755
index 0000000..5af2f6b
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateLayerHandler.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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.commands;
+
+import org.eclipse.core.commands.IHandler;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+
+
+/**
+ * Create a layer stack to a diagram.
+ * This is performed on the current LayerStack Viewer.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class CreateLayerHandler extends AbstractCreateLayerExpressionHandler implements IHandler {
+
+
+	/**
+	 * @see org.eclipse.papyrus.layers2.ui.view.commands.AbstractLayerCommand#getCommandName()
+	 *
+	 * @return
+	 */
+	@Override
+	public String getCommandName() {
+		return "Create Layer";
+	}
+
+
+	/**
+	 * @return
+	 */
+	@Override
+	protected LayerExpression createLayer() {
+		Layer layer = LayersFactory.eINSTANCE.createLayer();
+		return layer;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateLayerOperatorsFromParameter.java b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateLayerOperatorsFromParameter.java
new file mode 100755
index 0000000..e441bec
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateLayerOperatorsFromParameter.java
@@ -0,0 +1,165 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.commands;
+
+import static org.eclipse.papyrus.layers.ui.Activator.log;
+
+import java.util.List;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.layers.stackmodel.LayersException;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.AbstractLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+
+
+/**
+ * @author cedric dumoulin
+ *
+ */
+public class CreateLayerOperatorsFromParameter extends AbstractLayersCommand {
+
+	/**
+	 * Value used to compute new names.
+	 */
+	private static int creationCount = 0;
+
+	/**
+	 * ID of the layer to create
+	 */
+	private String newLayerID;
+
+	/**
+	 * the application object, if found
+	 */
+	private LayersStackApplication application;
+
+	/**
+	 *
+	 * Constructor.
+	 *
+	 */
+	public CreateLayerOperatorsFromParameter() {
+		super();
+	}
+
+	/**
+	 * Prepare the execution of the command
+	 *
+	 * @see org.eclipse.papyrus.layers3.ui.commands.AbstractLayersCommand#preExecute(org.eclipse.core.commands.ExecutionEvent, org.eclipse.core.expressions.IEvaluationContext, java.util.List)
+	 *
+	 * @param event
+	 * @param context
+	 * @param selections
+	 * @return
+	 * @throws ExecutionException
+	 */
+	@Override
+	protected boolean preExecute(ExecutionEvent event, IEvaluationContext context, List<Object> selections) throws ExecutionException {
+
+		if (!isEnabled(context, selections)) {
+			return false;
+		}
+
+		// Get command parameters
+		newLayerID = event.getParameter("org.eclipse.papyrus.layers.ui.createLayerOperator.parameters");
+		if (log.isDebugEnabled()) {
+			log.debug("Create Layer Operators '" + newLayerID + "'.");
+		}
+
+		// Get application
+		try {
+			application = lookupLayersStackApplicationChecked(context);
+		} catch (NotFoundException e) {
+			// Silently fails
+			return false;
+		} catch (org.eclipse.papyrus.infra.core.resource.NotFoundException e) {
+			// Silently fails
+			return false;
+		} catch (ServiceException e) {
+			// Silently fails
+			return false;
+		}
+
+
+		return true;
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers3.ui.commands.AbstractLayersCommand#doExecute(org.eclipse.core.commands.ExecutionEvent, org.eclipse.core.expressions.IEvaluationContext, java.util.List)
+	 *
+	 * @param event
+	 * @param context
+	 * @param selections
+	 */
+	@Override
+	protected void doExecute(ExecutionEvent event, IEvaluationContext context, List<Object> selections) {
+		if (log.isDebugEnabled()) {
+			log.debug(this.getClass().getSimpleName() + ".doExecute()");
+		}
+
+		// Create a layer !
+		AbstractLayerOperator layerOperator;
+		try {
+			layerOperator = application.getLayerOperatorDescriptorRegistry().createLayerOperator(newLayerID);
+			layerOperator.setName("layer" + creationCount++);
+			layerOperator.setApplication(application);
+		} catch (LayersException e) {
+			// e.printStackTrace();
+			log.error("Log - " + this.getClass().getName()
+					+ " - " + e.getMessage(), e);
+			return;
+		}
+
+		// insert layer in selected object
+		Object selection = selections.get(0);
+		if (selection instanceof LayersStack) {
+			LayersStack stack = (LayersStack) selection;
+			stack.setLayers(layerOperator);
+		}
+		else {
+			LayerOperator operator = (LayerOperator) selection;
+			operator.getLayers().add(layerOperator);
+		}
+
+	}
+
+	/**
+	 * Return true if it is possible to attach aLyerStack.
+	 */
+	@Override
+	public boolean isEnabled(IEvaluationContext context, List<Object> selections) {
+		if (selections.size() != 1) {
+			return false;
+		}
+		Object first = selections.get(0);
+		boolean res = (first instanceof LayerOperator) || (first instanceof LayersStack);
+		return res;
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers3.ui.commands.AbstractLayersCommand#getCommandName()
+	 *
+	 * @return
+	 */
+	@Override
+	public String getCommandName() {
+		return "Create Layer Operator";
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateRegExpLayerHandler.java b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateRegExpLayerHandler.java
new file mode 100755
index 0000000..bbb0f5c
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateRegExpLayerHandler.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.commands;
+
+import org.eclipse.core.commands.IHandler;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer;
+
+
+/**
+ * Create a layer stack to a diagram.
+ * This is performed on the current LayerStack Viewer.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class CreateRegExpLayerHandler extends
+		AbstractCreateLayerExpressionHandler implements IHandler {
+
+
+	/**
+	 * @see org.eclipse.papyrus.layers2.ui.view.commands.AbstractLayerCommand#getCommandName()
+	 *
+	 * @return
+	 */
+	@Override
+	public String getCommandName() {
+		return "Create RegExp Layer";
+	}
+
+
+	/**
+	 * @return
+	 */
+	@Override
+	protected LayerExpression createLayer() {
+		RegExpLayer layer = LayersFactory.eINSTANCE.createRegExpLayer();
+		return layer;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateStackedLayerOperatorHandler.java b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateStackedLayerOperatorHandler.java
new file mode 100755
index 0000000..2433bc5
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateStackedLayerOperatorHandler.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.commands;
+
+import org.eclipse.core.commands.IHandler;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.StackedLayerOperator;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+
+
+/**
+ * Create a {@link TopLayerOperator}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class CreateStackedLayerOperatorHandler extends AbstractCreateLayerExpressionHandler implements IHandler {
+
+	@Override
+	protected LayerExpression createLayer() {
+		StackedLayerOperator operator = LayersFactory.eINSTANCE.createStackedLayerOperator();
+		return operator;
+	}
+
+	@Override
+	public String getCommandName() {
+		return "Create Stacked Layer Operator";
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateTopLayerOperatorHandler.java b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateTopLayerOperatorHandler.java
new file mode 100755
index 0000000..a820208
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/CreateTopLayerOperatorHandler.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.commands;
+
+import org.eclipse.core.commands.IHandler;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator;
+
+
+/**
+ * Create a {@link TopLayerOperator}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class CreateTopLayerOperatorHandler extends AbstractCreateLayerExpressionHandler implements IHandler {
+
+	@Override
+	protected LayerExpression createLayer() {
+		TopLayerOperator operator = LayersFactory.eINSTANCE.createTopLayerOperator();
+		return operator;
+	}
+
+	@Override
+	public String getCommandName() {
+		return "Create Top Layer Operator";
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/DeleteItemHandler.java b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/DeleteItemHandler.java
new file mode 100755
index 0000000..3396c81
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/DeleteItemHandler.java
@@ -0,0 +1,123 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.commands;
+
+import static org.eclipse.papyrus.layers.ui.Activator.log;
+
+import java.util.List;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.edit.command.RemoveCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+
+
+/**
+ * Handle a "Delete Item" command.
+ * Use the EMF {@link RemoveCommand}
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class DeleteItemHandler extends AbstractLayersCommand {
+
+	/**
+	 *
+	 * Constructor.
+	 *
+	 */
+	public DeleteItemHandler() {
+		super();
+	}
+
+	/**
+	 * Prepare the execution of the command
+	 *
+	 * @see org.eclipse.papyrus.layers3.ui.commands.AbstractLayersCommand#preExecute(org.eclipse.core.commands.ExecutionEvent, org.eclipse.core.expressions.IEvaluationContext, java.util.List)
+	 *
+	 * @param event
+	 * @param context
+	 * @param selections
+	 * @return
+	 * @throws ExecutionException
+	 */
+	@Override
+	protected boolean preExecute(ExecutionEvent event, IEvaluationContext context, List<Object> selections) throws ExecutionException {
+
+		if (!isEnabled(context, selections)) {
+			return false;
+		}
+
+
+		return true;
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers3.ui.commands.AbstractLayersCommand#doExecute(org.eclipse.core.commands.ExecutionEvent, org.eclipse.core.expressions.IEvaluationContext, java.util.List)
+	 *
+	 * @param event
+	 * @param context
+	 * @param selections
+	 */
+	@Override
+	protected void doExecute(ExecutionEvent event, IEvaluationContext context, List<Object> selections) {
+		if (log.isDebugEnabled()) {
+			log.debug(this.getClass().getSimpleName() + ".doExecute()");
+		}
+
+		// insert layer in selected object
+		Object selection = selections.get(0);
+
+		TransactionalEditingDomain domain;
+		try {
+			domain = lookupTransactionalEditingDomain(context);
+		} catch (ServiceException e) {
+			// sylently fails
+			return;
+		}
+		Command removeCmd = RemoveCommand.create(domain, selection);
+		// We are already in a transaction
+		removeCmd.execute();
+
+	}
+
+	/**
+	 * Delete is enable on all items except the root layer.
+	 */
+	@Override
+	public boolean isEnabled(IEvaluationContext context, List<Object> selections) {
+		if (selections.size() != 1) {
+			return false;
+		}
+		Object first = selections.get(0);
+		boolean res = (first instanceof LayerExpression && !(((EObject) first).eContainer() instanceof LayersStack));
+		return res;
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.papyrus.layers3.ui.commands.AbstractLayersCommand#getCommandName()
+	 *
+	 * @return
+	 */
+	@Override
+	public String getCommandName() {
+		return "Create Layer Operator";
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/DetachLayerStackCommand.java b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/DetachLayerStackCommand.java
new file mode 100755
index 0000000..5f58f4d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/DetachLayerStackCommand.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ *
+ */
+package org.eclipse.papyrus.layers3.ui.commands;
+
+import static org.eclipse.papyrus.layers.ui.Activator.log;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.IHandler;
+import org.eclipse.papyrus.layers.runtime.NotationDiagramHelper;
+
+
+/**
+ * Add a layer stack to a diagram.
+ * This is performed on the current LayerStack Viewer.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class DetachLayerStackCommand extends AbstractLayerStackCommand implements IHandler {
+
+	/**
+	 * @see org.eclipse.papyrus.layers2.ui.view.commands.AbstractLayerCommand#getCommandName()
+	 *
+	 * @return
+	 */
+	@Override
+	public String getCommandName() {
+		return "Detach Layer Stack";
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.layers2.ui.view.commands.AbstractLayerCommand#doExecute(org.eclipse.papyrus.layers.application.NotationDiagramMngr)
+	 *
+	 * @param notationDiagramMngr
+	 */
+	@Override
+	protected void doExecute(ExecutionEvent event, NotationDiagramHelper notationDiagramHelper) {
+		if (log.isDebugEnabled()) {
+			log.debug(this.getClass().getSimpleName() + ".doExecute()");
+		}
+		notationDiagramHelper.removeLayersStack();
+	}
+
+
+	/**
+	 * Return true if it is possible to detach aLyerStack.
+	 */
+	@Override
+	public boolean isEnabled(NotationDiagramHelper notationDiagramHelper) {
+		return notationDiagramHelper.isLayersStackAttached();
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/LayerOperatorsParameterValues.java b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/LayerOperatorsParameterValues.java
new file mode 100755
index 0000000..2b36dd4
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/LayerOperatorsParameterValues.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.commands;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.commands.IParameterValues;
+
+
+/**
+ * Class used to return a list of LayersOperator names. This names are then used
+ * to create the corresponding LayerOperator.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayerOperatorsParameterValues implements IParameterValues {
+
+	/**
+	 * Constructor.
+	 *
+	 */
+	public LayerOperatorsParameterValues() {
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * @see org.eclipse.core.commands.IParameterValues#getParameterValues()
+	 *
+	 * @return
+	 */
+	@Override
+	public Map<String, String> getParameterValues() {
+		Map<String, String> res = new HashMap<String, String>();
+
+		res.put("Top Layer Operator", "TopLayerOperator");
+		res.put("Stacked Layer Operator", "StackedLayeroperator");
+		return res;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/package-info.java b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/package-info.java
new file mode 100755
index 0000000..85de9aa
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/commands/package-info.java
@@ -0,0 +1,16 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ * @author dumoulin
+ *
+ */
+package org.eclipse.papyrus.layers3.ui.commands;
+
diff --git a/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/explorer/LayerExplorerPageBookView.java b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/explorer/LayerExplorerPageBookView.java
new file mode 100755
index 0000000..b626834
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/explorer/LayerExplorerPageBookView.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.explorer;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EValidator;
+import org.eclipse.papyrus.views.modelexplorer.ModelExplorerView;
+import org.eclipse.papyrus.views.modelexplorer.core.ui.pagebookview.MultiViewPageBookView;
+import org.eclipse.papyrus.views.modelexplorer.core.ui.pagebookview.ViewPartPage;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.part.PageBookView;
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+
+
+/**
+ * A {@link PageBookView} allowing to render multiple LayerExplorerPage in one Eclipse View.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayerExplorerPageBookView extends MultiViewPageBookView {
+
+	/** ID of the view, as given in the plugin.xml file */
+	public static final String VIEW_ID = "org.eclipse.papyrus.views.layers.layersexplorer"; //$NON-NLS-1$
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	protected PageRec doCreatePage(IWorkbenchPart part) {
+
+		// part is of type IMultiDiagramEditor (because of isImportant() )
+
+		ViewPartPage page = new LayersExplorerPage();
+
+		// Init the page, and so the View
+		initPage(page, part);
+		page.createControl(getPageBook());
+		return new PageRec(part, page);
+	}
+
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	public Object getAdapter(Class adapter) {
+
+		if (IPropertySheetPage.class == adapter) {
+			// Do not test if tabbedPropertySheetPage is null before calling new
+			// this is managed by Eclipse which only call current method when necessary
+			// return new TabbedPropertySheetPage(this);
+		}
+
+		return super.getAdapter(adapter);
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	public String getContributorId() {
+		// return Activator.PLUGIN_ID;
+		return "TreeOutlinePage"; //$NON-NLS-1$
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	public void gotoMarker(IMarker marker) {
+		String uriAttribute = marker.getAttribute(EValidator.URI_ATTRIBUTE, null);
+		if (uriAttribute != null) {
+			URI uri = URI.createURI(uriAttribute);
+			IViewPart viewPart = getActiveView();
+			if (viewPart instanceof ModelExplorerView) {
+				LayersExplorerView modelExplorerView = (LayersExplorerView) viewPart;
+				// EditingDomain domain = modelExplorerView.getEditingDomain();
+				// EObject eObject = domain.getResourceSet().getEObject(uri, false);
+				// if(eObject != null) {
+				// CommonViewer treeViewer = ((ModelExplorerView)viewPart).getCommonViewer();
+				// // The common viewer is in fact a tree viewer
+				// // bug enhancement: use function in ModelExplorerView instead of findElementForEObject
+				// ModelExplorerView.reveal(Lists.newArrayList(eObject), treeViewer);
+			}
+		}
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/explorer/LayersExplorerPage.java b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/explorer/LayersExplorerPage.java
new file mode 100755
index 0000000..884798c
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/explorer/LayersExplorerPage.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.explorer;
+
+import org.eclipse.papyrus.views.modelexplorer.ModelExplorerView;
+import org.eclipse.papyrus.views.modelexplorer.core.ui.pagebookview.ViewPartPage;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbenchPart;
+
+
+/**
+ * A page of the {@link LayerExplorerPageBookView}.
+ * This page contains a {@link LayersExplorerView} rendering an Explorer.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersExplorerPage extends ViewPartPage {
+
+	/**
+	 * Constructor.
+	 *
+	 */
+	public LayersExplorerPage() {
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * Create the Viewer for the requested part.
+	 * Here, create a {@link LayersExplorerView} for a Papyrus main editor.
+	 *
+	 * @param part
+	 *            The part to associate to the Viewer.
+	 * @return
+	 */
+	@Override
+	protected IViewPart createViewer(IWorkbenchPart part) {
+		// Part is of the right type because of call to isImportant()
+		return null;
+		// return new LayersExplorerView((IMultiDiagramEditor)part);
+	}
+
+	/**
+	 * Create control of the inner view
+	 *
+	 * @see org.eclipse.ui.part.Page#createControl(org.eclipse.swt.widgets.Composite)
+	 *
+	 * @param parent
+	 */
+	@Override
+	public void createControl(Composite parent) {
+		getViewer().createPartControl(parent);
+	}
+
+	/**
+	 * Return the control
+	 *
+	 * @see org.eclipse.papyrus.views.modelexplorer.core.ui.pagebookview.ViewPartPage#getControl()
+	 *
+	 * @return
+	 */
+	@Override
+	public Control getControl() {
+		return ((ModelExplorerView) getViewer()).getControl();
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/explorer/LayersExplorerView.java b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/explorer/LayersExplorerView.java
new file mode 100755
index 0000000..d56defd
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/explorer/LayersExplorerView.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.explorer;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.part.ViewPart;
+
+
+
+/**
+ * @author dumoulin
+ *
+ */
+public class LayersExplorerView extends ViewPart {
+
+	@Override
+	public void createPartControl(Composite parent) {
+		// TODO Auto-generated method stub
+
+	}
+
+	@Override
+	public void setFocus() {
+		// TODO Auto-generated method stub
+
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/handlers/AttachDiagramSelectedItemsToCurrentLayer.java b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/handlers/AttachDiagramSelectedItemsToCurrentLayer.java
new file mode 100755
index 0000000..b33ede8
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/handlers/AttachDiagramSelectedItemsToCurrentLayer.java
@@ -0,0 +1,182 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ *     Christian W. Damus - bug 485220
+ *     
+ ******************************************************************************/
+/**
+ *
+ */
+package org.eclipse.papyrus.layers3.ui.handlers;
+
+import static org.eclipse.papyrus.layers.ui.Activator.log;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITreeSelection;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.ISashWindowsContainer;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.ui.util.ServiceUtilsForIEvaluationContext;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers3.ui.commands.AbstractLayersCommand;
+import org.eclipse.papyrus.layers3.ui.view.LayersExplorerView;
+import org.eclipse.papyrus.layers3.ui.view.LayersExplorerViewUtils;
+import org.eclipse.ui.IEditorPart;
+
+/**
+ * Attach the items selected in the diagram to the current Layer.
+ * The current layer is the layer currently selected in the {@link LayersExplorerView}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class AttachDiagramSelectedItemsToCurrentLayer extends AbstractLayersCommand {
+
+	/**
+	 *
+	 */
+	@Override
+	public String getCommandName() {
+		return "Attach Selected Items";
+	}
+
+	/**
+	 *
+	 */
+	@Override
+	protected void doExecute(ExecutionEvent event, IEvaluationContext context, List<Object> selections) {
+		// TODO Auto-generated method stub
+
+
+		List<View> diagramSelectedViews;
+		Layer currentLayer;
+		try {
+			diagramSelectedViews = getSelectedViewsFromCurrentDiagramEditor(context);
+			currentLayer = getSelectedLayerFromLayerExplorer(context);
+		} catch (NotFoundException e) {
+			// fail
+			log.error("ERROR - " + this.getClass().getName() + " - " + e.getMessage(), e);
+			return;
+		}
+
+		// System.out.println("selected views=" + diagramSelectedViews);
+		// System.out.println("selected layer=" + currentLayer.getName());
+
+		currentLayer.getViews().addAll(diagramSelectedViews);
+	}
+
+	/**
+	 * Get the currently selected layer from the LayerExplorer.
+	 * Throws an exception if not found.
+	 *
+	 * @param context
+	 * @return
+	 */
+	private Layer getSelectedLayerFromLayerExplorer(IEvaluationContext context) throws NotFoundException {
+
+
+		LayersExplorerView layersExplorerView = LayersExplorerViewUtils.findView(context);
+		ISelection selection;
+		try {
+			selection = layersExplorerView.getSite().getSelectionProvider().getSelection();
+		} catch (NullPointerException e) {
+			// Can't get a selection
+			throw new NotFoundException("Can't get selection object from LayersExplorerView" + e); //$NON-NLS-1$
+		}
+
+		if (!(selection instanceof ITreeSelection)) {
+			throw new NotFoundException("No selection in LayersExplorerView"); //$NON-NLS-1$
+		}
+
+		ITreeSelection treeSelection = (ITreeSelection) selection;
+
+		Object firstSelection = treeSelection.getFirstElement();
+		if (!(firstSelection instanceof Layer)) {
+			throw new NotFoundException("LayersExplorerView first selection should be of type 'Layer'"); //$NON-NLS-1$
+		}
+		return (Layer) firstSelection;
+	}
+
+	/**
+	 * Get all selected Views in the currently active diagram.
+	 * If no diagram is active, throw an exception.
+	 *
+	 * @param context
+	 * @return
+	 */
+	private List<View> getSelectedViewsFromCurrentDiagramEditor(IEvaluationContext context) throws NotFoundException {
+		// TODO Auto-generated method stub
+
+		DiagramDocumentEditor diagramEditor = getNestedActiveDiagramDocumentEditor(context);
+
+		ISelection selection = diagramEditor.getSite().getSelectionProvider().getSelection();
+
+		if (!(selection instanceof IStructuredSelection || selection.isEmpty())) {
+			return Collections.emptyList();
+		}
+
+		IStructuredSelection structuredSelection = (IStructuredSelection) selection;
+
+		// Get the views from the selected part
+		List<View> result = new ArrayList<View>(structuredSelection.size());
+		// for( Object obj : structuredSelection.toList() ) {
+		// if( obj instanceof GraphicalEditPart ) {
+		// GraphicalEditPart part = (GraphicalEditPart)obj;
+		// View view = part.getNotationView();
+		// result.add(view);
+		// }
+		// }
+		for (Object obj : structuredSelection.toList()) {
+			// Adapt the selected object to a View.
+			View view = Platform.getAdapterManager().getAdapter(obj, View.class);
+			if (view != null) {
+				result.add(view);
+			}
+		}
+
+		return result;
+	}
+
+	/**
+	 * Get the active DiagramDocumentEditor.
+	 * Throw an exception if not found.
+	 *
+	 * @param context
+	 * @return
+	 * @throws NotFoundException
+	 */
+	private DiagramDocumentEditor getNestedActiveDiagramDocumentEditor(IEvaluationContext context) throws NotFoundException {
+
+		IEditorPart editor;
+		try {
+			editor = ServiceUtilsForIEvaluationContext.getInstance().getService(ISashWindowsContainer.class, context).getActiveEditor();
+		} catch (ServiceException e) {
+			throw new NotFoundException("Selected editor do not provides ServiceRegistry", e); //$NON-NLS-1$
+		}
+
+		if (!(editor instanceof DiagramDocumentEditor)) {
+			throw new NotFoundException("Selected editor do not contains Diagram"); //$NON-NLS-1$
+		}
+
+		return (DiagramDocumentEditor) editor;
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/handlers/CreateAllViewsDerivedLayerHandler.java b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/handlers/CreateAllViewsDerivedLayerHandler.java
new file mode 100755
index 0000000..61dde6e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/handlers/CreateAllViewsDerivedLayerHandler.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.handlers;
+
+import org.eclipse.core.commands.IHandler;
+import org.eclipse.papyrus.layers.stackmodel.layers.AllViewsDerivedLayer;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayerExpression;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersFactory;
+import org.eclipse.papyrus.layers3.ui.commands.AbstractCreateLayerExpressionHandler;
+
+
+/**
+ * Create a layer stack to a diagram.
+ * This is performed on the current LayerStack Viewer.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class CreateAllViewsDerivedLayerHandler extends AbstractCreateLayerExpressionHandler implements IHandler {
+
+
+	/**
+	 * @see org.eclipse.papyrus.layers2.ui.view.commands.AbstractLayerCommand#getCommandName()
+	 *
+	 * @return
+	 */
+	@Override
+	public String getCommandName() {
+		return "Create RegExp Layer";
+	}
+
+
+	/**
+	 * @return
+	 */
+	@Override
+	protected LayerExpression createLayer() {
+		AllViewsDerivedLayer layer = LayersFactory.eINSTANCE.createAllViewsDerivedLayer();
+		return layer;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/handlers/OpenLayerExplorerHandler.java b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/handlers/OpenLayerExplorerHandler.java
new file mode 100755
index 0000000..4c45c8d
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/handlers/OpenLayerExplorerHandler.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ *
+ */
+package org.eclipse.papyrus.layers3.ui.handlers;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers3.ui.view.LayersExplorerViewUtils;
+
+/**
+ * Open Layer Explorer ui handler.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class OpenLayerExplorerHandler extends AbstractHandler {
+
+	/**
+	 *
+	 */
+	@Override
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+
+		LayersExplorerViewUtils.openView(event);
+
+		return null;
+	}
+
+
+	@Override
+	public void setEnabled(Object evaluationContext) {
+
+		//
+		if (evaluationContext == null) {
+			setBaseEnabled(false);
+			return;
+
+		}
+
+		LayersExplorerViewUtils.isViewOpened((IEvaluationContext) evaluationContext);
+		setBaseEnabled(true);
+		super.setEnabled(evaluationContext);
+	}
+
+	/**
+	 *
+	 * @param event
+	 * @return
+	 * @throws NotFoundException
+	 */
+	protected IEvaluationContext getIEvaluationContext(ExecutionEvent event) throws NotFoundException {
+		try {
+			return (IEvaluationContext) event.getApplicationContext();
+		} catch (ClassCastException e) {
+			throw new NotFoundException("IEvaluationContext can't be found.");
+		}
+
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/handlers/RemoveDiagramSelectedItemsFromCurrentLayer.java b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/handlers/RemoveDiagramSelectedItemsFromCurrentLayer.java
new file mode 100755
index 0000000..65fec47
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/handlers/RemoveDiagramSelectedItemsFromCurrentLayer.java
@@ -0,0 +1,185 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ *     Christian W. Damus - bug 485220
+ *     
+ ******************************************************************************/
+/**
+ *
+ */
+package org.eclipse.papyrus.layers3.ui.handlers;
+
+import static org.eclipse.papyrus.layers.ui.Activator.log;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITreeSelection;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.ISashWindowsContainer;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.ui.util.ServiceUtilsForIEvaluationContext;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.papyrus.layers.stackmodel.layers.Layer;
+import org.eclipse.papyrus.layers3.ui.commands.AbstractLayersCommand;
+import org.eclipse.papyrus.layers3.ui.view.LayersExplorerView;
+import org.eclipse.papyrus.layers3.ui.view.LayersExplorerViewUtils;
+import org.eclipse.ui.IEditorPart;
+
+/**
+ * Remove the items selected in the diagram from the current Layer.
+ * The current layer is the layer currently selected in the {@link LayersExplorerView}.
+ * TODO Factorize methods common with {@link AttachDiagramSelectedItemsToCurrentLayer} in a parent class.
+ * TODO use the {@link #preExecute(ExecutionEvent, IEvaluationContext, List)} method to get the requested selections.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class RemoveDiagramSelectedItemsFromCurrentLayer extends AbstractLayersCommand {
+
+	/**
+	 *
+	 */
+	@Override
+	public String getCommandName() {
+		return "Attach Selected Items";
+	}
+
+	/**
+	 *
+	 */
+	@Override
+	protected void doExecute(ExecutionEvent event, IEvaluationContext context, List<Object> selections) {
+		// TODO Auto-generated method stub
+
+
+		List<View> diagramSelectedViews;
+		Layer currentLayer;
+		try {
+			diagramSelectedViews = getSelectedViewsFromCurrentDiagramEditor(context);
+			currentLayer = getSelectedLayerFromLayerExplorer(context);
+		} catch (NotFoundException e) {
+			// fail
+			log.error("ERROR - " + this.getClass().getName() + " - " + e.getMessage(), e);
+			return;
+		}
+
+		// System.out.println("selected views=" + diagramSelectedViews);
+		// System.out.println("selected layer=" + currentLayer.getName());
+
+		currentLayer.getViews().removeAll(diagramSelectedViews);
+	}
+
+	/**
+	 * Get the currently selected layer from the LayerExplorer.
+	 * Throws an exception if not found.
+	 *
+	 * @param context
+	 * @return
+	 */
+	private Layer getSelectedLayerFromLayerExplorer(IEvaluationContext context) throws NotFoundException {
+
+
+		LayersExplorerView layersExplorerView = LayersExplorerViewUtils.findView(context);
+		ISelection selection;
+		try {
+			selection = layersExplorerView.getSite().getSelectionProvider().getSelection();
+		} catch (NullPointerException e) {
+			// Can't get a selection
+			throw new NotFoundException("Can't get selection object from LayersExplorerView" + e); //$NON-NLS-1$
+		}
+
+		if (!(selection instanceof ITreeSelection)) {
+			throw new NotFoundException("No selection in LayersExplorerView"); //$NON-NLS-1$
+		}
+
+		ITreeSelection treeSelection = (ITreeSelection) selection;
+
+		Object firstSelection = treeSelection.getFirstElement();
+		if (!(firstSelection instanceof Layer)) {
+			throw new NotFoundException("LayersExplorerView first selection should be of type 'Layer'"); //$NON-NLS-1$
+		}
+		return (Layer) firstSelection;
+	}
+
+	/**
+	 * Get all selected Views in the currently active diagram.
+	 * If no diagram is active, throw an exception.
+	 *
+	 * @param context
+	 * @return
+	 */
+	@SuppressWarnings("unchecked")
+	private List<View> getSelectedViewsFromCurrentDiagramEditor(IEvaluationContext context) throws NotFoundException {
+		// TODO Auto-generated method stub
+
+		DiagramDocumentEditor diagramEditor = getNestedActiveDiagramDocumentEditor(context);
+
+		ISelection selection = diagramEditor.getSite().getSelectionProvider().getSelection();
+
+		if (!(selection instanceof IStructuredSelection || selection.isEmpty())) {
+			return Collections.emptyList();
+		}
+
+		IStructuredSelection structuredSelection = (IStructuredSelection) selection;
+
+		// Get the views from the selected part
+		List<View> result = new ArrayList<View>(structuredSelection.size());
+		// for( Object obj : structuredSelection.toList() ) {
+		// if( obj instanceof GraphicalEditPart ) {
+		// GraphicalEditPart part = (GraphicalEditPart)obj;
+		// View view = part.getNotationView();
+		// result.add(view);
+		// }
+		// }
+		for (Object obj : structuredSelection.toList()) {
+			// Adapt the selected object to a View.
+			View view = Platform.getAdapterManager().getAdapter(obj, View.class);
+			if (view != null) {
+				result.add(view);
+			}
+		}
+
+		return result;
+	}
+
+	/**
+	 * Get the active DiagramDocumentEditor.
+	 * Throw an exception if not found.
+	 *
+	 * @param context
+	 * @return
+	 * @throws NotFoundException
+	 */
+	private DiagramDocumentEditor getNestedActiveDiagramDocumentEditor(IEvaluationContext context) throws NotFoundException {
+
+		IEditorPart editor;
+		try {
+			editor = ServiceUtilsForIEvaluationContext.getInstance().getService(ISashWindowsContainer.class, context).getActiveEditor();
+		} catch (ServiceException e) {
+			throw new NotFoundException("Selected editor do not provides ServiceRegistry", e); //$NON-NLS-1$
+		}
+
+		if (!(editor instanceof DiagramDocumentEditor)) {
+			throw new NotFoundException("Selected editor do not contains Diagram"); //$NON-NLS-1$
+		}
+
+		return (DiagramDocumentEditor) editor;
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/utils/HandlersUtils.java b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/utils/HandlersUtils.java
new file mode 100755
index 0000000..12d9f01
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/utils/HandlersUtils.java
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ *     Christian W. Damus - bug 485220
+ *     
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.utils;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.ISashWindowsContainer;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.ui.util.ServiceUtilsForWorkbenchPage;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PlatformUI;
+
+
+/**
+ * Set of utilities methods for handlers {@link AbstractHandler}.
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class HandlersUtils {
+
+	/**
+	 * Constructor.
+	 *
+	 */
+	public HandlersUtils() {
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * Get the diagram associated to the currently selected editor.
+	 * Throw events if no diagram is associated. <br>
+	 * Warnings: This method is for handlers only. It can return unpredictable
+	 * results if used during the application initialization phase.
+	 *
+	 * @return
+	 * @throws NotFoundException
+	 * @throws ServiceException
+	 */
+	public Diagram getDiagramFromCurrentEditor() throws ServiceException, NotFoundException {
+		IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+		if (page == null) {
+			throw new NotFoundException("No active IWorkbenchPage");
+		}
+
+		IEditorPart editor = ServiceUtilsForWorkbenchPage.getInstance().getService(ISashWindowsContainer.class, page).getActiveEditor();
+
+		if (!(editor instanceof DiagramDocumentEditor)) {
+			throw new NotFoundException("Selected editor do not contains Diagram");
+		}
+		DiagramDocumentEditor diagramEditor = (DiagramDocumentEditor) editor;
+
+		Diagram diagram = diagramEditor.getDiagram();
+		if (diagram == null) {
+			throw new NotFoundException("Selected editor do not contains Diagram");
+		}
+
+		return diagram;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/view/LayersExplorerView.java b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/view/LayersExplorerView.java
new file mode 100755
index 0000000..584026e
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/view/LayersExplorerView.java
@@ -0,0 +1,710 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.view;
+
+import static org.eclipse.papyrus.layers.ui.Activator.log;
+
+import javax.imageio.spi.ServiceRegistry;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.provider.EcoreItemProviderAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.provider.NotationItemProviderAdapterFactory;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.core.resource.NotFoundException;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.IEditorPage;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.IPage;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.IPageChangedListener;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.ISashWindowsContainer;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.ISashWindowsContainerChangedListener;
+import org.eclipse.papyrus.infra.core.sasheditor.editor.SashWindowsEventsProvider;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.core.services.ServicesRegistry;
+import org.eclipse.papyrus.infra.core.utils.ServiceUtils;
+import org.eclipse.papyrus.layers.runtime.ILayersStackApplicationEventListener;
+import org.eclipse.papyrus.layers.runtime.LayersStackAndApplicationLifeCycleEventNotifier;
+import org.eclipse.papyrus.layers.runtime.model.LayersModel;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack;
+import org.eclipse.papyrus.layers.stackmodel.layers.LayersStackApplication;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IViewSite;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.part.ViewPart;
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.ITabbedPropertySheetPageContributor;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.wb.swt.SWTResourceManager;
+
+
+/**
+ * A view showing a Layers Explorer for the currently selected Papyrus Page.
+ *
+ * TODO
+ * Refresh the explorer when a LayersStack is added to a diagram.
+ * To do that, we need to listen to LayersStack added event. The
+ * notifier is linked to the current LayerModel, thus, we need to track it when the
+ * container change.
+ * Each time the container change, we get the attached {@link LayersStackAndApplicationLifeCycleEventNotifier} and
+ * we listen to it. Before, we deregister from the old notifier.
+ *
+ * <br>
+ * Events
+ * <ul>
+ * <li>Editor page changed</li>
+ * <li>Container changed - container can be null</li>
+ * <li>LayersStack added</li>
+ * <li>LayersStack removed</li>
+ * <li></li>
+ * </ul>
+ * <br>
+ * State Machine
+ * <ul>
+ * <li>NoContainer</li>
+ * <li>ContainerAndLayersStack</li>
+ * <li>ContainerNoLayerStack</li>
+ * <li></li>
+ * <li></li>
+ * </ul>
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersExplorerView extends ViewPart implements ITabbedPropertySheetPageContributor {
+
+	private Label nameLabel;
+	private Label containerLabel;
+
+	/**
+	 * The {@link LayersModel} associated to the current editor.
+	 * Can be null if no Papyrus editor is associated.
+	 * Set when the container is changed.
+	 */
+	private LayersModel currentLayersModel = null;
+
+	/**
+	 * The {@link ServicesRegistry} associated to the current editor.
+	 * Can be null if no Papyrus editor is associated.
+	 * Set when the container is changed.
+	 */
+	private ServicesRegistry currentServicesRegistry = null;
+
+	protected SashWindowsEventsProvider sashEventsProvider;
+
+	protected IPageChangedListener pageChangedListener = new IPageChangedListener() {
+
+		@Override
+		public void pageChanged(IPage newPage) {
+
+			setActivePage(newPage);
+
+		}
+	};
+
+	protected ISashWindowsContainerChangedListener containerChangedListener = new ISashWindowsContainerChangedListener() {
+
+		@Override
+		public void sashWindowsContainerChanged(ISashWindowsContainer newContainer) {
+
+			activeSashWindowContainerChanged(newContainer);
+		}
+	};
+
+	protected TreeViewer layersExplorerTree;
+	private DisposeListener disposeListener = new DisposeListener() {
+
+		@Override
+		public void widgetDisposed(DisposeEvent e) {
+			log.info(this.getClass().getName() + " is disposed !!!" + e.widget);
+
+		}
+	};
+
+	protected ISelectionChangedListener selectionChangedListener = new ISelectionChangedListener() {
+
+
+		@Override
+		public void selectionChanged(SelectionChangedEvent event) {
+			if (log.isDebugEnabled()) {
+				log.debug(LayersExplorerView.this.getClass().getSimpleName()
+						+ ".selectionChanged(" + event.getSelection() + ")");
+			}
+
+
+		}
+	};
+
+	/**
+	 * Current LayersStacke life cycle notifier. This value is changed
+	 * when the container change. The value can be null.
+	 */
+	protected LayersStackAndApplicationLifeCycleEventNotifier currentLayersStackNotifier = null;
+
+	/**
+	 * Listen on the current container LayersStack life cycle event.
+	 * The observed {@link LayersStackApplication} is changed when the container change.
+	 */
+	protected ILayersStackApplicationEventListener layersStackLifeCycleEventListener = new ILayersStackApplicationEventListener() {
+
+		@Override
+		public void layerStackRemoved(Notification msg) {
+			refreshLayersExplorerTree();
+		}
+
+		@Override
+		public void layerStackAdded(Notification msg) {
+			refreshLayersExplorerTree();
+		}
+	};
+
+
+	/**
+	 * Constructor.
+	 *
+	 */
+	public LayersExplorerView() {
+		super();
+	}
+
+	/**
+	 * Get the property contributor ID.
+	 * This is used by the tabbed properties to identify
+	 * wich parts are accepted by a property contributor.
+	 * We use Papyrus id.
+	 */
+	@Override
+	public String getContributorId() {
+		// return Activator.PLUGIN_ID;
+		return "TreeOutlinePage"; //$NON-NLS-1$
+	}
+
+	/**
+	 * Init the view. Called before {@link #createPartControl(Composite)}
+	 *
+	 * @see org.eclipse.ui.part.ViewPart#init(org.eclipse.ui.IViewSite)
+	 *
+	 * @param site
+	 * @throws PartInitException
+	 */
+	@Override
+	public void init(IViewSite site) throws PartInitException {
+		// TODO Auto-generated method stub
+		super.init(site);
+	}
+
+	protected void init() {
+
+		// Add listeners on container and page changed events
+		sashEventsProvider = new SashWindowsEventsProvider(getSite().getPage());
+
+		sashEventsProvider.addPageChangedListener(pageChangedListener);
+		sashEventsProvider.addSashWindowsContainerChangedListener(containerChangedListener);
+
+		// Add listener on LayersStack added or removed event
+
+		// Set initials values
+
+		activeSashWindowContainerChanged(sashEventsProvider.activeSashWindowsContainer());
+		// setActivePage(sashEventsProvider.activeSashWindowsPage());
+	}
+
+	@Override
+	public void dispose() {
+
+		super.dispose();
+
+		if (sashEventsProvider != null) {
+			sashEventsProvider.removePageChangedListener(pageChangedListener);
+			sashEventsProvider.removeSashWindowsContainerChangedListener(containerChangedListener);
+			sashEventsProvider = null;
+		}
+
+	}
+
+	/**
+	 *
+	 * @see org.eclipse.ui.part.WorkbenchPart#getAdapter(java.lang.Class)
+	 *
+	 * @param adapter
+	 * @return
+	 */
+	@Override
+	public Object getAdapter(Class adapter) {
+		if (adapter == IPropertySheetPage.class) {
+			return new TabbedPropertySheetPage(this);
+		}
+		return super.getAdapter(adapter);
+	}
+
+
+	/**
+	 * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
+	 *
+	 * @param parent
+	 *
+	 */
+	protected void createlayersExplorerTreeControl(Composite parent) {
+		// Create tree
+
+		ComposedAdapterFactory adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+		adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
+		// adapterFactory.addAdapterFactory(new LayersItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new EcoreItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new NotationItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
+		// AdapterFactory adapterFactory = new LayersItemProviderAdapterFactory();
+		layersExplorerTree.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+		// layersExplorerTree.setContentProvider(new MyContentProvider());
+
+		layersExplorerTree.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+		// layersExplorerTree.setLabelProvider(new LabelProvider());
+
+
+	}
+
+	/**
+	 * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
+	 *
+	 * @param parent
+	 *
+	 * @wbp.parser.entryPoint
+	 */
+	@Override
+	public void createPartControl(Composite parent) {
+		Composite composite = new Composite(parent, SWT.NONE);
+
+		// AdapterFactory adapterFactory = new LayersItemProviderAdapterFactory();
+		composite.setLayout(new GridLayout(1, false));
+
+		Composite headerComposite = new Composite(composite, SWT.BORDER);
+		headerComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
+		headerComposite.setLayout(new GridLayout(2, false));
+
+		Label diagramNameLabel = new Label(headerComposite, SWT.NONE);
+		diagramNameLabel.setText("Diagram");
+
+		nameLabel = new Label(headerComposite, SWT.BORDER);
+		GridData gd_nameLabel = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);
+		gd_nameLabel.horizontalIndent = 2;
+		nameLabel.setLayoutData(gd_nameLabel);
+		nameLabel.setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE));
+		nameLabel.setText("Hello World");
+		nameLabel.setText("container");
+
+		Label containerNameLabel = new Label(headerComposite, SWT.NONE);
+		containerNameLabel.setText("Container");
+
+		containerLabel = new Label(headerComposite, SWT.BORDER);
+		GridData gd_containerLabel = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);
+		gd_containerLabel.horizontalIndent = 2;
+		containerLabel.setLayoutData(gd_containerLabel);
+		containerLabel.setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE));
+
+		// Create tree
+		// layersExplorerTree = LayersTreeViewerFactory.createLayersTreeViewer(composite, SWT.MULTI);
+		layersExplorerTree = new TreeViewer(composite, SWT.MULTI /* | SWT.H_SCROLL | SWT.V_SCROLL */);
+		LayersTreeViewerFactory.initContentAndLabelProviders(layersExplorerTree);
+		LayersTreeViewerFactory.initContextMenuFor(getSite(), layersExplorerTree);
+		Tree tree = layersExplorerTree.getTree();
+		tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
+		// createlayersExplorerTreeControl(composite);
+
+
+		// misc
+		parent.addDisposeListener(disposeListener);
+		layersExplorerTree.getTree().addDisposeListener(disposeListener);
+
+		init();
+
+		// Setup properties sheet binding
+		getViewSite().setSelectionProvider(layersExplorerTree);
+
+		layersExplorerTree.addSelectionChangedListener(selectionChangedListener);
+
+		// context menu
+		// createContextMenuFor(layersExplorerTree);
+	}
+
+	/**
+	 * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
+	 *
+	 */
+	@Override
+	public void setFocus() {
+		layersExplorerTree.getTree().setFocus();
+
+	}
+
+	/**
+	 * activeSashWindowContainerChanged
+	 * The active {@link ISashWindowsContainer} has changed, reset the internal states accordingly.
+	 *
+	 * @param newContainer
+	 */
+	protected void activeSashWindowContainerChanged(ISashWindowsContainer newContainer) {
+
+		if (log.isDebugEnabled()) {
+			log.debug("activeSashWindowContainerChanged(" + (newContainer != null ? newContainer : "noContainer") + ")");
+		}
+
+		// check if there is a container
+		if (newContainer == null) {
+			// No container
+			currentServicesRegistry = null;
+			currentLayersModel = null;
+			switchLayersStackLifeCycleEventListener(null);
+			setLabels(null);
+			setEmptyTreeInput();
+			return;
+		}
+
+		// There is a container
+		// Reset states
+		currentServicesRegistry = null;
+		currentLayersModel = null;
+		// currentLayersStackNotifier = null;
+
+		try {
+			// Compute ServiceRegistry
+			currentServicesRegistry = getServiceRegistry();
+			// Compute LayersModel
+			currentLayersModel = getLayersModel();
+		} catch (Exception e) {
+			// should not happen, because editor with container always
+			// have a registry and models.
+			// FIXME log error
+			e.printStackTrace();
+			// Container, but problems
+			currentServicesRegistry = null;
+			currentLayersModel = null;
+			switchLayersStackLifeCycleEventListener(null);
+			setLabels(null);
+			setEmptyTreeInput();
+			return;
+
+		}
+
+		switchLayersStackLifeCycleEventListener(currentLayersModel.getLayersStackLifeCycleEventNotifier());
+		setLabels(newContainer);
+		refreshLayersExplorerTree();
+
+	}
+
+	/**
+	 * Get the LayersModel associated to the ServiceRegistry.
+	 * The {@link #currentServicesRegistry} property should have been set
+	 * (by {@link #activeSashWindowContainerChanged(ISashWindowsContainer)};
+	 *
+	 *
+	 * @return The layersModel
+	 * @throws NotFoundException
+	 *             If no LayersModel can be found
+	 * @throws ServiceException
+	 *             If {@link ModelSet} can't be found
+	 */
+	private LayersModel getLayersModel() throws ServiceException, NotFoundException {
+
+		ModelSet modelSet = ServiceUtils.getInstance().getModelSet(currentServicesRegistry);
+		LayersModel model = (LayersModel) modelSet.getModelChecked(LayersModel.MODEL_ID);
+
+		return model;
+	}
+
+	/**
+	 * Get the {@link ServiceRegistry} associated to the current IEditorPart found
+	 * in the {@link #sashEventsProvider}.
+	 *
+	 * @return The associated ServicesRegistry.
+	 *
+	 * @throws NotFoundException
+	 *             if the ServicesRegistry can't be found.
+	 */
+	private ServicesRegistry getServiceRegistry() throws NotFoundException {
+		IEditorPart editor = sashEventsProvider.activeSashWindowsContainerOwner();
+		if (editor == null) {
+			throw new NotFoundException();
+		}
+
+		ServicesRegistry registry = (ServicesRegistry) editor.getAdapter(ServicesRegistry.class);
+		if (registry == null) {
+			throw new NotFoundException();
+		}
+
+		return registry;
+	}
+
+	/**
+	 * The {@link ISashWindowsContainer} has changed.
+	 * Stop listening from the old LayerStackLifeCycleEventProvider, and start listening on the
+	 * new LayerStackLifeCycleEventProvider
+	 */
+	private void switchLayersStackLifeCycleEventListener(LayersStackAndApplicationLifeCycleEventNotifier newNotifier) {
+
+		if (currentLayersStackNotifier != null) {
+			currentLayersStackNotifier.removeLayersModelEventListener(layersStackLifeCycleEventListener);
+		}
+
+		currentLayersStackNotifier = newNotifier;
+		if (currentLayersStackNotifier != null) {
+			currentLayersStackNotifier.addLayersModelEventListener(layersStackLifeCycleEventListener);
+		}
+	}
+
+	/**
+	 * @param newPage
+	 */
+	protected void setActivePage(IPage newPage) {
+		setActivePageLabel(newPage);
+		refreshLayersExplorerTree();
+
+		// if( newPage != null) {
+		// System.err.println("setActivePage(" + newPage.getPageTitle() + ")");
+		// return;
+		// }
+
+	}
+
+	/**
+	 * Set the tree input with nothing
+	 */
+	private void setEmptyTreeInput() {
+		setTreeInput(null);
+
+	}
+
+	/**
+	 * Reset the tree input after a container changed event.
+	 */
+	protected void resetTreeInput() {
+
+		IEditorPart editor = sashEventsProvider.activeSashWindowsContainerOwner();
+		if (editor == null) {
+			setEmptyTreeInput();
+			return;
+		}
+
+		ServicesRegistry registry = (ServicesRegistry) editor.getAdapter(ServicesRegistry.class);
+		if (registry == null) {
+			log.info("New editor has no ServiceRegistry");
+			setEmptyTreeInput();
+			return;
+		}
+		ModelSet modelSet;
+		try {
+			modelSet = ServiceUtils.getInstance().getModelSet(registry);
+			LayersModel model = (LayersModel) modelSet.getModelChecked(LayersModel.MODEL_ID);
+
+			Diagram currentDiagram = getCurrentDiagram();
+			if (currentDiagram == null) {
+				setEmptyTreeInput();
+				return;
+			}
+
+			LayersStackApplication application = model.lookupLayerStackApplication();
+			if (application == null) {
+				setEmptyTreeInput();
+				return;
+			}
+
+			setTreeInput(application.lookupLayersStackFor(currentDiagram));
+			layersExplorerTree.setSelection(new StructuredSelection(model.getLayerStackApplication().getLayersStacks().get(0)), true);
+
+			return;
+		} catch (ServiceException e) {
+			e.printStackTrace();
+			setEmptyTreeInput();
+		} catch (NotFoundException e) {
+			e.printStackTrace();
+			setEmptyTreeInput();
+		} catch (org.eclipse.papyrus.layers.stackmodel.NotFoundException e) {
+			setEmptyTreeInput();
+		}
+	}
+
+	/**
+	 * Refresh the complete tree
+	 */
+	public void refreshTreeInput() {
+		layersExplorerTree.refresh();
+	}
+
+	/**
+	 * compute the currently selected diagram from the sashEventsProvider state.
+	 *
+	 * @return the current diagram or null if there is no diagram.
+	 */
+	private Diagram getCurrentDiagram() {
+		IPage page = sashEventsProvider.activeSashWindowsPage();
+		if (!(page instanceof IEditorPage)
+				|| !(((IEditorPage) page).getIEditorPart() instanceof DiagramDocumentEditor)) {
+			return null;
+		}
+
+		DiagramDocumentEditor diagramEditor = (DiagramDocumentEditor) ((IEditorPage) page).getIEditorPart();
+
+		Diagram diagram = diagramEditor.getDiagram();
+		if (diagram == null) {
+			return null;
+		}
+
+		return diagram;
+	}
+
+	/**
+	 * Change the input of the tree
+	 *
+	 * @param layerStackApplication
+	 */
+	private void setTreeInput(Object input) {
+		layersExplorerTree.setInput(input);
+	}
+
+	/**
+	 * @param newContainer
+	 */
+	protected void setLabels(ISashWindowsContainer newContainer) {
+		if (newContainer != null) {
+			containerLabel.setText(newContainer.toString());
+			setActivePageLabel(newContainer.getActiveSashWindowsPage());
+		}
+		else {
+			containerLabel.setText("nocontainer");
+			setActivePageLabel(null);
+		}
+	}
+
+
+	/**
+	 * @param newContainer
+	 */
+	protected void setSashWindowContainerLabel(ISashWindowsContainer newContainer) {
+		if (newContainer != null) {
+			containerLabel.setText(newContainer.toString());
+		}
+		else {
+			containerLabel.setText("nocontainer");
+		}
+	}
+
+	/**
+	 * @param newPage
+	 */
+	protected void setActivePageLabel(IPage newPage) {
+		if (newPage != null) {
+			nameLabel.setText(newPage.getPageTitle());
+		}
+		else {
+			nameLabel.setText("nopage");
+		}
+	}
+
+	/**
+	 * This creates a context menu for the viewer and adds a listener as well registering the menu for extension.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 *
+	 * @generated NOT
+	 */
+	protected void createContextMenuFor(StructuredViewer viewer) {
+		MenuManager contextMenu = new MenuManager("#PopUp");
+		contextMenu.add(new Separator("additions"));
+		contextMenu.setRemoveAllWhenShown(true);
+		// contextMenu.addMenuListener(this);
+		Menu menu = contextMenu.createContextMenu(viewer.getControl());
+		viewer.getControl().setMenu(menu);
+		// getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
+
+		String menuId = "org.eclipse.papyrus.layers.stackmodel.diagram.ui.contextmenu";
+		// getSite().registerContextMenu(menuId, contextMenu, new UnwrappingSelectionProvider(viewer));
+		getSite().registerContextMenu(menuId, contextMenu, viewer);
+
+		// int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
+		// Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() };
+		// viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
+		// viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
+	}
+
+	/**
+	 * Refresh the internal {@link #layersExplorerTree} according to the current LayersStack found.
+	 * Lookup for the current LayerStack, and set the internal {@link #layersExplorerTree} accordingly.
+	 * If a LayerStack is found, show it in the tree.
+	 * Otherwise,show an empty tree
+	 * TODO rename to resetLayersExplorerTreeInput()
+	 */
+	public void refreshLayersExplorerTree() {
+
+		LayersStack currentLayersStack = lookupCurrentLayersStack();
+		if (currentLayersStack != null) {
+			setTreeInput(currentLayersStack);
+			layersExplorerTree.setSelection(new StructuredSelection(currentLayersStack), true);
+		} else {
+			setEmptyTreeInput();
+		}
+	}
+
+	/**
+	 * Lookup if there is a current {@link LayersStack} attached to the
+	 * diagram associated to the current page.
+	 * Return the {@link LayersStack} if there is one, or null if there is none.
+	 * The {@link #currentServicesRegistry} and {@link #currentLayersModel} should be already set.
+	 *
+	 * @return the current {@link LayersStack} or null.
+	 */
+	private LayersStack lookupCurrentLayersStack() {
+
+		if (currentLayersModel == null || currentServicesRegistry == null) {
+
+			// Bad state
+			// FIXME Log error ?
+			log.info("Error - " + getClass().getSimpleName() + " - currentLayersModel and currentServicesRegistry should not be null.");
+			return null;
+		}
+
+		try {
+			Diagram currentDiagram = getCurrentDiagram();
+			if (currentDiagram == null) {
+				return null;
+			}
+
+			LayersStackApplication application = currentLayersModel.lookupLayerStackApplication();
+			if (application == null) {
+				return null;
+			}
+
+			return application.lookupLayersStackFor(currentDiagram);
+		} catch (org.eclipse.papyrus.layers.stackmodel.NotFoundException e) {
+		}
+		// Not found
+		return null;
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/view/LayersExplorerViewUtils.java b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/view/LayersExplorerViewUtils.java
new file mode 100755
index 0000000..a3ac603
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/view/LayersExplorerViewUtils.java
@@ -0,0 +1,131 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ *
+ */
+package org.eclipse.papyrus.layers3.ui.view;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.papyrus.layers.stackmodel.NotFoundException;
+import org.eclipse.ui.ISources;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+/**
+ * Utilities to open, close or check the LayersExplorerView.
+ *
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersExplorerViewUtils {
+
+	/**
+	 * Id of the View.
+	 */
+	static final public String LayersExplorerViewId = "org.eclipse.papyrus.layers.ui.view.layersexplorer";
+
+	/**
+	 *
+	 * @param event
+	 */
+	static public void openView(ExecutionEvent event) {
+		try {
+			HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().showView(LayersExplorerViewId);
+		} catch (PartInitException e) {
+			// Do nothing;
+		}
+	}
+
+	/**
+	 *
+	 * @param event
+	 */
+	static public void openView(IEvaluationContext context) {
+		try {
+			getActiveWorkbenchWindow(context).getActivePage().showView(LayersExplorerViewId);
+		} catch (PartInitException e) {
+			// Do nothing;
+		}
+	}
+
+	/**
+	 *
+	 * @param event
+	 * @throws NotFoundException
+	 */
+	static public LayersExplorerView findView(ExecutionEvent event) throws NotFoundException {
+		IViewPart part = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().findView(LayersExplorerViewId);
+
+		if (part instanceof LayersExplorerView) {
+			return (LayersExplorerView) part;
+		}
+		else {
+			throw new NotFoundException("Can't find LayersExplorerView.");
+		}
+	}
+
+	/**
+	 *
+	 * @param event
+	 * @throws NotFoundException
+	 */
+	static public LayersExplorerView findView(IEvaluationContext context) throws NotFoundException {
+		IViewPart part = getActiveWorkbenchWindow(context).getActivePage().findView(LayersExplorerViewId);
+
+		if (part instanceof LayersExplorerView) {
+			return (LayersExplorerView) part;
+		}
+		else {
+			throw new NotFoundException("Can't find LayersExplorerView.");
+		}
+	}
+
+	/**
+	 *
+	 * @param event
+	 * @return
+	 */
+	static public boolean isViewOpened(ExecutionEvent event) {
+		try {
+			return findView(event) != null;
+		} catch (NotFoundException e) {
+			// Do nothing;
+			return false;
+		}
+	}
+
+	/**
+	 *
+	 * @param event
+	 * @return
+	 */
+	static public boolean isViewOpened(IEvaluationContext context) {
+		try {
+			return findView(context) != null;
+		} catch (NotFoundException e) {
+			// Do nothing;
+			return false;
+		}
+	}
+
+	public static IWorkbenchWindow getActiveWorkbenchWindow(IEvaluationContext context) {
+		Object o = HandlerUtil.getVariable(context, ISources.ACTIVE_WORKBENCH_WINDOW_NAME);
+		if (o instanceof IWorkbenchWindow) {
+			return (IWorkbenchWindow) o;
+		}
+		return null;
+	}
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/view/LayersTreeViewerFactory.java b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/view/LayersTreeViewerFactory.java
new file mode 100755
index 0000000..0a9e010
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/view/LayersTreeViewerFactory.java
@@ -0,0 +1,116 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.papyrus.layers3.ui.view;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.ecore.provider.EcoreItemProviderAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.gmf.runtime.notation.provider.NotationItemProviderAdapterFactory;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.papyrus.layers.stackmodel.layers.provider.custom.CustomLayersItemProviderAdapterFactory;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.ui.IWorkbenchPartSite;
+
+
+/**
+ * A utility class to create LayersTreeViewer suitable to render layers as a tree.
+ *
+ *
+ *
+ * @author cedric dumoulin
+ *
+ */
+public class LayersTreeViewerFactory {
+
+	/**
+	 * ID used to register the context menu.
+	 */
+	static final String CONTEXT_MENU_ID = "org.eclipse.papyrus.layers.stackmodel.diagram.ui.contextmenu";
+
+	/**
+	 * Create a TreeViewer suitable to render Layers as a Tree.
+	 * The content and label providers are set.
+	 * The context menu is not set.
+	 *
+	 *
+	 * @return
+	 */
+	static public TreeViewer createLayersTreeViewer(Composite parent, int style) {
+
+		TreeViewer layersExplorerTree = new TreeViewer(parent, style);
+
+		initContentAndLabelProviders(layersExplorerTree);
+
+		return layersExplorerTree;
+	}
+
+	/**
+	 * Set appropriate Content and Label providers for the LayersTreeViewer.
+	 *
+	 * @param layersExplorerTree
+	 */
+	protected static void initContentAndLabelProviders(TreeViewer layersExplorerTree) {
+		// Set content and label providers
+		AdapterFactory adapterFactory = createLayersTreeViewerItemProvidersFactory();
+		layersExplorerTree.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+		layersExplorerTree.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
+	}
+
+	/**
+	 * Create an AdapterFactory suitable for the LayersTreeViewer.
+	 *
+	 * @return
+	 */
+	static public AdapterFactory createLayersTreeViewerItemProvidersFactory() {
+		ComposedAdapterFactory adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
+
+		adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
+		// adapterFactory.addAdapterFactory(new LayersItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new CustomLayersItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new EcoreItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new NotationItemProviderAdapterFactory());
+		adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
+
+		return adapterFactory;
+	}
+
+	/**
+	 * This creates a context menu for the viewer and adds a listener as well as registering the menu for extension.
+	 *
+	 */
+	static public void initContextMenuFor(IWorkbenchPartSite site, StructuredViewer viewer) {
+		MenuManager contextMenu = new MenuManager("#PopUp");
+		contextMenu.add(new Separator("additions"));
+		contextMenu.setRemoveAllWhenShown(true);
+		// contextMenu.addMenuListener(this);
+		Menu menu = contextMenu.createContextMenu(viewer.getControl());
+		viewer.getControl().setMenu(menu);
+		// getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer));
+
+		// getSite().registerContextMenu(CONTEXT_MENU_ID, contextMenu, new UnwrappingSelectionProvider(viewer));
+		site.registerContextMenu(CONTEXT_MENU_ID, contextMenu, viewer);
+
+		// int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK;
+		// Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() };
+		// viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer));
+		// viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer));
+	}
+
+
+}
diff --git a/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/view/package-info.java b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/view/package-info.java
new file mode 100755
index 0000000..2bc38d9
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/papyrus/layers3/ui/view/package-info.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+/**
+ * The Layer Viewer is responsible of showing the Layer Stack Properties.
+ * It synchronize itself to the current selection.
+ *
+ * @author cedric dumoulin
+ *
+ */
+package org.eclipse.papyrus.layers3.ui.view;
+
diff --git a/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/wb/swt/SWTResourceManager.java b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/wb/swt/SWTResourceManager.java
new file mode 100755
index 0000000..7a6c30f
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.ui/src/org/eclipse/wb/swt/SWTResourceManager.java
@@ -0,0 +1,469 @@
+/*******************************************************************************
+ * 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 v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cedric Dumoulin - cedric.dumoulin@lifl.fr
+ ******************************************************************************/
+package org.eclipse.wb.swt;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Cursor;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.FontData;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.ImageData;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * Utility class for managing OS resources associated with SWT controls such as colors, fonts, images, etc.
+ * <p>
+ * !!! IMPORTANT !!! Application code must explicitly invoke the <code>dispose()</code> method to release the operating system resources managed by cached objects when those objects and OS resources are no longer needed (e.g. on application shutdown)
+ * <p>
+ * This class may be freely distributed as part of any application or plugin.
+ * <p>
+ *
+ * @author scheglov_ke
+ * @author Dan Rubel
+ */
+public class SWTResourceManager {
+	// //////////////////////////////////////////////////////////////////////////
+	//
+	// Color
+	//
+	// //////////////////////////////////////////////////////////////////////////
+	private static Map<RGB, Color> m_colorMap = new HashMap<RGB, Color>();
+
+	/**
+	 * Returns the system {@link Color} matching the specific ID.
+	 *
+	 * @param systemColorID
+	 *            the ID value for the color
+	 * @return the system {@link Color} matching the specific ID
+	 */
+	public static Color getColor(int systemColorID) {
+		Display display = Display.getCurrent();
+		return display.getSystemColor(systemColorID);
+	}
+
+	/**
+	 * Returns a {@link Color} given its red, green and blue component values.
+	 *
+	 * @param r
+	 *            the red component of the color
+	 * @param g
+	 *            the green component of the color
+	 * @param b
+	 *            the blue component of the color
+	 * @return the {@link Color} matching the given red, green and blue component values
+	 */
+	public static Color getColor(int r, int g, int b) {
+		return getColor(new RGB(r, g, b));
+	}
+
+	/**
+	 * Returns a {@link Color} given its RGB value.
+	 *
+	 * @param rgb
+	 *            the {@link RGB} value of the color
+	 * @return the {@link Color} matching the RGB value
+	 */
+	public static Color getColor(RGB rgb) {
+		Color color = m_colorMap.get(rgb);
+		if (color == null) {
+			Display display = Display.getCurrent();
+			color = new Color(display, rgb);
+			m_colorMap.put(rgb, color);
+		}
+		return color;
+	}
+
+	/**
+	 * Dispose of all the cached {@link Color}'s.
+	 */
+	public static void disposeColors() {
+		for (Color color : m_colorMap.values()) {
+			color.dispose();
+		}
+		m_colorMap.clear();
+	}
+
+	// //////////////////////////////////////////////////////////////////////////
+	//
+	// Image
+	//
+	// //////////////////////////////////////////////////////////////////////////
+	/**
+	 * Maps image paths to images.
+	 */
+	private static Map<String, Image> m_imageMap = new HashMap<String, Image>();
+
+	/**
+	 * Returns an {@link Image} encoded by the specified {@link InputStream}.
+	 *
+	 * @param stream
+	 *            the {@link InputStream} encoding the image data
+	 * @return the {@link Image} encoded by the specified input stream
+	 */
+	protected static Image getImage(InputStream stream) throws IOException {
+		try {
+			Display display = Display.getCurrent();
+			ImageData data = new ImageData(stream);
+			if (data.transparentPixel > 0) {
+				return new Image(display, data, data.getTransparencyMask());
+			}
+			return new Image(display, data);
+		} finally {
+			stream.close();
+		}
+	}
+
+	/**
+	 * Returns an {@link Image} stored in the file at the specified path.
+	 *
+	 * @param path
+	 *            the path to the image file
+	 * @return the {@link Image} stored in the file at the specified path
+	 */
+	public static Image getImage(String path) {
+		Image image = m_imageMap.get(path);
+		if (image == null) {
+			try {
+				image = getImage(new FileInputStream(path));
+				m_imageMap.put(path, image);
+			} catch (Exception e) {
+				image = getMissingImage();
+				m_imageMap.put(path, image);
+			}
+		}
+		return image;
+	}
+
+	/**
+	 * Returns an {@link Image} stored in the file at the specified path relative to the specified class.
+	 *
+	 * @param clazz
+	 *            the {@link Class} relative to which to find the image
+	 * @param path
+	 *            the path to the image file, if starts with <code>'/'</code>
+	 * @return the {@link Image} stored in the file at the specified path
+	 */
+	public static Image getImage(Class<?> clazz, String path) {
+		String key = clazz.getName() + '|' + path;
+		Image image = m_imageMap.get(key);
+		if (image == null) {
+			try {
+				image = getImage(clazz.getResourceAsStream(path));
+				m_imageMap.put(key, image);
+			} catch (Exception e) {
+				image = getMissingImage();
+				m_imageMap.put(key, image);
+			}
+		}
+		return image;
+	}
+
+	private static final int MISSING_IMAGE_SIZE = 10;
+
+	/**
+	 * @return the small {@link Image} that can be used as placeholder for missing image.
+	 */
+	private static Image getMissingImage() {
+		Image image = new Image(Display.getCurrent(), MISSING_IMAGE_SIZE, MISSING_IMAGE_SIZE);
+		//
+		GC gc = new GC(image);
+		gc.setBackground(getColor(SWT.COLOR_RED));
+		gc.fillRectangle(0, 0, MISSING_IMAGE_SIZE, MISSING_IMAGE_SIZE);
+		gc.dispose();
+		//
+		return image;
+	}
+
+	/**
+	 * Style constant for placing decorator image in top left corner of base image.
+	 */
+	public static final int TOP_LEFT = 1;
+	/**
+	 * Style constant for placing decorator image in top right corner of base image.
+	 */
+	public static final int TOP_RIGHT = 2;
+	/**
+	 * Style constant for placing decorator image in bottom left corner of base image.
+	 */
+	public static final int BOTTOM_LEFT = 3;
+	/**
+	 * Style constant for placing decorator image in bottom right corner of base image.
+	 */
+	public static final int BOTTOM_RIGHT = 4;
+	/**
+	 * Internal value.
+	 */
+	protected static final int LAST_CORNER_KEY = 5;
+	/**
+	 * Maps images to decorated images.
+	 */
+	@SuppressWarnings("unchecked")
+	private static Map<Image, Map<Image, Image>>[] m_decoratedImageMap = new Map[LAST_CORNER_KEY];
+
+	/**
+	 * Returns an {@link Image} composed of a base image decorated by another image.
+	 *
+	 * @param baseImage
+	 *            the base {@link Image} that should be decorated
+	 * @param decorator
+	 *            the {@link Image} to decorate the base image
+	 * @return {@link Image} The resulting decorated image
+	 */
+	public static Image decorateImage(Image baseImage, Image decorator) {
+		return decorateImage(baseImage, decorator, BOTTOM_RIGHT);
+	}
+
+	/**
+	 * Returns an {@link Image} composed of a base image decorated by another image.
+	 *
+	 * @param baseImage
+	 *            the base {@link Image} that should be decorated
+	 * @param decorator
+	 *            the {@link Image} to decorate the base image
+	 * @param corner
+	 *            the corner to place decorator image
+	 * @return the resulting decorated {@link Image}
+	 */
+	public static Image decorateImage(final Image baseImage, final Image decorator, final int corner) {
+		if (corner <= 0 || corner >= LAST_CORNER_KEY) {
+			throw new IllegalArgumentException("Wrong decorate corner");
+		}
+		Map<Image, Map<Image, Image>> cornerDecoratedImageMap = m_decoratedImageMap[corner];
+		if (cornerDecoratedImageMap == null) {
+			cornerDecoratedImageMap = new HashMap<Image, Map<Image, Image>>();
+			m_decoratedImageMap[corner] = cornerDecoratedImageMap;
+		}
+		Map<Image, Image> decoratedMap = cornerDecoratedImageMap.get(baseImage);
+		if (decoratedMap == null) {
+			decoratedMap = new HashMap<Image, Image>();
+			cornerDecoratedImageMap.put(baseImage, decoratedMap);
+		}
+		//
+		Image result = decoratedMap.get(decorator);
+		if (result == null) {
+			Rectangle bib = baseImage.getBounds();
+			Rectangle dib = decorator.getBounds();
+			//
+			result = new Image(Display.getCurrent(), bib.width, bib.height);
+			//
+			GC gc = new GC(result);
+			gc.drawImage(baseImage, 0, 0);
+			if (corner == TOP_LEFT) {
+				gc.drawImage(decorator, 0, 0);
+			} else if (corner == TOP_RIGHT) {
+				gc.drawImage(decorator, bib.width - dib.width, 0);
+			} else if (corner == BOTTOM_LEFT) {
+				gc.drawImage(decorator, 0, bib.height - dib.height);
+			} else if (corner == BOTTOM_RIGHT) {
+				gc.drawImage(decorator, bib.width - dib.width, bib.height - dib.height);
+			}
+			gc.dispose();
+			//
+			decoratedMap.put(decorator, result);
+		}
+		return result;
+	}
+
+	/**
+	 * Dispose all of the cached {@link Image}'s.
+	 */
+	public static void disposeImages() {
+		// dispose loaded images
+		{
+			for (Image image : m_imageMap.values()) {
+				image.dispose();
+			}
+			m_imageMap.clear();
+		}
+		// dispose decorated images
+		for (int i = 0; i < m_decoratedImageMap.length; i++) {
+			Map<Image, Map<Image, Image>> cornerDecoratedImageMap = m_decoratedImageMap[i];
+			if (cornerDecoratedImageMap != null) {
+				for (Map<Image, Image> decoratedMap : cornerDecoratedImageMap.values()) {
+					for (Image image : decoratedMap.values()) {
+						image.dispose();
+					}
+					decoratedMap.clear();
+				}
+				cornerDecoratedImageMap.clear();
+			}
+		}
+	}
+
+	// //////////////////////////////////////////////////////////////////////////
+	//
+	// Font
+	//
+	// //////////////////////////////////////////////////////////////////////////
+	/**
+	 * Maps font names to fonts.
+	 */
+	private static Map<String, Font> m_fontMap = new HashMap<String, Font>();
+	/**
+	 * Maps fonts to their bold versions.
+	 */
+	private static Map<Font, Font> m_fontToBoldFontMap = new HashMap<Font, Font>();
+
+	/**
+	 * Returns a {@link Font} based on its name, height and style.
+	 *
+	 * @param name
+	 *            the name of the font
+	 * @param height
+	 *            the height of the font
+	 * @param style
+	 *            the style of the font
+	 * @return {@link Font} The font matching the name, height and style
+	 */
+	public static Font getFont(String name, int height, int style) {
+		return getFont(name, height, style, false, false);
+	}
+
+	/**
+	 * Returns a {@link Font} based on its name, height and style. Windows-specific strikeout and underline
+	 * flags are also supported.
+	 *
+	 * @param name
+	 *            the name of the font
+	 * @param size
+	 *            the size of the font
+	 * @param style
+	 *            the style of the font
+	 * @param strikeout
+	 *            the strikeout flag (warning: Windows only)
+	 * @param underline
+	 *            the underline flag (warning: Windows only)
+	 * @return {@link Font} The font matching the name, height, style, strikeout and underline
+	 */
+	public static Font getFont(String name, int size, int style, boolean strikeout, boolean underline) {
+		String fontName = name + '|' + size + '|' + style + '|' + strikeout + '|' + underline;
+		Font font = m_fontMap.get(fontName);
+		if (font == null) {
+			FontData fontData = new FontData(name, size, style);
+			if (strikeout || underline) {
+				try {
+					Class<?> logFontClass = Class.forName("org.eclipse.swt.internal.win32.LOGFONT"); //$NON-NLS-1$
+					Object logFont = FontData.class.getField("data").get(fontData); //$NON-NLS-1$
+					if (logFont != null && logFontClass != null) {
+						if (strikeout) {
+							logFontClass.getField("lfStrikeOut").set(logFont, Byte.valueOf((byte) 1)); //$NON-NLS-1$
+						}
+						if (underline) {
+							logFontClass.getField("lfUnderline").set(logFont, Byte.valueOf((byte) 1)); //$NON-NLS-1$
+						}
+					}
+				} catch (Throwable e) {
+					System.err.println("Unable to set underline or strikeout" + " (probably on a non-Windows platform). " + e); //$NON-NLS-1$ //$NON-NLS-2$
+				}
+			}
+			font = new Font(Display.getCurrent(), fontData);
+			m_fontMap.put(fontName, font);
+		}
+		return font;
+	}
+
+	/**
+	 * Returns a bold version of the given {@link Font}.
+	 *
+	 * @param baseFont
+	 *            the {@link Font} for which a bold version is desired
+	 * @return the bold version of the given {@link Font}
+	 */
+	public static Font getBoldFont(Font baseFont) {
+		Font font = m_fontToBoldFontMap.get(baseFont);
+		if (font == null) {
+			FontData fontDatas[] = baseFont.getFontData();
+			FontData data = fontDatas[0];
+			font = new Font(Display.getCurrent(), data.getName(), data.getHeight(), SWT.BOLD);
+			m_fontToBoldFontMap.put(baseFont, font);
+		}
+		return font;
+	}
+
+	/**
+	 * Dispose all of the cached {@link Font}'s.
+	 */
+	public static void disposeFonts() {
+		// clear fonts
+		for (Font font : m_fontMap.values()) {
+			font.dispose();
+		}
+		m_fontMap.clear();
+		// clear bold fonts
+		for (Font font : m_fontToBoldFontMap.values()) {
+			font.dispose();
+		}
+		m_fontToBoldFontMap.clear();
+	}
+
+	// //////////////////////////////////////////////////////////////////////////
+	//
+	// Cursor
+	//
+	// //////////////////////////////////////////////////////////////////////////
+	/**
+	 * Maps IDs to cursors.
+	 */
+	private static Map<Integer, Cursor> m_idToCursorMap = new HashMap<Integer, Cursor>();
+
+	/**
+	 * Returns the system cursor matching the specific ID.
+	 *
+	 * @param id
+	 *            int The ID value for the cursor
+	 * @return Cursor The system cursor matching the specific ID
+	 */
+	public static Cursor getCursor(int id) {
+		Integer key = Integer.valueOf(id);
+		Cursor cursor = m_idToCursorMap.get(key);
+		if (cursor == null) {
+			cursor = new Cursor(Display.getDefault(), id);
+			m_idToCursorMap.put(key, cursor);
+		}
+		return cursor;
+	}
+
+	/**
+	 * Dispose all of the cached cursors.
+	 */
+	public static void disposeCursors() {
+		for (Cursor cursor : m_idToCursorMap.values()) {
+			cursor.dispose();
+		}
+		m_idToCursorMap.clear();
+	}
+
+	// //////////////////////////////////////////////////////////////////////////
+	//
+	// General
+	//
+	// //////////////////////////////////////////////////////////////////////////
+	/**
+	 * Dispose of cached objects and their underlying OS resources. This should only be called when the cached
+	 * objects are no longer needed (e.g. on application shutdown).
+	 */
+	public static void dispose() {
+		disposeColors();
+		disposeImages();
+		disposeFonts();
+		disposeCursors();
+	}
+}
diff --git a/layers/org.eclipse.papyrus.layers.updatesite/.project b/layers/org.eclipse.papyrus.layers.updatesite/.project
new file mode 100755
index 0000000..4b97f94
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.updatesite/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.layers.updatesite</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.UpdateSiteBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.UpdateSiteNature</nature>
+	</natures>
+</projectDescription>
diff --git a/layers/org.eclipse.papyrus.layers.updatesite/site.xml b/layers/org.eclipse.papyrus.layers.updatesite/site.xml
new file mode 100755
index 0000000..2e3e0d8
--- /dev/null
+++ b/layers/org.eclipse.papyrus.layers.updatesite/site.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<site>
+   <feature url="features/org.eclipse.papyrus.layers.feature_1.0.0.qualifier.jar" id="org.eclipse.papyrus.layers.feature" version="1.0.0.qualifier"/>
+</site>
diff --git a/layers/pom.xml b/layers/pom.xml
new file mode 100755
index 0000000..6aaf06f
--- /dev/null
+++ b/layers/pom.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.eclipse.papyrus</groupId>
+		<artifactId>org.eclipse.papyrus.incubation</artifactId>		
+		<version>3.0.0-SNAPSHOT</version>
+	</parent>
+	<artifactId>org.eclipse.papyrus.layers.parent</artifactId>
+	<version>1.2.0-SNAPSHOT</version>
+	<packaging>pom</packaging>
+	
+	<modules>
+		<module>org.eclipse.papyrus.layers.notationmodel.edit</module>
+		<module>org.eclipse.papyrus.layers.runtime</module>
+		<module>org.eclipse.papyrus.layers.stackmodel</module>
+		<module>org.eclipse.papyrus.layers.stackmodel.diagram</module>
+		<module>org.eclipse.papyrus.layers.stackmodel.edit</module>
+		<module>org.eclipse.papyrus.layers.stackmodel.editor</module>
+		<module>org.eclipse.papyrus.layers.ui</module>
+		<module>org.eclipse.papyrus.layers.feature</module>
+		
+		<!-- FIXME present in Papyrus core repo but not in the build 
+		org.eclipse.papyrus.layers.dev.ui
+		org.eclipse.papyrus.layers.integrationtests
+		org.eclipse.papyrus.layers.stackmodel.tests
+		org.eclipse.papyrus.layers.updatesite
+		-->
+		
+	</modules>	
+	
+</project>
\ No newline at end of file
diff --git a/org.eclipse.papyrus.incubation.p2/category.xml b/org.eclipse.papyrus.incubation.p2/category.xml
index ff80ca3..1e613ac 100755
--- a/org.eclipse.papyrus.incubation.p2/category.xml
+++ b/org.eclipse.papyrus.incubation.p2/category.xml
@@ -25,5 +25,12 @@
    <feature url="features/org.eclipse.papyrus.uml.alf.extra.feature.source_0.7.0.qualifier.jar" id="org.eclipse.papyrus.uml.alf.extra.feature.source" version="0.7.0.qualifier">
       <category name="org.eclipse.papyrus.incubation.category"/>
 	</feature>
-   
+
+   <feature url="features/org.eclipse.papyrus.layers.feature_1.2.0.qualifier.jar" id="org.eclipse.papyrus.layers.feature" version="1.2.0.qualifier">
+      <category name="org.eclipse.papyrus.incubation.category"/>
+   </feature> 
+   <feature url="features/org.eclipse.papyrus.layers.feature.source_1.2.0.qualifier.jar" id="org.eclipse.papyrus.layers.feature.source" version="1.2.0.qualifier">
+      <category name="org.eclipse.papyrus.incubation.category"/>
+   </feature>   
+
 </site>
diff --git a/org.eclipse.papyrus.incubation.targetplatform.oxygen/org.eclipse.papyrus.incubation.targetplatform.oxygen.target b/org.eclipse.papyrus.incubation.targetplatform.oxygen/org.eclipse.papyrus.incubation.targetplatform.oxygen.target
index 11b0a4c..ef54caf 100755
--- a/org.eclipse.papyrus.incubation.targetplatform.oxygen/org.eclipse.papyrus.incubation.targetplatform.oxygen.target
+++ b/org.eclipse.papyrus.incubation.targetplatform.oxygen/org.eclipse.papyrus.incubation.targetplatform.oxygen.target
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <?pde?>
 <!-- generated with https://github.com/mbarbero/fr.obeo.releng.targetplatform -->
-<target name="Papyrus Oxygen" sequenceNumber="1488474220">
+<target name="Papyrus Oxygen" sequenceNumber="1488475101">
   <locations>
     <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
       <unit id="org.eclipse.draw2d.feature.group" version="0.0.0"/>
diff --git a/org.eclipse.papyrus.incubation.targetplatform.oxygen/org.eclipse.papyrus.incubation.targetplatform.oxygen.tpd b/org.eclipse.papyrus.incubation.targetplatform.oxygen/org.eclipse.papyrus.incubation.targetplatform.oxygen.tpd
index d1a4dbf..18bdf03 100755
--- a/org.eclipse.papyrus.incubation.targetplatform.oxygen/org.eclipse.papyrus.incubation.targetplatform.oxygen.tpd
+++ b/org.eclipse.papyrus.incubation.targetplatform.oxygen/org.eclipse.papyrus.incubation.targetplatform.oxygen.tpd
@@ -47,4 +47,3 @@
 location emfQuery "http://download.eclipse.org/modeling/emf/query/updates/releases" {
 	org.eclipse.emf.query.sdk.feature.group
 }
-
diff --git a/pom.xml b/pom.xml
index 541bd17..8dbe564 100755
--- a/pom.xml
+++ b/pom.xml
@@ -10,6 +10,7 @@
 		<module>refactoring</module>
 		<module>diagramtemplate</module>
 		<module>alf</module>
+		<module>layers</module>
 		<!-- Releng -->
 		<module>org.eclipse.papyrus.incubation.targetplatform.oxygen</module>
 		<module>org.eclipse.papyrus.incubation.p2</module>