Bug 513697: [Interoperability][Rpy] Move Rpy migration plugin into new git
https://bugs.eclipse.org/bugs/show_bug.cgi?id=513697

Push all missing rpy plugins and plugins tests for this feature.

Change-Id: I0c13d1a20e0c7f72039ee2cc70547a4f04e59f5d
Signed-off-by: Vincent Lorenzo <vincent.lorenzo@cea.fr>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/.classpath b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/.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.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/.gitignore b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/.project b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/.project
new file mode 100644
index 0000000..38f69b1
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.interoperability.rpy.blackboxes</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/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/.settings/org.eclipse.jdt.core.prefs b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..b3aa6d6
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/.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.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
+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/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/.settings/org.eclipse.jdt.ui.prefs b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..954281d
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/.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/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/.settings/org.eclipse.pde.api.tools.prefs b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..23fb95e
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,98 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Ignore
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Ignore
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Ignore
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=Enabled
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Warning
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/META-INF/MANIFEST.MF b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..85ff53a
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/META-INF/MANIFEST.MF
@@ -0,0 +1,27 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name
+Bundle-SymbolicName: org.eclipse.papyrus.interoperability.rpy.blackboxes;singleton:=true
+Bundle-Version: 0.7.0.qualifier
+Bundle-Activator: org.eclipse.papyrus.interoperability.rpy.blackboxes.Activator
+Bundle-Vendor: %Bundle-Vendor
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0",
+ org.eclipse.m2m.qvt.oml;bundle-version="3.7.0",
+ org.eclipse.uml2.uml;bundle-version="[5.2.0,6.0.0)",
+ org.eclipse.papyrus.interoperability.rpy.metamodel;bundle-version="0.7.0",
+ org.eclipse.papyrus.infra.tools;bundle-version="2.0.100",
+ org.eclipse.gmf.runtime.notation;bundle-version="1.8.0",
+ org.eclipse.papyrus.interoperability.rpy.geometry;bundle-version="0.7.0",
+ org.eclipse.gmf.runtime.draw2d.ui;bundle-version="1.9.0",
+ org.eclipse.draw2d;bundle-version="3.10.100",
+ org.eclipse.papyrus.infra.gmfdiag.common;bundle-version="[3.0.0,4.0.0)"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-ActivationPolicy: lazy
+Bundle-Description: %Bundle-Description
+Export-Package: org.eclipse.papyrus.interoperability.rpy.blackboxes,
+ org.eclipse.papyrus.interoperability.rpy.blackboxes.ecore,
+ org.eclipse.papyrus.interoperability.rpy.blackboxes.sysml11,
+ org.eclipse.papyrus.interoperability.rpy.blackboxes.sysml11.diagrams,
+ org.eclipse.papyrus.interoperability.rpy.blackboxes.uml
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/OSGI-INF/l10n/bundle.properties b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/OSGI-INF/l10n/bundle.properties
new file mode 100644
index 0000000..43d636b
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/OSGI-INF/l10n/bundle.properties
@@ -0,0 +1,4 @@
+#Properties file for org.eclipse.papyrus.interoperability.rpy.blackboxes
+Bundle-Vendor = Eclipse Modeling Project
+Bundle-Name = Papyrus Interoperability Rpy Blackboxes (Incubation)
+Bundle-Description = This plugin contains only blackboxes. We don't store them in the QVTO transformations plugin to ease development of them and solve local compilation troubles.
\ No newline at end of file
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/about.html b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/about.html
new file mode 100644
index 0000000..dd3c089
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>November 14, 2008</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/build.properties b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/build.properties
new file mode 100644
index 0000000..c1711a9
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               about.html,\
+               OSGI-INF/l10n/bundle.properties
+src.includes = about.html
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/plugin.xml b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/plugin.xml
new file mode 100644
index 0000000..adeeb22
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/plugin.xml
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+         point="org.eclipse.m2m.qvt.oml.javaBlackboxUnits">
+      <unit
+            description="Calculate Anchor Id from Rpy GraphElements (transform, polygon and ports)"
+            name="Rpy2PapyrusNotationBlackboxes"
+            namespace="org.eclipse.papyrus.interoperability.rpy.blackboxes">
+         <library
+               class="org.eclipse.papyrus.interoperability.rpy.blackboxes.Rpy2PapyrusNotationBlackboxes">
+            <metamodel
+                  nsURI="http://www.eclipse.org/gmf/runtime/1.0.2/notation">
+            </metamodel>
+            <metamodel
+                  nsURI="http://www.eclipse.org/Papyrus/UMLRpy/1.0.0">
+            </metamodel>
+         </library>
+      </unit>
+      <unit
+            description="This blackbox allows to set the association after the execution of the transformation"
+            name="AssociationOwnerHelper"
+            namespace="org.eclipse.papyrus.interoperability.rpy.blackboxes.uml">
+         <library
+               class="org.eclipse.papyrus.interoperability.rpy.blackboxes.uml.AssociationOwnerHelper"
+               name="AssociationOwnerHelper">
+            <metamodel
+                  nsURI="http://www.eclipse.org/uml2/5.0.0/UML">
+            </metamodel>
+         </library>
+      </unit>
+      <unit
+            description="Blackbox to manage Nested Connector End stereotype value"
+            name="NestedConnectorEndBlackboxes"
+            namespace="org.eclipse.papyrus.interoperability.rpy.blackboxes.sysml11">
+         <library
+               class="org.eclipse.papyrus.interoperability.rpy.blackboxes.sysml11.NestedConnectorEndBlackboxes"
+               name="NestedConnectorEndBlackboxes">
+            <metamodel
+                  nsURI="http://www.eclipse.org/uml2/5.0.0/UML">
+            </metamodel>
+         </library>
+      </unit>
+      <unit
+            description="This Blackbox provides methods to manipulate rpy semantic model"
+            name="UMLRpySemanticHelper"
+            namespace="org.eclipse.papyrus.interoperability.rpy.blackboxes.uml">
+         <library
+               class="org.eclipse.papyrus.interoperability.rpy.blackboxes.uml.UMLRpySemanticHelper"
+               name="UMLRpySemanticHelper">
+            <metamodel
+                  nsURI="http://www.eclipse.org/emf/2002/Ecore">
+            </metamodel>
+            <metamodel
+                  nsURI="http://www.eclipse.org/Papyrus/UMLRpy/1.0.0">
+            </metamodel>
+         </library>
+      </unit>
+      <unit
+            description="This Blackbox provides methods to fix ParametricDiagram layout after its creation."
+            name="ParametricDiagramFixLayoutLocationBlackboxes"
+            namespace="org.eclipse.papyrus.interoperability.rpy.blackboxes.sysml11.diagrams">
+         <library
+               class="org.eclipse.papyrus.interoperability.rpy.blackboxes.sysml11.diagrams.ParametricDiagramFixLayoutLocationBlackboxes"
+               name="ParametricDiagramFixLayoutLocationBlackboxes">
+               <metamodel
+                  nsURI="http://www.eclipse.org/gmf/runtime/1.0.2/notation">
+            </metamodel>
+         </library>
+      </unit>       
+      <unit
+            description="This Blackbox provides methods to fix SysML InternalBlockDiagram layout after its creation."
+            name="InternalBlockDiagramFixLayoutBlackboxes"
+            namespace="org.eclipse.papyrus.interoperability.rpy.blackboxes.sysml11.diagrams">
+         <library
+               class="org.eclipse.papyrus.interoperability.rpy.blackboxes.sysml11.diagrams.InternalBlockDiagramFixLayoutBlackboxes"
+               name="InternalBlockDiagramFixLayoutBlackboxes">
+            <metamodel
+                  nsURI="http://www.eclipse.org/gmf/runtime/1.0.2/notation">
+            </metamodel>
+         </library>
+      </unit>
+      <unit
+            description="This Blackbox provides methods to save Rpy and Papyrus versions in the imported models"
+            name="VersioningBlackboxes"
+            namespace="org.eclipse.papyrus.interoperability.rpy.blackboxes">
+         <library
+               class="org.eclipse.papyrus.interoperability.rpy.blackboxes.VersioningBlackboxes"
+               name="VersioningBlackboxes">
+         </library>
+      </unit>
+      <unit
+            description="This Blackboxes provides useful emf methods"
+            name="EcoreHelper"
+            namespace="org.eclipse.papyrus.interoperability.rpy.blackboxes.ecore">
+         <library
+               class="org.eclipse.papyrus.interoperability.rpy.blackboxes.ecore.EcoreHelper"
+               name="EcoreHelper">
+            <metamodel
+                  nsURI="http://www.eclipse.org/emf/2002/Ecore">
+            </metamodel>
+         </library>
+      </unit>
+       <unit
+            description="Provide constant for Rpy QVTo transformation"
+            name="ConstantsBlackboxes"
+            namespace="org.eclipse.papyrus.interoperability.rpy.blackboxes">
+         <library
+               class="org.eclipse.papyrus.interoperability.rpy.blackboxes.ConstantsBlackboxes"
+               name="ConstantsBlackboxes">
+         </library>
+      </unit>
+   </extension>
+</plugin>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/AbstractDiagramFixLayoutBlackboxes.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/AbstractDiagramFixLayoutBlackboxes.java
new file mode 100644
index 0000000..af70ca3
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/AbstractDiagramFixLayoutBlackboxes.java
@@ -0,0 +1,158 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.blackboxes;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.gmf.runtime.notation.BasicCompartment;
+import org.eclipse.gmf.runtime.notation.Bounds;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.ListCompartment;
+import org.eclipse.gmf.runtime.notation.Shape;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.m2m.qvt.oml.blackbox.java.Operation;
+import org.eclipse.m2m.qvt.oml.blackbox.java.Operation.Kind;
+
+/**
+ * @author VL222926
+ *         Abstract class to fix the layout of the created diagram
+ */
+public abstract class AbstractDiagramFixLayoutBlackboxes {
+
+	/**
+	 * This method is called by a QVTO file to fix all problems in the diagram created by a QVTO transfo.
+	 * 
+	 * @param diagram
+	 *            a diagram
+	 */
+	@Operation(kind = Kind.HELPER)
+	public void fixLayout(final Diagram diagram) {
+		if (isManagedDiagram(diagram)) {
+			fixShapePosition(diagram);
+		}
+	}
+
+	/**
+	 * 
+	 * @param diagram
+	 *            the diagram to fix
+	 */
+	protected void fixShapePosition(final Diagram diagram) {
+		final List<?> children = diagram.getChildren();
+		for (final Object current : children) {
+			// nothing to do on first level
+			if (current instanceof Shape) {
+				fixChildrenShapePosition((Shape) current, Collections.singletonList((View) current));
+			}
+		}
+	}
+
+	/**
+	 * 
+	 * @param shape
+	 *            the shape to fix
+	 * @param parents
+	 *            the graphical parents of the shape, excluding itself
+	 */
+	protected void fixChildrenShapePosition(final View shape, final List<View> parents) {
+		final List<?> children = shape.getChildren();
+		for (final Object current : children) {
+			final List<View> newParents = new ArrayList<View>(parents);
+			newParents.add((View) current);
+			if ((!(current instanceof ListCompartment)) && current instanceof BasicCompartment) { // we only need to fix location for children located in a basic compartement. It is not required for affixed noeds and others elements
+				fixChildrenShapePosition((View) current, newParents);
+			}
+			if (current instanceof Shape && ((Shape) current).eContainer() instanceof BasicCompartment) {// to ignore affixed nodes
+				final Bounds bounds = (Bounds) ((Shape) current).getLayoutConstraint();
+				if (null != bounds) {
+
+					final int X_offset = get_X_Offset((View) current, parents);
+					if (X_offset != 0) {
+						bounds.setX(bounds.getX() + X_offset);
+					}
+					final int Y_offset = get_Y_Offset((View) current, parents);
+					if (Y_offset != 0) {
+						bounds.setY(bounds.getY() + Y_offset);
+					}
+				}
+				fixChildrenShapePosition((View) current, newParents);
+			}
+		}
+	}
+
+	/**
+	 * 
+	 * @param viewToLocate
+	 *            the view to locate
+	 * @param parents
+	 *            the graphical parents of the view to locate
+	 * @return
+	 * 		the y offset to locate the view
+	 */
+	private int get_Y_Offset(final View viewToLocate, final List<View> parents) {
+		int offset = 0;
+		for (final View current : parents) {
+			offset += get_Y_OffsetFor(current);
+		}
+		return offset;
+	}
+
+	/**
+	 * 
+	 * @param viewToLocate
+	 *            the view to locate
+	 * @param parents
+	 *            the graphical parents of the view to locate
+	 * @return
+	 * 		the x offset to locate the view
+	 */
+	private int get_X_Offset(final View viewToLocate, final List<View> parents) {
+		int offset = 0;
+		for (final View current : parents) {
+			offset += get_X_OffsetFor(current);
+		}
+		return offset;
+
+	}
+
+	/**
+	 * 
+	 * @param view
+	 *            a view
+	 * @return
+	 * 		the x offset to apply to children of this view
+	 */
+	protected abstract int get_X_OffsetFor(final View view);
+
+	/**
+	 * 
+	 * @param view
+	 *            a view
+	 * @return
+	 * 		the yF offset to apply to children of this view
+	 */
+	protected abstract int get_Y_OffsetFor(final View view);
+
+	/**
+	 * 
+	 * @param diagram
+	 *            a diagram
+	 * @return
+	 * 		<code>true</code> if this manage the given diagram
+	 */
+	protected abstract boolean isManagedDiagram(Diagram diagram);
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/Activator.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/Activator.java
new file mode 100644
index 0000000..34375d6
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/Activator.java
@@ -0,0 +1,71 @@
+/*****************************************************************************
+ * Copyright (c) 2015 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Vincent Lorenzo (CEa LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.blackboxes;
+
+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.interoperability.rpy.blackboxes"; //$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/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/ConstantsBlackboxes.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/ConstantsBlackboxes.java
new file mode 100644
index 0000000..0663166
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/ConstantsBlackboxes.java
@@ -0,0 +1,44 @@
+/*****************************************************************************
+ * Copyright (c) 2017 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.blackboxes;
+
+/**
+ * This blackboxes provides constants used by the RPy files
+ *
+ */
+public class ConstantsBlackboxes {
+
+	/** The EAnnotation source key to get the rpy filename owning the object */
+	public static final String EANNOTATION_SOURCE__RPY_FILENAME = "Rpy Filename"; //$NON-NLS-1$
+
+	/** The EAnnotation detail key key to get the rpy filename owning the object */
+	public static final String EANNOTATION_DETAIL__RPY_FILENAME_KEY = "fileName"; //$NON-NLS-1$
+
+	/**
+	 * @see EANNOTATION_SOURCE__RPY_FILENAME
+	 * @return the EAnnotation source key to get the rpy filename owning the object
+	 */
+	public String getEAnnotationFileNameSourceKey() {
+		return EANNOTATION_SOURCE__RPY_FILENAME;
+	}
+
+	/**
+	 * @see EANNOTATION_DETAIL__RPY_FILENAME_KEY
+	 * @return the EAnnotation detail key key to get the rpy filename owning the object
+	 */
+	public String getEAnnotationFileNameDetailKey() {
+		return EANNOTATION_DETAIL__RPY_FILENAME_KEY;
+	}
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/Rpy2PapyrusNotationBlackboxes.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/Rpy2PapyrusNotationBlackboxes.java
new file mode 100644
index 0000000..8a9da32
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/Rpy2PapyrusNotationBlackboxes.java
@@ -0,0 +1,858 @@
+/*****************************************************************************
+ * Copyright (c) 2015 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Sebastien Revol (CEA LIST) sebastien.revol@cea.fr - Initial API and implementation
+ *  Vincent Lorenzo (CEa LIST) vincent.lorenzo@cea.fr - bugs 496176, 499237 
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.blackboxes;
+
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.draw2d.ui.geometry.LineSeg;
+import org.eclipse.gmf.runtime.draw2d.ui.geometry.LineSeg.KeyPoint;
+import org.eclipse.gmf.runtime.notation.Connector;
+import org.eclipse.gmf.runtime.notation.IdentityAnchor;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+import org.eclipse.gmf.runtime.notation.RelativeBendpoints;
+import org.eclipse.gmf.runtime.notation.datatype.RelativeBendpoint;
+import org.eclipse.m2m.qvt.oml.blackbox.java.Operation;
+import org.eclipse.m2m.qvt.oml.blackbox.java.Operation.Kind;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryFactory;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape;
+import org.eclipse.papyrus.interoperability.rpy.geometry.utils.RpyShapeOperations;
+import org.eclipse.papyrus.interoperability.rpy.rpymetamodel.CGIAnchor;
+import org.eclipse.papyrus.interoperability.rpy.rpymetamodel.CGIAssociationEnd;
+import org.eclipse.papyrus.interoperability.rpy.rpymetamodel.CGIDiagramFrame;
+import org.eclipse.papyrus.interoperability.rpy.rpymetamodel.CGIObjectLink;
+import org.eclipse.papyrus.interoperability.rpy.rpymetamodel.GraphElementsType;
+
+/**
+ * @author sr246418
+ *
+ */
+
+public class Rpy2PapyrusNotationBlackboxes {
+
+	/** the size of the transform field */
+	public static final int M_TRANSFORM_SIZE = 6;
+
+	/** the index of intersting value in m transform */
+	public static final int M_TRANSFORM_X_RATIO_INDEX = 0;
+	public static final int M_TRANSFORM_Y_RATIO_INDEX = 3;
+	public static final int M_TRANSFORM_X_POSITION_INDEX = 4;
+	public static final int M_TRANSFORM_Y_POSITION_INDEX = 5;
+
+	/** the index of the x and y value for each points of the rectangle */
+	public static final int M_POLYGON__RECTANGLE_NB_POINTS_INDEX = 0;
+
+	/** the index of the x and y value for each points of the rectangle */
+	public static final int M_POLYGON__RECTANGLE_TOP_LEFT_CORNER_X_INDEX = 1;
+	public static final int M_POLYGON__RECTANGLE_TOP_LEFT_CORNER_Y_INDEX = 2;
+	public static final int M_POLYGON__RECTANGLE_BOTTOM_LEFT_CORNER_X_INDEX = 3;
+	public static final int M_POLYGON__RECTANGLE_BOTTOM_LEFT_CORNER_Y_INDEX = 4;
+	public static final int M_POLYGON__RECTANGLE_BOTTOM_RIGHT_CORNER_X_INDEX = 5;
+	public static final int M_POLYGON__RECTANGLE_BOTTOM_RIGHT_CORNER__Y_INDEX = 6;
+	public static final int M_POLYGON__RECTANGLE_TOP_RIGHT_CORNER_X_INDEX = 7;
+	public static final int M_POLYGON__RECTANGLE_TOP_RIGHT_CORNER_Y_INDEX = 8;
+
+	/** X and Y indexes for a point in an array */
+	public static final int X_INDEX = 0;
+	public static final int Y_INDEX = 1;
+
+	/** code returned when we are not able to get the wanted value */
+	public static final int ERROR_CODE = Integer.MAX_VALUE;
+
+	/** names of structural feature */
+	public static final String M_TRANSFORM = "m_transform"; //$NON-NLS-1$
+	public static final String M_POLYGON = "m_polygon"; //$NON-NLS-1$
+	public static final String M_pPARENT = "m_pParent"; //$NON-NLS-1$
+
+	// TODO : try to link me to GMF value!
+	private static final int MAGIC_NUMBER_FOR_ABSOLUTE_BENDPOINTS = -643984;
+
+	@Operation(kind = Kind.HELPER)
+	public boolean contains(final String aString, final String aPotentialSubString) {
+		if (null == aString || aPotentialSubString == null) {
+			return false;
+		}
+		return aString.contains(aPotentialSubString);
+	}
+
+	// TODO add GMF source and target object to get their size and location ?
+	// 0 : source, 1 : target, 2, ... bendpoints if required
+	// TODO : we advice to manage anchor and bendpoints in the same method, to be able to make required adjutment
+	/**
+	 * @param
+	 * 			a
+	 *            Rpy association
+	 * @param
+	 * 			result
+	 * @return a list, where the 2 first values are the source anchor and the target anchors.
+	 * 
+	 *         TODO update documentation when we will manage bendpoint too in the same method
+	 *         //TODO speak about the magic number
+	 *         //TODO try to set one anchor term to 0 or 1 each time
+	 *         //TODO : property m_line_style is not yet exploited : 0 is straight, 2 is rectilinear
+	 * 
+	 */
+	@Operation(kind = Kind.QUERY)
+	public void addAnchorsAndBendpoints(Object association, Connector result) {
+		if (!isARpyLink(association)) {
+			return;
+		}
+		// 1. we need to get all in absolute position
+		// find source and target anchor in absolute location
+		final List<String> rpySourceAnchorAsString = getM_SourcePort(association);
+		final List<String> rpyTargetAnchorAsString = getM_TargetPort(association);
+		final GraphElementsType sourceGraphicalObject = getM_pSource(association);
+		final GraphElementsType targetGraphicalObject = getM_pTarget(association);
+		final RpyShape sourceShape = RpyShapeOperations.createRpyShape(sourceGraphicalObject);
+		final RpyShape targetShape = RpyShapeOperations.createRpyShape(targetGraphicalObject);
+
+
+		final Point rpySourceAnchor = RpyGeometryFactory.eINSTANCE.createPoint();
+		rpySourceAnchor.setX(Double.valueOf(rpySourceAnchorAsString.get(0)));
+		rpySourceAnchor.setY(Double.valueOf(rpySourceAnchorAsString.get(1)));
+		final Point rpySourceAnchorInAbsolute = sourceShape.getTransform().multiply(rpySourceAnchor);
+
+
+		final Point rpyTargetAnchor = RpyGeometryFactory.eINSTANCE.createPoint();
+		rpyTargetAnchor.setX(Double.valueOf(rpyTargetAnchorAsString.get(0)));
+		rpyTargetAnchor.setY(Double.valueOf(rpyTargetAnchorAsString.get(1)));
+		final Point rpyTargetAnchorInAbsolute = targetShape.getTransform().multiply(rpyTargetAnchor);
+
+
+		// 2. determine bendpoints in absolute location
+		final List<String> rpyBendpointsAsString = getM_arrow(association);
+		final List<Point> rpyBendpointsInAbsolute = new ArrayList<Point>();
+		if (rpyBendpointsAsString.size() > 0) {
+			for (int i = 1; i < Integer.valueOf(rpyBendpointsAsString.get(0)) * 2; i = i + 2) {
+				Point newPoint = RpyGeometryFactory.eINSTANCE.createPoint();
+				newPoint.setX(Double.valueOf(rpyBendpointsAsString.get(i)));
+				newPoint.setY(Double.valueOf(rpyBendpointsAsString.get(i + 1)));
+				rpyBendpointsInAbsolute.add(newPoint);
+			}
+		}
+
+
+		// 3. here we get the source anchor, the target anchor and the bendpoints in absolute location
+		// it is here we could do some adjustment to fix round errors
+		// TODO : fix round errors!?
+		// /!\ fixing error could make problems for link linked to link ?
+		// bendpoint could be not in the good location, if we add/remove an offset to the compartemnt contents!
+
+		// 4. we can now determine source anchor, target anchor and bendpoints
+		final Point sourceAnchorInRelative = RpyGeometryFactory.eINSTANCE.createPoint();
+		sourceAnchorInRelative.setX(rpySourceAnchorInAbsolute.getX() - sourceShape.getAbsolutePosition().getX());
+		sourceAnchorInRelative.setY(rpySourceAnchorInAbsolute.getY() - sourceShape.getAbsolutePosition().getY());
+
+		final Point targetAnchorInRelative = RpyGeometryFactory.eINSTANCE.createPoint();
+		targetAnchorInRelative.setX(rpyTargetAnchorInAbsolute.getX() - targetShape.getAbsolutePosition().getX());
+		targetAnchorInRelative.setY(rpyTargetAnchorInAbsolute.getY() - targetShape.getAbsolutePosition().getY());
+
+		final Point firstBendpoint = RpyGeometryFactory.eINSTANCE.createPoint();
+		firstBendpoint.setX(rpySourceAnchorInAbsolute.getX());
+		firstBendpoint.setY(rpySourceAnchorInAbsolute.getY());
+
+		final Point lastBendpoint = RpyGeometryFactory.eINSTANCE.createPoint();
+		lastBendpoint.setX(rpyTargetAnchorInAbsolute.getX());
+		lastBendpoint.setY(rpyTargetAnchorInAbsolute.getY());
+
+
+		// we create the bendpoints list
+		List<RelativeBendpoint> gmfBendpoints = new ArrayList<RelativeBendpoint>();
+		// source bendpoints
+		gmfBendpoints.add(new RelativeBendpoint(firstBendpoint.getIntX(), firstBendpoint.getIntY(), MAGIC_NUMBER_FOR_ABSOLUTE_BENDPOINTS, MAGIC_NUMBER_FOR_ABSOLUTE_BENDPOINTS));
+
+		// intermediate bendpoints
+		for (Point current : rpyBendpointsInAbsolute) {
+			gmfBendpoints.add(new RelativeBendpoint(current.getIntX(), current.getIntY(), MAGIC_NUMBER_FOR_ABSOLUTE_BENDPOINTS, MAGIC_NUMBER_FOR_ABSOLUTE_BENDPOINTS));
+		}
+
+		// last bendpoints
+		gmfBendpoints.add(new RelativeBendpoint(lastBendpoint.getIntX(), lastBendpoint.getIntY(), MAGIC_NUMBER_FOR_ABSOLUTE_BENDPOINTS, MAGIC_NUMBER_FOR_ABSOLUTE_BENDPOINTS));
+
+		// we register the bendpoints into the connector
+		RelativeBendpoints bendpoints12 = NotationFactory.eINSTANCE.createRelativeBendpoints();
+		bendpoints12.setPoints(gmfBendpoints);
+		result.setBendpoints(bendpoints12);
+
+		IdentityAnchor sourceAnchor = NotationFactory.eINSTANCE.createIdentityAnchor();
+		sourceAnchor.setId(getAnchorFromAbsolutePosition(sourceShape, sourceAnchorInRelative));
+
+		IdentityAnchor targetAnchor = NotationFactory.eINSTANCE.createIdentityAnchor();
+		targetAnchor.setId(getAnchorFromAbsolutePosition(targetShape, targetAnchorInRelative));
+
+		result.setSourceAnchor(sourceAnchor);
+		result.setTargetAnchor(targetAnchor);
+		//
+
+		// TODO : rewritte anchor code
+		// String sourceAnchor = getAnchorFromAbsolutePosition(sourceShape, rpySourceAnchorAsString);
+		// String targetAnchor = getAnchorFromAbsolutePosition(targetShape, rpyTargetAnchorAsString);
+		// List<String> returnedValues = new ArrayList<>();
+		// returnedValues.add(sourceAnchor);
+		// returnedValues.add(targetAnchor);
+		//
+		// return returnedValues;
+	}
+
+	/**
+	 * 
+	 * @param anObject
+	 *            an object
+	 * @return
+	 * 		<code>true</code> if the object can be considered as a rpy link
+	 */
+	private boolean isARpyLink(final Object anObject) {
+		if (getM_pSource(anObject) != null && getM_pTarget(anObject) != null && getM_SourcePort(anObject).size() == 2 && getM_TargetPort(anObject).size() == 2) {
+			return true;
+		}
+		return false;
+	}
+
+	private List<String> getM_arrow(Object anObject) {
+		if (anObject instanceof CGIObjectLink) {
+			return ((CGIObjectLink) anObject).getM_arrow();
+		} else if (anObject instanceof CGIAnchor) {
+			return ((CGIAnchor) anObject).getM_arrow();
+		} else if (anObject instanceof CGIAssociationEnd) {
+			return ((CGIAssociationEnd) anObject).getM_arrow();
+		}
+		return Collections.emptyList();
+	}
+
+	private GraphElementsType getM_pSource(Object anObject) {
+		if (anObject instanceof CGIObjectLink) {
+			return (GraphElementsType) ((CGIObjectLink) anObject).getM_pSource();
+		} else if (anObject instanceof CGIAnchor) {
+			return (GraphElementsType) ((CGIAnchor) anObject).getM_pSource();
+		} else if (anObject instanceof CGIAssociationEnd) {
+			return (GraphElementsType) ((CGIAssociationEnd) anObject).getM_pSource();
+		}
+		return null;
+	}
+
+	private GraphElementsType getM_pTarget(Object anObject) {
+		if (anObject instanceof CGIObjectLink) {
+			return (GraphElementsType) ((CGIObjectLink) anObject).getM_pTarget();
+		} else if (anObject instanceof CGIAnchor) {
+			return (GraphElementsType) ((CGIAnchor) anObject).getM_pTarget();
+		} else if (anObject instanceof CGIAssociationEnd) {
+			return (GraphElementsType) ((CGIAssociationEnd) anObject).getM_pTarget();
+		}
+		return null;
+	}
+
+	private List<String> getM_SourcePort(Object anObject) {
+		if (anObject instanceof CGIObjectLink) {
+			return ((CGIObjectLink) anObject).getM_SourcePort();
+		} else if (anObject instanceof CGIAnchor) {
+			return ((CGIAnchor) anObject).getM_SourcePort();
+		} else if (anObject instanceof CGIAssociationEnd) {
+			return ((CGIAssociationEnd) anObject).getM_SourcePort();
+		}
+		return Collections.emptyList();
+	}
+
+	private List<String> getM_TargetPort(Object anObject) {
+		if (anObject instanceof CGIObjectLink) {
+			return ((CGIObjectLink) anObject).getM_TargetPort();
+		} else if (anObject instanceof CGIAnchor) {
+			return ((CGIAnchor) anObject).getM_TargetPort();
+		} else if (anObject instanceof CGIAssociationEnd) {
+			return ((CGIAssociationEnd) anObject).getM_TargetPort();
+		}
+		return Collections.emptyList();
+	}
+
+
+	/** This method has been developed (not yet finished and not yet usable) to be able to create link on link */
+	@Operation(kind = Kind.QUERY)
+	// TODO : finish me!
+	public void addAnchorsAndBendpoints_V2_FOR_LinkONLink(CGIAnchor association, Connector result) {
+		// 1. we need to get all in absolute position
+		// find source and target anchor in absolute location
+		final List<String> rpySourceAnchorAsString = association.getM_SourcePort();
+		final List<String> rpyTargetAnchorAsString = association.getM_TargetPort();
+		final GraphElementsType sourceGraphicalObject = (GraphElementsType) association.getM_pSource();
+		final GraphElementsType targetGraphicalObject = (GraphElementsType) association.getM_pTarget();
+		Point newTargetAnchorInAbsolute = null;// RpyGeometryFactory.eINSTANCE.createPoint();
+
+		// ------------------this part of the code has been done to be able to create anchor on a link (comment link linked to an other link!!!!-----
+
+		if (targetGraphicalObject instanceof CGIObjectLink) {// we are connected on a link, so rpyTargetAnchorAsString could have a first value in % and the second one seem be 0
+			CGIObjectLink link = ((CGIObjectLink) targetGraphicalObject);
+			Connector tmp = NotationFactory.eINSTANCE.createConnector();
+			addAnchorsAndBendpoints(link, tmp);
+			// 1. calculate the full length of the link:
+			final RelativeBendpoints bendpoints = (RelativeBendpoints) tmp.getBendpoints();
+			double length = 0;
+			List<LineSeg> linesSegs = new ArrayList<LineSeg>();
+			// Iterator<RelativeBendpoint> iter = bendpoints.getPoints().iterator();
+			List<Double> cumulatedLength = new ArrayList<>();
+			for (int i = 1; i < bendpoints.getPoints().size(); i++) {
+				RelativeBendpoint pt1 = (RelativeBendpoint) bendpoints.getPoints().get(i - 1);
+				RelativeBendpoint pt2 = (RelativeBendpoint) bendpoints.getPoints().get(i);
+				linesSegs.add(new LineSeg(new org.eclipse.draw2d.geometry.Point(pt1.getSourceX(), pt1.getSourceY()), new org.eclipse.draw2d.geometry.Point(pt2.getSourceX(), pt2.getSourceY())));
+			}
+
+
+			for (LineSeg lineSeg : linesSegs) {
+				length += lineSeg.length();
+				cumulatedLength.add(Double.valueOf(length));
+			}
+
+			double percentage = Double.valueOf(rpyTargetAnchorAsString.get(0));
+			double wantedLength = length * percentage / 100.00;
+
+			int wantedLineSeg = -1;
+			int iter = 0;
+			while (wantedLineSeg == -1 && iter < cumulatedLength.size()) {
+				if (cumulatedLength.get(iter) > wantedLength) {
+					// i is the index of the lineseg on which the good length is obtained
+					wantedLineSeg = iter;
+				}
+			}
+
+			double needToCrossOnThisLineSeg = -1;
+			if (iter == 0) {
+				needToCrossOnThisLineSeg = wantedLength;
+			} else {
+				needToCrossOnThisLineSeg = wantedLength - cumulatedLength.get(wantedLineSeg - 1);
+			}
+			LineSeg w = linesSegs.get(iter);
+			double percentage12 = 100 * needToCrossOnThisLineSeg / linesSegs.get(iter).length();
+			double xOffset = ((double) w.getTerminus().x - (double) w.getOrigin().x) * percentage12 / 100.0;
+			double yOffset = ((double) w.getTerminus().y - (double) w.getOrigin().y) * percentage12 / 100.0;
+			newTargetAnchorInAbsolute = RpyGeometryFactory.eINSTANCE.createPoint();
+			newTargetAnchorInAbsolute.setX(w.getOrigin().x + xOffset);
+			newTargetAnchorInAbsolute.setY(w.getOrigin().y + yOffset);
+
+			org.eclipse.draw2d.geometry.Point ptResult = new org.eclipse.draw2d.geometry.Point();
+			KeyPoint toto = KeyPoint.ORIGIN;
+			w.pointOn((long) needToCrossOnThisLineSeg, toto, ptResult);
+
+			// double tmpLength = 0;
+			// Iterator<LineSeg> iter = linesSegs.iterator();
+			//
+			// while (tmpLength < wantedLength && iter.hasNext()) {
+			// LineSeg current = iter.next();
+			// tmpLength += current.length();
+			// }
+			//
+			// int segIndex = -1;
+			// for (int i = 0; i < cumulatedLength.size(); i++) {
+			// if (wantedLength > cumulatedLength.get(i)) {
+			// segIndex = i - 1;
+			// }
+			// }
+			// double requiredLengthOnThisSeg = wantedLength - cumulatedLength.get(segIndex);
+			int j = 0;
+			j++;
+			Connector c = null;
+			// c.
+		}
+
+		final RpyShape sourceShape = RpyShapeOperations.createRpyShape(sourceGraphicalObject);
+		final RpyShape targetShape = RpyShapeOperations.createRpyShape(targetGraphicalObject);
+
+
+		final Point rpySourceAnchor = RpyGeometryFactory.eINSTANCE.createPoint();
+		rpySourceAnchor.setX(Double.valueOf(rpySourceAnchorAsString.get(0)));
+		rpySourceAnchor.setY(Double.valueOf(rpySourceAnchorAsString.get(1)));
+		final Point rpySourceAnchorInAbsolute = sourceShape.getTransform().multiply(rpySourceAnchor);
+
+
+		final Point rpyTargetAnchor = RpyGeometryFactory.eINSTANCE.createPoint();
+		rpyTargetAnchor.setX(Double.valueOf(rpyTargetAnchorAsString.get(0)));
+		rpyTargetAnchor.setY(Double.valueOf(rpyTargetAnchorAsString.get(1)));
+		final Point rpyTargetAnchorInAbsolute;
+		if (newTargetAnchorInAbsolute == null) {
+			rpyTargetAnchorInAbsolute = targetShape.getTransform().multiply(rpyTargetAnchor);
+		} else {
+			rpyTargetAnchorInAbsolute = newTargetAnchorInAbsolute;
+		}
+
+		// 2. determine bendpoints in absolute location
+		final List<String> rpyBendpointsAsString = association.getM_arrow();
+		final List<Point> rpyBendpointsInAbsolute = new ArrayList<Point>();
+		if (rpyBendpointsAsString.size() > 0) {
+			for (int i = 1; i < Integer.valueOf(rpyBendpointsAsString.get(0)) * 2; i = i + 2) {
+				Point newPoint = RpyGeometryFactory.eINSTANCE.createPoint();
+				newPoint.setX(Double.valueOf(rpyBendpointsAsString.get(i)));
+				newPoint.setY(Double.valueOf(rpyBendpointsAsString.get(i + 1)));
+				rpyBendpointsInAbsolute.add(newPoint);
+			}
+		}
+
+
+		// 3. here we get the source anchor, the target anchor and the bendpoints in absolute location
+		// it is here we could do some adjustment to fix round errors
+		// TODO : fix round errors!?
+		// /!\ fixing error could make problems for link linked to link ?
+		// bendpoint could be not in the good location, if we add/remove an offset to the compartemnt contents!
+
+
+
+		// 4. we can now determine source anchor, target anchor and bendpoints
+		final Point sourceAnchorInRelative = RpyGeometryFactory.eINSTANCE.createPoint();
+		sourceAnchorInRelative.setX(rpySourceAnchorInAbsolute.getX() - sourceShape.getAbsolutePosition().getX());
+		sourceAnchorInRelative.setY(rpySourceAnchorInAbsolute.getY() - sourceShape.getAbsolutePosition().getY());
+
+		final Point targetAnchorInRelative = RpyGeometryFactory.eINSTANCE.createPoint();
+		targetAnchorInRelative.setX(rpyTargetAnchorInAbsolute.getX() - targetShape.getAbsolutePosition().getX());
+		targetAnchorInRelative.setY(rpyTargetAnchorInAbsolute.getY() - targetShape.getAbsolutePosition().getY());
+
+		final Point firstBendpoint = RpyGeometryFactory.eINSTANCE.createPoint();
+		firstBendpoint.setX(rpySourceAnchorInAbsolute.getX());
+		firstBendpoint.setY(rpySourceAnchorInAbsolute.getY());
+
+		final Point lastBendpoint = RpyGeometryFactory.eINSTANCE.createPoint();
+		lastBendpoint.setX(rpyTargetAnchorInAbsolute.getX());
+		lastBendpoint.setY(rpyTargetAnchorInAbsolute.getY());
+
+
+		// we create the bendpoints list
+		List<RelativeBendpoint> gmfBendpoints = new ArrayList<RelativeBendpoint>();
+		// source bendpoints
+		gmfBendpoints.add(new RelativeBendpoint(firstBendpoint.getIntX(), firstBendpoint.getIntY(), MAGIC_NUMBER_FOR_ABSOLUTE_BENDPOINTS, MAGIC_NUMBER_FOR_ABSOLUTE_BENDPOINTS));
+
+		// intermediate bendpoints
+		for (Point current : rpyBendpointsInAbsolute) {
+			gmfBendpoints.add(new RelativeBendpoint(current.getIntX(), current.getIntY(), MAGIC_NUMBER_FOR_ABSOLUTE_BENDPOINTS, MAGIC_NUMBER_FOR_ABSOLUTE_BENDPOINTS));
+		}
+
+		// last bendpoints
+		gmfBendpoints.add(new RelativeBendpoint(lastBendpoint.getIntX(), lastBendpoint.getIntY(), MAGIC_NUMBER_FOR_ABSOLUTE_BENDPOINTS, MAGIC_NUMBER_FOR_ABSOLUTE_BENDPOINTS));
+
+		// we register the bendpoints into the connector
+		RelativeBendpoints bendpoints12 = NotationFactory.eINSTANCE.createRelativeBendpoints();
+		bendpoints12.setPoints(gmfBendpoints);
+		result.setBendpoints(bendpoints12);
+
+		IdentityAnchor sourceAnchor = NotationFactory.eINSTANCE.createIdentityAnchor();
+		sourceAnchor.setId(getAnchorFromAbsolutePosition(sourceShape, sourceAnchorInRelative));
+
+		IdentityAnchor targetAnchor = NotationFactory.eINSTANCE.createIdentityAnchor();
+		targetAnchor.setId(getAnchorFromAbsolutePosition(targetShape, targetAnchorInRelative));
+
+		result.setSourceAnchor(sourceAnchor);
+		result.setTargetAnchor(targetAnchor);
+	}
+
+	protected String getAnchorFromAbsolutePosition(RpyShape shape, Point point) {
+		float newxRatio = 0;// = new Float(xPort) / new Float(shape.getWidth());
+		float newyRatio = 0;// = new Float(yPort) / new Float(shape.getHeight());
+		newxRatio = new Float(point.getX()) / new Float(shape.getWidth());
+		newyRatio = new Float(point.getY()) / new Float(shape.getHeight());
+		if (newxRatio > 1) {
+			newxRatio = 1;
+		}
+		if (newyRatio > 1) {
+			newyRatio = 1;
+		}
+
+		String id = "(" + newxRatio + "," + newyRatio + ")"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		return id;
+	}
+
+	@Deprecated
+	protected String getAnchorFromAbsolutePosition(RpyShape shape, List<String> port) {
+		Point point = RpyGeometryFactory.eINSTANCE.createPoint();
+		point.setX(Double.valueOf(port.get(0)));
+		point.setY(Double.valueOf(port.get(1)));
+		Point res = shape.getTransform().multiply(point);
+		res.setX(res.getX() - shape.getAbsolutePosition().getX());
+		res.setY(res.getY() - shape.getAbsolutePosition().getY());
+
+		double[] topLeft = new double[] { shape.getParentRelativePosition().getX(), shape.getParentRelativePosition().getY() };
+		double[] topRight = new double[] { shape.getParentRelativePosition().getX() + (double) shape.getWidth(), shape.getParentRelativePosition().getY() };
+		double[] bottomLeft = new double[] { shape.getParentRelativePosition().getX(), shape.getParentRelativePosition().getY() + (double) shape.getHeight() };
+
+		double xPort = Double.parseDouble(port.get(0));
+		if (xPort < topLeft[X_INDEX]) {
+			xPort = topLeft[X_INDEX];
+		}
+		if (xPort > topRight[X_INDEX]) {
+			xPort = topRight[X_INDEX];
+		}
+
+		double yPort = Double.parseDouble(port.get(1));
+		if (yPort < topLeft[Y_INDEX]) {
+			yPort = topLeft[Y_INDEX];
+		}
+		if (yPort > bottomLeft[Y_INDEX]) {
+			yPort = bottomLeft[Y_INDEX];
+		}
+
+		float newxRatio = new Float(xPort) / new Float(shape.getWidth());
+		float newyRatio = new Float(yPort) / new Float(shape.getHeight());
+		newxRatio = new Float(res.getX()) / new Float(shape.getWidth());
+		newyRatio = new Float(res.getY()) / new Float(shape.getHeight());
+		if (newxRatio > 1) {
+			newxRatio = 1;
+		}
+		if (newyRatio > 1) {
+			newyRatio = 1;
+		}
+
+		String id = "(" + newxRatio + "," + newyRatio + ")"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		return id;
+	}
+
+	@Operation(kind = Kind.HELPER)
+	public String getAnchorId(List<String> polygon, List<String> transform, List<String> port) {
+
+		// int[] topLeft = new int[] { Integer.parseInt(polygon.get(1)), Integer.parseInt(polygon.get(2)) };
+
+		int[] topLeft = new int[] { Integer.parseInt(polygon.get(M_POLYGON__RECTANGLE_TOP_LEFT_CORNER_X_INDEX)), Integer.parseInt(polygon.get(M_POLYGON__RECTANGLE_TOP_LEFT_CORNER_Y_INDEX)) };
+		int[] topRight = new int[] { Integer.parseInt(polygon.get(M_POLYGON__RECTANGLE_TOP_RIGHT_CORNER_X_INDEX)), Integer.parseInt(polygon.get(M_POLYGON__RECTANGLE_TOP_RIGHT_CORNER_Y_INDEX)) };
+		int[] bottomLeft = new int[] { Integer.parseInt(polygon.get(M_POLYGON__RECTANGLE_BOTTOM_LEFT_CORNER_X_INDEX)), Integer.parseInt(polygon.get(M_POLYGON__RECTANGLE_BOTTOM_LEFT_CORNER_Y_INDEX)) };
+
+		int xPort = Integer.parseInt(port.get(0));
+		if (xPort < topLeft[X_INDEX]) {
+			xPort = topLeft[X_INDEX];
+		}
+		if (xPort > topRight[X_INDEX]) {
+			xPort = topRight[X_INDEX];
+		}
+
+		int yPort = Integer.parseInt(port.get(1));
+		if (yPort < topLeft[Y_INDEX]) {
+			yPort = topLeft[Y_INDEX];
+		}
+		if (yPort > bottomLeft[Y_INDEX]) {
+			yPort = bottomLeft[Y_INDEX];
+		}
+
+		float newxRatio = new Float(xPort) / new Float(getRelativeWidth(topRight[0], topLeft[0]));
+		float newyRatio = new Float(yPort) / new Float(getRelativeHeight(bottomLeft[1], topLeft[1]));
+
+		if (newxRatio > 1) {
+			newxRatio = 1;
+		}
+		if (newyRatio > 1) {
+			newyRatio = 1;
+		}
+
+		String id = "(" + newxRatio + "," + newyRatio + ")"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+
+		return id;
+
+	}
+
+	public static int getRelativeHeight(int a, int b) {
+		return (a - b);
+	}
+
+	public static int getRelativeWidth(int a, int b) {
+		return (a - b);
+	}
+
+	/**
+	 * 
+	 * @param polygon
+	 * @param transform
+	 * @return
+	 * 
+	 * @deprecated since 0.7
+	 */
+	@Deprecated
+	@Operation(kind = Kind.HELPER)
+	public int getStateHeight(List<String> polygon, List<String> transform) {
+
+		// State Partition (top left, top right, bottom right, bottom left) not
+		// same for classes
+		int[] topLeft = new int[] { Integer.parseInt(polygon.get(1)), Integer.parseInt(polygon.get(2)) };
+		int[] topRight = new int[] { Integer.parseInt(polygon.get(3)), Integer.parseInt(polygon.get(4)) };
+		int[] bottomRight = new int[] { Integer.parseInt(polygon.get(5)), Integer.parseInt(polygon.get(6)) };
+		int[] bottomLeft = new int[] { Integer.parseInt(polygon.get(7)), Integer.parseInt(polygon.get(8)) };
+		float xRatio = Float.parseFloat(transform.get(0));
+		float yRatio = Float.parseFloat(transform.get(3));
+		return Math.round(yRatio * (bottomLeft[1] - topLeft[1]));
+	}
+
+	/**
+	 * 
+	 * @param polygon
+	 * @param transform
+	 * @return
+	 * 
+	 * @deprecated since 0.7
+	 */
+	@Deprecated
+	@Operation(kind = Kind.HELPER)
+	public int getStateWidth(List<String> polygon, List<String> transform) {
+		int[] topLeft = new int[] { Integer.parseInt(polygon.get(1)), Integer.parseInt(polygon.get(2)) };
+		int[] topRight = new int[] { Integer.parseInt(polygon.get(3)), Integer.parseInt(polygon.get(4)) };
+		int[] bottomRight = new int[] { Integer.parseInt(polygon.get(5)), Integer.parseInt(polygon.get(6)) };
+		int[] bottomLeft = new int[] { Integer.parseInt(polygon.get(7)), Integer.parseInt(polygon.get(8)) };
+		float xRatio = Float.parseFloat(transform.get(0));
+		float yRatio = Float.parseFloat(transform.get(3));
+		return Math.round(xRatio * (topRight[0] - topLeft[0]));
+	}
+
+	/**
+	 * 
+	 * @param polygon
+	 * @param transform
+	 * @return
+	 * 
+	 * @deprecated since 0.7
+	 */
+	@Deprecated
+	@Operation(kind = Kind.HELPER)
+	public int getClassHeight(List<String> polygon, List<String> transform) {
+
+		// State Partition (top left, top right, bottom right, bottom left) not
+		// same for classes
+		int[] topLeft = new int[] { Integer.parseInt(polygon.get(1)), Integer.parseInt(polygon.get(2)) };
+		int[] bottomLeft = new int[] { Integer.parseInt(polygon.get(3)), Integer.parseInt(polygon.get(4)) };
+		int[] bottomRight = new int[] { Integer.parseInt(polygon.get(5)), Integer.parseInt(polygon.get(6)) };
+		int[] topRight = new int[] { Integer.parseInt(polygon.get(7)), Integer.parseInt(polygon.get(8)) };
+		float xRatio = Float.parseFloat(transform.get(0));
+		float yRatio = Float.parseFloat(transform.get(3));
+		return Math.round(yRatio * (bottomLeft[1] - topLeft[1]));
+	}
+
+	@Operation(kind = Kind.HELPER)
+	public int getClassWidth(List<String> polygon, List<String> transform) {
+		int[] topLeft = new int[] { Integer.parseInt(polygon.get(1)), Integer.parseInt(polygon.get(2)) };
+		int[] bottomLeft = new int[] { Integer.parseInt(polygon.get(3)), Integer.parseInt(polygon.get(4)) };
+		int[] bottomRight = new int[] { Integer.parseInt(polygon.get(5)), Integer.parseInt(polygon.get(6)) };
+		int[] topRight = new int[] { Integer.parseInt(polygon.get(7)), Integer.parseInt(polygon.get(8)) };
+		float xRatio = Float.parseFloat(transform.get(0));
+		float yRatio = Float.parseFloat(transform.get(3));
+		return Math.round(xRatio * (topRight[0] - topLeft[0]));
+	}
+
+
+	/**
+	 * 
+	 * @param m_polygon
+	 *            the field polygon
+	 * @param m_transform
+	 *            the field transform
+	 * @return the width of the object
+	 * @deprecated since 0.7. use others method instead
+	 */
+	@Deprecated
+	public int getWidth(List<String> m_polygon, List<String> m_transform) {
+		int[] topLeft = new int[] { Integer.parseInt(m_polygon.get(1)), Integer.parseInt(m_polygon.get(2)) };
+		// int[] bottomLeft = new int[] { Integer.parseInt(polygon.get(3)), Integer.parseInt(polygon.get(4)) };
+		// int[] bottomRight = new int[] { Integer.parseInt(polygon.get(5)), Integer.parseInt(polygon.get(6)) };
+		int[] topRight = new int[] { Integer.parseInt(m_polygon.get(7)), Integer.parseInt(m_polygon.get(8)) };
+		float xRatio = Float.parseFloat(m_transform.get(0));
+		// float yRatio = Float.parseFloat(transform.get(3));
+		return Math.round(xRatio * (topRight[0] - topLeft[0]));
+	}
+
+	/**
+	 * 
+	 * @param polygon
+	 *            the field polygon
+	 * @param transform
+	 *            the field transform
+	 * @return the height of the object
+	 * @deprecated since 0.7. use others method instead
+	 */
+	@Deprecated
+	public int getHeight(List<String> polygon, List<String> transform) {
+		int[] topLeft = new int[] { Integer.parseInt(polygon.get(1)), Integer.parseInt(polygon.get(2)) };
+		int[] bottomLeft = new int[] { Integer.parseInt(polygon.get(3)), Integer.parseInt(polygon.get(4)) };
+		// int[] bottomRight = new int[] { Integer.parseInt(polygon.get(5)), Integer.parseInt(polygon.get(6)) };
+		// int[] topRight = new int[] { Integer.parseInt(polygon.get(7)), Integer.parseInt(polygon.get(8)) };
+		// float xRatio = Float.parseFloat(transform.get(0));
+		float yRatio = Float.parseFloat(transform.get(3));
+		return Math.round(yRatio * (bottomLeft[1] - topLeft[1]));
+	}
+
+
+	/**
+	 * 
+	 * @param element
+	 *            a graphical element
+	 * @return
+	 * 		the X ratio to apply on the object to get its width
+	 */
+	@Operation(kind = Kind.HELPER)
+	public float get_X_Ratio(GraphElementsType element) {
+		float result = 1;
+		final List<String> mTransform = getTransformList(element);
+		if (null != mTransform && mTransform.size() == M_TRANSFORM_SIZE) {
+			result = Float.parseFloat(mTransform.get(M_TRANSFORM_X_RATIO_INDEX));
+			final GraphElementsType parent = getParent(element);
+			if (!(parent instanceof CGIDiagramFrame)) {
+				result = result * get_X_Ratio(parent);
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * 
+	 * @param element
+	 *            a graphical element
+	 * @return
+	 * 		the X ratio to apply on the object to get its height
+	 */
+	@Operation(kind = Kind.HELPER)
+	public float get_Y_Ratio(final GraphElementsType element) {
+		float result = 1;
+		final List<String> mTransform = getTransformList(element);
+		if (null != mTransform && mTransform.size() == M_TRANSFORM_SIZE) {
+			result = Float.parseFloat(mTransform.get(M_TRANSFORM_Y_RATIO_INDEX));
+			final GraphElementsType parent = getParent(element);
+			if (!(parent instanceof CGIDiagramFrame)) {
+				result = result * get_Y_Ratio(parent);
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * 
+	 * @param element
+	 *            a graphical element
+	 * @return
+	 * 		the value of the m_pParent field if it exits for the given object or <code>null</code> in other case
+	 */
+	private final GraphElementsType getParent(final GraphElementsType element) {
+		final EStructuralFeature paretnFeature = element.eClass().getEStructuralFeature("m_pParent"); //$NON-NLS-1$
+		if (null != paretnFeature) {
+			Object value = element.eGet(paretnFeature);
+			if (value instanceof GraphElementsType) {
+				return (GraphElementsType) value;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * 
+	 * @param element
+	 *            a graphical element
+	 * @return
+	 * 		the value of the m_Transform field if it exits for the given object or <code>null</code> in other case
+	 */
+	@SuppressWarnings("unchecked")
+	protected final List<String> getTransformList(final GraphElementsType element) {
+		List<String> returnedValues = new ArrayList<String>();
+		final EStructuralFeature mTransformFeature = element.eClass().getEStructuralFeature(M_TRANSFORM);
+		if (null != mTransformFeature) {
+			final Object mTransformValue = element.eGet(mTransformFeature);
+			if (mTransformValue instanceof List<?>) {
+				returnedValues.addAll((List<String>) mTransformValue);
+			}
+		}
+
+		// We can consider number in e as 0;
+		List<String> toReturn = new ArrayList<String>();
+		if (returnedValues.size() != 6) {
+			for (int i = 0; i < returnedValues.size(); i++) {
+				String tmp = returnedValues.get(i);
+				if (tmp.startsWith("e")) {
+					continue;
+				}
+				if (!tmp.startsWith("e") && returnedValues.size() > (i + 1)) {
+					String tmp2 = returnedValues.get(i + 1);
+					if (tmp2.startsWith("e")) {
+						tmp += tmp2;
+					}
+				}
+				toReturn.add(tmp);
+			}
+			returnedValues = toReturn;
+		}
+		for (int i = 0; i < returnedValues.size(); i++) {
+			String tmp = returnedValues.get(i);
+			if (tmp.contains("e-")) {
+				returnedValues.set(i, "0");
+			}
+		}
+
+		return returnedValues;
+	}
+
+	/**
+	 * 
+	 * @param element
+	 *            a graphical element
+	 * @return
+	 * 		the value of the m_Polygon field if it exits for the given object or <code>null</code> in other case
+	 */
+	@SuppressWarnings("unchecked")
+	protected final List<String> getPolygonList(GraphElementsType element) {
+		final EStructuralFeature mPolygonFeature = element.eClass().getEStructuralFeature(M_POLYGON);
+		if (null != mPolygonFeature) {
+			final Object mPolygonValue = element.eGet(mPolygonFeature);
+			if (mPolygonValue instanceof List<?>) {
+				return (List<String>) mPolygonValue;
+			}
+		}
+		final EStructuralFeature mPositionlygonFeature = element.eClass().getEStructuralFeature("m_position");
+		if (null != mPolygonFeature) {
+			final Object mPolygonValue = element.eGet(mPolygonFeature);
+			if (mPolygonValue instanceof List<?>) {
+				return (List<String>) mPolygonValue;
+			}
+		}
+		return null;
+	}
+
+	@Operation(kind = Kind.HELPER)
+	public int getRectangleWidth(final GraphElementsType element) {
+		RpyShape shape = RpyShapeOperations.createRpyShape(element);
+		return shape.getWidth();
+	}
+
+	@Operation(kind = Kind.HELPER)
+	public int getRectangleHeight(final GraphElementsType element) {
+		RpyShape shape = RpyShapeOperations.createRpyShape(element);
+		return shape.getHeight();
+	}
+
+	@Operation(kind = Kind.HELPER)
+	public int getX(final GraphElementsType element) {
+		RpyShape shape = RpyShapeOperations.createRpyShape(element);
+		return shape.getParentRelativePosition().getIntX();
+	}
+
+
+	@Operation(kind = Kind.HELPER)
+	public int getY(final GraphElementsType element) {
+		RpyShape shape = RpyShapeOperations.createRpyShape(element);
+		return shape.getParentRelativePosition().getIntY();
+	}
+
+	// TODO : move me into an upper plugin
+	/**
+	 * 
+	 * @param aString
+	 *            a string
+	 * @return the parsed result of the string or {@link Integer#MAX_VALUE} if a problem occurred
+	 */
+	protected final int stringToInteger(final String aString) {
+		int result = Integer.MAX_VALUE;
+		if (aString.contains(".")) { //$NON-NLS-1$
+			result = Float.valueOf(Float.parseFloat(aString)).intValue();
+		} else {
+			result = Integer.parseInt(aString);
+		}
+		return result;
+	}
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/VersioningBlackboxes.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/VersioningBlackboxes.java
new file mode 100644
index 0000000..828e3cd
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/VersioningBlackboxes.java
@@ -0,0 +1,121 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *   
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.blackboxes;
+
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.m2m.qvt.oml.blackbox.java.Operation;
+import org.eclipse.m2m.qvt.oml.blackbox.java.Operation.Kind;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.papyrus.infra.gmfdiag.common.reconciler.DiagramVersioningUtils;
+import org.osgi.framework.Bundle;
+
+/**
+ * @author VL222926
+ *
+ */
+public class VersioningBlackboxes {
+
+	/**
+	 * Name of the bundle used for versioning
+	 */
+	private static final String BUNDLE_NAME_FOR_VERSIONING = "org.eclipse.papyrus.interoperability.rpy"; //$NON-NLS-1$
+
+	/**
+	 * Strings used by the EAnnotation to save the Papyrus and the Rpy import version
+	 */
+	public static final String VERSIONING_EANNOTATION_SOURCE = "Imported from a Rpy Model"; //$NON-NLS-1$
+	public static final String VERSIONING_EANNOTATION_DETAIL_KEY_RPY_PROJECT_NAME = "Rpy Model Name"; //$NON-NLS-1$
+	public static final String VERSIONING_EANNOTATION_DETAIL_KEY_RPY_VERSION = "Rpy Version"; //$NON-NLS-1$
+	public static final String VERSIONING_EANNOTATION_DETAIL_KEY_PAPYRUS_RPY_IMPORT_BUNDLE_VERSION = "Papyrus Rpy Import Bundle Version"; //$NON-NLS-1$
+
+	public static final String COMPATIBILITY_VERSION = DiagramVersioningUtils.COMPATIBILITY_VERSION;
+
+	/**
+	 * 
+	 * @return
+	 * 		the version of the Papyrus bundle used to import Rpy model
+	 */
+	@Operation(kind = Kind.HELPER)
+	public String getImportBundleRpyVersion() {
+		final Bundle bundle = Platform.getBundle(BUNDLE_NAME_FOR_VERSIONING);
+		if (null != bundle) {
+			return bundle.getVersion().toString();
+		} else {
+			Activator.log.info(NLS.bind("Version of {0} not found.", BUNDLE_NAME_FOR_VERSIONING)); //$NON-NLS-1$
+		}
+
+		return "version not found"; //$NON-NLS-1$
+	}
+
+	/**
+	 * 
+	 * @return
+	 * 		the string used as key to save the Rpy project name
+	 */
+	@Operation(kind = Kind.HELPER)
+	public String getEAnnotationSourceNameForVersioning() {
+		return VERSIONING_EANNOTATION_SOURCE;
+	}
+
+	/**
+	 * 
+	 * @return
+	 * 		the string used as key to save the Rpy project name
+	 */
+	@Operation(kind = Kind.HELPER)
+	public String getKeyForRpyModelName() {
+		return VERSIONING_EANNOTATION_DETAIL_KEY_RPY_PROJECT_NAME;
+	}
+
+	/**
+	 * 
+	 * @return
+	 * 		the string used as key to save the Rpy version
+	 */
+	@Operation(kind = Kind.HELPER)
+	public String getKeyForRpyVersion() {
+		return VERSIONING_EANNOTATION_DETAIL_KEY_RPY_VERSION;
+	}
+
+	/**
+	 * 
+	 * @return
+	 * 		the string used as key to save the Papyrus Import Rpy Bundle version
+	 */
+	@Operation(kind = Kind.HELPER)
+	public String getKeyForPapyrusImportBundleVersion() {
+		return VERSIONING_EANNOTATION_DETAIL_KEY_PAPYRUS_RPY_IMPORT_BUNDLE_VERSION;
+	}
+
+	/**
+	 * 
+	 * @return
+	 * 		the string used as key to save the Papyrus Import Rpy Bundle version
+	 */
+	@Operation(kind = Kind.HELPER)
+	public String getDiagramCompatibilityVersionKey() {
+		return COMPATIBILITY_VERSION;
+	}
+
+	/**
+	 * 
+	 * @return
+	 * 		the version used to create the diagram to fill the NamedStyle called "diagram_compatibility_version";
+	 */
+	@Operation(kind = Kind.HELPER)
+	public String getDiagramCompatibilityVersion() {
+		return "1.2.0"; //$NON-NLS-1$
+	}
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/ecore/EcoreHelper.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/ecore/EcoreHelper.java
new file mode 100644
index 0000000..3fc8148
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/ecore/EcoreHelper.java
@@ -0,0 +1,45 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.blackboxes.ecore;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.m2m.qvt.oml.blackbox.java.Operation;
+import org.eclipse.m2m.qvt.oml.blackbox.java.Operation.Kind;
+
+/**
+ * @author VL222926
+ *
+ */
+public class EcoreHelper {
+
+	/**
+	 * This method allows to call eAllContents in a QVTo TransformationS
+	 * 
+	 * @return
+	 * 		a list with all the contents of the object
+	 */
+	@Operation(kind = Kind.HELPER)
+	public List<EObject> eAllContents(final EObject eobject) {
+		final TreeIterator<EObject> iter = eobject.eAllContents();
+		List<EObject> returnedList = new ArrayList<>();
+		while (iter.hasNext()) {
+			returnedList.add(iter.next());
+		}
+		return returnedList;
+	}
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/sysml11/NestedConnectorEndBlackboxes.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/sysml11/NestedConnectorEndBlackboxes.java
new file mode 100644
index 0000000..1d79bc6
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/sysml11/NestedConnectorEndBlackboxes.java
@@ -0,0 +1,131 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.blackboxes.sysml11;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.m2m.qvt.oml.blackbox.java.Operation;
+import org.eclipse.m2m.qvt.oml.blackbox.java.Operation.Kind;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.ConnectorEnd;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Type;
+
+/**
+ * This blackbox allows to calculate NestedConnectorEnd value
+ *
+ */
+public class NestedConnectorEndBlackboxes {
+
+	/**
+	 * 
+	 * @param connectorEnd
+	 *            a connector End
+	 * @return
+	 * 		<code>true</code> if the connector end must be stereotyped NestedConnectorEnd
+	 */
+	@Operation(kind = Kind.HELPER)
+	public boolean isNestedConnectorEndStereotypeRequired(final ConnectorEnd connectorEnd) {
+		return null != getNestedConnectorEndPropertyPath(connectorEnd) && getNestedConnectorEndPropertyPath(connectorEnd).size() > 0;
+	}
+
+	/**
+	 * 
+	 * @param connectorEnd
+	 *            a connector End
+	 * @return
+	 * 		The property path value to set to the stereotype NestedConnectorEnd
+	 */
+	@Operation(kind = Kind.HELPER)
+	public List<Property> getNestedConnectorEndPropertyPath(final ConnectorEnd connectorEnd) {
+		final Connector connector = (Connector) connectorEnd.getOwner();
+		final Classifier connectorOwner = (Classifier) connector.getOwner();
+		final List<Property> path = getPath(connectorOwner, (Property) connectorEnd.getRole());
+
+		if (path.size() == 1) {
+			path.clear();
+		} else if (path.size() == 2) {
+			final NamedElement first = (NamedElement) path.get(0);
+			final NamedElement second = (NamedElement) path.get(1);
+			if (second instanceof Port && first instanceof Property) {
+				path.clear();
+			}
+		} else if (!path.isEmpty()) {
+			path.remove(path.size() - 1);
+		}
+		return path;
+	}
+
+	/**
+	 * 
+	 * @param connectorOwner
+	 *            the owner of a given connector
+	 * @param roleOfTheConnectorEnd
+	 *            the role of a ConnectorEnd of the given Connector
+	 * @return
+	 * 		the full path to navigate from the connector to the connector end, including roleOfTheConnectorEnd itself
+	 */
+	private List<Property> getPath(Classifier connectorOwner, final Property roleOfTheConnectorEnd) {
+		final List<Property> path = new ArrayList<Property>();
+		final List<Property> allAtributtes = connectorOwner.getAllAttributes();
+		for (int i = 0; i < allAtributtes.size(); i++) {
+			final Property current = allAtributtes.get(i);
+			if (current == roleOfTheConnectorEnd) {
+				path.add(current);
+				break;
+			}
+		}
+		if (path.size() == 0) {
+			for (int i = 0; i < allAtributtes.size(); i++) {
+				final Property current = allAtributtes.get(i);
+				final Type type = current.getType();
+				if (type instanceof Classifier) {
+					List<Property> tmpPath = getPath((Classifier) type, roleOfTheConnectorEnd);
+					if (tmpPath.size() > 0) {
+						tmpPath.add(0, current);
+						path.addAll(tmpPath);
+						break;
+					}
+				}
+			}
+		}
+		return path;
+	}
+
+	/**
+	 * 
+	 * @param eobject
+	 *            an EObejct
+	 * @return
+	 * 		the list of all connectors owned directly and in sub-elements by this eobject
+	 */
+	public List<ConnectorEnd> getAllConnectorEnds(final Element eobject) {
+		final TreeIterator<EObject> iter = eobject.eAllContents();
+		final List<ConnectorEnd> connectors = new ArrayList<ConnectorEnd>();
+		while (iter.hasNext()) {
+			final EObject current = iter.next();
+			if (current instanceof ConnectorEnd) {
+				connectors.add((ConnectorEnd) current);
+			}
+		}
+		return connectors;
+	}
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/sysml11/diagrams/InternalBlockDiagramFixLayoutBlackboxes.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/sysml11/diagrams/InternalBlockDiagramFixLayoutBlackboxes.java
new file mode 100644
index 0000000..6c7e18e
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/sysml11/diagrams/InternalBlockDiagramFixLayoutBlackboxes.java
@@ -0,0 +1,75 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.blackboxes.sysml11.diagrams;
+
+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.interoperability.rpy.blackboxes.AbstractDiagramFixLayoutBlackboxes;
+
+/**
+ * @author VL222926
+ * 
+ *         Class to fix the location of the element of the SysML 1.1 Internal Block Diagram
+ *
+ */
+public class InternalBlockDiagramFixLayoutBlackboxes extends AbstractDiagramFixLayoutBlackboxes {
+
+	/**
+	 * @see org.eclipse.papyrus.interoperability.rpy.blackboxes.AbstractDiagramFixLayoutBlackboxes#fixLayout(org.eclipse.gmf.runtime.notation.Diagram)
+	 *
+	 * @param diagram
+	 */
+	@Override
+	public void fixLayout(Diagram diagram) {
+		super.fixLayout(diagram);// required, QVT framework is not able to call method without this override
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.interoperability.rpy.blackboxes.AbstractDiagramFixLayoutBlackboxes#isManagedDiagram(org.eclipse.gmf.runtime.notation.Diagram)
+	 *
+	 * @param diagram
+	 * @return
+	 */
+	@Override
+	protected boolean isManagedDiagram(final Diagram diagram) {
+		return "InternalBlock".equals(diagram.getType()); //$NON-NLS-1$
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.interoperability.rpy.blackboxes.AbstractDiagramFixLayoutBlackboxes#get_X_OffsetFor(org.eclipse.gmf.runtime.notation.View)
+	 *
+	 * @param view
+	 * @return
+	 */
+	@Override
+	protected int get_X_OffsetFor(View view) {
+		return 0;
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.interoperability.rpy.blackboxes.AbstractDiagramFixLayoutBlackboxes#get_Y_OffsetFor(org.eclipse.gmf.runtime.notation.View)
+	 *
+	 * @param view
+	 * @return
+	 */
+	@Override
+	protected int get_Y_OffsetFor(View view) {
+		if (view instanceof Shape) {
+			return -44;// experimental value
+		}
+		return 0;
+	}
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/sysml11/diagrams/ParametricDiagramFixLayoutLocationBlackboxes.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/sysml11/diagrams/ParametricDiagramFixLayoutLocationBlackboxes.java
new file mode 100644
index 0000000..96dbca7
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/sysml11/diagrams/ParametricDiagramFixLayoutLocationBlackboxes.java
@@ -0,0 +1,74 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.blackboxes.sysml11.diagrams;
+
+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.interoperability.rpy.blackboxes.AbstractDiagramFixLayoutBlackboxes;
+
+/**
+ * @author VL222926
+ * 
+ *         Class to fix the location of the element of the SysML 1.1 Parametric Diagram
+ *
+ */
+public class ParametricDiagramFixLayoutLocationBlackboxes extends AbstractDiagramFixLayoutBlackboxes {
+
+	/**
+	 * @see org.eclipse.papyrus.interoperability.rpy.blackboxes.AbstractDiagramFixLayoutBlackboxes#fixLayout(org.eclipse.gmf.runtime.notation.Diagram)
+	 *
+	 * @param diagram
+	 */
+	@Override
+	public void fixLayout(Diagram diagram) {
+		super.fixLayout(diagram);// required, QVT framework is not able to call method without this override
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.interoperability.rpy.blackboxes.AbstractDiagramFixLayoutBlackboxes#isManagedDiagram(org.eclipse.gmf.runtime.notation.Diagram)
+	 *
+	 * @param diagram
+	 * @return
+	 */
+	@Override
+	protected boolean isManagedDiagram(final Diagram diagram) {
+		return "Parametric".equals(diagram.getType()); //$NON-NLS-1$
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.interoperability.rpy.blackboxes.AbstractDiagramFixLayoutBlackboxes#get_X_OffsetFor(org.eclipse.gmf.runtime.notation.View)
+	 *
+	 * @param view
+	 * @return
+	 */
+	@Override
+	protected int get_X_OffsetFor(View view) {
+		return 0;
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.interoperability.rpy.blackboxes.AbstractDiagramFixLayoutBlackboxes#get_Y_OffsetFor(org.eclipse.gmf.runtime.notation.View)
+	 *
+	 * @param view
+	 * @return
+	 */
+	@Override
+	protected int get_Y_OffsetFor(View view) {
+		if (view instanceof Shape) {
+			return -44;
+		}
+		return 0;
+	}
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/uml/AssociationOwnerHelper.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/uml/AssociationOwnerHelper.java
new file mode 100644
index 0000000..9fde766
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/uml/AssociationOwnerHelper.java
@@ -0,0 +1,74 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *   
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.blackboxes.uml;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.m2m.qvt.oml.blackbox.java.Operation;
+import org.eclipse.m2m.qvt.oml.blackbox.java.Operation.Kind;
+import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Element;
+
+/**
+ * Helper to set register the created association in the correct owner
+ *
+ */
+public class AssociationOwnerHelper {
+
+	/**
+	 * This map allow to store the association to store in the nearest package of the key element
+	 */
+	private final Map<Element, List<Association>> associationsToSet = new HashMap<Element, List<Association>>();
+
+	/**
+	 * 
+	 * @param an
+	 *            element
+	 *            the associations will be stored in the nearest package of this element
+	 * @param associations
+	 *            to store
+	 * 
+	 * 
+	 *            This method allows to save temporary the associations to store in the nearest package of the element.
+	 *            This method doesn't do the final store, you need call {@link AssociationOwnerHelper#setAssociationOwnerAndClear()} at the end of your transformation to do really the work
+	 */
+	@Operation(kind = Kind.HELPER)
+	public void registerAssociationToStore(final Element ownerOfThis, List<Association> associations) {
+		List<Association> list = associationsToSet.get(ownerOfThis);
+		if (list == null) {
+			list = new ArrayList<Association>();
+			associationsToSet.put(ownerOfThis, list);
+		}
+		for (Association curr : associations) {
+			if (curr != null) {
+				list.add(curr);
+			}
+		}
+
+	}
+
+	/**
+	 * This method crosses the element registered previously with {@link AssociationOwnerHelper#registerAssociationToStore(Element, List)} and register their association into their nearest package, then clean the private map used to save them temporary
+	 */
+	@Operation(kind = Kind.HELPER)
+	public void setAssociationOwnerAndClear() {
+		for (Element key : associationsToSet.keySet()) {
+			key.getNearestPackage().getPackagedElements().addAll(associationsToSet.get(key));
+		}
+		associationsToSet.clear();
+	}
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/uml/UMLRpySemanticHelper.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/uml/UMLRpySemanticHelper.java
new file mode 100644
index 0000000..794327c
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.blackboxes/src/org/eclipse/papyrus/interoperability/rpy/blackboxes/uml/UMLRpySemanticHelper.java
@@ -0,0 +1,72 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *   
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.blackboxes.uml;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.m2m.qvt.oml.blackbox.java.Operation;
+import org.eclipse.m2m.qvt.oml.blackbox.java.Operation.Kind;
+import org.eclipse.papyrus.interoperability.rpy.rpymetamodel.IColor;
+import org.eclipse.papyrus.interoperability.rpy.rpymetamodel.ITag;
+
+/**
+ * @author VL222926
+ *
+ */
+public class UMLRpySemanticHelper {
+
+
+	/**
+	 * 
+	 * @param rpyElement
+	 *            an EObject
+	 * @return
+	 * 		all semantic elements (so the element which can be stereotyped)
+	 */
+	@Operation(kind = Kind.HELPER)
+	public List<EObject> getAllUMLSemanticElementAsList(final EObject rpyElement) {
+		TreeIterator<EObject> iter = rpyElement.eAllContents();
+		List<EObject> returnedList = new ArrayList<EObject>();
+		while (iter.hasNext()) {
+			EObject current = iter.next();
+			if (isASemanticElement(current)) {
+				returnedList.add(current);
+			}
+		}
+		return returnedList;
+	}
+
+	/**
+	 * 
+	 * @param rpyElement
+	 *            a rpy object
+	 * @return
+	 * 		<code>true</code> if the rpy object represents a UML semantic element
+	 */
+	@Operation(kind = Kind.HELPER)
+	private boolean isASemanticElement(final EObject rpyElement) {
+		if (rpyElement.getClass().getName().contains("CGI")) { //$NON-NLS-1$
+			return false;
+		} else if (rpyElement instanceof IColor) {
+			return false;
+		} else if (rpyElement instanceof ITag) {
+			return false;
+		}
+		return true;
+	}
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/.classpath b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/.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.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/.gitignore b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/.project b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/.project
new file mode 100644
index 0000000..582464c
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/.project
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.interoperability.rpy.doc</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.oomph.version.VersionBuilder</name>
+			<arguments>
+				<dictionary>
+					<key>check.maven.pom</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>ignore.lower.bound.dependency.ranges</key>
+					<value>true</value>
+				</dictionary>
+				<dictionary>
+					<key>release.path</key>
+					<value>/org.eclipse.papyrus.releng.main.release/release.xml</value>
+				</dictionary>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.oomph.version.VersionNature</nature>
+		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+	</natures>
+</projectDescription>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/.settings/org.eclipse.core.resources.prefs b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/.settings/org.eclipse.jdt.core.prefs b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..4d72ad1
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/.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/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/.settings/org.eclipse.jdt.ui.prefs b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..954281d
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/.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/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/.settings/org.eclipse.m2e.core.prefs b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/.settings/org.eclipse.pde.api.tools.prefs b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..23fb95e
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,98 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Ignore
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Ignore
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Ignore
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=Enabled
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Warning
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/META-INF/MANIFEST.MF b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..79bf475
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/META-INF/MANIFEST.MF
@@ -0,0 +1,9 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Papyrus Rpy Migration Documentation (Incubation)
+Bundle-SymbolicName: org.eclipse.papyrus.interoperability.rpy.doc;singleton:=true
+Bundle-Version: 0.7.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.help;bundle-version="[3.7.0,4.0.0)",
+ org.eclipse.papyrus.infra.doc;bundle-version="[1.2.0,2.0.0)"
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/about.html b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/about.html
new file mode 100644
index 0000000..dd3c089
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>November 14, 2008</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/build.properties b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/build.properties
new file mode 100644
index 0000000..c7854f0
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               about.html,\
+               target/site/generated-eclipse-help/**,\
+               build.properties
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/plugin.xml b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/plugin.xml
new file mode 100644
index 0000000..f4df99c
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/plugin.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.help.toc">
+      <toc
+            file="target/site/generated-eclipse-help/rpyMigrationDev-toc.xml"
+            primary="false">
+      </toc>
+      <toc
+            file="target/site/generated-eclipse-help/rpyMigrationUser-toc.xml"
+            primary="false">
+      </toc>
+        <toc
+            file="target/site/generated-eclipse-help/rpyMigrationDev-main-toc.xml"
+            primary="false">
+      </toc>
+      <toc
+            file="target/site/generated-eclipse-help/rpyMigrationUser-main-toc.xml"
+            primary="false">
+      </toc>
+   </extension>
+
+</plugin>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/images/dev/QVTo_debugging.png b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/images/dev/QVTo_debugging.png
new file mode 100644
index 0000000..a68d66f
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/images/dev/QVTo_debugging.png
Binary files differ
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/images/user/InitialRpyModel.png b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/images/user/InitialRpyModel.png
new file mode 100644
index 0000000..0c76b6e
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/images/user/InitialRpyModel.png
Binary files differ
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/images/user/RpyImportResult.png b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/images/user/RpyImportResult.png
new file mode 100644
index 0000000..c806324
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/images/user/RpyImportResult.png
Binary files differ
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/images/user/RpyImport_Step1.png b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/images/user/RpyImport_Step1.png
new file mode 100644
index 0000000..adde024
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/images/user/RpyImport_Step1.png
Binary files differ
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/images/user/RpyImport_Step2.png b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/images/user/RpyImport_Step2.png
new file mode 100644
index 0000000..9821cb0
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/images/user/RpyImport_Step2.png
Binary files differ
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/images/user/RpyImport_Step3.png b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/images/user/RpyImport_Step3.png
new file mode 100644
index 0000000..7f92a95
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/images/user/RpyImport_Step3.png
Binary files differ
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/images/user/RpyImport_Step4.png b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/images/user/RpyImport_Step4.png
new file mode 100644
index 0000000..ac4cbb4
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/images/user/RpyImport_Step4.png
Binary files differ
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/rpyMigrationDev-main-toc.xml b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/rpyMigrationDev-main-toc.xml
new file mode 100644
index 0000000..0e6f715
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/rpyMigrationDev-main-toc.xml
@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<toc label="Rpy Migration" link_to="../org.eclipse.papyrus.infra.doc/toc.xml#PapyrusDocDev">
+   <topic label="Rpy Migration" >
+      <link toc="target/site/generated-eclipse-help/rpyMigrationDev-toc.xml"/>
+      <anchor id="RpyMigrationDevDoc"/>
+   </topic>
+</toc>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/rpyMigrationDev.mediawiki b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/rpyMigrationDev.mediawiki
new file mode 100644
index 0000000..344f80f
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/rpyMigrationDev.mediawiki
@@ -0,0 +1,133 @@
+=Rpy Interoperability Developer=
+This documentation talks about the import of models created with the software '''IBM Rational Rhapsody''' into Papyrus. '''IBM Rational Rhapsody''' is developed by the IBM company. In this documentation, we reference this software as '''Rhapsody'''. 
+
+==Which Rhapsody version models are supported?==
+The migration tool has been developed with IBM Rhapsody 8.0.3. Nevertheless, it should work with previous and next versions.
+
+==Where are located the Papyrus Intereoperability Rpy plugins?==
+All Papyrus Rpy user plugins are stored in the Papyrus git ''org.eclipse.papyrus-interoperability.git'', into the subfolder ''rpy''.
+
+==Papyrus Interoperability Rpy Metamodel==
+*'''org.eclipse.papyrus.interoperability.rpy.metamodel''', 
+*'''org.eclipse.papyrus.interoperability.rpy.metamodel.edit''',
+*'''org.eclipse.papyrus.interoperability.rpy.metamodel.editor''': 
+
+These 3 plugins provide the papyrus umlrpy metamodel based on Ecore. They describe the internal Rhapsody metamodel.
+The models created with this metamodel used the file extension ''*.umlrpy''. The  QVTo transformations are applied on these files to create the Papyrus UML models.
+
+===How has been created this metamodel?===
+Rhapsody and Papyrus are representing differently similar concepts. The Rhapsody to Papyrus import process is implemented as a set of mapping rules between those two representations.
+In order to express the mapping rules, a description of Rhapsody representation of UML and graphical concepts has been implemented with a so-called “ecore metamodel”. 
+This metamodel has been built thanks to an analysis of two complementary public informations:
+***the public java API providing a first list of the concepts and their inheritance relationship. The documentation of this API located in Doc/java_api/index.html of Rhapsody install folder. The public java API is located in 'Share/JavaAPI/rhapsody.jar'.
+***the list of 150+  examples provided in the Sample directory. Those examples provided a good overview of all the concepts involved in Rhapsody models and how they are serialized in textual files. In order to accelerate the development, this analysis process has been automated in “one shot” script which is not part of the delivered software. 
+However, an automated update process is provided as a “developer feature” : when a user provides a new Rhapsody model containing concepts which had not been encountered in the analyzed examples, the metamodel update with those new concepts can be automated. This features is made to accelerate the implementation of a new mapping rule to an equivalent Papyrus concept. 
+To update the metamodel, you can use the plugin '''org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery'''
+***we also update this metamodel to be ease the development of the QVto transformation. That's why it is possible you met a property or an inheritance which doesn't exist in pure Rhapsody. In this case this property comes from a hand change done by a developer to ease the QVTo transformation writting process. It is not embarrassing to use a wrong EMF rhapsody metamodel to go from Rhapsody to Papyrus, because in this case, it will be more permissive. Nevertheless, it will be a problem to use it later to transform a Papyrus model into a Rhapsody model.
+***It seems that the object '''IModelElement''' is the common ancestor to Rhapsody semantic element. Be careful with these objects: 
+****in Rhapsody the '''Diagram''' concept is a semantic element (and not a graphical element). Diagram can be stereotyped
+****'''ISysMLPort''' is not a stereotype but a metamodel element for Rhapsody.
+
+==Papyrus Interoperability Rpy plugins==
+*'''org.eclipse.papyrus.interoperability.rpy.metamodel''', 
+*'''org.eclipse.papyrus.interoperability.rpy.metamodel.edit''',
+*'''org.eclipse.papyrus.interoperability.rpy.metamodel.editor''': 
+**Please, see description in previous part.
+
+*'''org.eclipse.papyrus.interoperability.rpy.blackboxes''':
+** This plugin provides some useful blackboxes (java code). They are called by the QVTo transformations.
+** These blackboxes are not embedded in the same plugin than the QVTo transformations to avoid compilation errors at the developer level and ease the development itself.
+
+*'''org.eclipse.papyrus.interoperability.rpy.geometry''':
+**This plugin provides objects to represent Rhapsody graphical elements and manipulate them easily to get their size and their location. 
+
+*'''org.eclipse.papyrus.interoperability.rpy.parser''',
+*'''org.eclipse.papyrus.interoperability.rpy.parser.ui''':
+** These plugins are used to parse the Rhapsody files (''*.rpy'' and others)
+
+*'''org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery''':
+**It is a developer plugin
+**This plugin is not delivered, but it is build (a pom.xml file is provided)
+**This plugin allows to update Rpy EMF metamodel when we meet models inconsistent with the current one.
+
+*'''org.eclipse.papyrus.interoperability.rpy''':
+**This plugin uses the other plugins described previously. It provides the API to convert a ''*.rpy'' into a Papyrus model (''*.uml'', ''*.notation'', ''*.di'' and ''*.properties'' files). 
+
+In addition, there are the plugin '''org.eclipse.papyrus.interoperability.common''' and '''org.eclipse.papyrus.interoperability.common.blackboxes'''. These plugins group common code used by Rpy, RSA and Sysml14 interoperability tools. 
+
+JUnit tests are provided too. They use EMF-Compare to check that the imported models continues to be equals to the expected one.
+
+==How does the migration process work?==
+The migration process is done in 3 steps:
+#the ''*rpy'' file is parsed by the XText parser (plugin '''org.eclipse.papyrus.interoperability.rhapsody.parser''') and converted into a first simple model using a first EMF metamodel,  '''RpySyntax''', provided by this plugin, then
+#this first model is converted into  a set of ''*.umlrpy'' by the class '''org.eclipse.papyrus.interoperability.rpy.importer.UMLRpyImporter'''. There is a ''*.umlrpy'' file for the initial selected ''*rpy'' file, and one other for each subpackage of the imported Rhaposdy model. At the end of this process, we transform these files into the Papyrus UML model.
+#In the Rhapsody model, there are references to objects provided by Rhapsody Libraries (types, stereotypes, ...) . As we can't reuse them directly (for legal reason), we create "proxy object"  during the creation of the ''*.umlrpy'' file with an EAnnotation referencing the name of the Rhapsody file providing it. This information is used later in the process by the QVto transformation. 
+
+
+==QVTo Informations==
+The QVTo files are stored in the plugin '''org.eclipse.papyrus.interoperability.rpy'''.
+
+===Cast===
+Casting collection doing [Type] seems change arbitrary the order of the elements. It is a pattern to avoid.
+
+===Transformation files===
+*Transformation file have a kind of constructor preceded by the transform keyword and contains a method main. They are registered with the extension point '''org.eclipse.m2m.qvt.oml.runtime.qvtTransformation''' as transformation.
+*Library file have a name preceded by the keyword library. They must be registered with the extension point '''org.eclipse.m2m.qvt.oml.runtime.qvtTransformation''', as transformation or as library.
+
+
+===How are chained the QVTo transformations===
+*All transformations must be called in the same context. That's why there is a kind of 'master' transformation calling the others. It is not possible to call them separately, because calling them separately we won't be able to find the result of a previous mapping using <code>resolve/invresolve</code> function.
+*Here, this is the transformation <code>Rpy2PapyrusNotation</code> which call the others following this order: 
+*<code>Rpy2PapyrusSemanticElements</code>, 
+*then calls <code>SemanticInternationalization</code>
+*then calls <code>SysML11Profile</code>,
+*then calls <code>SysML11Diagrams</code> which calls the qvto transformations for 
+**<code>InternalBlockDiagram</code>, 
+**<code>BlockDefinitionDiagram</code> and 
+**<code>ParametricDiagram</code>, 
+**and, in addition, it completes the ''*.properties'' file with the label of the diagram when they exist. 
+
+===Inheritance===
+It seems possible, but not yet used.
+
+===How to debug QVTo transformation===
+It is possible to use breakpoint to debug QVTo transformation, but in this case you must use the Operatinal QVT Interpreter provided as Debug tool of Eclipse.
+[[Image:images/dev/QVTo_debugging.png|frame|none|QVTo Debugging view]]
+
+===QVTo Tricks===
+Here, we describe the main QVTo keyword to know:
+*<code>mapping</code> it allows to declare a mapping method between two objects. It can have parameter. The resulting object is created before the first line of the mapping. If you want avoid to create a new object, you can look it for the object to return using the <code>init{your code}</code> block. Calling a given mapping for a given object will create a new object the first time and will return it other time. No new object will be created calling a given mapping several time with the same parameters.
+*<code>init{your code}</code> it allows to assign the result without creating an object. If at the end of this block, the result is <code>null</code>, the object will be created.
+*<code>disjuncts</code> it allows to declare a method dispatching an action to one of the others declared method.
+*<code>when</code> it allows to define a condition to allow the mapping (always used by a mapping called by a disjuncts mapping)
+*<code>result</code> keyword defining the result of a mapping
+*<code>init</code> to start a mapping, it allows to initializing the result without create an element
+*<code>@</code> allows to define the file owning the object when the transformation has several output files.
+
+QVTo/OCL are not able to cast UML Element or Rpy Element in an other object inherited from an other metamodel implicitly. So to convert a <code>uml.Element</code> into <code>ecore.EObject</code> you need to write the cast, otherwise it won't compile. So you can write : <code>Element.oclAsType(EObject)</code> or <code>Element![EObject]</code> to do that.
+
+To ease transformation writing, we advice to use <code>disjuncts</code> each time it is possible to create common method. To our mind, the best common method will be declared as this example: <code>umlrpy::IModelElement::commonMethod:uml:Element disjuncts</code>...
+This pattern ease the call to <code>resolve/invresolve</code> function to retrieve an object previously created ignoring the real mapping method used. 
+As an object is created only one time, you can also replace the <code>resolve/invesolve</code> functions, calling the mapping directly.
+
+<code>resolveOne/invresolveOne</code> could seems interesting, but often an object can be used as entry of several mapping. For example, we use <code>IObjectLink</code> to create the UML Connector and its two ConnectorEnds. 
+
+==General Tricks==
+*When the ''*rpy'' didn't change, to test your code quicker, you can select the file ''*.umlrpy'' directly to import it as Papyrus model. 
+
+==Java code==
+The plugin '''org.eclipse.papyrus.interoperability.common''' is a refactoring of the code provided for RSA migration tool. A part of the embedded code initially written for RSA migration tool is now embedded in this plugin used by Rpy migration tool, but not yet used.
+
+The QVTo transformation is launched by the class <code>org.eclipse.papyrus.interoperability.rpy.transformations.RpyImportTransformationLauncher</code>.
+The creation of the ''*.umlrhapsody'' file is done by the class <code>org.eclipse.papyrus.interoperability.rpy.importer.SelectedRpyFilesImporter</code>.
+
+==Versioning==
+To ease future fixes for generated corrupted models, an '''EMF EAnnotation''' is added during the transformation to the root of the UML model and to all created diagrams. This EAnnotation contains:
+*the version of the Papyrus Rpy Migration Tool,
+*the version of the Rhapsody software used to create the model, and 
+*the name of the Rhapsody model. 
+
+This work is done by the QVTo library <code>RpyToPapyrusUtils</code>, with the helper method <code>createEAnnotationForVersioning</code>.
+
+==Diagram Styling==
+As we want to get the same style in import models than in the Rhapsody source model, we need to add EAnnoation PapyrusCSSForceValue to override the styling done by CSS stylesheet. The method to create a such EAnnotation is provided by the QVTo library <code>RpyToPapyrusDiagamCommon</code>, by the helper <code>createCSSForceValue</code>.  
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/rpyMigrationUser-main-toc.xml b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/rpyMigrationUser-main-toc.xml
new file mode 100644
index 0000000..c0249db
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/rpyMigrationUser-main-toc.xml
@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<toc label="Rpy Migration" link_to="../org.eclipse.papyrus.infra.doc/toc.xml#PapyrusTasks">
+   <topic label="Rpy Migration" >
+      <link toc="target/site/generated-eclipse-help/rpyMigrationUser-toc.xml"/>
+      <anchor id="RpyMigrationUserDoc"/>
+   </topic>
+</toc>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/rpyMigrationUser.mediawiki b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/rpyMigrationUser.mediawiki
new file mode 100644
index 0000000..36ed9fe
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.doc/src/site/mediawiki/rpyMigrationUser.mediawiki
@@ -0,0 +1,219 @@
+=Papyrus Rpy Interoperability=
+This documentation talks about the import of models created with the software '''IBM Rational Rhapsody''' into Papyrus. '''IBM Rational Rhapsody''' is developed by the IBM company. In this documentation, we reference this software as '''Rhapsody'''. 
+
+==Which Rhapsody version models are supported?==
+The migration tool has been developed with IBM Rhapsody 8.0.3. Nevertheless, it should work with previous and next versions.
+
+==Features==
+Currently, the Papyrus Rpy Interoperability Tools has been developed for Rhapsody SysML models. It doesn't yet cover the whole Rhapsody elements in its transformation.
+
+===UML Mapping===
+Papyrus migration tools allows to import Rhapsody models as UML Model. Some Rhapsody elements can be mapped on different UML elements depending on their context, the stereotypes applied on them, the value of a given feature and so on. Here, this table give you the supported Rhapsody Semantic Object and their possible mapping used to create the UML model.
+
+{| class="wikitable" border="1"
+! style="text-align: center; font-weight: bold;" | Rhapsody Element
+! style="text-align: center; font-weight: bold;" | UML Element
+|-
+| DefaultSubsystemType
+| Package
+|-
+| IAction
+| OpaqueBehavior
+|-
+| IActor
+| Actor
+|-
+| IArgument
+| Property
+|-
+| IArgument
+| Parameter
+|-
+| IAssociationEnd
+| Association
+|-
+| IAssociationEnd
+| Property
+|-
+| IAttribute
+| Property
+|-
+| IClass
+| Interface
+|-
+| IClass
+| Class
+|-
+| IComment
+| Comment
+|-
+| IDefaultDrvdTrans
+| Vertex
+|-
+| IDescription
+| Comment
+|-
+| IEnumerationLiteral
+| EnumerationLiteral
+|-
+| IEvent
+| SignalEvent
+|-
+| IEvent
+| Signal
+|-
+| IGeneralization
+| Generalization
+|-
+| IGuard
+| Constraint
+|-
+| IInformationFlow
+| Connector
+|-
+| IInterfaceItemTrigger
+| Trigger
+|-
+| IObjectLink
+| Connector
+|-
+| IObjectLink
+| ConnectorEnd
+|-
+| IPart
+| Property
+|-
+| IPart
+| Association
+|-
+| IPrimitiveOperation
+| Operation
+|-
+| IProject
+| Model
+|-
+| IReception
+| Reception
+|-
+| IRelation
+| Property
+|-
+| IRelation
+| Port
+|-
+| IState
+| State
+|-
+| IStateChart
+| StateMachine
+|-
+| ITransition
+| Transition
+|-
+| IType
+| UML Primitives Types
+|-
+| IType
+| DataType
+|-
+| IType
+| Enumeration
+|-
+| IType
+| InstanceSpecification
+|-
+| IType
+| Class
+|-
+| IVariable
+| Designer
+|}
+
+===SysML Mapping===
+The Rhapsody SysML Stereotypes are mapped with SysML 1.1 stereotypes provided by Papyrus.
+The following stereotypes are supported (not complete list).
+{| class="wikitable" border="1"
+! style="text-align: center; font-weight: bold;" | SysML 1.1 Stereotype
+|-
+| BindingConnector
+|-
+| Block
+|-
+| ConstraintBlock
+|-
+| ConstraintProperty
+|-
+| Dimension
+|-
+| FlowPort
+|-
+| FlowPort
+|-
+| FlowProperty
+|-
+| FlowSpecification
+|-
+| NestedConnectorEnd
+|-
+| Unit
+|-
+| ValueType
+|}
+
+===Properties's Type Mapping===
+* The Rhapsody Types Libraries (like ''PredefinedTypes'', ''PredefinedTypesC'', ''PredefinedTypesCpp'', etc) are not imported (legal reason). Nevertheless, a UML Package is created, when required, for each of these libraries, when the Rhapsody model contains references to a type defined in those libraries. This package contains DataType representing the type provided by the Rhapsody libraries. By this way, the types of the user model are preserved by the transformation.
+* To ease user experience, we always import the UML Predefined Types library, but we doesn't use the provided types in the imported model.
+* In some case, a Package called '''UserTypesDeclaration''' is created. The goal of this package is to group the type declared using the '''C++ declaration''' field text in Rhapsody. It is not a reference to an existing type, it is only a name given by the user to the type.
+
+===Diagram Mapping===
+*Papyrus Rhapsody Migration Tools allows to import Rhapsody SysML Diagrams as Papyrus SysML 1.1 Diagrams. The supported diagrams are:
+**Internal Block Diagram
+**Block Definition Diagram
+**Parametric Diagram
+
+*The tool creates the diagrams and the elements represented in them when Papyrus Diagram support it. The tool tries to respect the location of the nodes, anchors, ports, and links.
+
+===Internationalization===
+If you defined Label in addition of the name for your objects in the Rhapsody model, Papyrus migrate them too in a property file. You will be able to switch between displaying name and label with the Internationalization feature provided by Papyrus.
+
+==How to launch the import of a Rhapsody (SysML) Model==
+Firstly, of course, you need to have a Rhapsody Model, like this one: 
+
+[[Image:images/user/InitialRpyModel.png|frame|none]]
+
+
+Import the full Rhapsody model in our Eclipse Workspace as shown in the image.
+
+[[Image:images/user/RpyImport_Step1.png|frame|none]]
+
+
+Go to the menu '''Import Wizard > Papyrus > Papyrus SysML Models''', then '''Next'''.
+
+[[Image:images/user/Rpy_Step2.png|frame|none]]
+
+
+
+Here, you select a file, a folder or a set of folder to import one or several Rhapsody models in the same time, then '''Next'''.
+
+[[Image:images/user/RpyImport_Step3.png|frame|none]]
+
+You select the '''*rpy''' files to import. You can set the number of threads to use (useful to import several models in the same time), then '''Finish'''. It runs the transformation.
+
+[[Image:images/user/RpyImport_Step4.png|frame|none]]
+
+And now you get the imported model, in a subfolder called ''output/yourRhapsodyProjectName''.
+In this folder you will found: 
+In it, you will find the Papyrus model, with these files:
+*'''<projectName>'''''.uml'': the uml model
+*'''<projectName>'''''.notation'': the diagrams 
+*'''<projectName>'''''.di''
+*'''<projectName>'''''.properties'': it contains the labels defined for your object in Rhapsody
+*'''<projectName>'''''.umlrpy'': these files are the result of an intermediate transformation. Your file and all its Rhapsody dependencies have been migrated into an intermediate format, before being converted into a Papyrus Model.
+
+[[Image:images/user/RpyImportResult.png|frame|none]]
+
+
+If you are in the Project Explorer, a shortest method allows you to import a selected ''*.rpy'' file, doing '''Right-Click > Import SysML Rhapsody Model'''.
+
+==Why my CSS are ignored in imported Diagrams?==
+The goal of the Papyrus Rpy Interoperability feature is to provide the same display for a given Rhapsody Diagram and its equivalent in Papyrus. As the CSS stylesheet can impact the display of the diagram, our transformation process add a specific information to each imported display property to bypass CSS renderer. Technically we add an '''EAnnotation''' named '''PapyrusCSSForceValue''' to ignore CSS value. All CSS customizations can be impacted, like connector routing or compartment visibility. 
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/.classpath b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/.classpath
new file mode 100644
index 0000000..e7a4ca0
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src-gen"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/.gitignore b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/.project b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/.project
new file mode 100644
index 0000000..776aaf3
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.interoperability.rpy.geometry</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/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/.settings/org.eclipse.jdt.core.prefs b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..b3aa6d6
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/.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.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
+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/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/.settings/org.eclipse.jdt.ui.prefs b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..954281d
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/.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/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/.settings/org.eclipse.pde.api.tools.prefs b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..23fb95e
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,98 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Ignore
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Ignore
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Ignore
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=Enabled
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Warning
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/META-INF/MANIFEST.MF b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..d3ff616
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.interoperability.rpy.geometry;singleton:=true
+Bundle-Version: 0.7.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.papyrus.interoperability.rpy.geometry.custom,
+ org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry,
+ org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl,
+ org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.util,
+ org.eclipse.papyrus.interoperability.rpy.geometry.utils
+Require-Bundle: org.eclipse.core.runtime;resolution:=optional;x-installation:=greedy,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.papyrus.interoperability.rpy.metamodel;bundle-version="0.7.0"
+Bundle-ActivationPolicy: lazy
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/about.html b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/about.html
new file mode 100644
index 0000000..dd3c089
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>November 14, 2008</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/build.properties b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/build.properties
new file mode 100644
index 0000000..e7093d5
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/build.properties
@@ -0,0 +1,22 @@
+#   Copyright (c) 2016 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:
+#     CEA LIST - Initial API and implementation
+# 
+
+bin.includes = .,\
+               model/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties,\
+               about.html
+jars.compile.order = .
+source.. = src-gen/,\
+           src/
+output.. = bin/
+src.includes = about.html
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/model/RpyGeometry.di b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/model/RpyGeometry.di
new file mode 100644
index 0000000..bf9abab
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/model/RpyGeometry.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/model/RpyGeometry.genmodel b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/model/RpyGeometry.genmodel
new file mode 100644
index 0000000..9138d60
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/model/RpyGeometry.genmodel
@@ -0,0 +1,117 @@
+<?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"
+    copyrightText="  Copyright (c) 2016 CEA LIST and others.&#xD;&#xA;  &#xD;&#xA;  All rights reserved. This program and the accompanying materials&#xD;&#xA;  are made available under the terms of the Eclipse Public License v1.0&#xD;&#xA;  which accompanies this distribution, and is available at&#xD;&#xA;  http://www.eclipse.org/legal/epl-v10.html&#xD;&#xA; &#xD;&#xA;  Contributors:&#xD;&#xA;    CEA LIST - Initial API and implementation&#xD;&#xA;"
+    modelDirectory="/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen" editDirectory="/org.eclipse.papyrus.interoperability.rpy.geometry.edit/src-gen"
+    editorDirectory="/org.eclipse.papyrus.interoperability.rpy.geometry.editor/src-gen"
+    modelPluginID="org.eclipse.papyrus.interoperability.rpy.geometry" modelName="RpyGeometry"
+    nonNLSMarkers="true" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+    importerID="org.eclipse.uml2.uml.ecore.importer" complianceLevel="8.0" copyrightFields="false"
+    language="" usedGenPackages="../../org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore"
+    operationReflection="true" importOrganizing="true" oSGiCompatible="true">
+  <genAnnotations source="http://www.eclipse.org/emf/2002/GenModel/importer/org.eclipse.uml2.uml.ecore.importer">
+    <details key="OPPOSITE_ROLE_NAMES" value="IGNORE"/>
+    <details key="DUPLICATE_FEATURES" value="DISCARD"/>
+    <details key="ANNOTATION_DETAILS" value="PROCESS"/>
+    <details key="PROPERTY_DEFAULT_EXPRESSIONS" value="IGNORE"/>
+    <details key="DUPLICATE_FEATURE_INHERITANCE" value="DISCARD"/>
+    <details key="COMMENTS" value="PROCESS"/>
+    <details key="DERIVED_FEATURES" value="PROCESS"/>
+    <details key="SUPER_CLASS_ORDER" value="PROCESS"/>
+    <details key="DUPLICATE_OPERATION_INHERITANCE" value="DISCARD"/>
+    <details key="REDEFINING_OPERATIONS" value="REPORT"/>
+    <details key="INVARIANT_CONSTRAINTS" value="PROCESS"/>
+    <details key="UNION_PROPERTIES" value="REPORT"/>
+    <details key="DUPLICATE_OPERATIONS" value="DISCARD"/>
+    <details key="NON_API_INVARIANTS" value="IGNORE"/>
+    <details key="CAMEL_CASE_NAMES" value="IGNORE"/>
+    <details key="SUBSETTING_PROPERTIES" value="REPORT"/>
+    <details key="OPERATION_BODIES" value="IGNORE"/>
+    <details key="ECORE_TAGGED_VALUES" value="PROCESS"/>
+    <details key="UNTYPED_PROPERTIES" value="REPORT"/>
+    <details key="REDEFINING_PROPERTIES" value="REPORT"/>
+    <details key="INVOCATION_DELEGATES" value="IGNORE"/>
+    <details key="VALIDATION_DELEGATES" value="IGNORE"/>
+  </genAnnotations>
+  <foreignModel>RpyGeometry.uml</foreignModel>
+  <genPackages xsi:type="genmodel:GenPackage" prefix="RpyGeometry" basePackage="org.eclipse.papyrus.interoperability.rpy.geometry"
+      disposableProviderFactory="true" ecorePackage="rpygeometry.ecore#/">
+    <genEnums xsi:type="genmodel:GenEnum" typeSafeEnumCompatible="false" ecoreEnum="rpygeometry.ecore#//Position">
+      <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="rpygeometry.ecore#//Position/NORTH"/>
+      <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="rpygeometry.ecore#//Position/SOUTH"/>
+      <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="rpygeometry.ecore#//Position/EAST"/>
+      <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="rpygeometry.ecore#//Position/WEST"/>
+      <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="rpygeometry.ecore#//Position/NORTH_EAST"/>
+      <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="rpygeometry.ecore#//Position/NORTH_WEST"/>
+      <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="rpygeometry.ecore#//Position/SOUTH_EAST"/>
+      <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="rpygeometry.ecore#//Position/SOUTH_WEST"/>
+    </genEnums>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="rpygeometry.ecore#//TransformMatrix">
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute rpygeometry.ecore#//TransformMatrix/a"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute rpygeometry.ecore#//TransformMatrix/b"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute rpygeometry.ecore#//TransformMatrix/c"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute rpygeometry.ecore#//TransformMatrix/d"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute rpygeometry.ecore#//TransformMatrix/e"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute rpygeometry.ecore#//TransformMatrix/f"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="rpygeometry.ecore#//TransformMatrix/add">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="rpygeometry.ecore#//TransformMatrix/add/matrix"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="rpygeometry.ecore#//TransformMatrix/minus"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="rpygeometry.ecore#//TransformMatrix/minus.1">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="rpygeometry.ecore#//TransformMatrix/minus.1/matrix"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="rpygeometry.ecore#//TransformMatrix/multiply">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="rpygeometry.ecore#//TransformMatrix/multiply/point"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="rpygeometry.ecore#//TransformMatrix/multiply.1">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="rpygeometry.ecore#//TransformMatrix/multiply.1/matrix"/>
+      </genOperations>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="rpygeometry.ecore#//Point">
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute rpygeometry.ecore#//Point/X"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute rpygeometry.ecore#//Point/Y"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="rpygeometry.ecore#//Point/minus"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="rpygeometry.ecore#//Point/minus.1">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="rpygeometry.ecore#//Point/minus.1/point"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="rpygeometry.ecore#//Point/add">
+        <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="rpygeometry.ecore#//Point/add/point"/>
+      </genOperations>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="rpygeometry.ecore#//Point/getIntX"/>
+      <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="rpygeometry.ecore#//Point/getIntY"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="rpygeometry.ecore#//RpyShape">
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference rpygeometry.ecore#//RpyShape/transform"/>
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference rpygeometry.ecore#//RpyShape/rectangle"/>
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference rpygeometry.ecore#//RpyShape/parent"/>
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference rpygeometry.ecore#//RpyShape/rpyMetamodelObject"/>
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference rpygeometry.ecore#//RpyShape/parentRelativePosition"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute rpygeometry.ecore#//RpyShape/height"/>
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute rpygeometry.ecore#//RpyShape/width"/>
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference rpygeometry.ecore#//RpyShape/absolutePosition"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="rpygeometry.ecore#//Rectangle">
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference rpygeometry.ecore#//Rectangle/topLeft"/>
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference rpygeometry.ecore#//Rectangle/topRight"/>
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference rpygeometry.ecore#//Rectangle/bottomLeft"/>
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference rpygeometry.ecore#//Rectangle/bottomRight"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="rpygeometry.ecore#//Polygon">
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference rpygeometry.ecore#//Polygon/points"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="rpygeometry.ecore#//RpyPort">
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute rpygeometry.ecore#//RpyPort/position"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/model/RpyGeometry.notation b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/model/RpyGeometry.notation
new file mode 100644
index 0000000..2382c00
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/model/RpyGeometry.notation
@@ -0,0 +1,753 @@
+<?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:css="http://www.eclipse.org/papyrus/infra/gmfdiag/css" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+  <notation:Diagram xmi:id="_WbrR4JFHEeaU3PnuDDmqGg" type="PapyrusUMLClassDiagram" name="Class Diagram" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_viXpgJFHEeaU3PnuDDmqGg" type="Class_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_viiooJFHEeaU3PnuDDmqGg" type="Class_NameLabel"/>
+      <children xmi:type="notation:DecorationNode" xmi:id="_vijPsJFHEeaU3PnuDDmqGg" type="Class_FloatingNameLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_vijPsZFHEeaU3PnuDDmqGg" y="5"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_vijPspFHEeaU3PnuDDmqGg" type="Class_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_mJdugJFJEeaU3PnuDDmqGg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="RpyGeometry.uml#_mJSIUJFJEeaU3PnuDDmqGg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_mJdugZFJEeaU3PnuDDmqGg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_x1HdUJFJEeaU3PnuDDmqGg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="RpyGeometry.uml#_wxp1MJFJEeaU3PnuDDmqGg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_x1HdUZFJEeaU3PnuDDmqGg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_vijPs5FHEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_vijPtJFHEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_vijPtZFHEeaU3PnuDDmqGg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vijPtpFHEeaU3PnuDDmqGg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_vijPt5FHEeaU3PnuDDmqGg" type="Class_OperationCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_3datIJFKEeaU3PnuDDmqGg" type="Operation_ClassOperationLabel">
+          <element xmi:type="uml:Operation" href="RpyGeometry.uml#_3dRjMJFKEeaU3PnuDDmqGg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_3datIZFKEeaU3PnuDDmqGg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_F_OwwJFLEeaU3PnuDDmqGg" type="Operation_ClassOperationLabel">
+          <element xmi:type="uml:Operation" href="RpyGeometry.uml#_EZhXMJFLEeaU3PnuDDmqGg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_F_OwwZFLEeaU3PnuDDmqGg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_R2JUYJFLEeaU3PnuDDmqGg" type="Operation_ClassOperationLabel">
+          <element xmi:type="uml:Operation" href="RpyGeometry.uml#_Q1-34JFLEeaU3PnuDDmqGg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_R2JUYZFLEeaU3PnuDDmqGg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_vijPuJFHEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_vijPuZFHEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_vijPupFHEeaU3PnuDDmqGg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vijPu5FHEeaU3PnuDDmqGg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_vij2wJFHEeaU3PnuDDmqGg" type="Class_NestedClassifierCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_vij2wZFHEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_vij2wpFHEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_vij2w5FHEeaU3PnuDDmqGg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vij2xJFHEeaU3PnuDDmqGg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_vl1NMJFHEeaU3PnuDDmqGg" type="compartment_shape_display">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_vl1NMZFHEeaU3PnuDDmqGg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vl1NMpFHEeaU3PnuDDmqGg"/>
+      </children>
+      <element xmi:type="uml:Class" href="RpyGeometry.uml#_viPtsJFHEeaU3PnuDDmqGg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_viXpgZFHEeaU3PnuDDmqGg" x="358" y="37" width="213" height="159"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_7daNQJFJEeaU3PnuDDmqGg" type="Class_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_7da0UJFJEeaU3PnuDDmqGg" type="Class_NameLabel"/>
+      <children xmi:type="notation:DecorationNode" xmi:id="_7da0UZFJEeaU3PnuDDmqGg" type="Class_FloatingNameLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_7da0UpFJEeaU3PnuDDmqGg" y="5"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_7da0U5FJEeaU3PnuDDmqGg" type="Class_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_7da0VJFJEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_7da0VZFJEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_7da0VpFJEeaU3PnuDDmqGg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7da0V5FJEeaU3PnuDDmqGg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_7da0WJFJEeaU3PnuDDmqGg" type="Class_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_7da0WZFJEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_7da0WpFJEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_7da0W5FJEeaU3PnuDDmqGg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7da0XJFJEeaU3PnuDDmqGg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_7da0XZFJEeaU3PnuDDmqGg" type="Class_NestedClassifierCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_7da0XpFJEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_7da0X5FJEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_7da0YJFJEeaU3PnuDDmqGg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7da0YZFJEeaU3PnuDDmqGg"/>
+      </children>
+      <element xmi:type="uml:Class" href="RpyGeometry.uml#_7dY_IJFJEeaU3PnuDDmqGg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7daNQZFJEeaU3PnuDDmqGg" x="384" y="229" width="159" height="83"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Qd2hMJFKEeaU3PnuDDmqGg" type="Class_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Qd3IQJFKEeaU3PnuDDmqGg" type="Class_NameLabel"/>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Qd3IQZFKEeaU3PnuDDmqGg" type="Class_FloatingNameLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Qd3IQpFKEeaU3PnuDDmqGg" y="5"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Qd3IQ5FKEeaU3PnuDDmqGg" type="Class_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Qd3IRJFKEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Qd3IRZFKEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Qd3IRpFKEeaU3PnuDDmqGg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Qd3IR5FKEeaU3PnuDDmqGg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Qd3ISJFKEeaU3PnuDDmqGg" type="Class_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Qd3ISZFKEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Qd3ISpFKEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Qd3IS5FKEeaU3PnuDDmqGg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Qd3ITJFKEeaU3PnuDDmqGg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Qd3ITZFKEeaU3PnuDDmqGg" type="Class_NestedClassifierCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Qd3ITpFKEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Qd3IT5FKEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Qd3IUJFKEeaU3PnuDDmqGg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Qd3IUZFKEeaU3PnuDDmqGg"/>
+      </children>
+      <element xmi:type="uml:Class" href="RpyGeometry.uml#_Qd0sAJFKEeaU3PnuDDmqGg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Qd2hMZFKEeaU3PnuDDmqGg" x="353" y="353" width="223" height="133"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_1PoKcJFLEeaU3PnuDDmqGg" type="Enumeration_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_1PoxgJFLEeaU3PnuDDmqGg" type="Enumeration_NameLabel"/>
+      <children xmi:type="notation:DecorationNode" xmi:id="_1PoxgZFLEeaU3PnuDDmqGg" type="Enumeration_FloatingNameLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_1PoxgpFLEeaU3PnuDDmqGg" y="5"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1Poxg5FLEeaU3PnuDDmqGg" type="Enumeration_LiteralCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_7k5DYJFLEeaU3PnuDDmqGg" type="EnumerationLiteral_LiteralLabel">
+          <element xmi:type="uml:EnumerationLiteral" href="RpyGeometry.uml#_7kvSYJFLEeaU3PnuDDmqGg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_7k5DYZFLEeaU3PnuDDmqGg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_80RnoJFLEeaU3PnuDDmqGg" type="EnumerationLiteral_LiteralLabel">
+          <element xmi:type="uml:EnumerationLiteral" href="RpyGeometry.uml#_80GBcJFLEeaU3PnuDDmqGg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_80RnoZFLEeaU3PnuDDmqGg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_91gbIJFLEeaU3PnuDDmqGg" type="EnumerationLiteral_LiteralLabel">
+          <element xmi:type="uml:EnumerationLiteral" href="RpyGeometry.uml#_91VcAJFLEeaU3PnuDDmqGg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_91gbIZFLEeaU3PnuDDmqGg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="__NED8JFLEeaU3PnuDDmqGg" type="EnumerationLiteral_LiteralLabel">
+          <element xmi:type="uml:EnumerationLiteral" href="RpyGeometry.uml#__M2BgJFLEeaU3PnuDDmqGg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="__NED8ZFLEeaU3PnuDDmqGg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1PoxhJFLEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1PoxhZFLEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1PoxhpFLEeaU3PnuDDmqGg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1Poxh5FLEeaU3PnuDDmqGg"/>
+      </children>
+      <element xmi:type="uml:Enumeration" href="RpyGeometry.uml#_1Pm8UJFLEeaU3PnuDDmqGg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1PoKcZFLEeaU3PnuDDmqGg" x="428" y="722" width="200" height="125"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_EULHsJFMEeaU3PnuDDmqGg" type="Class_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_EULuwJFMEeaU3PnuDDmqGg" type="Class_NameLabel"/>
+      <children xmi:type="notation:DecorationNode" xmi:id="_EULuwZFMEeaU3PnuDDmqGg" type="Class_FloatingNameLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_EULuwpFMEeaU3PnuDDmqGg" y="5"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_EULuw5FMEeaU3PnuDDmqGg" type="Class_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_r8V50JFOEeaU3PnuDDmqGg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="RpyGeometry.uml#_r8FbIJFOEeaU3PnuDDmqGg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_r8V50ZFOEeaU3PnuDDmqGg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_EULuxJFMEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_EULuxZFMEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_EULuxpFMEeaU3PnuDDmqGg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EULux5FMEeaU3PnuDDmqGg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_EULuyJFMEeaU3PnuDDmqGg" type="Class_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_EULuyZFMEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_EULuypFMEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_EULuy5FMEeaU3PnuDDmqGg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EULuzJFMEeaU3PnuDDmqGg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_EULuzZFMEeaU3PnuDDmqGg" type="Class_NestedClassifierCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_EULuzpFMEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_EULuz5FMEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_EULu0JFMEeaU3PnuDDmqGg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EULu0ZFMEeaU3PnuDDmqGg"/>
+      </children>
+      <element xmi:type="uml:Class" href="RpyGeometry.uml#_EUKgoJFMEeaU3PnuDDmqGg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EULHsZFMEeaU3PnuDDmqGg" x="633" y="701" width="279" height="95"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_NFyuUJFMEeaU3PnuDDmqGg" type="Class_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_NFzVYJFMEeaU3PnuDDmqGg" type="Class_NameLabel"/>
+      <children xmi:type="notation:DecorationNode" xmi:id="_NFzVYZFMEeaU3PnuDDmqGg" type="Class_FloatingNameLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_NFzVYpFMEeaU3PnuDDmqGg" y="5"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_NFzVY5FMEeaU3PnuDDmqGg" type="Class_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_RHOjcJFMEeaU3PnuDDmqGg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="RpyGeometry.uml#_RG5zUJFMEeaU3PnuDDmqGg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_RHOjcZFMEeaU3PnuDDmqGg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_4YLaUJFMEeaU3PnuDDmqGg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="RpyGeometry.uml#_rbCOcJFMEeaU3PnuDDmqGg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_4YLaUZFMEeaU3PnuDDmqGg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_4YduMJFMEeaU3PnuDDmqGg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="RpyGeometry.uml#_rvVqgJFMEeaU3PnuDDmqGg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_4YduMZFMEeaU3PnuDDmqGg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_4YqigJFMEeaU3PnuDDmqGg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="RpyGeometry.uml#_r5x_8JFMEeaU3PnuDDmqGg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_4YqigZFMEeaU3PnuDDmqGg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_4Y2IsJFMEeaU3PnuDDmqGg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="RpyGeometry.uml#_tx9CgJFMEeaU3PnuDDmqGg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_4Y2vwJFMEeaU3PnuDDmqGg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_4ZEyMJFMEeaU3PnuDDmqGg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="RpyGeometry.uml#_vZZhcJFMEeaU3PnuDDmqGg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_4ZEyMZFMEeaU3PnuDDmqGg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_NFzVZJFMEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_NFzVZZFMEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_NFzVZpFMEeaU3PnuDDmqGg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NFzVZ5FMEeaU3PnuDDmqGg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_NFzVaJFMEeaU3PnuDDmqGg" type="Class_OperationCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_E8cMIJFNEeaU3PnuDDmqGg" type="Operation_ClassOperationLabel">
+          <element xmi:type="uml:Operation" href="RpyGeometry.uml#_7YDEwJFMEeaU3PnuDDmqGg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_E8cMIZFNEeaU3PnuDDmqGg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_E8tR4JFNEeaU3PnuDDmqGg" type="Operation_ClassOperationLabel">
+          <element xmi:type="uml:Operation" href="RpyGeometry.uml#_7YES4JFMEeaU3PnuDDmqGg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_E8tR4ZFNEeaU3PnuDDmqGg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_E8-XoJFNEeaU3PnuDDmqGg" type="Operation_ClassOperationLabel">
+          <element xmi:type="uml:Operation" href="RpyGeometry.uml#_7YFhAJFMEeaU3PnuDDmqGg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_E8-XoZFNEeaU3PnuDDmqGg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_G967sJFNEeaU3PnuDDmqGg" type="Operation_ClassOperationLabel">
+          <element xmi:type="uml:Operation" href="RpyGeometry.uml#_GDq58JFNEeaU3PnuDDmqGg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_G967sZFNEeaU3PnuDDmqGg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_G-N2oJFNEeaU3PnuDDmqGg" type="Operation_ClassOperationLabel">
+          <element xmi:type="uml:Operation" href="RpyGeometry.uml#_GNCRUJFNEeaU3PnuDDmqGg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_G-N2oZFNEeaU3PnuDDmqGg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_NFzVaZFMEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_NFzVapFMEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_NFzVa5FMEeaU3PnuDDmqGg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NFzVbJFMEeaU3PnuDDmqGg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_NFzVbZFMEeaU3PnuDDmqGg" type="Class_NestedClassifierCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_NFzVbpFMEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_NFzVb5FMEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_NFzVcJFMEeaU3PnuDDmqGg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NFzVcZFMEeaU3PnuDDmqGg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_NF4N4JFMEeaU3PnuDDmqGg" type="compartment_shape_display">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_NF4N4ZFMEeaU3PnuDDmqGg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NF4N4pFMEeaU3PnuDDmqGg"/>
+      </children>
+      <element xmi:type="uml:Class" href="RpyGeometry.uml#_NFyHQJFMEeaU3PnuDDmqGg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NFyuUZFMEeaU3PnuDDmqGg" x="879" y="42" width="341" height="331"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_kCWwsJFMEeaU3PnuDDmqGg" type="Comment_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kCXXwJFMEeaU3PnuDDmqGg" type="Comment_BodyLabel"/>
+      <element xmi:type="uml:Comment" href="RpyGeometry.uml#_kCMYoJFMEeaU3PnuDDmqGg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kCWwsZFMEeaU3PnuDDmqGg" x="1268" y="13" width="185" height="146"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_g-wnYJFNEeaU3PnuDDmqGg" type="Class_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_g-wnYpFNEeaU3PnuDDmqGg" type="Class_NameLabel"/>
+      <children xmi:type="notation:DecorationNode" xmi:id="_g-wnY5FNEeaU3PnuDDmqGg" type="Class_FloatingNameLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_g-wnZJFNEeaU3PnuDDmqGg" y="5"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_g-xOcJFNEeaU3PnuDDmqGg" type="Class_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_5nioQJF_EeaU3PnuDDmqGg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="RpyGeometry.uml#_5muI4JF_EeaU3PnuDDmqGg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_5nioQZF_EeaU3PnuDDmqGg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_9ASswJF_EeaU3PnuDDmqGg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="RpyGeometry.uml#_8_bKEJF_EeaU3PnuDDmqGg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_9ASswZF_EeaU3PnuDDmqGg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_g-xOcZFNEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_g-xOcpFNEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_g-xOc5FNEeaU3PnuDDmqGg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g-xOdJFNEeaU3PnuDDmqGg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_g-xOdZFNEeaU3PnuDDmqGg" type="Class_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_g-xOdpFNEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_g-xOd5FNEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_g-xOeJFNEeaU3PnuDDmqGg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g-xOeZFNEeaU3PnuDDmqGg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_g-xOepFNEeaU3PnuDDmqGg" type="Class_NestedClassifierCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_g-xOe5FNEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_g-xOfJFNEeaU3PnuDDmqGg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_g-xOfZFNEeaU3PnuDDmqGg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g-xOfpFNEeaU3PnuDDmqGg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_g-2uAJFNEeaU3PnuDDmqGg" type="compartment_shape_display">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_g-2uAZFNEeaU3PnuDDmqGg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g-2uApFNEeaU3PnuDDmqGg"/>
+      </children>
+      <element xmi:type="uml:Class" href="RpyGeometry.uml#_g-uyMJFNEeaU3PnuDDmqGg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g-wnYZFNEeaU3PnuDDmqGg" x="775" y="550" width="276" height="115"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_jMpT4JFQEeaU3PnuDDmqGg" type="Comment_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_jMp68JFQEeaU3PnuDDmqGg" type="Comment_BodyLabel"/>
+      <element xmi:type="uml:Comment" href="RpyGeometry.uml#_jMoFwJFQEeaU3PnuDDmqGg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jMpT4ZFQEeaU3PnuDDmqGg" x="1050" y="398" width="195" height="104"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_uRtHUJFREeaU3PnuDDmqGg" type="Package_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_uRtuYJFREeaU3PnuDDmqGg" type="Package_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_uRtuYZFREeaU3PnuDDmqGg" type="Package_PackagedElementCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_JVmLcJFSEeaU3PnuDDmqGg" type="Class_Shape_CN">
+          <children xmi:type="notation:DecorationNode" xmi:id="_JVmygJFSEeaU3PnuDDmqGg" type="Class_NameLabel_CN"/>
+          <children xmi:type="notation:DecorationNode" xmi:id="_JVmygZFSEeaU3PnuDDmqGg" type="Class_FloatingNameLabel_CN">
+            <layoutConstraint xmi:type="notation:Location" xmi:id="_JVmygpFSEeaU3PnuDDmqGg" y="5"/>
+          </children>
+          <children xmi:type="notation:BasicCompartment" xmi:id="_JVmyg5FSEeaU3PnuDDmqGg" type="Class_AttributeCompartment_CN">
+            <styles xmi:type="notation:TitleStyle" xmi:id="_JVmyhJFSEeaU3PnuDDmqGg"/>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_JVmyhZFSEeaU3PnuDDmqGg"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_JVmyhpFSEeaU3PnuDDmqGg"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JVmyh5FSEeaU3PnuDDmqGg"/>
+          </children>
+          <children xmi:type="notation:BasicCompartment" xmi:id="_JVmyiJFSEeaU3PnuDDmqGg" type="Class_OperationCompartment_CN">
+            <styles xmi:type="notation:TitleStyle" xmi:id="_JVmyiZFSEeaU3PnuDDmqGg"/>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_JVmyipFSEeaU3PnuDDmqGg"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_JVmyi5FSEeaU3PnuDDmqGg"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JVmyjJFSEeaU3PnuDDmqGg"/>
+          </children>
+          <children xmi:type="notation:BasicCompartment" xmi:id="_JVmyjZFSEeaU3PnuDDmqGg" type="Class_NestedClassifierCompartment_CN">
+            <styles xmi:type="notation:TitleStyle" xmi:id="_JVmyjpFSEeaU3PnuDDmqGg"/>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_JVmyj5FSEeaU3PnuDDmqGg"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_JVmykJFSEeaU3PnuDDmqGg"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JVmykZFSEeaU3PnuDDmqGg"/>
+          </children>
+          <element xmi:type="uml:Class" href="RpyGeometry.uml#_JVO_EJFSEeaU3PnuDDmqGg"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JVmLcZFSEeaU3PnuDDmqGg" x="50" y="36"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_uRtuYpFREeaU3PnuDDmqGg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uRtuY5FREeaU3PnuDDmqGg"/>
+      </children>
+      <element xmi:type="uml:Model" href="RpyGeometry.uml#_uRqrEJFREeaU3PnuDDmqGg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uRtHUZFREeaU3PnuDDmqGg" x="1297" y="459" width="246" height="231"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_wkvg8JFREeaU3PnuDDmqGg" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_wkvg8ZFREeaU3PnuDDmqGg"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_wkwIAJFREeaU3PnuDDmqGg" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Model" href="RpyGeometry.uml#_uRqrEJFREeaU3PnuDDmqGg"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wkvg8pFREeaU3PnuDDmqGg" x="1466" y="449"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_E1UowJFTEeaU3PnuDDmqGg" type="Comment_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_E1UowpFTEeaU3PnuDDmqGg" type="Comment_BodyLabel"/>
+      <element xmi:type="uml:Comment" href="RpyGeometry.uml#_E1TaoJFTEeaU3PnuDDmqGg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E1UowZFTEeaU3PnuDDmqGg" x="1383" y="278" width="134" height="80"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_iltvYJFTEeaU3PnuDDmqGg" type="Comment_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_iluWcJFTEeaU3PnuDDmqGg" type="Comment_BodyLabel"/>
+      <element xmi:type="uml:Comment" href="RpyGeometry.uml#_ilshQJFTEeaU3PnuDDmqGg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iltvYZFTEeaU3PnuDDmqGg" x="272" y="613" width="261" height="88"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_WbrR4ZFHEeaU3PnuDDmqGg" name="diagram_compatibility_version" stringValue="1.2.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_WbrR4pFHEeaU3PnuDDmqGg"/>
+    <styles xmi:type="style:PapyrusViewStyle" xmi:id="_WbrR45FHEeaU3PnuDDmqGg">
+      <owner xmi:type="uml:Model" href="RpyGeometry.uml#_WUNX8JFHEeaU3PnuDDmqGg"/>
+    </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_P83l8JFIEeaU3PnuDDmqGg" name="css_stylesheets"/>
+    <element xmi:type="uml:Model" href="RpyGeometry.uml#_WUNX8JFHEeaU3PnuDDmqGg"/>
+    <edges xmi:type="notation:Connector" xmi:id="_E5FdgJFKEeaU3PnuDDmqGg" type="Association_Edge" source="_7daNQJFJEeaU3PnuDDmqGg" target="_viXpgJFHEeaU3PnuDDmqGg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_E5GEkJFKEeaU3PnuDDmqGg" type="Association_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_F_r5MJFKEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_E5GEkZFKEeaU3PnuDDmqGg" x="-1" y="-17"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_E5GEkpFKEeaU3PnuDDmqGg" type="Association_NameLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_F_ym4JFKEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_E5GEk5FKEeaU3PnuDDmqGg" y="18"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_E5GElJFKEeaU3PnuDDmqGg" visible="false" type="Association_TargetRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_F_7w0JFKEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_E5GElZFKEeaU3PnuDDmqGg" x="80" y="-15"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_E5GElpFKEeaU3PnuDDmqGg" type="Association_SourceRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GADsoJFKEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_E5GEl5FKEeaU3PnuDDmqGg" x="-67" y="16"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_E5GEmJFKEeaU3PnuDDmqGg" visible="false" type="Association_SourceMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GAMPgJFKEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_E5GEmZFKEeaU3PnuDDmqGg" x="11" y="21"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_E5GEmpFKEeaU3PnuDDmqGg" type="Association_TargetMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GAULUJFKEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_E5GEm5FKEeaU3PnuDDmqGg" x="-42" y="-18"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_E5FdgZFKEeaU3PnuDDmqGg"/>
+      <element xmi:type="uml:Association" href="RpyGeometry.uml#_E4-v0JFKEeaU3PnuDDmqGg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_E5FdgpFKEeaU3PnuDDmqGg" points="[384, 251, -643984, -643984]$[269, 251, -643984, -643984]$[269, 128, -643984, -643984]$[358, 128, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_E5d4AJFKEeaU3PnuDDmqGg" id="(0.0,0.26506024096385544)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_E5efEJFKEeaU3PnuDDmqGg" id="(0.0,0.5723270440251572)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_TzzwYJFKEeaU3PnuDDmqGg" type="Generalization_Edge" source="_Qd2hMJFKEeaU3PnuDDmqGg" target="_7daNQJFJEeaU3PnuDDmqGg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_TzzwY5FKEeaU3PnuDDmqGg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_UIrNIJFKEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_TzzwZJFKEeaU3PnuDDmqGg" x="-1" y="38"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_TzzwYZFKEeaU3PnuDDmqGg"/>
+      <element xmi:type="uml:Generalization" href="RpyGeometry.uml#_TzsboJFKEeaU3PnuDDmqGg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_TzzwYpFKEeaU3PnuDDmqGg" points="[490, 353, -643984, -643984]$[485, 312, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_T0POMJFKEeaU3PnuDDmqGg" id="(0.5650224215246636,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_T0QcUJFKEeaU3PnuDDmqGg" id="(0.5974842767295597,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_WXoYAJFKEeaU3PnuDDmqGg" type="Association_Edge" source="_Qd2hMJFKEeaU3PnuDDmqGg" target="_viXpgJFHEeaU3PnuDDmqGg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_WXoYA5FKEeaU3PnuDDmqGg" type="Association_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_WsmicJFKEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_WXoYBJFKEeaU3PnuDDmqGg" x="1" y="-18"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_WXoYBZFKEeaU3PnuDDmqGg" type="Association_NameLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_WsvsYJFKEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_WXoYBpFKEeaU3PnuDDmqGg" x="-1" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_WXoYB5FKEeaU3PnuDDmqGg" visible="false" type="Association_TargetRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Ws42UJFKEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_WXoYCJFKEeaU3PnuDDmqGg" x="25" y="-5"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_WXoYCZFKEeaU3PnuDDmqGg" type="Association_SourceRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_WtCAQJFKEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_WXoYCpFKEeaU3PnuDDmqGg" x="-44" y="6"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_WXoYC5FKEeaU3PnuDDmqGg" visible="false" type="Association_SourceMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_WtR34JFKEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_WXoYDJFKEeaU3PnuDDmqGg" x="42" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_WXo_EJFKEeaU3PnuDDmqGg" type="Association_TargetMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_WtmoAJFKEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_WXo_EZFKEeaU3PnuDDmqGg" x="-28" y="9"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_WXoYAZFKEeaU3PnuDDmqGg"/>
+      <element xmi:type="uml:Association" href="RpyGeometry.uml#_WXf1IJFKEeaU3PnuDDmqGg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WXoYApFKEeaU3PnuDDmqGg" points="[576, 395, -643984, -643984]$[716, 395, -643984, -643984]$[716, 149, -643984, -643984]$[571, 149, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WYEc4JFKEeaU3PnuDDmqGg" id="(1.0,0.3157894736842105)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WYEc4ZFKEeaU3PnuDDmqGg" id="(1.0,0.7044025157232704)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_ZwzTQJFKEeaU3PnuDDmqGg" type="Association_Edge" source="_Qd2hMJFKEeaU3PnuDDmqGg" target="_viXpgJFHEeaU3PnuDDmqGg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ZwzTQ5FKEeaU3PnuDDmqGg" type="Association_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_NXPgIJFLEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ZwzTRJFKEeaU3PnuDDmqGg" x="1" y="-18"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Zwz6UJFKEeaU3PnuDDmqGg" type="Association_NameLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_NXW04JFLEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Zwz6UZFKEeaU3PnuDDmqGg" y="19"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Zwz6UpFKEeaU3PnuDDmqGg" visible="false" type="Association_TargetRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_NXmsgJFLEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Zwz6U5FKEeaU3PnuDDmqGg" x="25" y="-19"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Zwz6VJFKEeaU3PnuDDmqGg" type="Association_SourceRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_NXvPYJFLEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Zwz6VZFKEeaU3PnuDDmqGg" x="-31" y="7"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Zwz6VpFKEeaU3PnuDDmqGg" visible="false" type="Association_SourceMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_NX3LMJFLEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Zwz6V5FKEeaU3PnuDDmqGg" x="25" y="18"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Zwz6WJFKEeaU3PnuDDmqGg" type="Association_TargetMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_NYCKUJFLEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Zwz6WZFKEeaU3PnuDDmqGg" x="-20" y="3"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_ZwzTQZFKEeaU3PnuDDmqGg"/>
+      <element xmi:type="uml:Association" href="RpyGeometry.uml#_Zwl34JFKEeaU3PnuDDmqGg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ZwzTQpFKEeaU3PnuDDmqGg" points="[576, 374, -643984, -643984]$[682, 374, -643984, -643984]$[682, 185, -643984, -643984]$[571, 194, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZxR0YJFKEeaU3PnuDDmqGg" id="(1.0,0.15789473684210525)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZxSbcJFKEeaU3PnuDDmqGg" id="(1.0,0.9308176100628931)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_fepm4JFKEeaU3PnuDDmqGg" type="Association_Edge" source="_Qd2hMJFKEeaU3PnuDDmqGg" target="_viXpgJFHEeaU3PnuDDmqGg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_feqN8JFKEeaU3PnuDDmqGg" type="Association_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_f2xL8JFKEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_feqN8ZFKEeaU3PnuDDmqGg" x="-1" y="-18"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_feqN8pFKEeaU3PnuDDmqGg" type="Association_NameLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_f28yIJFKEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_feqN85FKEeaU3PnuDDmqGg" x="-1" y="18"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_feqN9JFKEeaU3PnuDDmqGg" visible="false" type="Association_TargetRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_f3IYUJFKEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_feqN9ZFKEeaU3PnuDDmqGg" x="78" y="-18"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_feqN9pFKEeaU3PnuDDmqGg" type="Association_SourceRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_f3T-gJFKEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_feqN95FKEeaU3PnuDDmqGg" x="-47" y="12"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_feqN-JFKEeaU3PnuDDmqGg" visible="false" type="Association_SourceMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_f3gLwJFKEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_feqN-ZFKEeaU3PnuDDmqGg" x="79" y="19"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_feqN-pFKEeaU3PnuDDmqGg" type="Association_TargetMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_f3rx8JFKEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_feqN-5FKEeaU3PnuDDmqGg" x="-25" y="12"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_fepm4ZFKEeaU3PnuDDmqGg"/>
+      <element xmi:type="uml:Association" href="RpyGeometry.uml#_feZIMJFKEeaU3PnuDDmqGg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fepm4pFKEeaU3PnuDDmqGg" points="[576, 419, -643984, -643984]$[751, 419, -643984, -643984]$[751, 120, -643984, -643984]$[571, 120, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ffNAgJFKEeaU3PnuDDmqGg" id="(1.0,0.49624060150375937)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ffNAgZFKEeaU3PnuDDmqGg" id="(1.0,0.5220125786163522)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_r6QzAJFKEeaU3PnuDDmqGg" type="Association_Edge" source="_Qd2hMJFKEeaU3PnuDDmqGg" target="_viXpgJFHEeaU3PnuDDmqGg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_r6RaEJFKEeaU3PnuDDmqGg" type="Association_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_sU12MJFKEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_r6RaEZFKEeaU3PnuDDmqGg" y="-19"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_r6RaEpFKEeaU3PnuDDmqGg" type="Association_NameLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_sVCqgJFKEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_r6RaE5FKEeaU3PnuDDmqGg" x="-1" y="17"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_r6RaFJFKEeaU3PnuDDmqGg" visible="false" type="Association_TargetRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_sVOQsJFKEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_r6RaFZFKEeaU3PnuDDmqGg" x="76" y="-18"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_r6RaFpFKEeaU3PnuDDmqGg" type="Association_SourceRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_sVhLoJFKEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_r6RaF5FKEeaU3PnuDDmqGg" x="-43" y="15"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_r6RaGJFKEeaU3PnuDDmqGg" visible="false" type="Association_SourceMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_sVunAJFKEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_r6RaGZFKEeaU3PnuDDmqGg" x="76" y="19"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_r6SBIJFKEeaU3PnuDDmqGg" type="Association_TargetMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_sV5mIJFKEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_r6SBIZFKEeaU3PnuDDmqGg" x="-21" y="17"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_r6QzAZFKEeaU3PnuDDmqGg"/>
+      <element xmi:type="uml:Association" href="RpyGeometry.uml#_r6DXoJFKEeaU3PnuDDmqGg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_r6QzApFKEeaU3PnuDDmqGg" points="[576, 455, -643984, -643984]$[772, 455, -643984, -643984]$[772, 77, -643984, -643984]$[571, 77, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_r633AJFKEeaU3PnuDDmqGg" id="(1.0,0.7669172932330827)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_r633AZFKEeaU3PnuDDmqGg" id="(1.0,0.25157232704402516)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_GtpggJFMEeaU3PnuDDmqGg" type="Generalization_Edge" source="_EULHsJFMEeaU3PnuDDmqGg" target="_g-wnYJFNEeaU3PnuDDmqGg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_GtquoJFMEeaU3PnuDDmqGg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_HBSOMJFMEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_GtquoZFMEeaU3PnuDDmqGg" x="1" y="39"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_GtpggZFMEeaU3PnuDDmqGg"/>
+      <element xmi:type="uml:Generalization" href="RpyGeometry.uml#_GtdTQJFMEeaU3PnuDDmqGg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GtpggpFMEeaU3PnuDDmqGg" points="[459, 546, -643984, -643984]$[471, 486, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GuMTEJFMEeaU3PnuDDmqGg" id="(0.6200716845878136,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GuMTEZFMEeaU3PnuDDmqGg" id="(0.34057971014492755,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_qyQXMJFMEeaU3PnuDDmqGg" type="Comment_AnnotatedElementEdge" source="_kCWwsJFMEeaU3PnuDDmqGg" target="_NFyuUJFMEeaU3PnuDDmqGg">
+      <styles xmi:type="notation:FontStyle" xmi:id="_qyQXMZFMEeaU3PnuDDmqGg"/>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_qyQXMpFMEeaU3PnuDDmqGg" points="[1268, 144, -643984, -643984]$[1210, 156, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qy2NEJFMEeaU3PnuDDmqGg" id="(0.0,0.8972602739726028)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qy2NEZFMEeaU3PnuDDmqGg" id="(1.0,0.48556430446194226)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_pgyS0JFNEeaU3PnuDDmqGg" type="Association_Edge" source="_g-wnYJFNEeaU3PnuDDmqGg" target="_NFyuUJFMEeaU3PnuDDmqGg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_pgyS05FNEeaU3PnuDDmqGg" type="Association_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_eUm8AJFSEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_pgyS1JFNEeaU3PnuDDmqGg" x="-2" y="-17"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_pgyS1ZFNEeaU3PnuDDmqGg" type="Association_NameLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_eVPOIJFSEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_pgyS1pFNEeaU3PnuDDmqGg" x="1" y="19"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_pgyS15FNEeaU3PnuDDmqGg" visible="false" type="Association_TargetRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_eVo2wJFSEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_pgyS2JFNEeaU3PnuDDmqGg" x="-78" y="-69"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_pgyS2ZFNEeaU3PnuDDmqGg" type="Association_SourceRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_eWCfYJFSEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_pgyS2pFNEeaU3PnuDDmqGg" x="-10" y="19"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_pgyS25FNEeaU3PnuDDmqGg" visible="false" type="Association_SourceMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_eWZEsJFSEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_pgyS3JFNEeaU3PnuDDmqGg" x="12" y="19"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_pgyS3ZFNEeaU3PnuDDmqGg" type="Association_TargetMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_eWqKcJFSEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_pgyS3pFNEeaU3PnuDDmqGg" x="-12" y="-18"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_pgyS0ZFNEeaU3PnuDDmqGg"/>
+      <element xmi:type="uml:Association" href="RpyGeometry.uml#_pggmAJFNEeaU3PnuDDmqGg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_pgyS0pFNEeaU3PnuDDmqGg" points="[956, 538, -643984, -643984]$[896, 373, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_phYvwJFNEeaU3PnuDDmqGg" id="(0.6557971014492754,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_phYvwZFNEeaU3PnuDDmqGg" id="(0.24633431085043989,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_x_u1EJFNEeaU3PnuDDmqGg" type="Association_Edge" source="_g-wnYJFNEeaU3PnuDDmqGg" target="_Qd2hMJFKEeaU3PnuDDmqGg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_x_vcIJFNEeaU3PnuDDmqGg" type="Association_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_fHZxcJF_EeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_x_vcIZFNEeaU3PnuDDmqGg" y="-19"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_x_vcIpFNEeaU3PnuDDmqGg" type="Association_NameLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_fHyzAJF_EeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_x_vcI5FNEeaU3PnuDDmqGg" x="-1" y="18"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_x_vcJJFNEeaU3PnuDDmqGg" visible="false" type="Association_TargetRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_fIFt8JF_EeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_x_vcJZFNEeaU3PnuDDmqGg" x="106" y="-51"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_x_vcJpFNEeaU3PnuDDmqGg" type="Association_SourceRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_fIYo4JF_EeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_x_vcJ5FNEeaU3PnuDDmqGg" x="70" y="-44"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_x_vcKJFNEeaU3PnuDDmqGg" visible="false" type="Association_SourceMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_fIpuoJF_EeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_x_vcKZFNEeaU3PnuDDmqGg" x="30" y="19"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_x_vcKpFNEeaU3PnuDDmqGg" type="Association_TargetMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_fI5mQJF_EeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_x_vcK5FNEeaU3PnuDDmqGg" x="-15" y="-17"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_x_u1EZFNEeaU3PnuDDmqGg"/>
+      <element xmi:type="uml:Association" href="RpyGeometry.uml#_x_chMJFNEeaU3PnuDDmqGg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_x_u1EpFNEeaU3PnuDDmqGg" points="[777, 550, -643984, -643984]$[814, 478, -643984, -643984]$[576, 478, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yAYVUJFNEeaU3PnuDDmqGg" id="(0.14130434782608695,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yAYVUZFNEeaU3PnuDDmqGg" id="(1.0,0.9398496240601504)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_CFhM4JFOEeaU3PnuDDmqGg" type="Association_Edge" source="_g-wnYJFNEeaU3PnuDDmqGg" target="_g-wnYJFNEeaU3PnuDDmqGg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_CFhM45FOEeaU3PnuDDmqGg" type="Association_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_-fZ6cJFQEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_CFhM5JFOEeaU3PnuDDmqGg" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_CFhM5ZFOEeaU3PnuDDmqGg" type="Association_NameLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_-fs1YJFQEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_CFhz8JFOEeaU3PnuDDmqGg" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_CFhz8ZFOEeaU3PnuDDmqGg" visible="false" type="Association_TargetRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_-gBlgJFQEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_CFhz8pFOEeaU3PnuDDmqGg" x="51" y="-17"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_CFhz85FOEeaU3PnuDDmqGg" type="Association_SourceRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_-gTSUJFQEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_CFhz9JFOEeaU3PnuDDmqGg" x="-25" y="47"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_CFhz9ZFOEeaU3PnuDDmqGg" visible="false" type="Association_SourceMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_-gh70JFQEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_CFhz9pFOEeaU3PnuDDmqGg" x="65" y="15"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_CFhz95FOEeaU3PnuDDmqGg" type="Association_TargetMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_-gxzcJFQEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_CFhz-JFOEeaU3PnuDDmqGg" x="-32" y="38"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_CFhM4ZFOEeaU3PnuDDmqGg"/>
+      <element xmi:type="uml:Association" href="RpyGeometry.uml#_CFLOoJFOEeaU3PnuDDmqGg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CFhM4pFOEeaU3PnuDDmqGg" points="[1051, 616, -643984, -643984]$[1113, 616, -643984, -643984]$[1113, 747, -643984, -643984]$[982, 747, -643984, -643984]$[983, 645, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CGh5gJFOEeaU3PnuDDmqGg" id="(1.0,0.6947368421052632)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CGigkJFOEeaU3PnuDDmqGg" id="(0.7536231884057971,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_xK-P8JFQEeaU3PnuDDmqGg" type="Comment_AnnotatedElementEdge" source="_jMpT4JFQEeaU3PnuDDmqGg" target="_g-wnYJFNEeaU3PnuDDmqGg">
+      <styles xmi:type="notation:FontStyle" xmi:id="_xK-P8ZFQEeaU3PnuDDmqGg"/>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_xK-P8pFQEeaU3PnuDDmqGg" points="[1221, 705, -643984, -643984]$[1051, 638, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_xLiQoJFQEeaU3PnuDDmqGg" id="(0.020512820512820513,1.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_xLiQoZFQEeaU3PnuDDmqGg" id="(0.9818840579710145,0.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_wkwIAZFREeaU3PnuDDmqGg" type="StereotypeCommentLink" source="_uRtHUJFREeaU3PnuDDmqGg" target="_wkvg8JFREeaU3PnuDDmqGg">
+      <styles xmi:type="notation:FontStyle" xmi:id="_wkwIApFREeaU3PnuDDmqGg"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_wkwvEpFREeaU3PnuDDmqGg" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Model" href="RpyGeometry.uml#_uRqrEJFREeaU3PnuDDmqGg"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_wkwIA5FREeaU3PnuDDmqGg" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wkwvEJFREeaU3PnuDDmqGg"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wkwvEZFREeaU3PnuDDmqGg"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_MsnxoJFSEeaU3PnuDDmqGg" type="Association_Edge" source="_g-wnYJFNEeaU3PnuDDmqGg" target="_JVmLcJFSEeaU3PnuDDmqGg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_MsoYsJFSEeaU3PnuDDmqGg" type="Association_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_iLO9YJFUEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_MsoYsZFSEeaU3PnuDDmqGg" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_MsoYspFSEeaU3PnuDDmqGg" visible="false" type="Association_NameLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_iLgqMJFUEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_MsoYs5FSEeaU3PnuDDmqGg" x="-50" y="8"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_MsoYtJFSEeaU3PnuDDmqGg" visible="false" type="Association_TargetRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_iLwh0JFUEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_MsoYtZFSEeaU3PnuDDmqGg" x="13" y="-25"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_MsoYtpFSEeaU3PnuDDmqGg" type="Association_SourceRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_iMEq4JFUEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_MsoYt5FSEeaU3PnuDDmqGg" x="-216" y="27"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_MsoYuJFSEeaU3PnuDDmqGg" visible="false" type="Association_SourceMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_iM-p0JFUEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_MsoYuZFSEeaU3PnuDDmqGg" x="45" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_MsoYupFSEeaU3PnuDDmqGg" type="Association_TargetMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_iNb80JFUEeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_MsoYu5FSEeaU3PnuDDmqGg" x="-45" y="-20"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_MsnxoZFSEeaU3PnuDDmqGg"/>
+      <element xmi:type="uml:Association" href="RpyGeometry.uml#_MsLFsJFSEeaU3PnuDDmqGg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_MsnxopFSEeaU3PnuDDmqGg" points="[1051, 544, -643984, -643984]$[1292, 532, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MtdfIJFSEeaU3PnuDDmqGg" id="(1.0,0.2074074074074074)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MtdfIZFSEeaU3PnuDDmqGg" id="(0.0,0.42)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_SYjkQJFTEeaU3PnuDDmqGg" type="Comment_AnnotatedElementEdge" source="_E1UowJFTEeaU3PnuDDmqGg" target="_JVmLcJFSEeaU3PnuDDmqGg">
+      <styles xmi:type="notation:FontStyle" xmi:id="_SYjkQZFTEeaU3PnuDDmqGg"/>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_SYjkQpFTEeaU3PnuDDmqGg" points="[1427, 450, -643984, -643984]$[1412, 524, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_SZHk8JFTEeaU3PnuDDmqGg" id="(0.3283582089552239,1.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_SZHk8ZFTEeaU3PnuDDmqGg" id="(0.61,0.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_tADnUJFTEeaU3PnuDDmqGg" type="Comment_AnnotatedElementEdge" source="_iltvYJFTEeaU3PnuDDmqGg" target="_g-wnYJFNEeaU3PnuDDmqGg">
+      <styles xmi:type="notation:FontStyle" xmi:id="_tADnUZFTEeaU3PnuDDmqGg"/>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_tADnUpFTEeaU3PnuDDmqGg" points="[713, 593, -643984, -643984]$[775, 583, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tA1qcJFTEeaU3PnuDDmqGg" id="(1.0,0.358695652173913)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tA1qcZFTEeaU3PnuDDmqGg" id="(0.0,0.6210526315789474)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_dg2qYJF_EeaU3PnuDDmqGg" type="Association_Edge" source="_g-wnYJFNEeaU3PnuDDmqGg" target="_viXpgJFHEeaU3PnuDDmqGg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dg3RcJF_EeaU3PnuDDmqGg" type="Association_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_egcfIJF_EeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dg3RcZF_EeaU3PnuDDmqGg" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_dg3RcpF_EeaU3PnuDDmqGg" type="Association_NameLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_ehCVAJF_EeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dg3Rc5F_EeaU3PnuDDmqGg" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_dg3RdJF_EeaU3PnuDDmqGg" visible="false" type="Association_TargetRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_ehUB0JF_EeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dg3RdZF_EeaU3PnuDDmqGg" x="160" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_dg3RdpF_EeaU3PnuDDmqGg" type="Association_SourceRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_ehlHkJF_EeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dg3Rd5F_EeaU3PnuDDmqGg" x="-186" y="-10"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_dg3ReJF_EeaU3PnuDDmqGg" visible="false" type="Association_SourceMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_eh20YJF_EeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dg3ReZF_EeaU3PnuDDmqGg" x="160" y="20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_dg3RepF_EeaU3PnuDDmqGg" type="Association_TargetMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_eiJvUJF_EeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dg3Re5F_EeaU3PnuDDmqGg" x="-51" y="7"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_dg2qYZF_EeaU3PnuDDmqGg"/>
+      <element xmi:type="uml:Association" href="RpyGeometry.uml#_dgF1YJF_EeaU3PnuDDmqGg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dg2qYpF_EeaU3PnuDDmqGg" points="[775, 569, -643984, -643984]$[175, 569, -643984, -643984]$[175, 70, -643984, -643984]$[358, 70, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dhx3cJF_EeaU3PnuDDmqGg" id="(0.0,0.2)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dhx3cZF_EeaU3PnuDDmqGg" id="(0.0,0.20754716981132076)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_e00ugJGREeaU3PnuDDmqGg" type="Association_Edge" source="_g-wnYJFNEeaU3PnuDDmqGg" target="_viXpgJFHEeaU3PnuDDmqGg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_e00ug5GREeaU3PnuDDmqGg" type="Association_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_gBpuAJGREeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_e00uhJGREeaU3PnuDDmqGg" x="1" y="-19"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_e08DQJGREeaU3PnuDDmqGg" type="Association_NameLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_gB_FMJGREeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_e08DQZGREeaU3PnuDDmqGg" x="-1" y="18"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_e08DQpGREeaU3PnuDDmqGg" visible="false" type="Association_TargetRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_gCXfsJGREeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_e08DQ5GREeaU3PnuDDmqGg" x="193" y="-20"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_e08DRJGREeaU3PnuDDmqGg" type="Association_SourceRoleLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_gCsP0JGREeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_e08DRZGREeaU3PnuDDmqGg" x="-97" y="-14"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_e08DRpGREeaU3PnuDDmqGg" visible="false" type="Association_SourceMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_gDIUsJGREeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_e08DR5GREeaU3PnuDDmqGg" x="191" y="17"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="_e08DSJGREeaU3PnuDDmqGg" type="Association_TargetMultiplicityLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_gDjygJGREeaU3PnuDDmqGg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_e08DSZGREeaU3PnuDDmqGg" x="34" y="-15"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_e00ugZGREeaU3PnuDDmqGg"/>
+      <element xmi:type="uml:Association" href="RpyGeometry.uml#_e0Z3wJGREeaU3PnuDDmqGg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_e00ugpGREeaU3PnuDDmqGg" points="[775, 576, -643984, -643984]$[78, 586, -643984, -643984]$[78, 41, -643984, -643984]$[358, 41, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_e15FgJGREeaU3PnuDDmqGg" id="(0.0,0.37894736842105264)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_e15FgZGREeaU3PnuDDmqGg" id="(0.0,0.025157232704402517)"/>
+    </edges>
+  </notation:Diagram>
+  <css:ModelStyleSheets xmi:id="_EmKW8JFJEeaU3PnuDDmqGg">
+    <stylesheets xmi:type="css:StyleSheetReference" xmi:id="_EmK-AJFJEeaU3PnuDDmqGg" path="/org.eclipse.papyrus.interoperability.rpy.geometry/model/class_diagram.css"/>
+  </css:ModelStyleSheets>
+</xmi:XMI>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/model/RpyGeometry.uml b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/model/RpyGeometry.uml
new file mode 100644
index 0000000..fbd89e7
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/model/RpyGeometry.uml
@@ -0,0 +1,222 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">
+  <uml:Model xmi:id="_WUNX8JFHEeaU3PnuDDmqGg" name="RpyGeometry">
+    <ownedComment xmi:id="_kCMYoJFMEeaU3PnuDDmqGg" annotatedElement="_NFyHQJFMEeaU3PnuDDmqGg">
+      <body>Refer to https://www.w3.org/TR/SVG11/coords.html#EstablishingANewUserSpace for the meaning of each matrix member</body>
+    </ownedComment>
+    <ownedComment xmi:id="_jMoFwJFQEeaU3PnuDDmqGg" annotatedElement="_g-uyMJFNEeaU3PnuDDmqGg">
+      <body>All the values are expressed in the root coordinate system (transformation matrixes are applied)</body>
+    </ownedComment>
+    <ownedComment xmi:id="_E1TaoJFTEeaU3PnuDDmqGg" annotatedElement="_JVO_EJFSEeaU3PnuDDmqGg">
+      <body>Should be a model element from Rpy generated metamodel, with a transform and polygon attribute</body>
+    </ownedComment>
+    <ownedComment xmi:id="_ilshQJFTEeaU3PnuDDmqGg" annotatedElement="_g-uyMJFNEeaU3PnuDDmqGg">
+      <body>The only attribute to set is the rpyMetamodelObject. All the other attributes will be derived from it if possible</body>
+    </ownedComment>
+    <packageImport xmi:id="_WhYRQJFHEeaU3PnuDDmqGg">
+      <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+    </packageImport>
+    <packageImport xmi:id="_GZfcIJFREeaU3PnuDDmqGg">
+      <importedPackage xmi:type="uml:Profile" href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+    </packageImport>
+    <packagedElement xmi:type="uml:Class" xmi:id="_viPtsJFHEeaU3PnuDDmqGg" name="Point">
+      <ownedAttribute xmi:id="_mJSIUJFJEeaU3PnuDDmqGg" name="X" aggregation="composite">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDoubleObject"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_wxp1MJFJEeaU3PnuDDmqGg" name="Y" aggregation="composite">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDoubleObject"/>
+      </ownedAttribute>
+      <ownedOperation xmi:id="_3dRjMJFKEeaU3PnuDDmqGg" name="minus">
+        <ownedParameter xmi:id="_-bc2QJFKEeaU3PnuDDmqGg" name="ret" type="_viPtsJFHEeaU3PnuDDmqGg" direction="return"/>
+      </ownedOperation>
+      <ownedOperation xmi:id="_EZhXMJFLEeaU3PnuDDmqGg" name="minus">
+        <ownedParameter xmi:id="_EZhXMZFLEeaU3PnuDDmqGg" name="ret" type="_viPtsJFHEeaU3PnuDDmqGg" direction="return"/>
+        <ownedParameter xmi:id="_JXHSkJFLEeaU3PnuDDmqGg" name="point" type="_viPtsJFHEeaU3PnuDDmqGg"/>
+      </ownedOperation>
+      <ownedOperation xmi:id="_Q1-34JFLEeaU3PnuDDmqGg" name="add">
+        <ownedParameter xmi:id="_Q1-34ZFLEeaU3PnuDDmqGg" name="ret" type="_viPtsJFHEeaU3PnuDDmqGg" direction="return"/>
+        <ownedParameter xmi:id="_Q1-34pFLEeaU3PnuDDmqGg" name="point" type="_viPtsJFHEeaU3PnuDDmqGg"/>
+      </ownedOperation>
+      <ownedOperation xmi:id="_Uaw1MP6DEeaSFt-Lsxibvg" name="getIntX">
+        <ownedParameter xmi:id="_dxmBsP6DEeaSFt-Lsxibvg" name="ret" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EIntegerObject"/>
+        </ownedParameter>
+      </ownedOperation>
+      <ownedOperation xmi:id="_kXKAcP6DEeaSFt-Lsxibvg" name="getIntY">
+        <ownedParameter xmi:id="_kXKAcf6DEeaSFt-Lsxibvg" name="ret" direction="return">
+          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EIntegerObject"/>
+        </ownedParameter>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_7dY_IJFJEeaU3PnuDDmqGg" name="Polygon">
+      <ownedAttribute xmi:id="_E4_W4pFKEeaU3PnuDDmqGg" name="points" type="_viPtsJFHEeaU3PnuDDmqGg" aggregation="composite" association="_E4-v0JFKEeaU3PnuDDmqGg">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JV9RcJFKEeaU3PnuDDmqGg" value="1"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JWGbYJFKEeaU3PnuDDmqGg" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_E4-v0JFKEeaU3PnuDDmqGg" memberEnd="_E4_W4pFKEeaU3PnuDDmqGg _E5AlAJFKEeaU3PnuDDmqGg">
+      <eAnnotations xmi:id="_E4_W4JFKEeaU3PnuDDmqGg" source="org.eclipse.papyrus">
+        <details xmi:id="_E4_W4ZFKEeaU3PnuDDmqGg" key="nature" value="UML_Nature"/>
+      </eAnnotations>
+      <ownedEnd xmi:id="_E5AlAJFKEeaU3PnuDDmqGg" name="polygon" type="_7dY_IJFJEeaU3PnuDDmqGg" association="_E4-v0JFKEeaU3PnuDDmqGg"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_Qd0sAJFKEeaU3PnuDDmqGg" name="Rectangle">
+      <generalization xmi:id="_TzsboJFKEeaU3PnuDDmqGg" general="_7dY_IJFJEeaU3PnuDDmqGg"/>
+      <ownedAttribute xmi:id="_WXf1I5FKEeaU3PnuDDmqGg" name="topLeft" type="_viPtsJFHEeaU3PnuDDmqGg" isDerived="true" association="_WXf1IJFKEeaU3PnuDDmqGg"/>
+      <ownedAttribute xmi:id="_Zwme8pFKEeaU3PnuDDmqGg" name="topRight" type="_viPtsJFHEeaU3PnuDDmqGg" isDerived="true" association="_Zwl34JFKEeaU3PnuDDmqGg"/>
+      <ownedAttribute xmi:id="_fea9YpFKEeaU3PnuDDmqGg" name="bottomLeft" type="_viPtsJFHEeaU3PnuDDmqGg" isDerived="true" association="_feZIMJFKEeaU3PnuDDmqGg"/>
+      <ownedAttribute xmi:id="_r6D-spFKEeaU3PnuDDmqGg" name="bottomRight" type="_viPtsJFHEeaU3PnuDDmqGg" isDerived="true" association="_r6DXoJFKEeaU3PnuDDmqGg"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_WXf1IJFKEeaU3PnuDDmqGg" memberEnd="_WXf1I5FKEeaU3PnuDDmqGg _WXgcMJFKEeaU3PnuDDmqGg">
+      <eAnnotations xmi:id="_WXf1IZFKEeaU3PnuDDmqGg" source="org.eclipse.papyrus">
+        <details xmi:id="_WXf1IpFKEeaU3PnuDDmqGg" key="nature" value="UML_Nature"/>
+      </eAnnotations>
+      <ownedEnd xmi:id="_WXgcMJFKEeaU3PnuDDmqGg" name="rectangle" type="_Qd0sAJFKEeaU3PnuDDmqGg" association="_WXf1IJFKEeaU3PnuDDmqGg"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_Zwl34JFKEeaU3PnuDDmqGg" memberEnd="_Zwme8pFKEeaU3PnuDDmqGg _Zwme85FKEeaU3PnuDDmqGg">
+      <eAnnotations xmi:id="_Zwme8JFKEeaU3PnuDDmqGg" source="org.eclipse.papyrus">
+        <details xmi:id="_Zwme8ZFKEeaU3PnuDDmqGg" key="nature" value="UML_Nature"/>
+      </eAnnotations>
+      <ownedEnd xmi:id="_Zwme85FKEeaU3PnuDDmqGg" name="rectangle" type="_Qd0sAJFKEeaU3PnuDDmqGg" association="_Zwl34JFKEeaU3PnuDDmqGg"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_feZIMJFKEeaU3PnuDDmqGg" memberEnd="_fea9YpFKEeaU3PnuDDmqGg _fea9Y5FKEeaU3PnuDDmqGg">
+      <eAnnotations xmi:id="_fea9YJFKEeaU3PnuDDmqGg" source="org.eclipse.papyrus">
+        <details xmi:id="_fea9YZFKEeaU3PnuDDmqGg" key="nature" value="UML_Nature"/>
+      </eAnnotations>
+      <ownedEnd xmi:id="_fea9Y5FKEeaU3PnuDDmqGg" name="rectangle" type="_Qd0sAJFKEeaU3PnuDDmqGg" association="_feZIMJFKEeaU3PnuDDmqGg"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_r6DXoJFKEeaU3PnuDDmqGg" memberEnd="_r6D-spFKEeaU3PnuDDmqGg _r6D-s5FKEeaU3PnuDDmqGg">
+      <eAnnotations xmi:id="_r6D-sJFKEeaU3PnuDDmqGg" source="org.eclipse.papyrus">
+        <details xmi:id="_r6D-sZFKEeaU3PnuDDmqGg" key="nature" value="UML_Nature"/>
+      </eAnnotations>
+      <ownedEnd xmi:id="_r6D-s5FKEeaU3PnuDDmqGg" name="rectangle" type="_Qd0sAJFKEeaU3PnuDDmqGg" association="_r6DXoJFKEeaU3PnuDDmqGg"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Enumeration" xmi:id="_1Pm8UJFLEeaU3PnuDDmqGg" name="Position">
+      <ownedLiteral xmi:id="_7kvSYJFLEeaU3PnuDDmqGg" name="NORTH"/>
+      <ownedLiteral xmi:id="_80GBcJFLEeaU3PnuDDmqGg" name="SOUTH"/>
+      <ownedLiteral xmi:id="_91VcAJFLEeaU3PnuDDmqGg" name="EAST"/>
+      <ownedLiteral xmi:id="__M2BgJFLEeaU3PnuDDmqGg" name="WEST"/>
+      <ownedLiteral xmi:id="_XS0u0P6AEeaSFt-Lsxibvg" name="NORTH_EAST"/>
+      <ownedLiteral xmi:id="_XjExUP6AEeaSFt-Lsxibvg" name="NORTH_WEST"/>
+      <ownedLiteral xmi:id="_XnrkgP6AEeaSFt-Lsxibvg" name="SOUTH_EAST"/>
+      <ownedLiteral xmi:id="_X0DzoP6AEeaSFt-Lsxibvg" name="SOUTH_WEST"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_EUKgoJFMEeaU3PnuDDmqGg" name="RpyPort">
+      <generalization xmi:id="_GtdTQJFMEeaU3PnuDDmqGg" general="_g-uyMJFNEeaU3PnuDDmqGg"/>
+      <ownedAttribute xmi:id="_r8FbIJFOEeaU3PnuDDmqGg" name="position" type="_1Pm8UJFLEeaU3PnuDDmqGg"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_NFyHQJFMEeaU3PnuDDmqGg" name="TransformMatrix">
+      <ownedAttribute xmi:id="_RG5zUJFMEeaU3PnuDDmqGg" name="a">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDoubleObject"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_rbCOcJFMEeaU3PnuDDmqGg" name="b">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDoubleObject"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_rvVqgJFMEeaU3PnuDDmqGg" name="c">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDoubleObject"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_r5x_8JFMEeaU3PnuDDmqGg" name="d">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDoubleObject"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_tx9CgJFMEeaU3PnuDDmqGg" name="e">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDoubleObject"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_vZZhcJFMEeaU3PnuDDmqGg" name="f">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EDoubleObject"/>
+      </ownedAttribute>
+      <ownedOperation xmi:id="_7YDEwJFMEeaU3PnuDDmqGg" name="add">
+        <ownedParameter xmi:id="_7YDEwZFMEeaU3PnuDDmqGg" name="ret" type="_NFyHQJFMEeaU3PnuDDmqGg" direction="return"/>
+        <ownedParameter xmi:id="_7YDEwpFMEeaU3PnuDDmqGg" name="matrix" type="_NFyHQJFMEeaU3PnuDDmqGg"/>
+      </ownedOperation>
+      <ownedOperation xmi:id="_7YES4JFMEeaU3PnuDDmqGg" name="minus">
+        <ownedParameter xmi:id="_7YES4ZFMEeaU3PnuDDmqGg" name="ret" type="_NFyHQJFMEeaU3PnuDDmqGg" direction="return"/>
+      </ownedOperation>
+      <ownedOperation xmi:id="_7YFhAJFMEeaU3PnuDDmqGg" name="minus">
+        <ownedParameter xmi:id="_7YFhAZFMEeaU3PnuDDmqGg" name="ret" type="_NFyHQJFMEeaU3PnuDDmqGg" direction="return"/>
+        <ownedParameter xmi:id="_7YFhApFMEeaU3PnuDDmqGg" name="matrix" type="_NFyHQJFMEeaU3PnuDDmqGg"/>
+      </ownedOperation>
+      <ownedOperation xmi:id="_GDq58JFNEeaU3PnuDDmqGg" name="multiply">
+        <ownedParameter xmi:id="_GDq58ZFNEeaU3PnuDDmqGg" name="ret" type="_viPtsJFHEeaU3PnuDDmqGg" direction="return"/>
+        <ownedParameter xmi:id="_GDq58pFNEeaU3PnuDDmqGg" name="point" type="_viPtsJFHEeaU3PnuDDmqGg"/>
+      </ownedOperation>
+      <ownedOperation xmi:id="_GNCRUJFNEeaU3PnuDDmqGg" name="multiply">
+        <ownedParameter xmi:id="_GNCRUZFNEeaU3PnuDDmqGg" name="ret" type="_NFyHQJFMEeaU3PnuDDmqGg" direction="return"/>
+        <ownedParameter xmi:id="_GNCRUpFNEeaU3PnuDDmqGg" name="matrix" type="_NFyHQJFMEeaU3PnuDDmqGg"/>
+      </ownedOperation>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_g-uyMJFNEeaU3PnuDDmqGg" name="RpyShape">
+      <ownedAttribute xmi:id="_pghNEZFNEeaU3PnuDDmqGg" name="transform" type="_NFyHQJFMEeaU3PnuDDmqGg" aggregation="composite" association="_pggmAJFNEeaU3PnuDDmqGg"/>
+      <ownedAttribute xmi:id="_x_dIQJFNEeaU3PnuDDmqGg" name="rectangle" type="_Qd0sAJFKEeaU3PnuDDmqGg" aggregation="composite" association="_x_chMJFNEeaU3PnuDDmqGg"/>
+      <ownedAttribute xmi:id="_CFND0pFOEeaU3PnuDDmqGg" name="parent" type="_g-uyMJFNEeaU3PnuDDmqGg" association="_CFLOoJFOEeaU3PnuDDmqGg">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LBg3gJFOEeaU3PnuDDmqGg"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LBr2oJFOEeaU3PnuDDmqGg" value="1"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_MsMT0ZFSEeaU3PnuDDmqGg" name="rpyMetamodelObject" type="_JVO_EJFSEeaU3PnuDDmqGg" association="_MsLFsJFSEeaU3PnuDDmqGg"/>
+      <ownedAttribute xmi:id="_dgHqkJF_EeaU3PnuDDmqGg" name="parentRelativePosition" type="_viPtsJFHEeaU3PnuDDmqGg" aggregation="composite" association="_dgF1YJF_EeaU3PnuDDmqGg"/>
+      <ownedAttribute xmi:id="_5muI4JF_EeaU3PnuDDmqGg" name="height">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EIntegerObject"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_8_bKEJF_EeaU3PnuDDmqGg" name="width">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EIntegerObject"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:id="_e0bs8JGREeaU3PnuDDmqGg" name="absolutePosition" type="_viPtsJFHEeaU3PnuDDmqGg" aggregation="composite" association="_e0Z3wJGREeaU3PnuDDmqGg"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_pggmAJFNEeaU3PnuDDmqGg" memberEnd="_pghNEZFNEeaU3PnuDDmqGg _pgibMJFNEeaU3PnuDDmqGg">
+      <eAnnotations xmi:id="_pggmAZFNEeaU3PnuDDmqGg" source="org.eclipse.papyrus">
+        <details xmi:id="_pghNEJFNEeaU3PnuDDmqGg" key="nature" value="UML_Nature"/>
+      </eAnnotations>
+      <ownedEnd xmi:id="_pgibMJFNEeaU3PnuDDmqGg" name="rpyshape" type="_g-uyMJFNEeaU3PnuDDmqGg" association="_pggmAJFNEeaU3PnuDDmqGg"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_x_chMJFNEeaU3PnuDDmqGg" memberEnd="_x_dIQJFNEeaU3PnuDDmqGg _x_dIQZFNEeaU3PnuDDmqGg">
+      <eAnnotations xmi:id="_x_chMZFNEeaU3PnuDDmqGg" source="org.eclipse.papyrus">
+        <details xmi:id="_x_chMpFNEeaU3PnuDDmqGg" key="nature" value="UML_Nature"/>
+      </eAnnotations>
+      <ownedEnd xmi:id="_x_dIQZFNEeaU3PnuDDmqGg" name="rpyshape" type="_g-uyMJFNEeaU3PnuDDmqGg" association="_x_chMJFNEeaU3PnuDDmqGg"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_CFLOoJFOEeaU3PnuDDmqGg" memberEnd="_CFND0pFOEeaU3PnuDDmqGg _CFNq4JFOEeaU3PnuDDmqGg">
+      <eAnnotations xmi:id="_CFND0JFOEeaU3PnuDDmqGg" source="org.eclipse.papyrus">
+        <details xmi:id="_CFND0ZFOEeaU3PnuDDmqGg" key="nature" value="UML_Nature"/>
+      </eAnnotations>
+      <ownedEnd xmi:id="_CFNq4JFOEeaU3PnuDDmqGg" name="rpyshape" type="_g-uyMJFNEeaU3PnuDDmqGg" association="_CFLOoJFOEeaU3PnuDDmqGg"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_MsLFsJFSEeaU3PnuDDmqGg" name="rpyMetamodelObject" memberEnd="_MsMT0ZFSEeaU3PnuDDmqGg _MsMT0pFSEeaU3PnuDDmqGg">
+      <eAnnotations xmi:id="_MsLswJFSEeaU3PnuDDmqGg" source="org.eclipse.papyrus">
+        <details xmi:id="_MsMT0JFSEeaU3PnuDDmqGg" key="nature" value="UML_Nature"/>
+      </eAnnotations>
+      <ownedEnd xmi:id="_MsMT0pFSEeaU3PnuDDmqGg" name="rpyshape" type="_g-uyMJFNEeaU3PnuDDmqGg" association="_MsLFsJFSEeaU3PnuDDmqGg"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_dgF1YJF_EeaU3PnuDDmqGg" memberEnd="_dgHqkJF_EeaU3PnuDDmqGg _dgHqkZF_EeaU3PnuDDmqGg">
+      <eAnnotations xmi:id="_dgHDgJF_EeaU3PnuDDmqGg" source="org.eclipse.papyrus">
+        <details xmi:id="_dgHDgZF_EeaU3PnuDDmqGg" key="nature" value="UML_Nature"/>
+      </eAnnotations>
+      <ownedEnd xmi:id="_dgHqkZF_EeaU3PnuDDmqGg" name="rpyshape" type="_g-uyMJFNEeaU3PnuDDmqGg" association="_dgF1YJF_EeaU3PnuDDmqGg"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Association" xmi:id="_e0Z3wJGREeaU3PnuDDmqGg" memberEnd="_e0bs8JGREeaU3PnuDDmqGg _e0bs8ZGREeaU3PnuDDmqGg">
+      <eAnnotations xmi:id="_e0bF4JGREeaU3PnuDDmqGg" source="org.eclipse.papyrus">
+        <details xmi:id="_e0bF4ZGREeaU3PnuDDmqGg" key="nature" value="UML_Nature"/>
+      </eAnnotations>
+      <ownedEnd xmi:id="_e0bs8ZGREeaU3PnuDDmqGg" name="rpyshape" type="_g-uyMJFNEeaU3PnuDDmqGg" association="_e0Z3wJGREeaU3PnuDDmqGg"/>
+    </packagedElement>
+    <profileApplication xmi:id="_WfI1kJFHEeaU3PnuDDmqGg">
+      <eAnnotations xmi:id="_WfMf8JFHEeaU3PnuDDmqGg" 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>
+    <profileApplication xmi:id="_xmicgJFOEeaU3PnuDDmqGg">
+      <eAnnotations xmi:id="_xmjDkJFOEeaU3PnuDDmqGg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="pathmap://PAPYRUS_ACTIONLANGUAGE_PROFILE/ActionLanguage-Profile.profile.uml#_Kv8EIKFXEeS_KNX0nfvIVQ"/>
+      </eAnnotations>
+      <appliedProfile href="pathmap://PAPYRUS_ACTIONLANGUAGE_PROFILE/ActionLanguage-Profile.profile.uml#ActionLanguage"/>
+    </profileApplication>
+  </uml:Model>
+  <uml:Model xmi:id="_uRqrEJFREeaU3PnuDDmqGg" name="Ecore">
+    <packagedElement xmi:type="uml:Class" xmi:id="_JVO_EJFSEeaU3PnuDDmqGg" name="EObject"/>
+  </uml:Model>
+  <Ecore:EPackage xmi:id="_a7z1MJFHEeaU3PnuDDmqGg" base_Package="_WUNX8JFHEeaU3PnuDDmqGg" packageName="rpygeometry" nsPrefix="rpygeom" nsURI="http://www.eclipse.org/papyrus/rpygeometry/1.0.0" basePackage="org.eclipse.papyrus.interoperability.rpy" prefix="RpyGeometry"/>
+  <Ecore:EReference xmi:id="_qOeKIJFLEeaU3PnuDDmqGg" isUnsettable="true" base_Property="_WXf1I5FKEeaU3PnuDDmqGg"/>
+  <Ecore:EReference xmi:id="_tuzdUJFLEeaU3PnuDDmqGg" isUnsettable="true" base_Property="_Zwme8pFKEeaU3PnuDDmqGg"/>
+  <Ecore:EReference xmi:id="_wSuLkJFLEeaU3PnuDDmqGg" isUnsettable="true" base_Property="_fea9YpFKEeaU3PnuDDmqGg"/>
+  <Ecore:EReference xmi:id="_ySSPkJFLEeaU3PnuDDmqGg" isUnsettable="true" base_Property="_r6D-spFKEeaU3PnuDDmqGg"/>
+  <Ecore:EPackage xmi:id="_wkHO0JFREeaU3PnuDDmqGg" base_Package="_uRqrEJFREeaU3PnuDDmqGg" nsURI="http://www.eclipse.org/emf/2002/Ecore"/>
+</xmi:XMI>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/model/TODO b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/model/TODO
new file mode 100644
index 0000000..fd04e36
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/model/TODO
@@ -0,0 +1,7 @@
+Report position in UML model (north_east, north_west, south_east and south_west)
+rename edge position into position
+
+
+TODO set enum value like in PositionConstants.class
+Try to set Point on PrecisionPoint class? 
+Rectangle on PrecisionRectangle class ? 
\ No newline at end of file
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/model/class_diagram.css b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/model/class_diagram.css
new file mode 100644
index 0000000..61130c2
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/model/class_diagram.css
@@ -0,0 +1,8 @@
+
+
+Class > Compartment[kind="nestedclassifiers"] {
+    visible:false;
+}
+ Compartment[kind="symbol"] {
+    visible:false;
+}
\ No newline at end of file
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/model/rpygeometry.ecore b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/model/rpygeometry.ecore
new file mode 100644
index 0000000..3bdf05e
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/model/rpygeometry.ecore
@@ -0,0 +1,106 @@
+<?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="rpygeometry" nsURI="http://www.eclipse.org/papyrus/rpygeometry/1.0.0"
+    nsPrefix="rpygeom">
+  <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
+    <details key="originalName" value="RpyGeometry"/>
+  </eAnnotations>
+  <eClassifiers xsi:type="ecore:EClass" name="TransformMatrix">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="Refer to https://www.w3.org/TR/SVG11/coords.html#EstablishingANewUserSpace for the meaning of each matrix member"/>
+    </eAnnotations>
+    <eOperations name="add" ordered="false" lowerBound="1" eType="#//TransformMatrix">
+      <eParameters name="matrix" ordered="false" lowerBound="1" eType="#//TransformMatrix"/>
+    </eOperations>
+    <eOperations name="minus" ordered="false" lowerBound="1" eType="#//TransformMatrix"/>
+    <eOperations name="minus" ordered="false" lowerBound="1" eType="#//TransformMatrix">
+      <eParameters name="matrix" ordered="false" lowerBound="1" eType="#//TransformMatrix"/>
+    </eOperations>
+    <eOperations name="multiply" ordered="false" lowerBound="1" eType="#//Point">
+      <eParameters name="point" ordered="false" lowerBound="1" eType="#//Point"/>
+    </eOperations>
+    <eOperations name="multiply" ordered="false" lowerBound="1" eType="#//TransformMatrix">
+      <eParameters name="matrix" ordered="false" lowerBound="1" eType="#//TransformMatrix"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="a" ordered="false" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDoubleObject"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="b" ordered="false" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDoubleObject"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="c" ordered="false" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDoubleObject"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="d" ordered="false" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDoubleObject"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="e" ordered="false" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDoubleObject"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="f" ordered="false" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDoubleObject"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Point">
+    <eOperations name="minus" ordered="false" lowerBound="1" eType="#//Point"/>
+    <eOperations name="minus" ordered="false" lowerBound="1" eType="#//Point">
+      <eParameters name="point" ordered="false" lowerBound="1" eType="#//Point"/>
+    </eOperations>
+    <eOperations name="add" ordered="false" lowerBound="1" eType="#//Point">
+      <eParameters name="point" ordered="false" lowerBound="1" eType="#//Point"/>
+    </eOperations>
+    <eOperations name="getIntX" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
+    <eOperations name="getIntY" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="X" ordered="false" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDoubleObject"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="Y" ordered="false" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDoubleObject"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="RpyShape">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="All the values are expressed in the root coordinate system (transformation matrixes are applied)&#xD;&#xA;The only attribute to set is the rpyMetamodelObject. All the other attributes will be derived from it if possible"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="transform" ordered="false"
+        lowerBound="1" eType="#//TransformMatrix" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="rectangle" ordered="false"
+        lowerBound="1" eType="#//Rectangle" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="parent" ordered="false"
+        eType="#//RpyShape"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="rpyMetamodelObject" ordered="false"
+        lowerBound="1" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EObject"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="parentRelativePosition"
+        ordered="false" lowerBound="1" eType="#//Point" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="height" ordered="false"
+        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="width" ordered="false"
+        lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="absolutePosition" ordered="false"
+        lowerBound="1" eType="#//Point" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Rectangle" eSuperTypes="#//Polygon">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="topLeft" ordered="false"
+        lowerBound="1" eType="#//Point" volatile="true" transient="true" unsettable="true"
+        derived="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="topRight" ordered="false"
+        lowerBound="1" eType="#//Point" volatile="true" transient="true" unsettable="true"
+        derived="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="bottomLeft" ordered="false"
+        lowerBound="1" eType="#//Point" volatile="true" transient="true" unsettable="true"
+        derived="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="bottomRight" ordered="false"
+        lowerBound="1" eType="#//Point" volatile="true" transient="true" unsettable="true"
+        derived="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Polygon">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="points" ordered="false"
+        lowerBound="1" upperBound="-1" eType="#//Point" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="Position">
+    <eLiterals name="NORTH"/>
+    <eLiterals name="SOUTH" value="1"/>
+    <eLiterals name="EAST" value="2"/>
+    <eLiterals name="WEST" value="3"/>
+    <eLiterals name="NORTH_EAST" value="4"/>
+    <eLiterals name="NORTH_WEST" value="5"/>
+    <eLiterals name="SOUTH_EAST" value="6"/>
+    <eLiterals name="SOUTH_WEST" value="7"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="RpyPort" eSuperTypes="#//RpyShape">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="position" ordered="false"
+        lowerBound="1" eType="#//Position"/>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/plugin.properties b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/plugin.properties
new file mode 100644
index 0000000..f9b33e9
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/plugin.properties
@@ -0,0 +1,2 @@
+pluginName=Papyrus Interoperability Rpy Geometry Model (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/plugin.xml b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/plugin.xml
new file mode 100644
index 0000000..9968276
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/plugin.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+   <extension
+         point="org.eclipse.emf.ecore.factory_override">
+      <factory
+            class="org.eclipse.papyrus.interoperability.rpy.geometry.custom.CustomRpyGeometryFactory"
+            uri="http://www.eclipse.org/papyrus/rpygeometry/1.0.0">
+      </factory>
+   </extension>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated RpyGeometry -->
+      <package
+            uri="http://www.eclipse.org/papyrus/rpygeometry/1.0.0"
+            class="org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage"
+            genModel="model/RpyGeometry.genmodel"/>
+   </extension>
+
+</plugin>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/Point.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/Point.java
new file mode 100644
index 0000000..d77d5b1
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/Point.java
@@ -0,0 +1,127 @@
+/**
+ *   Copyright (c) 2016 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:
+ *     CEA LIST - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Point</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point#getX <em>X</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point#getY <em>Y</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage#getPoint()
+ * @model
+ * @generated
+ */
+public interface Point extends EObject {
+	/**
+	 * Returns the value of the '<em><b>X</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>X</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>X</em>' attribute.
+	 * @see #setX(Double)
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage#getPoint_X()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	Double getX();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point#getX <em>X</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>X</em>' attribute.
+	 * @see #getX()
+	 * @generated
+	 */
+	void setX(Double value);
+
+	/**
+	 * Returns the value of the '<em><b>Y</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Y</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Y</em>' attribute.
+	 * @see #setY(Double)
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage#getPoint_Y()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	Double getY();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point#getY <em>Y</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Y</em>' attribute.
+	 * @see #getY()
+	 * @generated
+	 */
+	void setY(Double value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	Point minus();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model required="true" ordered="false" pointRequired="true" pointOrdered="false"
+	 * @generated
+	 */
+	Point minus(Point point);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model required="true" ordered="false" pointRequired="true" pointOrdered="false"
+	 * @generated
+	 */
+	Point add(Point point);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model kind="operation" required="true" ordered="false"
+	 * @generated
+	 */
+	Integer getIntX();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model kind="operation" required="true" ordered="false"
+	 * @generated
+	 */
+	Integer getIntY();
+
+} // Point
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/Polygon.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/Polygon.java
new file mode 100644
index 0000000..c0c0edc
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/Polygon.java
@@ -0,0 +1,52 @@
+/**
+ *   Copyright (c) 2016 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:
+ *     CEA LIST - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Polygon</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Polygon#getPoints <em>Points</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage#getPolygon()
+ * @model
+ * @generated
+ */
+public interface Polygon extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Points</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Points</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>Points</em>' containment reference list.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage#getPolygon_Points()
+	 * @model containment="true" required="true" ordered="false"
+	 * @generated
+	 */
+	EList<Point> getPoints();
+
+} // Polygon
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/Position.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/Position.java
new file mode 100644
index 0000000..0a77c04
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/Position.java
@@ -0,0 +1,386 @@
+/**
+ *   Copyright (c) 2016 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:
+ *     CEA LIST - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry;
+
+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>Position</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage#getPosition()
+ * @model
+ * @generated
+ */
+public enum Position implements Enumerator {
+	/**
+	 * The '<em><b>NORTH</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NORTH_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NORTH(0, "NORTH", "NORTH"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>SOUTH</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SOUTH_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SOUTH(1, "SOUTH", "SOUTH"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>EAST</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #EAST_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	EAST(2, "EAST", "EAST"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>WEST</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WEST_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	WEST(3, "WEST", "WEST"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>NORTH EAST</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NORTH_EAST_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NORTH_EAST(4, "NORTH_EAST", "NORTH_EAST"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>NORTH WEST</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NORTH_WEST_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NORTH_WEST(5, "NORTH_WEST", "NORTH_WEST"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>SOUTH EAST</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SOUTH_EAST_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SOUTH_EAST(6, "SOUTH_EAST", "SOUTH_EAST"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>SOUTH WEST</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SOUTH_WEST_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SOUTH_WEST(7, "SOUTH_WEST", "SOUTH_WEST"); //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>NORTH</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>NORTH</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NORTH
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NORTH_VALUE = 0;
+
+	/**
+	 * The '<em><b>SOUTH</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>SOUTH</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #SOUTH
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SOUTH_VALUE = 1;
+
+	/**
+	 * The '<em><b>EAST</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>EAST</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #EAST
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int EAST_VALUE = 2;
+
+	/**
+	 * The '<em><b>WEST</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>WEST</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #WEST
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int WEST_VALUE = 3;
+
+	/**
+	 * The '<em><b>NORTH EAST</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>NORTH EAST</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NORTH_EAST
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NORTH_EAST_VALUE = 4;
+
+	/**
+	 * The '<em><b>NORTH WEST</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>NORTH WEST</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NORTH_WEST
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NORTH_WEST_VALUE = 5;
+
+	/**
+	 * The '<em><b>SOUTH EAST</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>SOUTH EAST</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #SOUTH_EAST
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SOUTH_EAST_VALUE = 6;
+
+	/**
+	 * The '<em><b>SOUTH WEST</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>SOUTH WEST</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #SOUTH_WEST
+	 * @model
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SOUTH_WEST_VALUE = 7;
+
+	/**
+	 * An array of all the '<em><b>Position</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final Position[] VALUES_ARRAY =
+		new Position[] {
+			NORTH,
+			SOUTH,
+			EAST,
+			WEST,
+			NORTH_EAST,
+			NORTH_WEST,
+			SOUTH_EAST,
+			SOUTH_WEST,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Position</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<Position> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Position</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static Position get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			Position result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Position</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static Position getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			Position result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Position</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static Position get(int value) {
+		switch (value) {
+			case NORTH_VALUE: return NORTH;
+			case SOUTH_VALUE: return SOUTH;
+			case EAST_VALUE: return EAST;
+			case WEST_VALUE: return WEST;
+			case NORTH_EAST_VALUE: return NORTH_EAST;
+			case NORTH_WEST_VALUE: return NORTH_WEST;
+			case SOUTH_EAST_VALUE: return SOUTH_EAST;
+			case SOUTH_WEST_VALUE: return SOUTH_WEST;
+		}
+		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 Position(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	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;
+	}
+	
+} //Position
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/Rectangle.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/Rectangle.java
new file mode 100644
index 0000000..fab5d0c
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/Rectangle.java
@@ -0,0 +1,248 @@
+/**
+ *   Copyright (c) 2016 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:
+ *     CEA LIST - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Rectangle</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle#getTopLeft <em>Top Left</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle#getTopRight <em>Top Right</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle#getBottomLeft <em>Bottom Left</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle#getBottomRight <em>Bottom Right</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage#getRectangle()
+ * @model
+ * @generated
+ */
+public interface Rectangle extends Polygon {
+	/**
+	 * Returns the value of the '<em><b>Top Left</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Top Left</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Top Left</em>' reference.
+	 * @see #isSetTopLeft()
+	 * @see #unsetTopLeft()
+	 * @see #setTopLeft(Point)
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage#getRectangle_TopLeft()
+	 * @model unsettable="true" required="true" transient="true" volatile="true" derived="true" ordered="false"
+	 * @generated
+	 */
+	Point getTopLeft();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle#getTopLeft <em>Top Left</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Top Left</em>' reference.
+	 * @see #isSetTopLeft()
+	 * @see #unsetTopLeft()
+	 * @see #getTopLeft()
+	 * @generated
+	 */
+	void setTopLeft(Point value);
+
+	/**
+	 * Unsets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle#getTopLeft <em>Top Left</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetTopLeft()
+	 * @see #getTopLeft()
+	 * @see #setTopLeft(Point)
+	 * @generated
+	 */
+	void unsetTopLeft();
+
+	/**
+	 * Returns whether the value of the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle#getTopLeft <em>Top Left</em>}' reference is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Top Left</em>' reference is set.
+	 * @see #unsetTopLeft()
+	 * @see #getTopLeft()
+	 * @see #setTopLeft(Point)
+	 * @generated
+	 */
+	boolean isSetTopLeft();
+
+	/**
+	 * Returns the value of the '<em><b>Top Right</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Top Right</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Top Right</em>' reference.
+	 * @see #isSetTopRight()
+	 * @see #unsetTopRight()
+	 * @see #setTopRight(Point)
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage#getRectangle_TopRight()
+	 * @model unsettable="true" required="true" transient="true" volatile="true" derived="true" ordered="false"
+	 * @generated
+	 */
+	Point getTopRight();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle#getTopRight <em>Top Right</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Top Right</em>' reference.
+	 * @see #isSetTopRight()
+	 * @see #unsetTopRight()
+	 * @see #getTopRight()
+	 * @generated
+	 */
+	void setTopRight(Point value);
+
+	/**
+	 * Unsets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle#getTopRight <em>Top Right</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetTopRight()
+	 * @see #getTopRight()
+	 * @see #setTopRight(Point)
+	 * @generated
+	 */
+	void unsetTopRight();
+
+	/**
+	 * Returns whether the value of the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle#getTopRight <em>Top Right</em>}' reference is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Top Right</em>' reference is set.
+	 * @see #unsetTopRight()
+	 * @see #getTopRight()
+	 * @see #setTopRight(Point)
+	 * @generated
+	 */
+	boolean isSetTopRight();
+
+	/**
+	 * Returns the value of the '<em><b>Bottom Left</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Bottom Left</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Bottom Left</em>' reference.
+	 * @see #isSetBottomLeft()
+	 * @see #unsetBottomLeft()
+	 * @see #setBottomLeft(Point)
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage#getRectangle_BottomLeft()
+	 * @model unsettable="true" required="true" transient="true" volatile="true" derived="true" ordered="false"
+	 * @generated
+	 */
+	Point getBottomLeft();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle#getBottomLeft <em>Bottom Left</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Bottom Left</em>' reference.
+	 * @see #isSetBottomLeft()
+	 * @see #unsetBottomLeft()
+	 * @see #getBottomLeft()
+	 * @generated
+	 */
+	void setBottomLeft(Point value);
+
+	/**
+	 * Unsets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle#getBottomLeft <em>Bottom Left</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetBottomLeft()
+	 * @see #getBottomLeft()
+	 * @see #setBottomLeft(Point)
+	 * @generated
+	 */
+	void unsetBottomLeft();
+
+	/**
+	 * Returns whether the value of the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle#getBottomLeft <em>Bottom Left</em>}' reference is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Bottom Left</em>' reference is set.
+	 * @see #unsetBottomLeft()
+	 * @see #getBottomLeft()
+	 * @see #setBottomLeft(Point)
+	 * @generated
+	 */
+	boolean isSetBottomLeft();
+
+	/**
+	 * Returns the value of the '<em><b>Bottom Right</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Bottom Right</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Bottom Right</em>' reference.
+	 * @see #isSetBottomRight()
+	 * @see #unsetBottomRight()
+	 * @see #setBottomRight(Point)
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage#getRectangle_BottomRight()
+	 * @model unsettable="true" required="true" transient="true" volatile="true" derived="true" ordered="false"
+	 * @generated
+	 */
+	Point getBottomRight();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle#getBottomRight <em>Bottom Right</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Bottom Right</em>' reference.
+	 * @see #isSetBottomRight()
+	 * @see #unsetBottomRight()
+	 * @see #getBottomRight()
+	 * @generated
+	 */
+	void setBottomRight(Point value);
+
+	/**
+	 * Unsets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle#getBottomRight <em>Bottom Right</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetBottomRight()
+	 * @see #getBottomRight()
+	 * @see #setBottomRight(Point)
+	 * @generated
+	 */
+	void unsetBottomRight();
+
+	/**
+	 * Returns whether the value of the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle#getBottomRight <em>Bottom Right</em>}' reference is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Bottom Right</em>' reference is set.
+	 * @see #unsetBottomRight()
+	 * @see #getBottomRight()
+	 * @see #setBottomRight(Point)
+	 * @generated
+	 */
+	boolean isSetBottomRight();
+
+} // Rectangle
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/RpyGeometryFactory.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/RpyGeometryFactory.java
new file mode 100644
index 0000000..249bd91
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/RpyGeometryFactory.java
@@ -0,0 +1,97 @@
+/**
+ *   Copyright (c) 2016 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:
+ *     CEA LIST - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry;
+
+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.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage
+ * @generated
+ */
+public interface RpyGeometryFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	RpyGeometryFactory eINSTANCE = org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyGeometryFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Transform Matrix</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Transform Matrix</em>'.
+	 * @generated
+	 */
+	TransformMatrix createTransformMatrix();
+
+	/**
+	 * Returns a new object of class '<em>Point</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Point</em>'.
+	 * @generated
+	 */
+	Point createPoint();
+
+	/**
+	 * Returns a new object of class '<em>Rpy Shape</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Rpy Shape</em>'.
+	 * @generated
+	 */
+	RpyShape createRpyShape();
+
+	/**
+	 * Returns a new object of class '<em>Rectangle</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Rectangle</em>'.
+	 * @generated
+	 */
+	Rectangle createRectangle();
+
+	/**
+	 * Returns a new object of class '<em>Polygon</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Polygon</em>'.
+	 * @generated
+	 */
+	Polygon createPolygon();
+
+	/**
+	 * Returns a new object of class '<em>Rpy Port</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Rpy Port</em>'.
+	 * @generated
+	 */
+	RpyPort createRpyPort();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	RpyGeometryPackage getRpyGeometryPackage();
+
+} //RpyGeometryFactory
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/RpyGeometryPackage.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/RpyGeometryPackage.java
new file mode 100644
index 0000000..491ce08
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/RpyGeometryPackage.java
@@ -0,0 +1,1383 @@
+/**
+ *   Copyright (c) 2016 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:
+ *     CEA LIST - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+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.interoperability.rpy.geometry.rpygeometry.RpyGeometryFactory
+ * @model kind="package"
+ *        annotation="http://www.eclipse.org/uml2/2.0.0/UML originalName='RpyGeometry'"
+ * @generated
+ */
+public interface RpyGeometryPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "rpygeometry"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/papyrus/rpygeometry/1.0.0"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "rpygeom"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	RpyGeometryPackage eINSTANCE = org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyGeometryPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.TransformMatrixImpl <em>Transform Matrix</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.TransformMatrixImpl
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyGeometryPackageImpl#getTransformMatrix()
+	 * @generated
+	 */
+	int TRANSFORM_MATRIX = 0;
+
+	/**
+	 * The feature id for the '<em><b>A</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORM_MATRIX__A = 0;
+
+	/**
+	 * The feature id for the '<em><b>B</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORM_MATRIX__B = 1;
+
+	/**
+	 * The feature id for the '<em><b>C</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORM_MATRIX__C = 2;
+
+	/**
+	 * The feature id for the '<em><b>D</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORM_MATRIX__D = 3;
+
+	/**
+	 * The feature id for the '<em><b>E</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORM_MATRIX__E = 4;
+
+	/**
+	 * The feature id for the '<em><b>F</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORM_MATRIX__F = 5;
+
+	/**
+	 * The number of structural features of the '<em>Transform Matrix</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORM_MATRIX_FEATURE_COUNT = 6;
+
+	/**
+	 * The operation id for the '<em>Add</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORM_MATRIX___ADD__TRANSFORMMATRIX = 0;
+
+	/**
+	 * The operation id for the '<em>Minus</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORM_MATRIX___MINUS = 1;
+
+	/**
+	 * The operation id for the '<em>Minus</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORM_MATRIX___MINUS__TRANSFORMMATRIX = 2;
+
+	/**
+	 * The operation id for the '<em>Multiply</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORM_MATRIX___MULTIPLY__POINT = 3;
+
+	/**
+	 * The operation id for the '<em>Multiply</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORM_MATRIX___MULTIPLY__TRANSFORMMATRIX = 4;
+
+	/**
+	 * The number of operations of the '<em>Transform Matrix</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORM_MATRIX_OPERATION_COUNT = 5;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.PointImpl <em>Point</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.PointImpl
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyGeometryPackageImpl#getPoint()
+	 * @generated
+	 */
+	int POINT = 1;
+
+	/**
+	 * The feature id for the '<em><b>X</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POINT__X = 0;
+
+	/**
+	 * The feature id for the '<em><b>Y</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POINT__Y = 1;
+
+	/**
+	 * The number of structural features of the '<em>Point</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POINT_FEATURE_COUNT = 2;
+
+	/**
+	 * The operation id for the '<em>Minus</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POINT___MINUS = 0;
+
+	/**
+	 * The operation id for the '<em>Minus</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POINT___MINUS__POINT = 1;
+
+	/**
+	 * The operation id for the '<em>Add</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POINT___ADD__POINT = 2;
+
+	/**
+	 * The operation id for the '<em>Get Int X</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POINT___GET_INT_X = 3;
+
+	/**
+	 * The operation id for the '<em>Get Int Y</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POINT___GET_INT_Y = 4;
+
+	/**
+	 * The number of operations of the '<em>Point</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POINT_OPERATION_COUNT = 5;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyShapeImpl <em>Rpy Shape</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyShapeImpl
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyGeometryPackageImpl#getRpyShape()
+	 * @generated
+	 */
+	int RPY_SHAPE = 2;
+
+	/**
+	 * The feature id for the '<em><b>Transform</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RPY_SHAPE__TRANSFORM = 0;
+
+	/**
+	 * The feature id for the '<em><b>Rectangle</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RPY_SHAPE__RECTANGLE = 1;
+
+	/**
+	 * The feature id for the '<em><b>Parent</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RPY_SHAPE__PARENT = 2;
+
+	/**
+	 * The feature id for the '<em><b>Rpy Metamodel Object</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RPY_SHAPE__RPY_METAMODEL_OBJECT = 3;
+
+	/**
+	 * The feature id for the '<em><b>Parent Relative Position</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RPY_SHAPE__PARENT_RELATIVE_POSITION = 4;
+
+	/**
+	 * The feature id for the '<em><b>Height</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RPY_SHAPE__HEIGHT = 5;
+
+	/**
+	 * The feature id for the '<em><b>Width</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RPY_SHAPE__WIDTH = 6;
+
+	/**
+	 * The feature id for the '<em><b>Absolute Position</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RPY_SHAPE__ABSOLUTE_POSITION = 7;
+
+	/**
+	 * The number of structural features of the '<em>Rpy Shape</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RPY_SHAPE_FEATURE_COUNT = 8;
+
+	/**
+	 * The number of operations of the '<em>Rpy Shape</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RPY_SHAPE_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.PolygonImpl <em>Polygon</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.PolygonImpl
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyGeometryPackageImpl#getPolygon()
+	 * @generated
+	 */
+	int POLYGON = 4;
+
+	/**
+	 * The feature id for the '<em><b>Points</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POLYGON__POINTS = 0;
+
+	/**
+	 * The number of structural features of the '<em>Polygon</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POLYGON_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Polygon</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POLYGON_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RectangleImpl <em>Rectangle</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RectangleImpl
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyGeometryPackageImpl#getRectangle()
+	 * @generated
+	 */
+	int RECTANGLE = 3;
+
+	/**
+	 * The feature id for the '<em><b>Points</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECTANGLE__POINTS = POLYGON__POINTS;
+
+	/**
+	 * The feature id for the '<em><b>Top Left</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECTANGLE__TOP_LEFT = POLYGON_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Top Right</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECTANGLE__TOP_RIGHT = POLYGON_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Bottom Left</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECTANGLE__BOTTOM_LEFT = POLYGON_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Bottom Right</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECTANGLE__BOTTOM_RIGHT = POLYGON_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>Rectangle</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECTANGLE_FEATURE_COUNT = POLYGON_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of operations of the '<em>Rectangle</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECTANGLE_OPERATION_COUNT = POLYGON_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyPortImpl <em>Rpy Port</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyPortImpl
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyGeometryPackageImpl#getRpyPort()
+	 * @generated
+	 */
+	int RPY_PORT = 5;
+
+	/**
+	 * The feature id for the '<em><b>Transform</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RPY_PORT__TRANSFORM = RPY_SHAPE__TRANSFORM;
+
+	/**
+	 * The feature id for the '<em><b>Rectangle</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RPY_PORT__RECTANGLE = RPY_SHAPE__RECTANGLE;
+
+	/**
+	 * The feature id for the '<em><b>Parent</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RPY_PORT__PARENT = RPY_SHAPE__PARENT;
+
+	/**
+	 * The feature id for the '<em><b>Rpy Metamodel Object</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RPY_PORT__RPY_METAMODEL_OBJECT = RPY_SHAPE__RPY_METAMODEL_OBJECT;
+
+	/**
+	 * The feature id for the '<em><b>Parent Relative Position</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RPY_PORT__PARENT_RELATIVE_POSITION = RPY_SHAPE__PARENT_RELATIVE_POSITION;
+
+	/**
+	 * The feature id for the '<em><b>Height</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RPY_PORT__HEIGHT = RPY_SHAPE__HEIGHT;
+
+	/**
+	 * The feature id for the '<em><b>Width</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RPY_PORT__WIDTH = RPY_SHAPE__WIDTH;
+
+	/**
+	 * The feature id for the '<em><b>Absolute Position</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RPY_PORT__ABSOLUTE_POSITION = RPY_SHAPE__ABSOLUTE_POSITION;
+
+	/**
+	 * The feature id for the '<em><b>Position</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RPY_PORT__POSITION = RPY_SHAPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Rpy Port</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RPY_PORT_FEATURE_COUNT = RPY_SHAPE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Rpy Port</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RPY_PORT_OPERATION_COUNT = RPY_SHAPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Position <em>Position</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Position
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyGeometryPackageImpl#getPosition()
+	 * @generated
+	 */
+	int POSITION = 6;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix <em>Transform Matrix</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Transform Matrix</em>'.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix
+	 * @generated
+	 */
+	EClass getTransformMatrix();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#getA <em>A</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>A</em>'.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#getA()
+	 * @see #getTransformMatrix()
+	 * @generated
+	 */
+	EAttribute getTransformMatrix_A();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#getB <em>B</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>B</em>'.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#getB()
+	 * @see #getTransformMatrix()
+	 * @generated
+	 */
+	EAttribute getTransformMatrix_B();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#getC <em>C</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>C</em>'.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#getC()
+	 * @see #getTransformMatrix()
+	 * @generated
+	 */
+	EAttribute getTransformMatrix_C();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#getD <em>D</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>D</em>'.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#getD()
+	 * @see #getTransformMatrix()
+	 * @generated
+	 */
+	EAttribute getTransformMatrix_D();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#getE <em>E</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>E</em>'.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#getE()
+	 * @see #getTransformMatrix()
+	 * @generated
+	 */
+	EAttribute getTransformMatrix_E();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#getF <em>F</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>F</em>'.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#getF()
+	 * @see #getTransformMatrix()
+	 * @generated
+	 */
+	EAttribute getTransformMatrix_F();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#add(org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix) <em>Add</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Add</em>' operation.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#add(org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix)
+	 * @generated
+	 */
+	EOperation getTransformMatrix__Add__TransformMatrix();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#minus() <em>Minus</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Minus</em>' operation.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#minus()
+	 * @generated
+	 */
+	EOperation getTransformMatrix__Minus();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#minus(org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix) <em>Minus</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Minus</em>' operation.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#minus(org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix)
+	 * @generated
+	 */
+	EOperation getTransformMatrix__Minus__TransformMatrix();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#multiply(org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point) <em>Multiply</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Multiply</em>' operation.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#multiply(org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point)
+	 * @generated
+	 */
+	EOperation getTransformMatrix__Multiply__Point();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#multiply(org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix) <em>Multiply</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Multiply</em>' operation.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#multiply(org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix)
+	 * @generated
+	 */
+	EOperation getTransformMatrix__Multiply__TransformMatrix();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point <em>Point</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Point</em>'.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point
+	 * @generated
+	 */
+	EClass getPoint();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point#getX <em>X</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>X</em>'.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point#getX()
+	 * @see #getPoint()
+	 * @generated
+	 */
+	EAttribute getPoint_X();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point#getY <em>Y</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Y</em>'.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point#getY()
+	 * @see #getPoint()
+	 * @generated
+	 */
+	EAttribute getPoint_Y();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point#minus() <em>Minus</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Minus</em>' operation.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point#minus()
+	 * @generated
+	 */
+	EOperation getPoint__Minus();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point#minus(org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point) <em>Minus</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Minus</em>' operation.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point#minus(org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point)
+	 * @generated
+	 */
+	EOperation getPoint__Minus__Point();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point#add(org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point) <em>Add</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Add</em>' operation.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point#add(org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point)
+	 * @generated
+	 */
+	EOperation getPoint__Add__Point();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point#getIntX() <em>Get Int X</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Get Int X</em>' operation.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point#getIntX()
+	 * @generated
+	 */
+	EOperation getPoint__GetIntX();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point#getIntY() <em>Get Int Y</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Get Int Y</em>' operation.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point#getIntY()
+	 * @generated
+	 */
+	EOperation getPoint__GetIntY();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape <em>Rpy Shape</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Rpy Shape</em>'.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape
+	 * @generated
+	 */
+	EClass getRpyShape();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getTransform <em>Transform</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Transform</em>'.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getTransform()
+	 * @see #getRpyShape()
+	 * @generated
+	 */
+	EReference getRpyShape_Transform();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getRectangle <em>Rectangle</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Rectangle</em>'.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getRectangle()
+	 * @see #getRpyShape()
+	 * @generated
+	 */
+	EReference getRpyShape_Rectangle();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getParent <em>Parent</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Parent</em>'.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getParent()
+	 * @see #getRpyShape()
+	 * @generated
+	 */
+	EReference getRpyShape_Parent();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getRpyMetamodelObject <em>Rpy Metamodel Object</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Rpy Metamodel Object</em>'.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getRpyMetamodelObject()
+	 * @see #getRpyShape()
+	 * @generated
+	 */
+	EReference getRpyShape_RpyMetamodelObject();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getParentRelativePosition <em>Parent Relative Position</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Parent Relative Position</em>'.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getParentRelativePosition()
+	 * @see #getRpyShape()
+	 * @generated
+	 */
+	EReference getRpyShape_ParentRelativePosition();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getHeight <em>Height</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Height</em>'.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getHeight()
+	 * @see #getRpyShape()
+	 * @generated
+	 */
+	EAttribute getRpyShape_Height();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getWidth <em>Width</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Width</em>'.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getWidth()
+	 * @see #getRpyShape()
+	 * @generated
+	 */
+	EAttribute getRpyShape_Width();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getAbsolutePosition <em>Absolute Position</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Absolute Position</em>'.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getAbsolutePosition()
+	 * @see #getRpyShape()
+	 * @generated
+	 */
+	EReference getRpyShape_AbsolutePosition();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle <em>Rectangle</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Rectangle</em>'.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle
+	 * @generated
+	 */
+	EClass getRectangle();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle#getTopLeft <em>Top Left</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Top Left</em>'.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle#getTopLeft()
+	 * @see #getRectangle()
+	 * @generated
+	 */
+	EReference getRectangle_TopLeft();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle#getTopRight <em>Top Right</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Top Right</em>'.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle#getTopRight()
+	 * @see #getRectangle()
+	 * @generated
+	 */
+	EReference getRectangle_TopRight();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle#getBottomLeft <em>Bottom Left</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Bottom Left</em>'.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle#getBottomLeft()
+	 * @see #getRectangle()
+	 * @generated
+	 */
+	EReference getRectangle_BottomLeft();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle#getBottomRight <em>Bottom Right</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Bottom Right</em>'.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle#getBottomRight()
+	 * @see #getRectangle()
+	 * @generated
+	 */
+	EReference getRectangle_BottomRight();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Polygon <em>Polygon</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Polygon</em>'.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Polygon
+	 * @generated
+	 */
+	EClass getPolygon();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Polygon#getPoints <em>Points</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Points</em>'.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Polygon#getPoints()
+	 * @see #getPolygon()
+	 * @generated
+	 */
+	EReference getPolygon_Points();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyPort <em>Rpy Port</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Rpy Port</em>'.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyPort
+	 * @generated
+	 */
+	EClass getRpyPort();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyPort#getPosition <em>Position</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Position</em>'.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyPort#getPosition()
+	 * @see #getRpyPort()
+	 * @generated
+	 */
+	EAttribute getRpyPort_Position();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Position <em>Position</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Position</em>'.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Position
+	 * @generated
+	 */
+	EEnum getPosition();
+
+	/**
+	 * 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
+	 */
+	RpyGeometryFactory getRpyGeometryFactory();
+
+	/**
+	 * <!-- 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.interoperability.rpy.geometry.rpygeometry.impl.TransformMatrixImpl <em>Transform Matrix</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.TransformMatrixImpl
+		 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyGeometryPackageImpl#getTransformMatrix()
+		 * @generated
+		 */
+		EClass TRANSFORM_MATRIX = eINSTANCE.getTransformMatrix();
+
+		/**
+		 * The meta object literal for the '<em><b>A</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TRANSFORM_MATRIX__A = eINSTANCE.getTransformMatrix_A();
+
+		/**
+		 * The meta object literal for the '<em><b>B</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TRANSFORM_MATRIX__B = eINSTANCE.getTransformMatrix_B();
+
+		/**
+		 * The meta object literal for the '<em><b>C</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TRANSFORM_MATRIX__C = eINSTANCE.getTransformMatrix_C();
+
+		/**
+		 * The meta object literal for the '<em><b>D</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TRANSFORM_MATRIX__D = eINSTANCE.getTransformMatrix_D();
+
+		/**
+		 * The meta object literal for the '<em><b>E</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TRANSFORM_MATRIX__E = eINSTANCE.getTransformMatrix_E();
+
+		/**
+		 * The meta object literal for the '<em><b>F</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TRANSFORM_MATRIX__F = eINSTANCE.getTransformMatrix_F();
+
+		/**
+		 * The meta object literal for the '<em><b>Add</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation TRANSFORM_MATRIX___ADD__TRANSFORMMATRIX = eINSTANCE.getTransformMatrix__Add__TransformMatrix();
+
+		/**
+		 * The meta object literal for the '<em><b>Minus</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation TRANSFORM_MATRIX___MINUS = eINSTANCE.getTransformMatrix__Minus();
+
+		/**
+		 * The meta object literal for the '<em><b>Minus</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation TRANSFORM_MATRIX___MINUS__TRANSFORMMATRIX = eINSTANCE.getTransformMatrix__Minus__TransformMatrix();
+
+		/**
+		 * The meta object literal for the '<em><b>Multiply</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation TRANSFORM_MATRIX___MULTIPLY__POINT = eINSTANCE.getTransformMatrix__Multiply__Point();
+
+		/**
+		 * The meta object literal for the '<em><b>Multiply</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation TRANSFORM_MATRIX___MULTIPLY__TRANSFORMMATRIX = eINSTANCE.getTransformMatrix__Multiply__TransformMatrix();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.PointImpl <em>Point</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.PointImpl
+		 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyGeometryPackageImpl#getPoint()
+		 * @generated
+		 */
+		EClass POINT = eINSTANCE.getPoint();
+
+		/**
+		 * The meta object literal for the '<em><b>X</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute POINT__X = eINSTANCE.getPoint_X();
+
+		/**
+		 * The meta object literal for the '<em><b>Y</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute POINT__Y = eINSTANCE.getPoint_Y();
+
+		/**
+		 * The meta object literal for the '<em><b>Minus</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation POINT___MINUS = eINSTANCE.getPoint__Minus();
+
+		/**
+		 * The meta object literal for the '<em><b>Minus</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation POINT___MINUS__POINT = eINSTANCE.getPoint__Minus__Point();
+
+		/**
+		 * The meta object literal for the '<em><b>Add</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation POINT___ADD__POINT = eINSTANCE.getPoint__Add__Point();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Int X</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation POINT___GET_INT_X = eINSTANCE.getPoint__GetIntX();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Int Y</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation POINT___GET_INT_Y = eINSTANCE.getPoint__GetIntY();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyShapeImpl <em>Rpy Shape</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyShapeImpl
+		 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyGeometryPackageImpl#getRpyShape()
+		 * @generated
+		 */
+		EClass RPY_SHAPE = eINSTANCE.getRpyShape();
+
+		/**
+		 * The meta object literal for the '<em><b>Transform</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference RPY_SHAPE__TRANSFORM = eINSTANCE.getRpyShape_Transform();
+
+		/**
+		 * The meta object literal for the '<em><b>Rectangle</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference RPY_SHAPE__RECTANGLE = eINSTANCE.getRpyShape_Rectangle();
+
+		/**
+		 * The meta object literal for the '<em><b>Parent</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference RPY_SHAPE__PARENT = eINSTANCE.getRpyShape_Parent();
+
+		/**
+		 * The meta object literal for the '<em><b>Rpy Metamodel Object</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference RPY_SHAPE__RPY_METAMODEL_OBJECT = eINSTANCE.getRpyShape_RpyMetamodelObject();
+
+		/**
+		 * The meta object literal for the '<em><b>Parent Relative Position</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference RPY_SHAPE__PARENT_RELATIVE_POSITION = eINSTANCE.getRpyShape_ParentRelativePosition();
+
+		/**
+		 * The meta object literal for the '<em><b>Height</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RPY_SHAPE__HEIGHT = eINSTANCE.getRpyShape_Height();
+
+		/**
+		 * The meta object literal for the '<em><b>Width</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RPY_SHAPE__WIDTH = eINSTANCE.getRpyShape_Width();
+
+		/**
+		 * The meta object literal for the '<em><b>Absolute Position</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference RPY_SHAPE__ABSOLUTE_POSITION = eINSTANCE.getRpyShape_AbsolutePosition();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RectangleImpl <em>Rectangle</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RectangleImpl
+		 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyGeometryPackageImpl#getRectangle()
+		 * @generated
+		 */
+		EClass RECTANGLE = eINSTANCE.getRectangle();
+
+		/**
+		 * The meta object literal for the '<em><b>Top Left</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference RECTANGLE__TOP_LEFT = eINSTANCE.getRectangle_TopLeft();
+
+		/**
+		 * The meta object literal for the '<em><b>Top Right</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference RECTANGLE__TOP_RIGHT = eINSTANCE.getRectangle_TopRight();
+
+		/**
+		 * The meta object literal for the '<em><b>Bottom Left</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference RECTANGLE__BOTTOM_LEFT = eINSTANCE.getRectangle_BottomLeft();
+
+		/**
+		 * The meta object literal for the '<em><b>Bottom Right</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference RECTANGLE__BOTTOM_RIGHT = eINSTANCE.getRectangle_BottomRight();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.PolygonImpl <em>Polygon</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.PolygonImpl
+		 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyGeometryPackageImpl#getPolygon()
+		 * @generated
+		 */
+		EClass POLYGON = eINSTANCE.getPolygon();
+
+		/**
+		 * The meta object literal for the '<em><b>Points</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference POLYGON__POINTS = eINSTANCE.getPolygon_Points();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyPortImpl <em>Rpy Port</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyPortImpl
+		 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyGeometryPackageImpl#getRpyPort()
+		 * @generated
+		 */
+		EClass RPY_PORT = eINSTANCE.getRpyPort();
+
+		/**
+		 * The meta object literal for the '<em><b>Position</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RPY_PORT__POSITION = eINSTANCE.getRpyPort_Position();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Position <em>Position</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Position
+		 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyGeometryPackageImpl#getPosition()
+		 * @generated
+		 */
+		EEnum POSITION = eINSTANCE.getPosition();
+
+	}
+
+} //RpyGeometryPackage
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/RpyPort.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/RpyPort.java
new file mode 100644
index 0000000..13d5e87
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/RpyPort.java
@@ -0,0 +1,62 @@
+/**
+ *   Copyright (c) 2016 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:
+ *     CEA LIST - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Rpy Port</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyPort#getPosition <em>Position</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage#getRpyPort()
+ * @model
+ * @generated
+ */
+public interface RpyPort extends RpyShape {
+	/**
+	 * Returns the value of the '<em><b>Position</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Position}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Position</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Position</em>' attribute.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Position
+	 * @see #setPosition(Position)
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage#getRpyPort_Position()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	Position getPosition();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyPort#getPosition <em>Position</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Position</em>' attribute.
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Position
+	 * @see #getPosition()
+	 * @generated
+	 */
+	void setPosition(Position value);
+
+} // RpyPort
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/RpyShape.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/RpyShape.java
new file mode 100644
index 0000000..a4796b5
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/RpyShape.java
@@ -0,0 +1,254 @@
+/**
+ *   Copyright (c) 2016 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:
+ *     CEA LIST - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Rpy Shape</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * All the values are expressed in the root coordinate system (transformation matrixes are applied)
+ * The only attribute to set is the rpyMetamodelObject. All the other attributes will be derived from it if possible
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getTransform <em>Transform</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getRectangle <em>Rectangle</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getParent <em>Parent</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getRpyMetamodelObject <em>Rpy Metamodel Object</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getParentRelativePosition <em>Parent Relative Position</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getHeight <em>Height</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getWidth <em>Width</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getAbsolutePosition <em>Absolute Position</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage#getRpyShape()
+ * @model
+ * @generated
+ */
+public interface RpyShape extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Transform</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Transform</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>Transform</em>' containment reference.
+	 * @see #setTransform(TransformMatrix)
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage#getRpyShape_Transform()
+	 * @model containment="true" required="true" ordered="false"
+	 * @generated
+	 */
+	TransformMatrix getTransform();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getTransform <em>Transform</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Transform</em>' containment reference.
+	 * @see #getTransform()
+	 * @generated
+	 */
+	void setTransform(TransformMatrix value);
+
+	/**
+	 * Returns the value of the '<em><b>Rectangle</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Rectangle</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>Rectangle</em>' containment reference.
+	 * @see #setRectangle(Rectangle)
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage#getRpyShape_Rectangle()
+	 * @model containment="true" required="true" ordered="false"
+	 * @generated
+	 */
+	Rectangle getRectangle();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getRectangle <em>Rectangle</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Rectangle</em>' containment reference.
+	 * @see #getRectangle()
+	 * @generated
+	 */
+	void setRectangle(Rectangle value);
+
+	/**
+	 * Returns the value of the '<em><b>Parent</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Parent</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Parent</em>' reference.
+	 * @see #setParent(RpyShape)
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage#getRpyShape_Parent()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	RpyShape getParent();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getParent <em>Parent</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Parent</em>' reference.
+	 * @see #getParent()
+	 * @generated
+	 */
+	void setParent(RpyShape value);
+
+	/**
+	 * Returns the value of the '<em><b>Rpy Metamodel Object</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Rpy Metamodel Object</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Rpy Metamodel Object</em>' reference.
+	 * @see #setRpyMetamodelObject(EObject)
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage#getRpyShape_RpyMetamodelObject()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	EObject getRpyMetamodelObject();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getRpyMetamodelObject <em>Rpy Metamodel Object</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Rpy Metamodel Object</em>' reference.
+	 * @see #getRpyMetamodelObject()
+	 * @generated
+	 */
+	void setRpyMetamodelObject(EObject value);
+
+	/**
+	 * Returns the value of the '<em><b>Parent Relative Position</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Parent Relative Position</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>Parent Relative Position</em>' containment reference.
+	 * @see #setParentRelativePosition(Point)
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage#getRpyShape_ParentRelativePosition()
+	 * @model containment="true" required="true" ordered="false"
+	 * @generated
+	 */
+	Point getParentRelativePosition();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getParentRelativePosition <em>Parent Relative Position</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Parent Relative Position</em>' containment reference.
+	 * @see #getParentRelativePosition()
+	 * @generated
+	 */
+	void setParentRelativePosition(Point value);
+
+	/**
+	 * Returns the value of the '<em><b>Height</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Height</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Height</em>' attribute.
+	 * @see #setHeight(Integer)
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage#getRpyShape_Height()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	Integer getHeight();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getHeight <em>Height</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Height</em>' attribute.
+	 * @see #getHeight()
+	 * @generated
+	 */
+	void setHeight(Integer value);
+
+	/**
+	 * Returns the value of the '<em><b>Width</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Width</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Width</em>' attribute.
+	 * @see #setWidth(Integer)
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage#getRpyShape_Width()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	Integer getWidth();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getWidth <em>Width</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Width</em>' attribute.
+	 * @see #getWidth()
+	 * @generated
+	 */
+	void setWidth(Integer value);
+
+	/**
+	 * Returns the value of the '<em><b>Absolute Position</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Absolute Position</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>Absolute Position</em>' containment reference.
+	 * @see #setAbsolutePosition(Point)
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage#getRpyShape_AbsolutePosition()
+	 * @model containment="true" required="true" ordered="false"
+	 * @generated
+	 */
+	Point getAbsolutePosition();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape#getAbsolutePosition <em>Absolute Position</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Absolute Position</em>' containment reference.
+	 * @see #getAbsolutePosition()
+	 * @generated
+	 */
+	void setAbsolutePosition(Point value);
+
+} // RpyShape
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/TransformMatrix.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/TransformMatrix.java
new file mode 100644
index 0000000..b7b0d07
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/TransformMatrix.java
@@ -0,0 +1,239 @@
+/**
+ *   Copyright (c) 2016 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:
+ *     CEA LIST - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Transform Matrix</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Refer to https://www.w3.org/TR/SVG11/coords.html#EstablishingANewUserSpace for the meaning of each matrix member
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#getA <em>A</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#getB <em>B</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#getC <em>C</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#getD <em>D</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#getE <em>E</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#getF <em>F</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage#getTransformMatrix()
+ * @model
+ * @generated
+ */
+public interface TransformMatrix extends EObject {
+	/**
+	 * Returns the value of the '<em><b>A</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>A</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>A</em>' attribute.
+	 * @see #setA(Double)
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage#getTransformMatrix_A()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	Double getA();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#getA <em>A</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>A</em>' attribute.
+	 * @see #getA()
+	 * @generated
+	 */
+	void setA(Double value);
+
+	/**
+	 * Returns the value of the '<em><b>B</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>B</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>B</em>' attribute.
+	 * @see #setB(Double)
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage#getTransformMatrix_B()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	Double getB();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#getB <em>B</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>B</em>' attribute.
+	 * @see #getB()
+	 * @generated
+	 */
+	void setB(Double value);
+
+	/**
+	 * Returns the value of the '<em><b>C</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>C</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>C</em>' attribute.
+	 * @see #setC(Double)
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage#getTransformMatrix_C()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	Double getC();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#getC <em>C</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>C</em>' attribute.
+	 * @see #getC()
+	 * @generated
+	 */
+	void setC(Double value);
+
+	/**
+	 * Returns the value of the '<em><b>D</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>D</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>D</em>' attribute.
+	 * @see #setD(Double)
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage#getTransformMatrix_D()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	Double getD();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#getD <em>D</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>D</em>' attribute.
+	 * @see #getD()
+	 * @generated
+	 */
+	void setD(Double value);
+
+	/**
+	 * Returns the value of the '<em><b>E</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>E</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>E</em>' attribute.
+	 * @see #setE(Double)
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage#getTransformMatrix_E()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	Double getE();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#getE <em>E</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>E</em>' attribute.
+	 * @see #getE()
+	 * @generated
+	 */
+	void setE(Double value);
+
+	/**
+	 * Returns the value of the '<em><b>F</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>F</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>F</em>' attribute.
+	 * @see #setF(Double)
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage#getTransformMatrix_F()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	Double getF();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix#getF <em>F</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>F</em>' attribute.
+	 * @see #getF()
+	 * @generated
+	 */
+	void setF(Double value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model required="true" ordered="false" matrixRequired="true" matrixOrdered="false"
+	 * @generated
+	 */
+	TransformMatrix add(TransformMatrix matrix);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	TransformMatrix minus();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model required="true" ordered="false" matrixRequired="true" matrixOrdered="false"
+	 * @generated
+	 */
+	TransformMatrix minus(TransformMatrix matrix);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model required="true" ordered="false" pointRequired="true" pointOrdered="false"
+	 * @generated
+	 */
+	Point multiply(Point point);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model required="true" ordered="false" matrixRequired="true" matrixOrdered="false"
+	 * @generated
+	 */
+	TransformMatrix multiply(TransformMatrix matrix);
+
+} // TransformMatrix
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/impl/PointImpl.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/impl/PointImpl.java
new file mode 100644
index 0000000..30b62f7
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/impl/PointImpl.java
@@ -0,0 +1,308 @@
+/**
+ *   Copyright (c) 2016 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:
+ *     CEA LIST - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.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.interoperability.rpy.geometry.rpygeometry.Point;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Point</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.PointImpl#getX <em>X</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.PointImpl#getY <em>Y</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class PointImpl extends MinimalEObjectImpl.Container implements Point {
+	/**
+	 * The default value of the '{@link #getX() <em>X</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getX()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Double X_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getX() <em>X</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getX()
+	 * @generated
+	 * @ordered
+	 */
+	protected Double x = X_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getY() <em>Y</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getY()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Double Y_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getY() <em>Y</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getY()
+	 * @generated
+	 * @ordered
+	 */
+	protected Double y = Y_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PointImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return RpyGeometryPackage.Literals.POINT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Double getX() {
+		return x;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setX(Double newX) {
+		Double oldX = x;
+		x = newX;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RpyGeometryPackage.POINT__X, oldX, x));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Double getY() {
+		return y;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setY(Double newY) {
+		Double oldY = y;
+		y = newY;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RpyGeometryPackage.POINT__Y, oldY, y));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Point minus() {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Point minus(Point point) {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Point add(Point point) {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Integer getIntX() {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Integer getIntY() {
+		// 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 RpyGeometryPackage.POINT__X:
+				return getX();
+			case RpyGeometryPackage.POINT__Y:
+				return getY();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case RpyGeometryPackage.POINT__X:
+				setX((Double)newValue);
+				return;
+			case RpyGeometryPackage.POINT__Y:
+				setY((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case RpyGeometryPackage.POINT__X:
+				setX(X_EDEFAULT);
+				return;
+			case RpyGeometryPackage.POINT__Y:
+				setY(Y_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case RpyGeometryPackage.POINT__X:
+				return X_EDEFAULT == null ? x != null : !X_EDEFAULT.equals(x);
+			case RpyGeometryPackage.POINT__Y:
+				return Y_EDEFAULT == null ? y != null : !Y_EDEFAULT.equals(y);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case RpyGeometryPackage.POINT___MINUS:
+				return minus();
+			case RpyGeometryPackage.POINT___MINUS__POINT:
+				return minus((Point)arguments.get(0));
+			case RpyGeometryPackage.POINT___ADD__POINT:
+				return add((Point)arguments.get(0));
+			case RpyGeometryPackage.POINT___GET_INT_X:
+				return getIntX();
+			case RpyGeometryPackage.POINT___GET_INT_Y:
+				return getIntY();
+		}
+		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(" (X: "); //$NON-NLS-1$
+		result.append(x);
+		result.append(", Y: "); //$NON-NLS-1$
+		result.append(y);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PointImpl
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/impl/PolygonImpl.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/impl/PolygonImpl.java
new file mode 100644
index 0000000..d664516
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/impl/PolygonImpl.java
@@ -0,0 +1,162 @@
+/**
+ *   Copyright (c) 2016 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:
+ *     CEA LIST - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.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.interoperability.rpy.geometry.rpygeometry.Point;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Polygon;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Polygon</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.PolygonImpl#getPoints <em>Points</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class PolygonImpl extends MinimalEObjectImpl.Container implements Polygon {
+	/**
+	 * The cached value of the '{@link #getPoints() <em>Points</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPoints()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Point> points;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PolygonImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return RpyGeometryPackage.Literals.POLYGON;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Point> getPoints() {
+		if (points == null) {
+			points = new EObjectContainmentEList<Point>(Point.class, this, RpyGeometryPackage.POLYGON__POINTS);
+		}
+		return points;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case RpyGeometryPackage.POLYGON__POINTS:
+				return ((InternalEList<?>)getPoints()).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 RpyGeometryPackage.POLYGON__POINTS:
+				return getPoints();
+		}
+		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 RpyGeometryPackage.POLYGON__POINTS:
+				getPoints().clear();
+				getPoints().addAll((Collection<? extends Point>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case RpyGeometryPackage.POLYGON__POINTS:
+				getPoints().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case RpyGeometryPackage.POLYGON__POINTS:
+				return points != null && !points.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //PolygonImpl
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/impl/RectangleImpl.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/impl/RectangleImpl.java
new file mode 100644
index 0000000..50b0ade
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/impl/RectangleImpl.java
@@ -0,0 +1,370 @@
+/**
+ *   Copyright (c) 2016 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:
+ *     CEA LIST - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Rectangle</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RectangleImpl#getTopLeft <em>Top Left</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RectangleImpl#getTopRight <em>Top Right</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RectangleImpl#getBottomLeft <em>Bottom Left</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RectangleImpl#getBottomRight <em>Bottom Right</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class RectangleImpl extends PolygonImpl implements Rectangle {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected RectangleImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return RpyGeometryPackage.Literals.RECTANGLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Point getTopLeft() {
+		Point topLeft = basicGetTopLeft();
+		return topLeft != null && topLeft.eIsProxy() ? (Point)eResolveProxy((InternalEObject)topLeft) : topLeft;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Point basicGetTopLeft() {
+		// TODO: implement this method to return the 'Top Left' reference
+		// -> do not perform proxy resolution
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTopLeft(Point newTopLeft) {
+		// TODO: implement this method to set the 'Top Left' reference
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetTopLeft() {
+		// TODO: implement this method to unset the 'Top Left' reference
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetTopLeft() {
+		// TODO: implement this method to return whether the 'Top Left' reference is set
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Point getTopRight() {
+		Point topRight = basicGetTopRight();
+		return topRight != null && topRight.eIsProxy() ? (Point)eResolveProxy((InternalEObject)topRight) : topRight;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Point basicGetTopRight() {
+		// TODO: implement this method to return the 'Top Right' reference
+		// -> do not perform proxy resolution
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTopRight(Point newTopRight) {
+		// TODO: implement this method to set the 'Top Right' reference
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetTopRight() {
+		// TODO: implement this method to unset the 'Top Right' reference
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetTopRight() {
+		// TODO: implement this method to return whether the 'Top Right' reference is set
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Point getBottomLeft() {
+		Point bottomLeft = basicGetBottomLeft();
+		return bottomLeft != null && bottomLeft.eIsProxy() ? (Point)eResolveProxy((InternalEObject)bottomLeft) : bottomLeft;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Point basicGetBottomLeft() {
+		// TODO: implement this method to return the 'Bottom Left' reference
+		// -> do not perform proxy resolution
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBottomLeft(Point newBottomLeft) {
+		// TODO: implement this method to set the 'Bottom Left' reference
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetBottomLeft() {
+		// TODO: implement this method to unset the 'Bottom Left' reference
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetBottomLeft() {
+		// TODO: implement this method to return whether the 'Bottom Left' reference is set
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Point getBottomRight() {
+		Point bottomRight = basicGetBottomRight();
+		return bottomRight != null && bottomRight.eIsProxy() ? (Point)eResolveProxy((InternalEObject)bottomRight) : bottomRight;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Point basicGetBottomRight() {
+		// TODO: implement this method to return the 'Bottom Right' reference
+		// -> do not perform proxy resolution
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBottomRight(Point newBottomRight) {
+		// TODO: implement this method to set the 'Bottom Right' reference
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetBottomRight() {
+		// TODO: implement this method to unset the 'Bottom Right' reference
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetBottomRight() {
+		// TODO: implement this method to return whether the 'Bottom Right' reference is set
+		// 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 RpyGeometryPackage.RECTANGLE__TOP_LEFT:
+				if (resolve) return getTopLeft();
+				return basicGetTopLeft();
+			case RpyGeometryPackage.RECTANGLE__TOP_RIGHT:
+				if (resolve) return getTopRight();
+				return basicGetTopRight();
+			case RpyGeometryPackage.RECTANGLE__BOTTOM_LEFT:
+				if (resolve) return getBottomLeft();
+				return basicGetBottomLeft();
+			case RpyGeometryPackage.RECTANGLE__BOTTOM_RIGHT:
+				if (resolve) return getBottomRight();
+				return basicGetBottomRight();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case RpyGeometryPackage.RECTANGLE__TOP_LEFT:
+				setTopLeft((Point)newValue);
+				return;
+			case RpyGeometryPackage.RECTANGLE__TOP_RIGHT:
+				setTopRight((Point)newValue);
+				return;
+			case RpyGeometryPackage.RECTANGLE__BOTTOM_LEFT:
+				setBottomLeft((Point)newValue);
+				return;
+			case RpyGeometryPackage.RECTANGLE__BOTTOM_RIGHT:
+				setBottomRight((Point)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case RpyGeometryPackage.RECTANGLE__TOP_LEFT:
+				unsetTopLeft();
+				return;
+			case RpyGeometryPackage.RECTANGLE__TOP_RIGHT:
+				unsetTopRight();
+				return;
+			case RpyGeometryPackage.RECTANGLE__BOTTOM_LEFT:
+				unsetBottomLeft();
+				return;
+			case RpyGeometryPackage.RECTANGLE__BOTTOM_RIGHT:
+				unsetBottomRight();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case RpyGeometryPackage.RECTANGLE__TOP_LEFT:
+				return isSetTopLeft();
+			case RpyGeometryPackage.RECTANGLE__TOP_RIGHT:
+				return isSetTopRight();
+			case RpyGeometryPackage.RECTANGLE__BOTTOM_LEFT:
+				return isSetBottomLeft();
+			case RpyGeometryPackage.RECTANGLE__BOTTOM_RIGHT:
+				return isSetBottomRight();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //RectangleImpl
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/impl/RpyGeometryFactoryImpl.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/impl/RpyGeometryFactoryImpl.java
new file mode 100644
index 0000000..c1b899d
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/impl/RpyGeometryFactoryImpl.java
@@ -0,0 +1,211 @@
+/**
+ *   Copyright (c) 2016 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:
+ *     CEA LIST - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.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.interoperability.rpy.geometry.rpygeometry.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class RpyGeometryFactoryImpl extends EFactoryImpl implements RpyGeometryFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static RpyGeometryFactory init() {
+		try {
+			RpyGeometryFactory theRpyGeometryFactory = (RpyGeometryFactory)EPackage.Registry.INSTANCE.getEFactory(RpyGeometryPackage.eNS_URI);
+			if (theRpyGeometryFactory != null) {
+				return theRpyGeometryFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new RpyGeometryFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RpyGeometryFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case RpyGeometryPackage.TRANSFORM_MATRIX: return createTransformMatrix();
+			case RpyGeometryPackage.POINT: return createPoint();
+			case RpyGeometryPackage.RPY_SHAPE: return createRpyShape();
+			case RpyGeometryPackage.RECTANGLE: return createRectangle();
+			case RpyGeometryPackage.POLYGON: return createPolygon();
+			case RpyGeometryPackage.RPY_PORT: return createRpyPort();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object createFromString(EDataType eDataType, String initialValue) {
+		switch (eDataType.getClassifierID()) {
+			case RpyGeometryPackage.POSITION:
+				return createPositionFromString(eDataType, initialValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String convertToString(EDataType eDataType, Object instanceValue) {
+		switch (eDataType.getClassifierID()) {
+			case RpyGeometryPackage.POSITION:
+				return convertPositionToString(eDataType, instanceValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TransformMatrix createTransformMatrix() {
+		TransformMatrixImpl transformMatrix = new TransformMatrixImpl();
+		return transformMatrix;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Point createPoint() {
+		PointImpl point = new PointImpl();
+		return point;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RpyShape createRpyShape() {
+		RpyShapeImpl rpyShape = new RpyShapeImpl();
+		return rpyShape;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Rectangle createRectangle() {
+		RectangleImpl rectangle = new RectangleImpl();
+		return rectangle;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Polygon createPolygon() {
+		PolygonImpl polygon = new PolygonImpl();
+		return polygon;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RpyPort createRpyPort() {
+		RpyPortImpl rpyPort = new RpyPortImpl();
+		return rpyPort;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Position createPositionFromString(EDataType eDataType, String initialValue) {
+		Position result = Position.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertPositionToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RpyGeometryPackage getRpyGeometryPackage() {
+		return (RpyGeometryPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static RpyGeometryPackage getPackage() {
+		return RpyGeometryPackage.eINSTANCE;
+	}
+
+} //RpyGeometryFactoryImpl
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/impl/RpyGeometryPackageImpl.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/impl/RpyGeometryPackageImpl.java
new file mode 100644
index 0000000..b9ad334
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/impl/RpyGeometryPackageImpl.java
@@ -0,0 +1,712 @@
+/**
+ *   Copyright (c) 2016 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:
+ *     CEA LIST - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+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.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Polygon;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Position;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryFactory;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyPort;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class RpyGeometryPackageImpl extends EPackageImpl implements RpyGeometryPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass transformMatrixEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass pointEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass rpyShapeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass rectangleEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass polygonEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass rpyPortEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum positionEEnum = 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.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private RpyGeometryPackageImpl() {
+		super(eNS_URI, RpyGeometryFactory.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 RpyGeometryPackage#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 RpyGeometryPackage init() {
+		if (isInited) return (RpyGeometryPackage)EPackage.Registry.INSTANCE.getEPackage(RpyGeometryPackage.eNS_URI);
+
+		// Obtain or create and register package
+		RpyGeometryPackageImpl theRpyGeometryPackage = (RpyGeometryPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof RpyGeometryPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new RpyGeometryPackageImpl());
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+
+		// Create package meta-data objects
+		theRpyGeometryPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theRpyGeometryPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theRpyGeometryPackage.freeze();
+
+  
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(RpyGeometryPackage.eNS_URI, theRpyGeometryPackage);
+		return theRpyGeometryPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getTransformMatrix() {
+		return transformMatrixEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getTransformMatrix_A() {
+		return (EAttribute)transformMatrixEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getTransformMatrix_B() {
+		return (EAttribute)transformMatrixEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getTransformMatrix_C() {
+		return (EAttribute)transformMatrixEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getTransformMatrix_D() {
+		return (EAttribute)transformMatrixEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getTransformMatrix_E() {
+		return (EAttribute)transformMatrixEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getTransformMatrix_F() {
+		return (EAttribute)transformMatrixEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getTransformMatrix__Add__TransformMatrix() {
+		return transformMatrixEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getTransformMatrix__Minus() {
+		return transformMatrixEClass.getEOperations().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getTransformMatrix__Minus__TransformMatrix() {
+		return transformMatrixEClass.getEOperations().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getTransformMatrix__Multiply__Point() {
+		return transformMatrixEClass.getEOperations().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getTransformMatrix__Multiply__TransformMatrix() {
+		return transformMatrixEClass.getEOperations().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPoint() {
+		return pointEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPoint_X() {
+		return (EAttribute)pointEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getPoint_Y() {
+		return (EAttribute)pointEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getPoint__Minus() {
+		return pointEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getPoint__Minus__Point() {
+		return pointEClass.getEOperations().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getPoint__Add__Point() {
+		return pointEClass.getEOperations().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getPoint__GetIntX() {
+		return pointEClass.getEOperations().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getPoint__GetIntY() {
+		return pointEClass.getEOperations().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getRpyShape() {
+		return rpyShapeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getRpyShape_Transform() {
+		return (EReference)rpyShapeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getRpyShape_Rectangle() {
+		return (EReference)rpyShapeEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getRpyShape_Parent() {
+		return (EReference)rpyShapeEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getRpyShape_RpyMetamodelObject() {
+		return (EReference)rpyShapeEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getRpyShape_ParentRelativePosition() {
+		return (EReference)rpyShapeEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getRpyShape_Height() {
+		return (EAttribute)rpyShapeEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getRpyShape_Width() {
+		return (EAttribute)rpyShapeEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getRpyShape_AbsolutePosition() {
+		return (EReference)rpyShapeEClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getRectangle() {
+		return rectangleEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getRectangle_TopLeft() {
+		return (EReference)rectangleEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getRectangle_TopRight() {
+		return (EReference)rectangleEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getRectangle_BottomLeft() {
+		return (EReference)rectangleEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getRectangle_BottomRight() {
+		return (EReference)rectangleEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getPolygon() {
+		return polygonEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getPolygon_Points() {
+		return (EReference)polygonEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getRpyPort() {
+		return rpyPortEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getRpyPort_Position() {
+		return (EAttribute)rpyPortEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getPosition() {
+		return positionEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RpyGeometryFactory getRpyGeometryFactory() {
+		return (RpyGeometryFactory)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
+		transformMatrixEClass = createEClass(TRANSFORM_MATRIX);
+		createEAttribute(transformMatrixEClass, TRANSFORM_MATRIX__A);
+		createEAttribute(transformMatrixEClass, TRANSFORM_MATRIX__B);
+		createEAttribute(transformMatrixEClass, TRANSFORM_MATRIX__C);
+		createEAttribute(transformMatrixEClass, TRANSFORM_MATRIX__D);
+		createEAttribute(transformMatrixEClass, TRANSFORM_MATRIX__E);
+		createEAttribute(transformMatrixEClass, TRANSFORM_MATRIX__F);
+		createEOperation(transformMatrixEClass, TRANSFORM_MATRIX___ADD__TRANSFORMMATRIX);
+		createEOperation(transformMatrixEClass, TRANSFORM_MATRIX___MINUS);
+		createEOperation(transformMatrixEClass, TRANSFORM_MATRIX___MINUS__TRANSFORMMATRIX);
+		createEOperation(transformMatrixEClass, TRANSFORM_MATRIX___MULTIPLY__POINT);
+		createEOperation(transformMatrixEClass, TRANSFORM_MATRIX___MULTIPLY__TRANSFORMMATRIX);
+
+		pointEClass = createEClass(POINT);
+		createEAttribute(pointEClass, POINT__X);
+		createEAttribute(pointEClass, POINT__Y);
+		createEOperation(pointEClass, POINT___MINUS);
+		createEOperation(pointEClass, POINT___MINUS__POINT);
+		createEOperation(pointEClass, POINT___ADD__POINT);
+		createEOperation(pointEClass, POINT___GET_INT_X);
+		createEOperation(pointEClass, POINT___GET_INT_Y);
+
+		rpyShapeEClass = createEClass(RPY_SHAPE);
+		createEReference(rpyShapeEClass, RPY_SHAPE__TRANSFORM);
+		createEReference(rpyShapeEClass, RPY_SHAPE__RECTANGLE);
+		createEReference(rpyShapeEClass, RPY_SHAPE__PARENT);
+		createEReference(rpyShapeEClass, RPY_SHAPE__RPY_METAMODEL_OBJECT);
+		createEReference(rpyShapeEClass, RPY_SHAPE__PARENT_RELATIVE_POSITION);
+		createEAttribute(rpyShapeEClass, RPY_SHAPE__HEIGHT);
+		createEAttribute(rpyShapeEClass, RPY_SHAPE__WIDTH);
+		createEReference(rpyShapeEClass, RPY_SHAPE__ABSOLUTE_POSITION);
+
+		rectangleEClass = createEClass(RECTANGLE);
+		createEReference(rectangleEClass, RECTANGLE__TOP_LEFT);
+		createEReference(rectangleEClass, RECTANGLE__TOP_RIGHT);
+		createEReference(rectangleEClass, RECTANGLE__BOTTOM_LEFT);
+		createEReference(rectangleEClass, RECTANGLE__BOTTOM_RIGHT);
+
+		polygonEClass = createEClass(POLYGON);
+		createEReference(polygonEClass, POLYGON__POINTS);
+
+		rpyPortEClass = createEClass(RPY_PORT);
+		createEAttribute(rpyPortEClass, RPY_PORT__POSITION);
+
+		// Create enums
+		positionEEnum = createEEnum(POSITION);
+	}
+
+	/**
+	 * <!-- 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
+		EcorePackage theEcorePackage = (EcorePackage)EPackage.Registry.INSTANCE.getEPackage(EcorePackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		rectangleEClass.getESuperTypes().add(this.getPolygon());
+		rpyPortEClass.getESuperTypes().add(this.getRpyShape());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(transformMatrixEClass, TransformMatrix.class, "TransformMatrix", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getTransformMatrix_A(), ecorePackage.getEDoubleObject(), "a", null, 1, 1, TransformMatrix.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getTransformMatrix_B(), ecorePackage.getEDoubleObject(), "b", null, 1, 1, TransformMatrix.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getTransformMatrix_C(), ecorePackage.getEDoubleObject(), "c", null, 1, 1, TransformMatrix.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getTransformMatrix_D(), ecorePackage.getEDoubleObject(), "d", null, 1, 1, TransformMatrix.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getTransformMatrix_E(), ecorePackage.getEDoubleObject(), "e", null, 1, 1, TransformMatrix.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getTransformMatrix_F(), ecorePackage.getEDoubleObject(), "f", null, 1, 1, TransformMatrix.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		EOperation op = initEOperation(getTransformMatrix__Add__TransformMatrix(), this.getTransformMatrix(), "add", 1, 1, IS_UNIQUE, !IS_ORDERED); //$NON-NLS-1$
+		addEParameter(op, this.getTransformMatrix(), "matrix", 1, 1, IS_UNIQUE, !IS_ORDERED); //$NON-NLS-1$
+
+		initEOperation(getTransformMatrix__Minus(), this.getTransformMatrix(), "minus", 1, 1, IS_UNIQUE, !IS_ORDERED); //$NON-NLS-1$
+
+		op = initEOperation(getTransformMatrix__Minus__TransformMatrix(), this.getTransformMatrix(), "minus", 1, 1, IS_UNIQUE, !IS_ORDERED); //$NON-NLS-1$
+		addEParameter(op, this.getTransformMatrix(), "matrix", 1, 1, IS_UNIQUE, !IS_ORDERED); //$NON-NLS-1$
+
+		op = initEOperation(getTransformMatrix__Multiply__Point(), this.getPoint(), "multiply", 1, 1, IS_UNIQUE, !IS_ORDERED); //$NON-NLS-1$
+		addEParameter(op, this.getPoint(), "point", 1, 1, IS_UNIQUE, !IS_ORDERED); //$NON-NLS-1$
+
+		op = initEOperation(getTransformMatrix__Multiply__TransformMatrix(), this.getTransformMatrix(), "multiply", 1, 1, IS_UNIQUE, !IS_ORDERED); //$NON-NLS-1$
+		addEParameter(op, this.getTransformMatrix(), "matrix", 1, 1, IS_UNIQUE, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(pointEClass, Point.class, "Point", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getPoint_X(), ecorePackage.getEDoubleObject(), "X", null, 1, 1, Point.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getPoint_Y(), ecorePackage.getEDoubleObject(), "Y", null, 1, 1, Point.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEOperation(getPoint__Minus(), this.getPoint(), "minus", 1, 1, IS_UNIQUE, !IS_ORDERED); //$NON-NLS-1$
+
+		op = initEOperation(getPoint__Minus__Point(), this.getPoint(), "minus", 1, 1, IS_UNIQUE, !IS_ORDERED); //$NON-NLS-1$
+		addEParameter(op, this.getPoint(), "point", 1, 1, IS_UNIQUE, !IS_ORDERED); //$NON-NLS-1$
+
+		op = initEOperation(getPoint__Add__Point(), this.getPoint(), "add", 1, 1, IS_UNIQUE, !IS_ORDERED); //$NON-NLS-1$
+		addEParameter(op, this.getPoint(), "point", 1, 1, IS_UNIQUE, !IS_ORDERED); //$NON-NLS-1$
+
+		initEOperation(getPoint__GetIntX(), ecorePackage.getEIntegerObject(), "getIntX", 1, 1, IS_UNIQUE, !IS_ORDERED); //$NON-NLS-1$
+
+		initEOperation(getPoint__GetIntY(), ecorePackage.getEIntegerObject(), "getIntY", 1, 1, IS_UNIQUE, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(rpyShapeEClass, RpyShape.class, "RpyShape", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEReference(getRpyShape_Transform(), this.getTransformMatrix(), null, "transform", null, 1, 1, RpyShape.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEReference(getRpyShape_Rectangle(), this.getRectangle(), null, "rectangle", null, 1, 1, RpyShape.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEReference(getRpyShape_Parent(), this.getRpyShape(), null, "parent", null, 0, 1, RpyShape.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEReference(getRpyShape_RpyMetamodelObject(), theEcorePackage.getEObject(), null, "rpyMetamodelObject", null, 1, 1, RpyShape.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEReference(getRpyShape_ParentRelativePosition(), this.getPoint(), null, "parentRelativePosition", null, 1, 1, RpyShape.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getRpyShape_Height(), ecorePackage.getEIntegerObject(), "height", null, 1, 1, RpyShape.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getRpyShape_Width(), ecorePackage.getEIntegerObject(), "width", null, 1, 1, RpyShape.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEReference(getRpyShape_AbsolutePosition(), this.getPoint(), null, "absolutePosition", null, 1, 1, RpyShape.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(rectangleEClass, Rectangle.class, "Rectangle", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEReference(getRectangle_TopLeft(), this.getPoint(), null, "topLeft", null, 1, 1, Rectangle.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEReference(getRectangle_TopRight(), this.getPoint(), null, "topRight", null, 1, 1, Rectangle.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEReference(getRectangle_BottomLeft(), this.getPoint(), null, "bottomLeft", null, 1, 1, Rectangle.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEReference(getRectangle_BottomRight(), this.getPoint(), null, "bottomRight", null, 1, 1, Rectangle.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(polygonEClass, Polygon.class, "Polygon", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEReference(getPolygon_Points(), this.getPoint(), null, "points", null, 1, -1, Polygon.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(rpyPortEClass, RpyPort.class, "RpyPort", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getRpyPort_Position(), this.getPosition(), "position", null, 1, 1, RpyPort.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		// Initialize enums and add enum literals
+		initEEnum(positionEEnum, Position.class, "Position"); //$NON-NLS-1$
+		addEEnumLiteral(positionEEnum, Position.NORTH);
+		addEEnumLiteral(positionEEnum, Position.SOUTH);
+		addEEnumLiteral(positionEEnum, Position.EAST);
+		addEEnumLiteral(positionEEnum, Position.WEST);
+		addEEnumLiteral(positionEEnum, Position.NORTH_EAST);
+		addEEnumLiteral(positionEEnum, Position.NORTH_WEST);
+		addEEnumLiteral(positionEEnum, Position.SOUTH_EAST);
+		addEEnumLiteral(positionEEnum, Position.SOUTH_WEST);
+
+		// Create resource
+		createResource(eNS_URI);
+
+		// Create annotations
+		// http://www.eclipse.org/uml2/2.0.0/UML
+		createUMLAnnotations();
+	}
+
+	/**
+	 * Initializes the annotations for <b>http://www.eclipse.org/uml2/2.0.0/UML</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createUMLAnnotations() {
+		String source = "http://www.eclipse.org/uml2/2.0.0/UML"; //$NON-NLS-1$	
+		addAnnotation
+		  (this, 
+		   source, 
+		   new String[] {
+			 "originalName", "RpyGeometry" //$NON-NLS-1$ //$NON-NLS-2$
+		   });
+	}
+
+} //RpyGeometryPackageImpl
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/impl/RpyPortImpl.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/impl/RpyPortImpl.java
new file mode 100644
index 0000000..75173de
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/impl/RpyPortImpl.java
@@ -0,0 +1,173 @@
+/**
+ *   Copyright (c) 2016 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:
+ *     CEA LIST - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.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.interoperability.rpy.geometry.rpygeometry.Position;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyPort;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Rpy Port</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyPortImpl#getPosition <em>Position</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class RpyPortImpl extends RpyShapeImpl implements RpyPort {
+	/**
+	 * The default value of the '{@link #getPosition() <em>Position</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPosition()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Position POSITION_EDEFAULT = Position.NORTH;
+
+	/**
+	 * The cached value of the '{@link #getPosition() <em>Position</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPosition()
+	 * @generated
+	 * @ordered
+	 */
+	protected Position position = POSITION_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected RpyPortImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return RpyGeometryPackage.Literals.RPY_PORT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Position getPosition() {
+		return position;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPosition(Position newPosition) {
+		Position oldPosition = position;
+		position = newPosition == null ? POSITION_EDEFAULT : newPosition;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RpyGeometryPackage.RPY_PORT__POSITION, oldPosition, position));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case RpyGeometryPackage.RPY_PORT__POSITION:
+				return getPosition();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case RpyGeometryPackage.RPY_PORT__POSITION:
+				setPosition((Position)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case RpyGeometryPackage.RPY_PORT__POSITION:
+				setPosition(POSITION_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case RpyGeometryPackage.RPY_PORT__POSITION:
+				return position != POSITION_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(" (position: "); //$NON-NLS-1$
+		result.append(position);
+		result.append(')');
+		return result.toString();
+	}
+
+} //RpyPortImpl
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/impl/RpyShapeImpl.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/impl/RpyShapeImpl.java
new file mode 100644
index 0000000..5558277
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/impl/RpyShapeImpl.java
@@ -0,0 +1,629 @@
+/**
+ *   Copyright (c) 2016 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:
+ *     CEA LIST - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.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.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.interoperability.rpy.geometry.rpygeometry.Point;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Rpy Shape</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyShapeImpl#getTransform <em>Transform</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyShapeImpl#getRectangle <em>Rectangle</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyShapeImpl#getParent <em>Parent</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyShapeImpl#getRpyMetamodelObject <em>Rpy Metamodel Object</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyShapeImpl#getParentRelativePosition <em>Parent Relative Position</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyShapeImpl#getHeight <em>Height</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyShapeImpl#getWidth <em>Width</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyShapeImpl#getAbsolutePosition <em>Absolute Position</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class RpyShapeImpl extends MinimalEObjectImpl.Container implements RpyShape {
+	/**
+	 * The cached value of the '{@link #getTransform() <em>Transform</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTransform()
+	 * @generated
+	 * @ordered
+	 */
+	protected TransformMatrix transform;
+
+	/**
+	 * The cached value of the '{@link #getRectangle() <em>Rectangle</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRectangle()
+	 * @generated
+	 * @ordered
+	 */
+	protected Rectangle rectangle;
+
+	/**
+	 * The cached value of the '{@link #getParent() <em>Parent</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getParent()
+	 * @generated
+	 * @ordered
+	 */
+	protected RpyShape parent;
+
+	/**
+	 * The cached value of the '{@link #getRpyMetamodelObject() <em>Rpy Metamodel Object</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRpyMetamodelObject()
+	 * @generated
+	 * @ordered
+	 */
+	protected EObject rpyMetamodelObject;
+
+	/**
+	 * The cached value of the '{@link #getParentRelativePosition() <em>Parent Relative Position</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getParentRelativePosition()
+	 * @generated
+	 * @ordered
+	 */
+	protected Point parentRelativePosition;
+
+	/**
+	 * The default value of the '{@link #getHeight() <em>Height</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHeight()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Integer HEIGHT_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getHeight() <em>Height</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHeight()
+	 * @generated
+	 * @ordered
+	 */
+	protected Integer height = HEIGHT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getWidth() <em>Width</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getWidth()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Integer WIDTH_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getWidth() <em>Width</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getWidth()
+	 * @generated
+	 * @ordered
+	 */
+	protected Integer width = WIDTH_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getAbsolutePosition() <em>Absolute Position</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAbsolutePosition()
+	 * @generated
+	 * @ordered
+	 */
+	protected Point absolutePosition;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected RpyShapeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return RpyGeometryPackage.Literals.RPY_SHAPE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TransformMatrix getTransform() {
+		return transform;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetTransform(TransformMatrix newTransform, NotificationChain msgs) {
+		TransformMatrix oldTransform = transform;
+		transform = newTransform;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RpyGeometryPackage.RPY_SHAPE__TRANSFORM, oldTransform, newTransform);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTransform(TransformMatrix newTransform) {
+		if (newTransform != transform) {
+			NotificationChain msgs = null;
+			if (transform != null)
+				msgs = ((InternalEObject)transform).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RpyGeometryPackage.RPY_SHAPE__TRANSFORM, null, msgs);
+			if (newTransform != null)
+				msgs = ((InternalEObject)newTransform).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RpyGeometryPackage.RPY_SHAPE__TRANSFORM, null, msgs);
+			msgs = basicSetTransform(newTransform, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RpyGeometryPackage.RPY_SHAPE__TRANSFORM, newTransform, newTransform));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Rectangle getRectangle() {
+		return rectangle;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetRectangle(Rectangle newRectangle, NotificationChain msgs) {
+		Rectangle oldRectangle = rectangle;
+		rectangle = newRectangle;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RpyGeometryPackage.RPY_SHAPE__RECTANGLE, oldRectangle, newRectangle);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRectangle(Rectangle newRectangle) {
+		if (newRectangle != rectangle) {
+			NotificationChain msgs = null;
+			if (rectangle != null)
+				msgs = ((InternalEObject)rectangle).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RpyGeometryPackage.RPY_SHAPE__RECTANGLE, null, msgs);
+			if (newRectangle != null)
+				msgs = ((InternalEObject)newRectangle).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RpyGeometryPackage.RPY_SHAPE__RECTANGLE, null, msgs);
+			msgs = basicSetRectangle(newRectangle, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RpyGeometryPackage.RPY_SHAPE__RECTANGLE, newRectangle, newRectangle));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RpyShape getParent() {
+		if (parent != null && parent.eIsProxy()) {
+			InternalEObject oldParent = (InternalEObject)parent;
+			parent = (RpyShape)eResolveProxy(oldParent);
+			if (parent != oldParent) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, RpyGeometryPackage.RPY_SHAPE__PARENT, oldParent, parent));
+			}
+		}
+		return parent;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RpyShape basicGetParent() {
+		return parent;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParent(RpyShape newParent) {
+		RpyShape oldParent = parent;
+		parent = newParent;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RpyGeometryPackage.RPY_SHAPE__PARENT, oldParent, parent));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EObject getRpyMetamodelObject() {
+		if (rpyMetamodelObject != null && rpyMetamodelObject.eIsProxy()) {
+			InternalEObject oldRpyMetamodelObject = (InternalEObject)rpyMetamodelObject;
+			rpyMetamodelObject = eResolveProxy(oldRpyMetamodelObject);
+			if (rpyMetamodelObject != oldRpyMetamodelObject) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, RpyGeometryPackage.RPY_SHAPE__RPY_METAMODEL_OBJECT, oldRpyMetamodelObject, rpyMetamodelObject));
+			}
+		}
+		return rpyMetamodelObject;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EObject basicGetRpyMetamodelObject() {
+		return rpyMetamodelObject;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRpyMetamodelObject(EObject newRpyMetamodelObject) {
+		EObject oldRpyMetamodelObject = rpyMetamodelObject;
+		rpyMetamodelObject = newRpyMetamodelObject;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RpyGeometryPackage.RPY_SHAPE__RPY_METAMODEL_OBJECT, oldRpyMetamodelObject, rpyMetamodelObject));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Point getParentRelativePosition() {
+		return parentRelativePosition;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetParentRelativePosition(Point newParentRelativePosition, NotificationChain msgs) {
+		Point oldParentRelativePosition = parentRelativePosition;
+		parentRelativePosition = newParentRelativePosition;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RpyGeometryPackage.RPY_SHAPE__PARENT_RELATIVE_POSITION, oldParentRelativePosition, newParentRelativePosition);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParentRelativePosition(Point newParentRelativePosition) {
+		if (newParentRelativePosition != parentRelativePosition) {
+			NotificationChain msgs = null;
+			if (parentRelativePosition != null)
+				msgs = ((InternalEObject)parentRelativePosition).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RpyGeometryPackage.RPY_SHAPE__PARENT_RELATIVE_POSITION, null, msgs);
+			if (newParentRelativePosition != null)
+				msgs = ((InternalEObject)newParentRelativePosition).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RpyGeometryPackage.RPY_SHAPE__PARENT_RELATIVE_POSITION, null, msgs);
+			msgs = basicSetParentRelativePosition(newParentRelativePosition, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RpyGeometryPackage.RPY_SHAPE__PARENT_RELATIVE_POSITION, newParentRelativePosition, newParentRelativePosition));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Integer getHeight() {
+		return height;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setHeight(Integer newHeight) {
+		Integer oldHeight = height;
+		height = newHeight;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RpyGeometryPackage.RPY_SHAPE__HEIGHT, oldHeight, height));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Integer getWidth() {
+		return width;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setWidth(Integer newWidth) {
+		Integer oldWidth = width;
+		width = newWidth;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RpyGeometryPackage.RPY_SHAPE__WIDTH, oldWidth, width));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Point getAbsolutePosition() {
+		return absolutePosition;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetAbsolutePosition(Point newAbsolutePosition, NotificationChain msgs) {
+		Point oldAbsolutePosition = absolutePosition;
+		absolutePosition = newAbsolutePosition;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RpyGeometryPackage.RPY_SHAPE__ABSOLUTE_POSITION, oldAbsolutePosition, newAbsolutePosition);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAbsolutePosition(Point newAbsolutePosition) {
+		if (newAbsolutePosition != absolutePosition) {
+			NotificationChain msgs = null;
+			if (absolutePosition != null)
+				msgs = ((InternalEObject)absolutePosition).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RpyGeometryPackage.RPY_SHAPE__ABSOLUTE_POSITION, null, msgs);
+			if (newAbsolutePosition != null)
+				msgs = ((InternalEObject)newAbsolutePosition).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RpyGeometryPackage.RPY_SHAPE__ABSOLUTE_POSITION, null, msgs);
+			msgs = basicSetAbsolutePosition(newAbsolutePosition, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RpyGeometryPackage.RPY_SHAPE__ABSOLUTE_POSITION, newAbsolutePosition, newAbsolutePosition));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case RpyGeometryPackage.RPY_SHAPE__TRANSFORM:
+				return basicSetTransform(null, msgs);
+			case RpyGeometryPackage.RPY_SHAPE__RECTANGLE:
+				return basicSetRectangle(null, msgs);
+			case RpyGeometryPackage.RPY_SHAPE__PARENT_RELATIVE_POSITION:
+				return basicSetParentRelativePosition(null, msgs);
+			case RpyGeometryPackage.RPY_SHAPE__ABSOLUTE_POSITION:
+				return basicSetAbsolutePosition(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 RpyGeometryPackage.RPY_SHAPE__TRANSFORM:
+				return getTransform();
+			case RpyGeometryPackage.RPY_SHAPE__RECTANGLE:
+				return getRectangle();
+			case RpyGeometryPackage.RPY_SHAPE__PARENT:
+				if (resolve) return getParent();
+				return basicGetParent();
+			case RpyGeometryPackage.RPY_SHAPE__RPY_METAMODEL_OBJECT:
+				if (resolve) return getRpyMetamodelObject();
+				return basicGetRpyMetamodelObject();
+			case RpyGeometryPackage.RPY_SHAPE__PARENT_RELATIVE_POSITION:
+				return getParentRelativePosition();
+			case RpyGeometryPackage.RPY_SHAPE__HEIGHT:
+				return getHeight();
+			case RpyGeometryPackage.RPY_SHAPE__WIDTH:
+				return getWidth();
+			case RpyGeometryPackage.RPY_SHAPE__ABSOLUTE_POSITION:
+				return getAbsolutePosition();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case RpyGeometryPackage.RPY_SHAPE__TRANSFORM:
+				setTransform((TransformMatrix)newValue);
+				return;
+			case RpyGeometryPackage.RPY_SHAPE__RECTANGLE:
+				setRectangle((Rectangle)newValue);
+				return;
+			case RpyGeometryPackage.RPY_SHAPE__PARENT:
+				setParent((RpyShape)newValue);
+				return;
+			case RpyGeometryPackage.RPY_SHAPE__RPY_METAMODEL_OBJECT:
+				setRpyMetamodelObject((EObject)newValue);
+				return;
+			case RpyGeometryPackage.RPY_SHAPE__PARENT_RELATIVE_POSITION:
+				setParentRelativePosition((Point)newValue);
+				return;
+			case RpyGeometryPackage.RPY_SHAPE__HEIGHT:
+				setHeight((Integer)newValue);
+				return;
+			case RpyGeometryPackage.RPY_SHAPE__WIDTH:
+				setWidth((Integer)newValue);
+				return;
+			case RpyGeometryPackage.RPY_SHAPE__ABSOLUTE_POSITION:
+				setAbsolutePosition((Point)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case RpyGeometryPackage.RPY_SHAPE__TRANSFORM:
+				setTransform((TransformMatrix)null);
+				return;
+			case RpyGeometryPackage.RPY_SHAPE__RECTANGLE:
+				setRectangle((Rectangle)null);
+				return;
+			case RpyGeometryPackage.RPY_SHAPE__PARENT:
+				setParent((RpyShape)null);
+				return;
+			case RpyGeometryPackage.RPY_SHAPE__RPY_METAMODEL_OBJECT:
+				setRpyMetamodelObject((EObject)null);
+				return;
+			case RpyGeometryPackage.RPY_SHAPE__PARENT_RELATIVE_POSITION:
+				setParentRelativePosition((Point)null);
+				return;
+			case RpyGeometryPackage.RPY_SHAPE__HEIGHT:
+				setHeight(HEIGHT_EDEFAULT);
+				return;
+			case RpyGeometryPackage.RPY_SHAPE__WIDTH:
+				setWidth(WIDTH_EDEFAULT);
+				return;
+			case RpyGeometryPackage.RPY_SHAPE__ABSOLUTE_POSITION:
+				setAbsolutePosition((Point)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case RpyGeometryPackage.RPY_SHAPE__TRANSFORM:
+				return transform != null;
+			case RpyGeometryPackage.RPY_SHAPE__RECTANGLE:
+				return rectangle != null;
+			case RpyGeometryPackage.RPY_SHAPE__PARENT:
+				return parent != null;
+			case RpyGeometryPackage.RPY_SHAPE__RPY_METAMODEL_OBJECT:
+				return rpyMetamodelObject != null;
+			case RpyGeometryPackage.RPY_SHAPE__PARENT_RELATIVE_POSITION:
+				return parentRelativePosition != null;
+			case RpyGeometryPackage.RPY_SHAPE__HEIGHT:
+				return HEIGHT_EDEFAULT == null ? height != null : !HEIGHT_EDEFAULT.equals(height);
+			case RpyGeometryPackage.RPY_SHAPE__WIDTH:
+				return WIDTH_EDEFAULT == null ? width != null : !WIDTH_EDEFAULT.equals(width);
+			case RpyGeometryPackage.RPY_SHAPE__ABSOLUTE_POSITION:
+				return absolutePosition != 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(" (height: "); //$NON-NLS-1$
+		result.append(height);
+		result.append(", width: "); //$NON-NLS-1$
+		result.append(width);
+		result.append(')');
+		return result.toString();
+	}
+
+} //RpyShapeImpl
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/impl/TransformMatrixImpl.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/impl/TransformMatrixImpl.java
new file mode 100644
index 0000000..8472daf
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/impl/TransformMatrixImpl.java
@@ -0,0 +1,525 @@
+/**
+ *   Copyright (c) 2016 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:
+ *     CEA LIST - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.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.interoperability.rpy.geometry.rpygeometry.Point;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Transform Matrix</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.TransformMatrixImpl#getA <em>A</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.TransformMatrixImpl#getB <em>B</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.TransformMatrixImpl#getC <em>C</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.TransformMatrixImpl#getD <em>D</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.TransformMatrixImpl#getE <em>E</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.TransformMatrixImpl#getF <em>F</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TransformMatrixImpl extends MinimalEObjectImpl.Container implements TransformMatrix {
+	/**
+	 * The default value of the '{@link #getA() <em>A</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getA()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Double A_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getA() <em>A</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getA()
+	 * @generated
+	 * @ordered
+	 */
+	protected Double a = A_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getB() <em>B</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getB()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Double B_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getB() <em>B</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getB()
+	 * @generated
+	 * @ordered
+	 */
+	protected Double b = B_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getC() <em>C</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getC()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Double C_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getC() <em>C</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getC()
+	 * @generated
+	 * @ordered
+	 */
+	protected Double c = C_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getD() <em>D</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getD()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Double D_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getD() <em>D</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getD()
+	 * @generated
+	 * @ordered
+	 */
+	protected Double d = D_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getE() <em>E</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getE()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Double E_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getE() <em>E</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getE()
+	 * @generated
+	 * @ordered
+	 */
+	protected Double e = E_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getF() <em>F</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getF()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final Double F_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getF() <em>F</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getF()
+	 * @generated
+	 * @ordered
+	 */
+	protected Double f = F_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TransformMatrixImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return RpyGeometryPackage.Literals.TRANSFORM_MATRIX;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Double getA() {
+		return a;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setA(Double newA) {
+		Double oldA = a;
+		a = newA;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RpyGeometryPackage.TRANSFORM_MATRIX__A, oldA, a));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Double getB() {
+		return b;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setB(Double newB) {
+		Double oldB = b;
+		b = newB;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RpyGeometryPackage.TRANSFORM_MATRIX__B, oldB, b));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Double getC() {
+		return c;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setC(Double newC) {
+		Double oldC = c;
+		c = newC;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RpyGeometryPackage.TRANSFORM_MATRIX__C, oldC, c));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Double getD() {
+		return d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setD(Double newD) {
+		Double oldD = d;
+		d = newD;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RpyGeometryPackage.TRANSFORM_MATRIX__D, oldD, d));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Double getE() {
+		return e;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setE(Double newE) {
+		Double oldE = e;
+		e = newE;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RpyGeometryPackage.TRANSFORM_MATRIX__E, oldE, e));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Double getF() {
+		return f;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setF(Double newF) {
+		Double oldF = f;
+		f = newF;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, RpyGeometryPackage.TRANSFORM_MATRIX__F, oldF, f));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TransformMatrix add(TransformMatrix matrix) {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TransformMatrix minus() {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TransformMatrix minus(TransformMatrix matrix) {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Point multiply(Point point) {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TransformMatrix multiply(TransformMatrix matrix) {
+		// 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 RpyGeometryPackage.TRANSFORM_MATRIX__A:
+				return getA();
+			case RpyGeometryPackage.TRANSFORM_MATRIX__B:
+				return getB();
+			case RpyGeometryPackage.TRANSFORM_MATRIX__C:
+				return getC();
+			case RpyGeometryPackage.TRANSFORM_MATRIX__D:
+				return getD();
+			case RpyGeometryPackage.TRANSFORM_MATRIX__E:
+				return getE();
+			case RpyGeometryPackage.TRANSFORM_MATRIX__F:
+				return getF();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case RpyGeometryPackage.TRANSFORM_MATRIX__A:
+				setA((Double)newValue);
+				return;
+			case RpyGeometryPackage.TRANSFORM_MATRIX__B:
+				setB((Double)newValue);
+				return;
+			case RpyGeometryPackage.TRANSFORM_MATRIX__C:
+				setC((Double)newValue);
+				return;
+			case RpyGeometryPackage.TRANSFORM_MATRIX__D:
+				setD((Double)newValue);
+				return;
+			case RpyGeometryPackage.TRANSFORM_MATRIX__E:
+				setE((Double)newValue);
+				return;
+			case RpyGeometryPackage.TRANSFORM_MATRIX__F:
+				setF((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case RpyGeometryPackage.TRANSFORM_MATRIX__A:
+				setA(A_EDEFAULT);
+				return;
+			case RpyGeometryPackage.TRANSFORM_MATRIX__B:
+				setB(B_EDEFAULT);
+				return;
+			case RpyGeometryPackage.TRANSFORM_MATRIX__C:
+				setC(C_EDEFAULT);
+				return;
+			case RpyGeometryPackage.TRANSFORM_MATRIX__D:
+				setD(D_EDEFAULT);
+				return;
+			case RpyGeometryPackage.TRANSFORM_MATRIX__E:
+				setE(E_EDEFAULT);
+				return;
+			case RpyGeometryPackage.TRANSFORM_MATRIX__F:
+				setF(F_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case RpyGeometryPackage.TRANSFORM_MATRIX__A:
+				return A_EDEFAULT == null ? a != null : !A_EDEFAULT.equals(a);
+			case RpyGeometryPackage.TRANSFORM_MATRIX__B:
+				return B_EDEFAULT == null ? b != null : !B_EDEFAULT.equals(b);
+			case RpyGeometryPackage.TRANSFORM_MATRIX__C:
+				return C_EDEFAULT == null ? c != null : !C_EDEFAULT.equals(c);
+			case RpyGeometryPackage.TRANSFORM_MATRIX__D:
+				return D_EDEFAULT == null ? d != null : !D_EDEFAULT.equals(d);
+			case RpyGeometryPackage.TRANSFORM_MATRIX__E:
+				return E_EDEFAULT == null ? e != null : !E_EDEFAULT.equals(e);
+			case RpyGeometryPackage.TRANSFORM_MATRIX__F:
+				return F_EDEFAULT == null ? f != null : !F_EDEFAULT.equals(f);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case RpyGeometryPackage.TRANSFORM_MATRIX___ADD__TRANSFORMMATRIX:
+				return add((TransformMatrix)arguments.get(0));
+			case RpyGeometryPackage.TRANSFORM_MATRIX___MINUS:
+				return minus();
+			case RpyGeometryPackage.TRANSFORM_MATRIX___MINUS__TRANSFORMMATRIX:
+				return minus((TransformMatrix)arguments.get(0));
+			case RpyGeometryPackage.TRANSFORM_MATRIX___MULTIPLY__POINT:
+				return multiply((Point)arguments.get(0));
+			case RpyGeometryPackage.TRANSFORM_MATRIX___MULTIPLY__TRANSFORMMATRIX:
+				return multiply((TransformMatrix)arguments.get(0));
+		}
+		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(" (a: "); //$NON-NLS-1$
+		result.append(a);
+		result.append(", b: "); //$NON-NLS-1$
+		result.append(b);
+		result.append(", c: "); //$NON-NLS-1$
+		result.append(c);
+		result.append(", d: "); //$NON-NLS-1$
+		result.append(d);
+		result.append(", e: "); //$NON-NLS-1$
+		result.append(e);
+		result.append(", f: "); //$NON-NLS-1$
+		result.append(f);
+		result.append(')');
+		return result.toString();
+	}
+
+} //TransformMatrixImpl
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/util/RpyGeometryAdapterFactory.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/util/RpyGeometryAdapterFactory.java
new file mode 100644
index 0000000..18c786c
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/util/RpyGeometryAdapterFactory.java
@@ -0,0 +1,220 @@
+/**
+ *   Copyright (c) 2016 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:
+ *     CEA LIST - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.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.interoperability.rpy.geometry.rpygeometry.*;
+
+/**
+ * <!-- 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.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage
+ * @generated
+ */
+public class RpyGeometryAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static RpyGeometryPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RpyGeometryAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = RpyGeometryPackage.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 RpyGeometrySwitch<Adapter> modelSwitch =
+		new RpyGeometrySwitch<Adapter>() {
+			@Override
+			public Adapter caseTransformMatrix(TransformMatrix object) {
+				return createTransformMatrixAdapter();
+			}
+			@Override
+			public Adapter casePoint(Point object) {
+				return createPointAdapter();
+			}
+			@Override
+			public Adapter caseRpyShape(RpyShape object) {
+				return createRpyShapeAdapter();
+			}
+			@Override
+			public Adapter caseRectangle(Rectangle object) {
+				return createRectangleAdapter();
+			}
+			@Override
+			public Adapter casePolygon(Polygon object) {
+				return createPolygonAdapter();
+			}
+			@Override
+			public Adapter caseRpyPort(RpyPort object) {
+				return createRpyPortAdapter();
+			}
+			@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.interoperability.rpy.geometry.rpygeometry.TransformMatrix <em>Transform Matrix</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.interoperability.rpy.geometry.rpygeometry.TransformMatrix
+	 * @generated
+	 */
+	public Adapter createTransformMatrixAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point <em>Point</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.interoperability.rpy.geometry.rpygeometry.Point
+	 * @generated
+	 */
+	public Adapter createPointAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape <em>Rpy Shape</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.interoperability.rpy.geometry.rpygeometry.RpyShape
+	 * @generated
+	 */
+	public Adapter createRpyShapeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle <em>Rectangle</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.interoperability.rpy.geometry.rpygeometry.Rectangle
+	 * @generated
+	 */
+	public Adapter createRectangleAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Polygon <em>Polygon</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.interoperability.rpy.geometry.rpygeometry.Polygon
+	 * @generated
+	 */
+	public Adapter createPolygonAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyPort <em>Rpy Port</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.interoperability.rpy.geometry.rpygeometry.RpyPort
+	 * @generated
+	 */
+	public Adapter createRpyPortAdapter() {
+		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;
+	}
+
+} //RpyGeometryAdapterFactory
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/util/RpyGeometrySwitch.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/util/RpyGeometrySwitch.java
new file mode 100644
index 0000000..814ff50
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src-gen/org/eclipse/papyrus/interoperability/rpy/geometry/rpygeometry/util/RpyGeometrySwitch.java
@@ -0,0 +1,227 @@
+/**
+ *   Copyright (c) 2016 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:
+ *     CEA LIST - Initial API and implementation
+ * 
+ */
+package org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.*;
+
+/**
+ * <!-- 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.interoperability.rpy.geometry.rpygeometry.RpyGeometryPackage
+ * @generated
+ */
+public class RpyGeometrySwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static RpyGeometryPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RpyGeometrySwitch() {
+		if (modelPackage == null) {
+			modelPackage = RpyGeometryPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param 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 RpyGeometryPackage.TRANSFORM_MATRIX: {
+				TransformMatrix transformMatrix = (TransformMatrix)theEObject;
+				T result = caseTransformMatrix(transformMatrix);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case RpyGeometryPackage.POINT: {
+				Point point = (Point)theEObject;
+				T result = casePoint(point);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case RpyGeometryPackage.RPY_SHAPE: {
+				RpyShape rpyShape = (RpyShape)theEObject;
+				T result = caseRpyShape(rpyShape);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case RpyGeometryPackage.RECTANGLE: {
+				Rectangle rectangle = (Rectangle)theEObject;
+				T result = caseRectangle(rectangle);
+				if (result == null) result = casePolygon(rectangle);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case RpyGeometryPackage.POLYGON: {
+				Polygon polygon = (Polygon)theEObject;
+				T result = casePolygon(polygon);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case RpyGeometryPackage.RPY_PORT: {
+				RpyPort rpyPort = (RpyPort)theEObject;
+				T result = caseRpyPort(rpyPort);
+				if (result == null) result = caseRpyShape(rpyPort);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Transform Matrix</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>Transform Matrix</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTransformMatrix(TransformMatrix object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Point</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>Point</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePoint(Point object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Rpy Shape</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>Rpy Shape</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseRpyShape(RpyShape object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Rectangle</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>Rectangle</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseRectangle(Rectangle object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Polygon</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>Polygon</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePolygon(Polygon object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Rpy Port</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>Rpy Port</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseRpyPort(RpyPort 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;
+	}
+
+} //RpyGeometrySwitch
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/custom/CustomPoint.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/custom/CustomPoint.java
new file mode 100644
index 0000000..0094031
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/custom/CustomPoint.java
@@ -0,0 +1,55 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.geometry.custom;
+
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.PointImpl;
+import org.eclipse.papyrus.interoperability.rpy.geometry.utils.PointsOperations;
+
+public class CustomPoint extends PointImpl {
+
+	@Override
+	public Point add(Point point) {
+		return PointsOperations.add(this, point);
+	}
+
+	@Override
+	public Point minus() {
+		return PointsOperations.minus(this);
+	}
+
+	@Override
+	public Point minus(Point point) {
+		return PointsOperations.minus(this, point);
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.PointImpl#getIntX()
+	 *
+	 * @return
+	 */
+	@Override
+	public Integer getIntX() {
+		return PointsOperations.getIntX(this);
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.PointImpl#getIntY()
+	 *
+	 * @return
+	 */
+	@Override
+	public Integer getIntY() {
+		return PointsOperations.getIntY(this);
+	}
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/custom/CustomRectangle.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/custom/CustomRectangle.java
new file mode 100644
index 0000000..f4ecbdd
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/custom/CustomRectangle.java
@@ -0,0 +1,41 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.geometry.custom;
+
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RectangleImpl;
+import org.eclipse.papyrus.interoperability.rpy.geometry.utils.RectangleOperations;
+
+public class CustomRectangle extends RectangleImpl {
+
+	@Override
+	public Point getTopLeft() {
+		return RectangleOperations.getTopLeft(this);
+	}
+
+	@Override
+	public Point getTopRight() {
+		return RectangleOperations.getTopRight(this);
+	}
+
+	@Override
+	public Point getBottomRight() {
+		return RectangleOperations.getBottomRight(this);
+	}
+
+	@Override
+	public Point getBottomLeft() {
+		return RectangleOperations.getBottomLeft(this);
+	}
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/custom/CustomRpyGeometryFactory.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/custom/CustomRpyGeometryFactory.java
new file mode 100644
index 0000000..eda1048
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/custom/CustomRpyGeometryFactory.java
@@ -0,0 +1,49 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.geometry.custom;
+
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyPort;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyGeometryFactoryImpl;
+
+public class CustomRpyGeometryFactory extends RpyGeometryFactoryImpl {
+	@Override
+	public RpyPort createRpyPort() {
+		return new CustomRpyPort();
+	}
+
+	@Override
+	public RpyShape createRpyShape() {
+		return new CustomRpyShape();
+	}
+
+	@Override
+	public TransformMatrix createTransformMatrix() {
+		return new CustomTransformMatrix();
+	}
+
+	@Override
+	public Rectangle createRectangle() {
+		return new CustomRectangle();
+	}
+
+	@Override
+	public Point createPoint() {
+		return new CustomPoint();
+	}
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/custom/CustomRpyPort.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/custom/CustomRpyPort.java
new file mode 100644
index 0000000..cc05471
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/custom/CustomRpyPort.java
@@ -0,0 +1,26 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.geometry.custom;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyPortImpl;
+import org.eclipse.papyrus.interoperability.rpy.geometry.utils.RpyPortOperations;
+
+public class CustomRpyPort extends RpyPortImpl {
+
+	@Override
+	public void setRpyMetamodelObject(EObject newRpyMetamodelObject) {
+		RpyPortOperations.initializeShape(this, newRpyMetamodelObject);
+		super.setRpyMetamodelObject(newRpyMetamodelObject);
+	}
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/custom/CustomRpyShape.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/custom/CustomRpyShape.java
new file mode 100644
index 0000000..69cd0ab
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/custom/CustomRpyShape.java
@@ -0,0 +1,30 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.geometry.custom;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.RpyShapeImpl;
+import org.eclipse.papyrus.interoperability.rpy.geometry.utils.RpyShapeOperations;
+
+public class CustomRpyShape extends RpyShapeImpl {
+
+
+	@Override
+	public void setRpyMetamodelObject(EObject newRpyMetamodelObject) {
+
+		RpyShapeOperations.initializeShape(this, newRpyMetamodelObject);
+
+		super.setRpyMetamodelObject(newRpyMetamodelObject);
+	}
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/custom/CustomTransformMatrix.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/custom/CustomTransformMatrix.java
new file mode 100644
index 0000000..55d214b
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/custom/CustomTransformMatrix.java
@@ -0,0 +1,47 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.geometry.custom;
+
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.impl.TransformMatrixImpl;
+import org.eclipse.papyrus.interoperability.rpy.geometry.utils.TransformMatrixOperations;
+
+public class CustomTransformMatrix extends TransformMatrixImpl {
+
+	@Override
+	public TransformMatrix add(TransformMatrix matrix) {
+		return TransformMatrixOperations.add(this, matrix);
+	}
+
+	@Override
+	public TransformMatrix minus(TransformMatrix matrix) {
+		return TransformMatrixOperations.minus(this, matrix);
+	}
+
+	@Override
+	public TransformMatrix minus() {
+		return TransformMatrixOperations.minus(this);
+	}
+
+	@Override
+	public Point multiply(Point point) {
+		return TransformMatrixOperations.multiply(this, point);
+	}
+
+	@Override
+	public TransformMatrix multiply(TransformMatrix matrix) {
+
+		return TransformMatrixOperations.multiply(this, matrix);
+	}
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/utils/GeometryUtils.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/utils/GeometryUtils.java
new file mode 100644
index 0000000..f040e31
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/utils/GeometryUtils.java
@@ -0,0 +1,32 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.geometry.utils;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+public class GeometryUtils {
+
+	public static Object getFeatureValue(EObject eObject, String featureName) {
+		EClass eObjectEClass = eObject.eClass();
+		EStructuralFeature feature = eObjectEClass.getEStructuralFeature(featureName);
+		if (feature != null) {
+			return eObject.eGet(feature);
+		}
+
+		return null;
+	}
+
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/utils/PointsOperations.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/utils/PointsOperations.java
new file mode 100644
index 0000000..db87836
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/utils/PointsOperations.java
@@ -0,0 +1,62 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.geometry.utils;
+
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryFactory;
+
+public class PointsOperations {
+
+	public static Point add(Point point1, Point point2) {
+		Point ret = RpyGeometryFactory.eINSTANCE.createPoint();
+		ret.setX(point1.getX() + point2.getX());
+		ret.setY(point1.getY() + point2.getY());
+		return ret;
+	}
+
+	public static Point minus(Point point) {
+		Point ret = RpyGeometryFactory.eINSTANCE.createPoint();
+		ret.setX(-point.getX());
+		ret.setY(-point.getY());
+		return ret;
+	}
+
+	public static Point minus(Point point1, Point point2) {
+		Point ret = RpyGeometryFactory.eINSTANCE.createPoint();
+		ret.setX(point1.getX() - point2.getX());
+		ret.setY(point1.getY() - point2.getY());
+		return ret;
+	}
+
+	public static Point getPoint(String string, String string2) {
+		return getPoint(Double.parseDouble(string), Double.parseDouble(string2));
+
+	}
+
+	public static Point getPoint(double x, double y) {
+		Point ret = RpyGeometryFactory.eINSTANCE.createPoint();
+		ret.setX(x);
+		ret.setY(y);
+		return ret;
+	}
+
+	public static Integer getIntX(Point point) {
+		return Integer.valueOf((int) Math.round(point.getX()));// initial code was : point.getX().intValue();
+	}
+
+
+	public static Integer getIntY(Point point) {
+		return Integer.valueOf((int) Math.round(point.getY()));// initial code was : point.getY().intValue();
+	}
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/utils/RectangleOperations.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/utils/RectangleOperations.java
new file mode 100644
index 0000000..ea9f3ca
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/utils/RectangleOperations.java
@@ -0,0 +1,51 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.geometry.utils;
+
+import java.util.List;
+
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryFactory;
+
+public class RectangleOperations {
+
+	public static Rectangle getRectangle(List<String> polygonList) {
+
+		if (polygonList.size() == 9) {
+			Rectangle ret = RpyGeometryFactory.eINSTANCE.createRectangle();
+			for (int i = 1; i < polygonList.size(); i += 2) {
+				ret.getPoints().add(PointsOperations.getPoint(polygonList.get(i), polygonList.get(i + 1)));
+			}
+			return ret;
+		}
+		return null;
+	}
+
+
+	public static Point getTopLeft(final Rectangle rectangle) {
+		return rectangle.getPoints().get(0);
+	}
+
+	public static Point getTopRight(final Rectangle rectangle) {
+		return rectangle.getPoints().get(1);
+	}
+
+	public static Point getBottomRight(final Rectangle rectangle) {
+		return rectangle.getPoints().get(2);
+	}
+
+	public static Point getBottomLeft(final Rectangle rectangle) {
+		return rectangle.getPoints().get(3);
+	}
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/utils/RpyPortOperations.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/utils/RpyPortOperations.java
new file mode 100644
index 0000000..6d92940
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/utils/RpyPortOperations.java
@@ -0,0 +1,116 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.geometry.utils;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Position;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyPort;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix;
+import org.eclipse.papyrus.interoperability.rpy.rpymetamodel.UMLRpyPackage;
+
+public class RpyPortOperations extends RpyShapeOperations {
+
+	public static String M_POSITION_FEATURE_NAME = UMLRpyPackage.eINSTANCE.getCGIPortConnector_M_position().getName();
+
+
+	public static void initializeShape(RpyPort rpyPort, EObject rpyMMObj) {
+		initializeTransform(rpyPort, rpyMMObj);
+		initializeRectangle(rpyPort, rpyMMObj);
+		initializeParent(rpyPort, rpyMMObj);
+		initializeParentEdge(rpyPort);
+		initializePositionAndSize(rpyPort);
+		fixPortOffsets(rpyPort);
+	}
+
+
+
+
+
+	public static void initializeRectangle(RpyShape rpyShape, EObject rpyMMObj) {
+		Object polygonObj = GeometryUtils.getFeatureValue(rpyMMObj, M_POSITION_FEATURE_NAME);
+		if (polygonObj instanceof List) {
+			@SuppressWarnings("unchecked")
+			Rectangle rectangle = RectangleOperations.getRectangle((List<String>) polygonObj);
+			rpyShape.setRectangle(rectangle);
+		}
+
+	}
+
+	private static void fixPortOffsets(RpyPort rpyPort) {
+		double xOffset = 0;
+		double yOffset = 0;
+
+		// TODO : manage corner ?
+
+		switch (rpyPort.getPosition()) {
+		case EAST:
+
+			// top left corner has turned of 90� to right and has become the top right corner
+			yOffset = 20;
+			break;
+		case NORTH:
+			xOffset = 20;
+			break;
+		case SOUTH:
+			// top left has become bottom right
+			xOffset = -40;
+			break;
+		case WEST:
+			// top left has become bottom left
+			yOffset = -40;
+			break;
+		default:
+			break;
+		}
+		Point offset = PointsOperations.getPoint(xOffset, yOffset);
+		// Point offset = PointsOperations.getPoint(0, 0);
+		Point absolutePosition = rpyPort.getAbsolutePosition();
+		Point relativePosition = rpyPort.getParentRelativePosition();
+		rpyPort.setAbsolutePosition(absolutePosition.add(offset));
+		rpyPort.setParentRelativePosition(relativePosition.add(offset));
+
+	}
+
+
+	private static void initializeParentEdge(RpyPort rpyPort) {
+		TransformMatrix transform = rpyPort.getTransform();
+		if (transform != null) {
+			boolean topOrBottom = transform.getB() == 0.0 || Math.abs(transform.getA() / transform.getB()) > 100;
+			if (topOrBottom) {
+				if (transform.getA() > 0) {
+					rpyPort.setPosition(Position.NORTH);
+				} else {
+					rpyPort.setPosition(Position.SOUTH);
+				}
+			} else {
+				if (transform.getB() > 0) {
+					rpyPort.setPosition(Position.EAST);
+				} else {
+					rpyPort.setPosition(Position.WEST);
+				}
+			}
+		} else {
+			rpyPort.setPosition(Position.NORTH);
+		}
+	}
+
+
+
+
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/utils/RpyShapeOperations.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/utils/RpyShapeOperations.java
new file mode 100644
index 0000000..e038301
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/utils/RpyShapeOperations.java
@@ -0,0 +1,145 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.geometry.utils;
+
+import java.util.List;
+import java.util.Vector;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Rectangle;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryFactory;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyShape;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix;
+import org.eclipse.papyrus.interoperability.rpy.rpymetamodel.CGIPortConnector;
+import org.eclipse.papyrus.interoperability.rpy.rpymetamodel.GraphElementsType;
+import org.eclipse.papyrus.interoperability.rpy.rpymetamodel.UMLRpyPackage;
+
+public class RpyShapeOperations {
+
+	public static String M_POLYGON_FEATURE_NAME = UMLRpyPackage.eINSTANCE.getCGIGenericElement_M_polygon().getName();
+	public static String M_PARENT_FEATURE_NAME = UMLRpyPackage.eINSTANCE.getCGIGenericElement_M_pParent().getName();
+	public static String M_TRANSFORM_FEATURE_NAME = UMLRpyPackage.eINSTANCE.getCGIGenericElement_M_transform().getName();
+
+
+	public static void initializeShape(RpyShape rpyShape, EObject rpyMMObj) {
+		initializeTransform(rpyShape, rpyMMObj);
+		initializeRectangle(rpyShape, rpyMMObj);
+		initializeParent(rpyShape, rpyMMObj);
+		initializePositionAndSize(rpyShape);
+
+	}
+
+	public static RpyShape createRpyShape(GraphElementsType graphElement) {
+		RpyShape shape;
+		if (isPort(graphElement)) {
+			shape = RpyGeometryFactory.eINSTANCE.createRpyPort();
+		} else {
+			shape = RpyGeometryFactory.eINSTANCE.createRpyShape();
+		}
+
+		shape.setRpyMetamodelObject(graphElement);
+		return shape;
+	}
+
+
+
+	private static boolean isPort(GraphElementsType graphElement) {
+
+		return graphElement instanceof CGIPortConnector;
+	}
+
+	public static void initializePositionAndSize(RpyShape rpyShape) {
+		Point point;
+		if (rpyShape.getRectangle() == null) {
+			point = PointsOperations.getPoint("0", "0");
+		} else {
+			point = rpyShape.getRectangle().getTopLeft();
+		}
+		TransformMatrix transfo = rpyShape.getTransform();
+
+		RpyShape parentShape = rpyShape.getParent();
+
+		while (parentShape != null && parentShape.getTransform() != null) {
+			transfo = parentShape.getTransform().multiply(transfo);
+			parentShape = parentShape.getParent();
+		}
+		Point absoluteTopLeft = transfo.multiply(point);
+		rpyShape.setAbsolutePosition(absoluteTopLeft);
+
+		if (rpyShape.getParent() == null) {
+			rpyShape.setParentRelativePosition(PointsOperations.getPoint("0", "0"));
+		} else {
+			rpyShape.setParentRelativePosition(absoluteTopLeft.minus(rpyShape.getParent().getAbsolutePosition()));
+		}
+
+		if (rpyShape.getRectangle() != null) {
+			Point absoluteBottomRight = transfo.multiply(rpyShape.getRectangle().getBottomRight());
+			Point relativeBottomRight = absoluteBottomRight.minus(absoluteTopLeft);
+			rpyShape.setHeight(relativeBottomRight.getIntY());
+			rpyShape.setWidth(relativeBottomRight.getIntX());
+		}
+	}
+
+
+
+
+
+	private static List<RpyShape> collectParentShapes(RpyShape rpyShape) {
+		Vector<RpyShape> ret = new Vector<>();
+		RpyShape parent = rpyShape.getParent();
+		while (parent != null) {
+			ret.add(0, parent);
+			parent = rpyShape.getParent();
+		}
+		return ret;
+	}
+
+
+
+	public static void initializeParent(RpyShape rpyShape, EObject rpyMMObj) {
+		Object parentObj = GeometryUtils.getFeatureValue(rpyMMObj, M_PARENT_FEATURE_NAME);
+		if (parentObj instanceof EObject) {
+			RpyShape parentShape = RpyGeometryFactory.eINSTANCE.createRpyShape();
+			parentShape.setRpyMetamodelObject((EObject) parentObj);
+			rpyShape.setParent(parentShape);
+		}
+	}
+
+	public static void initializeRectangle(RpyShape rpyShape, EObject rpyMMObj) {
+		Object polygonObj = GeometryUtils.getFeatureValue(rpyMMObj, M_POLYGON_FEATURE_NAME);
+		if (polygonObj instanceof List) {
+			@SuppressWarnings("unchecked")
+			Rectangle rectangle = RectangleOperations.getRectangle((List<String>) polygonObj);
+			rpyShape.setRectangle(rectangle);
+		}
+
+	}
+
+	public static void initializeTransform(RpyShape rpyShape, EObject rpyMMObj) {
+		Object transformObj = GeometryUtils.getFeatureValue(rpyMMObj, M_TRANSFORM_FEATURE_NAME);
+		if (transformObj instanceof EList && !((EList) transformObj).isEmpty()) {
+			@SuppressWarnings("unchecked")
+			TransformMatrix transform = TransformMatrixOperations.createMatrix((EList<String>) transformObj);
+			rpyShape.setTransform(transform);
+		} else {
+			rpyShape.setTransform(TransformMatrixOperations.getIdentityTransform());
+		}
+	}
+
+
+
+
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/utils/TransformMatrixOperations.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/utils/TransformMatrixOperations.java
new file mode 100644
index 0000000..286c243
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.geometry/src/org/eclipse/papyrus/interoperability/rpy/geometry/utils/TransformMatrixOperations.java
@@ -0,0 +1,134 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.geometry.utils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.Point;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.RpyGeometryFactory;
+import org.eclipse.papyrus.interoperability.rpy.geometry.rpygeometry.TransformMatrix;
+
+public class TransformMatrixOperations {
+
+
+	private static List<String> fixList(List<String> transformList) {
+		List<String> ret = new ArrayList<>(transformList.size());
+		int sourceIndex = 0;
+		int targetIndex = 0;
+		while (sourceIndex < transformList.size()) {
+			String current = transformList.get(sourceIndex);
+			if (current.startsWith("e") && sourceIndex > 0) {
+				String previous = transformList.get(sourceIndex - 1);
+				current = previous + current;
+				ret.set(targetIndex - 1, current);
+				sourceIndex++;
+			} else {
+				ret.add(targetIndex, current);
+				sourceIndex++;
+				targetIndex++;
+			}
+
+		}
+		return ret;
+	}
+
+
+	public static TransformMatrix createMatrix(List<String> transformList) {
+		List<String> fixedList = fixList(transformList);
+		TransformMatrix transform = RpyGeometryFactory.eINSTANCE.createTransformMatrix();
+
+		transform.setA(Double.parseDouble(fixedList.get(0)));
+		transform.setB(Double.parseDouble(fixedList.get(1)));
+		transform.setC(Double.parseDouble(fixedList.get(2)));
+		transform.setD(Double.parseDouble(fixedList.get(3)));
+		transform.setE(Double.parseDouble(fixedList.get(4)));
+		transform.setF(Double.parseDouble(fixedList.get(5)));
+
+		return transform;
+	}
+
+	public static TransformMatrix add(TransformMatrix matrix1, TransformMatrix matrix2) {
+		TransformMatrix ret = RpyGeometryFactory.eINSTANCE.createTransformMatrix();
+		ret.setA(matrix1.getA() + matrix2.getA());
+		ret.setB(matrix1.getB() + matrix2.getB());
+		ret.setC(matrix1.getC() + matrix2.getC());
+		ret.setD(matrix1.getD() + matrix2.getD());
+		ret.setE(matrix1.getE() + matrix2.getE());
+		ret.setF(matrix1.getF() + matrix2.getF());
+		return ret;
+	}
+
+	public static TransformMatrix minus(TransformMatrix matrix1, TransformMatrix matrix2) {
+		TransformMatrix ret = RpyGeometryFactory.eINSTANCE.createTransformMatrix();
+		ret.setA(matrix1.getA() - matrix2.getA());
+		ret.setB(matrix1.getB() - matrix2.getB());
+		ret.setC(matrix1.getC() - matrix2.getC());
+		ret.setD(matrix1.getD() - matrix2.getD());
+		ret.setE(matrix1.getE() - matrix2.getE());
+		ret.setF(matrix1.getF() - matrix2.getF());
+		return ret;
+	}
+
+
+	public static TransformMatrix minus(TransformMatrix matrix) {
+		TransformMatrix ret = RpyGeometryFactory.eINSTANCE.createTransformMatrix();
+		ret.setA(-matrix.getA());
+		ret.setB(-matrix.getB());
+		ret.setC(-matrix.getC());
+		ret.setD(-matrix.getD());
+		ret.setE(-matrix.getE());
+		ret.setF(-matrix.getF());
+		return ret;
+	}
+
+
+	public static Point multiply(TransformMatrix matrix, Point point) {
+		Point ret = RpyGeometryFactory.eINSTANCE.createPoint();
+		// cf https://www.w3.org/TR/SVG/coords.html
+		Double x = (matrix.getA() * point.getX()) + (matrix.getC() * point.getY()) + matrix.getE();
+		Double y = (matrix.getB() * point.getX()) + (matrix.getD() * point.getY() + matrix.getF());
+
+		ret.setX(x);
+		ret.setY(y);
+
+		return ret;
+	}
+
+
+	public static TransformMatrix multiply(TransformMatrix matrix1, TransformMatrix matrix2) {
+		TransformMatrix ret = RpyGeometryFactory.eINSTANCE.createTransformMatrix();
+		// cf https://www.w3.org/TR/SVG/coords.html
+		ret.setA(matrix1.getA() * matrix2.getA() + matrix1.getC() * matrix2.getB());
+		ret.setB(matrix1.getB() * matrix2.getA() + matrix1.getD() * matrix2.getB());
+		ret.setC(matrix1.getA() * matrix2.getC() + matrix1.getC() * matrix2.getD());
+		ret.setD(matrix1.getB() * matrix2.getC() + matrix1.getD() * matrix2.getD());
+		ret.setE(matrix1.getA() * matrix2.getE() + matrix1.getC() * matrix2.getF() + matrix1.getE());
+		ret.setF(matrix1.getB() * matrix2.getE() + matrix1.getD() * matrix2.getF() + matrix1.getF());
+
+		return ret;
+	}
+
+
+	public static TransformMatrix getIdentityTransform() {
+		TransformMatrix ret = RpyGeometryFactory.eINSTANCE.createTransformMatrix();
+		ret.setA(1.0);
+		ret.setB(0.0);
+		ret.setC(0.0);
+		ret.setD(1.0);
+		ret.setE(0.0);
+		ret.setF(0.0);
+
+		return ret;
+	}
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/.classpath b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/.classpath
new file mode 100644
index 0000000..9081d4f
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/.classpath
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="src-gen"/>
+	<classpathentry kind="src" path="xtend-gen"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/.gitignore b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/.gitignore
new file mode 100644
index 0000000..b33f6af
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/.gitignore
@@ -0,0 +1,2 @@
+/bin/
+/xtend-gen/
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/.project b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/.project
new file mode 100644
index 0000000..1752906
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.interoperability.rpy.parser.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>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+	</natures>
+</projectDescription>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/.settings/org.eclipse.core.resources.prefs b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/.settings/org.eclipse.jdt.core.prefs b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..b3aa6d6
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.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.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
+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/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/.settings/org.eclipse.jdt.ui.prefs b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..954281d
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.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/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/.settings/org.eclipse.pde.api.tools.prefs b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..23fb95e
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,98 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Ignore
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Ignore
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Ignore
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=Enabled
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Warning
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/META-INF/MANIFEST.MF b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..b2141ad
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,27 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name
+Bundle-Vendor: %Bundle-Vendor
+Bundle-Version: 0.7.0.qualifier
+Bundle-SymbolicName: org.eclipse.papyrus.interoperability.rpy.parser.ui;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.xtext.ui,
+ org.eclipse.ui.editors;bundle-version="3.5.0",
+ org.eclipse.ui.ide;bundle-version="3.5.0",
+ org.eclipse.xtext.ui.shared,
+ org.eclipse.ui,
+ org.eclipse.xtext.builder,
+ org.eclipse.xtext.xbase.lib,
+ org.eclipse.xtext.common.types.ui,
+ org.eclipse.xtext.ui.codetemplates.ui,
+ org.eclipse.compare,
+ org.apache.log4j;bundle-version="1.2.15",
+ org.eclipse.papyrus.interoperability.rpy.parser;bundle-version="0.7.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.papyrus.interoperability.rpy.parser.ui.contentassist,
+ org.eclipse.papyrus.interoperability.rpy.parser.ui.contentassist.antlr,
+ org.eclipse.papyrus.interoperability.rpy.parser.ui.contentassist.antlr.internal,
+ org.eclipse.papyrus.interoperability.rpy.parser.ui.internal,
+ org.eclipse.papyrus.interoperability.rpy.parser.ui.quickfix
+Bundle-Activator: org.eclipse.papyrus.interoperability.rpy.parser.ui.internal.RpySyntaxActivator
+Import-Package: org.apache.log4j
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/OSGI-INF/l10n/bundle.properties b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/OSGI-INF/l10n/bundle.properties
new file mode 100644
index 0000000..1aad173
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/OSGI-INF/l10n/bundle.properties
@@ -0,0 +1,3 @@
+#Properties file for org.eclipse.papyrus.interoperability.rpy.parser.ui
+Bundle-Vendor = Eclipse Modeling Project
+Bundle-Name = Papyrus Interoperability Rpy Parser UI (Incubation)
\ No newline at end of file
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/about.html b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/about.html
new file mode 100644
index 0000000..dd3c089
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.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>November 14, 2008</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/build.properties b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/build.properties
new file mode 100644
index 0000000..e6aece4
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/build.properties
@@ -0,0 +1,9 @@
+source.. = src/,\
+           src-gen/,\
+           xtend-gen/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               about.html,\
+               OSGI-INF/
+src.includes = about.html
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/plugin.xml b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/plugin.xml
new file mode 100644
index 0000000..6f63990
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/plugin.xml
@@ -0,0 +1,588 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+    <extension
+            point="org.eclipse.ui.editors">
+        <editor
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+            contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+            default="true"
+            extensions="cmp,sbs,dat,omd,msc"
+            id="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax"
+            name="RpySyntax Editor">
+        </editor>
+    </extension>
+    <extension
+        point="org.eclipse.ui.handlers">
+        <handler
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+            commandId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.validate">
+         <activeWhen>
+            <reference
+                    definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.Editor.opened">
+            </reference>
+         </activeWhen>
+      	</handler>
+      	<!-- copy qualified name -->
+        <handler
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName">
+            <activeWhen>
+				<reference definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.Editor.opened" />
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
+            <activeWhen>
+            	<and>
+            		<reference definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.XtextEditor.opened" />
+	                <iterate>
+						<adapt type="org.eclipse.xtext.ui.editor.outline.IOutlineNode" />
+					</iterate>
+				</and>
+            </activeWhen>
+        </handler>
+    </extension>
+    <extension point="org.eclipse.core.expressions.definitions">
+        <definition id="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.Editor.opened">
+            <and>
+                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+        <definition id="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.XtextEditor.opened">
+            <and>
+                <reference definitionId="isXtextEditorActive"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+    </extension>
+    <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax"
+            name="RpySyntax">
+            <keywordReference id="org.eclipse.papyrus.interoperability.rpy.parser.ui.keyword_RpySyntax"/>
+        </page>
+        <page
+            category="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax"
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+            id="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.coloring"
+            name="Syntax Coloring">
+            <keywordReference id="org.eclipse.papyrus.interoperability.rpy.parser.ui.keyword_RpySyntax"/>
+        </page>
+        <page
+            category="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax"
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+            id="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.templates"
+            name="Templates">
+            <keywordReference id="org.eclipse.papyrus.interoperability.rpy.parser.ui.keyword_RpySyntax"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax"
+            name="RpySyntax">
+            <keywordReference id="org.eclipse.papyrus.interoperability.rpy.parser.ui.keyword_RpySyntax"/>
+            <enabledWhen>
+	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</enabledWhen>
+	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+        </page>
+    </extension>
+    <extension
+        point="org.eclipse.ui.keywords">
+        <keyword
+            id="org.eclipse.papyrus.interoperability.rpy.parser.ui.keyword_RpySyntax"
+            label="RpySyntax"/>
+    </extension>
+    <extension
+         point="org.eclipse.ui.commands">
+      <command
+            description="Trigger expensive validation"
+            id="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.validate"
+            name="Validate">
+      </command>
+      <!-- copy qualified name -->
+      <command
+            id="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName"
+            categoryId="org.eclipse.ui.category.edit"
+            description="Copy the qualified name for the selected element"
+            name="Copy Qualified Name">
+      </command>
+      <command
+            id="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName"
+            categoryId="org.eclipse.ui.category.edit"
+            description="Copy the qualified name for the selected element"
+            name="Copy Qualified Name">
+      </command>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+        <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+             <command
+                 commandId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.validate"
+                 style="push"
+                 tooltip="Trigger expensive validation">
+            <visibleWhen checkEnabled="false">
+                <reference
+                    definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.Editor.opened">
+                </reference>
+            </visibleWhen>
+         </command>  
+         </menuContribution>
+         <!-- copy qualified name -->
+         <menuContribution locationURI="popup:#TextEditorContext?after=copy">
+         	<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName" 
+         		style="push" tooltip="Copy Qualified Name">
+            	<visibleWhen checkEnabled="false">
+                	<reference definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.Editor.opened" />
+            	</visibleWhen>
+         	</command>  
+         </menuContribution>
+         <menuContribution locationURI="menu:edit?after=copy">
+         	<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName"
+            	style="push" tooltip="Copy Qualified Name">
+            	<visibleWhen checkEnabled="false">
+                	<reference definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.Editor.opened" />
+            	</visibleWhen>
+         	</command>  
+         </menuContribution>
+         <menuContribution locationURI="popup:org.eclipse.xtext.ui.outline?after=additions">
+			<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName" 
+				style="push" tooltip="Copy Qualified Name">
+         		<visibleWhen checkEnabled="false">
+	            	<and>
+	            		<reference definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.XtextEditor.opened" />
+						<iterate>
+							<adapt type="org.eclipse.xtext.ui.editor.outline.IOutlineNode" />
+						</iterate>
+					</and>
+				</visibleWhen>
+			</command>
+         </menuContribution>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+		<menuContribution locationURI="popup:#TextEditorContext?endof=group.find">
+			<command commandId="org.eclipse.xtext.ui.editor.FindReferences">
+				<visibleWhen checkEnabled="false">
+                	<reference definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.Editor.opened">
+                	</reference>
+            	</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+	    <handler
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+            commandId="org.eclipse.xtext.ui.editor.FindReferences">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+    </extension>   
+
+<!-- adding resource factories -->
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="cmp">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="cmp">
+        </resourceServiceProvider>
+    </extension>
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="sbs">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="sbs">
+        </resourceServiceProvider>
+    </extension>
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="dat">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="dat">
+        </resourceServiceProvider>
+    </extension>
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="omd">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="omd">
+        </resourceServiceProvider>
+    </extension>
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="msc">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="msc">
+        </resourceServiceProvider>
+    </extension>
+    <extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="rpy">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="rpy">
+        </resourceServiceProvider>
+    </extension>
+    <extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="clb">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="clb">
+        </resourceServiceProvider>
+    </extension>
+    <extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="ucd">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="ucd">
+        </resourceServiceProvider>
+    </extension>
+     <extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="cls">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="cls">
+        </resourceServiceProvider>
+    </extension>
+     <extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="ctd">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="ctd">
+        </resourceServiceProvider>
+    </extension>
+      <extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="pld">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="pld">
+        </resourceServiceProvider>
+    </extension>
+       <extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="std">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="std">
+        </resourceServiceProvider>
+    </extension>
+
+
+	<!-- marker definitions for org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax -->
+	<extension
+	        id="rpysyntax.check.fast"
+	        name="RpySyntax Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.fast"/>
+	    <persistent value="true"/>
+	</extension>
+	<extension
+	        id="rpysyntax.check.normal"
+	        name="RpySyntax Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.normal"/>
+	    <persistent value="true"/>
+	</extension>
+	<extension
+	        id="rpysyntax.check.expensive"
+	        name="RpySyntax Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.expensive"/>
+	    <persistent value="true"/>
+	</extension>
+
+   <extension
+         point="org.eclipse.xtext.builder.participant">
+      <participant
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant"
+            fileExtensions="cmp,sbs,dat,omd,msc"
+            >
+      </participant>
+   </extension>
+   <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            category="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax"
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.compiler.preferencePage"
+            name="Compiler">
+            <keywordReference id="org.eclipse.papyrus.interoperability.rpy.parser.ui.keyword_RpySyntax"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            category="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax"
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.compiler.propertyPage"
+            name="Compiler">
+            <keywordReference id="org.eclipse.papyrus.interoperability.rpy.parser.ui.keyword_RpySyntax"/>
+            <enabledWhen>
+	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</enabledWhen>
+	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+        </page>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+		<menuContribution locationURI="popup:#TextEditorContext?after=xtext.ui.openDeclaration">
+			<command
+				commandId="org.eclipse.xtext.ui.OpenGeneratedFileCommand"
+				id="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.OpenGeneratedCode"
+				style="push">
+					<visibleWhen checkEnabled="false">
+						<reference definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.Editor.opened" />
+					</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+		<handler
+			class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.generator.trace.OpenGeneratedFileHandler"
+			commandId="org.eclipse.xtext.ui.OpenGeneratedFileCommand">
+				<activeWhen>
+					<reference definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.Editor.opened" />
+				</activeWhen>
+		</handler>
+	</extension>
+
+	<!-- Quick Outline -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+	<extension
+		point="org.eclipse.ui.commands">
+		<command
+			description="Open the quick outline."
+			id="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+			name="Quick Outline">
+		</command>
+	</extension>
+	<extension point="org.eclipse.ui.menus">
+		<menuContribution
+			locationURI="popup:#TextEditorContext?after=group.open">
+			<command commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+				style="push"
+				tooltip="Open Quick Outline">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+    <!-- quickfix marker resolution generator for org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax -->
+    <extension
+            point="org.eclipse.ui.ide.markerResolution">
+        <markerResolutionGenerator
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.papyrus.interoperability.rpy.parser.ui.rpysyntax.check.fast">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.papyrus.interoperability.rpy.parser.ui.rpysyntax.check.normal">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.papyrus.interoperability.rpy.parser.ui.rpysyntax.check.expensive">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+    </extension>
+   	<!-- Rename Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.DefaultRenameElementHandler"
+			commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+    <extension point="org.eclipse.ui.menus">
+         <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+         <command commandId="org.eclipse.xtext.ui.refactoring.RenameElement"
+               style="push">
+            <visibleWhen checkEnabled="false">
+               <reference
+                     definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+   <extension point="org.eclipse.ui.preferencePages">
+	    <page
+	        category="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax"
+	        class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+	        id="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.refactoring"
+	        name="Refactoring">
+	        <keywordReference id="org.eclipse.papyrus.interoperability.rpy.parser.ui.keyword_RpySyntax"/>
+	    </page>
+	</extension>
+
+  <extension point="org.eclipse.compare.contentViewers">
+    <viewer id="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.compare.contentViewers"
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="cmp,sbs,dat,omd,msc">
+    </viewer>
+  </extension>
+  <extension point="org.eclipse.compare.contentMergeViewers">
+    <viewer id="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.compare.contentMergeViewers"
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="cmp,sbs,dat,omd,msc" label="RpySyntax Compare">
+     </viewer>
+  </extension>
+  <extension point="org.eclipse.ui.editors.documentProviders">
+    <provider id="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.editors.documentProviders"
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+            extensions="cmp,sbs,dat,omd,msc">
+    </provider>
+  </extension>
+  <extension point="org.eclipse.team.core.fileTypes">
+    <fileTypes
+            extension="cmp"
+            type="text">
+    </fileTypes>
+    <fileTypes
+            extension="sbs"
+            type="text">
+    </fileTypes>
+    <fileTypes
+            extension="dat"
+            type="text">
+    </fileTypes>
+    <fileTypes
+            extension="omd"
+            type="text">
+    </fileTypes>
+    <fileTypes
+            extension="msc"
+            type="text">
+    </fileTypes>
+  </extension>
+
+</plugin>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/plugin.xml_gen b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/plugin.xml_gen
new file mode 100644
index 0000000..6545942
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/plugin.xml_gen
@@ -0,0 +1,623 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+    <extension
+            point="org.eclipse.ui.editors">
+        <editor
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+            contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+            default="true"
+            extensions="cmp,sbs,dat,omd,msc,rpy,clb,ucd,cls,ctd,pld,std"
+            id="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax"
+            name="RpySyntax Editor">
+        </editor>
+    </extension>
+    <extension
+        point="org.eclipse.ui.handlers">
+        <handler
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+            commandId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.validate">
+         <activeWhen>
+            <reference
+                    definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.Editor.opened">
+            </reference>
+         </activeWhen>
+      	</handler>
+      	<!-- copy qualified name -->
+        <handler
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName">
+            <activeWhen>
+				<reference definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.Editor.opened" />
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
+            <activeWhen>
+            	<and>
+            		<reference definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.XtextEditor.opened" />
+	                <iterate>
+						<adapt type="org.eclipse.xtext.ui.editor.outline.IOutlineNode" />
+					</iterate>
+				</and>
+            </activeWhen>
+        </handler>
+    </extension>
+    <extension point="org.eclipse.core.expressions.definitions">
+        <definition id="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.Editor.opened">
+            <and>
+                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+        <definition id="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.XtextEditor.opened">
+            <and>
+                <reference definitionId="isXtextEditorActive"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+    </extension>
+    <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax"
+            name="RpySyntax">
+            <keywordReference id="org.eclipse.papyrus.interoperability.rpy.parser.ui.keyword_RpySyntax"/>
+        </page>
+        <page
+            category="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax"
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+            id="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.coloring"
+            name="Syntax Coloring">
+            <keywordReference id="org.eclipse.papyrus.interoperability.rpy.parser.ui.keyword_RpySyntax"/>
+        </page>
+        <page
+            category="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax"
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+            id="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.templates"
+            name="Templates">
+            <keywordReference id="org.eclipse.papyrus.interoperability.rpy.parser.ui.keyword_RpySyntax"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax"
+            name="RpySyntax">
+            <keywordReference id="org.eclipse.papyrus.interoperability.rpy.parser.ui.keyword_RpySyntax"/>
+            <enabledWhen>
+	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</enabledWhen>
+	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+        </page>
+    </extension>
+    <extension
+        point="org.eclipse.ui.keywords">
+        <keyword
+            id="org.eclipse.papyrus.interoperability.rpy.parser.ui.keyword_RpySyntax"
+            label="RpySyntax"/>
+    </extension>
+    <extension
+         point="org.eclipse.ui.commands">
+      <command
+            description="Trigger expensive validation"
+            id="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.validate"
+            name="Validate">
+      </command>
+      <!-- copy qualified name -->
+      <command
+            id="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName"
+            categoryId="org.eclipse.ui.category.edit"
+            description="Copy the qualified name for the selected element"
+            name="Copy Qualified Name">
+      </command>
+      <command
+            id="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName"
+            categoryId="org.eclipse.ui.category.edit"
+            description="Copy the qualified name for the selected element"
+            name="Copy Qualified Name">
+      </command>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+        <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+             <command
+                 commandId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.validate"
+                 style="push"
+                 tooltip="Trigger expensive validation">
+            <visibleWhen checkEnabled="false">
+                <reference
+                    definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.Editor.opened">
+                </reference>
+            </visibleWhen>
+         </command>  
+         </menuContribution>
+         <!-- copy qualified name -->
+         <menuContribution locationURI="popup:#TextEditorContext?after=copy">
+         	<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName" 
+         		style="push" tooltip="Copy Qualified Name">
+            	<visibleWhen checkEnabled="false">
+                	<reference definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.Editor.opened" />
+            	</visibleWhen>
+         	</command>  
+         </menuContribution>
+         <menuContribution locationURI="menu:edit?after=copy">
+         	<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName"
+            	style="push" tooltip="Copy Qualified Name">
+            	<visibleWhen checkEnabled="false">
+                	<reference definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.Editor.opened" />
+            	</visibleWhen>
+         	</command>  
+         </menuContribution>
+         <menuContribution locationURI="popup:org.eclipse.xtext.ui.outline?after=additions">
+			<command commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName" 
+				style="push" tooltip="Copy Qualified Name">
+         		<visibleWhen checkEnabled="false">
+	            	<and>
+	            		<reference definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.XtextEditor.opened" />
+						<iterate>
+							<adapt type="org.eclipse.xtext.ui.editor.outline.IOutlineNode" />
+						</iterate>
+					</and>
+				</visibleWhen>
+			</command>
+         </menuContribution>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+		<menuContribution locationURI="popup:#TextEditorContext?endof=group.find">
+			<command commandId="org.eclipse.xtext.ui.editor.FindReferences">
+				<visibleWhen checkEnabled="false">
+                	<reference definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.Editor.opened">
+                	</reference>
+            	</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+	    <handler
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+            commandId="org.eclipse.xtext.ui.editor.FindReferences">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+    </extension>   
+
+<!-- adding resource factories -->
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="cmp">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="cmp">
+        </resourceServiceProvider>
+    </extension>
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="sbs">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="sbs">
+        </resourceServiceProvider>
+    </extension>
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="dat">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="dat">
+        </resourceServiceProvider>
+    </extension>
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="omd">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="omd">
+        </resourceServiceProvider>
+    </extension>
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="msc">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="msc">
+        </resourceServiceProvider>
+    </extension>
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="rpy">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="rpy">
+        </resourceServiceProvider>
+    </extension>
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="clb">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="clb">
+        </resourceServiceProvider>
+    </extension>
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="ucd">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="ucd">
+        </resourceServiceProvider>
+    </extension>
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="cls">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="cls">
+        </resourceServiceProvider>
+    </extension>
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="ctd">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="ctd">
+        </resourceServiceProvider>
+    </extension>
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="pld">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="pld">
+        </resourceServiceProvider>
+    </extension>
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="std">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="std">
+        </resourceServiceProvider>
+    </extension>
+
+
+	<!-- marker definitions for org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax -->
+	<extension
+	        id="rpysyntax.check.fast"
+	        name="RpySyntax Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.fast"/>
+	    <persistent value="true"/>
+	</extension>
+	<extension
+	        id="rpysyntax.check.normal"
+	        name="RpySyntax Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.normal"/>
+	    <persistent value="true"/>
+	</extension>
+	<extension
+	        id="rpysyntax.check.expensive"
+	        name="RpySyntax Problem"
+	        point="org.eclipse.core.resources.markers">
+	    <super type="org.eclipse.xtext.ui.check.expensive"/>
+	    <persistent value="true"/>
+	</extension>
+
+   <extension
+         point="org.eclipse.xtext.builder.participant">
+      <participant
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant"
+            fileExtensions="cmp,sbs,dat,omd,msc,rpy,clb,ucd,cls,ctd,pld,std"
+            >
+      </participant>
+   </extension>
+   <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            category="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax"
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.compiler.preferencePage"
+            name="Compiler">
+            <keywordReference id="org.eclipse.papyrus.interoperability.rpy.parser.ui.keyword_RpySyntax"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            category="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax"
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.compiler.propertyPage"
+            name="Compiler">
+            <keywordReference id="org.eclipse.papyrus.interoperability.rpy.parser.ui.keyword_RpySyntax"/>
+            <enabledWhen>
+	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</enabledWhen>
+	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+        </page>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+		<menuContribution locationURI="popup:#TextEditorContext?after=xtext.ui.openDeclaration">
+			<command
+				commandId="org.eclipse.xtext.ui.OpenGeneratedFileCommand"
+				id="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.OpenGeneratedCode"
+				style="push">
+					<visibleWhen checkEnabled="false">
+						<reference definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.Editor.opened" />
+					</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+		<handler
+			class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.generator.trace.OpenGeneratedFileHandler"
+			commandId="org.eclipse.xtext.ui.OpenGeneratedFileCommand">
+				<activeWhen>
+					<reference definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.Editor.opened" />
+				</activeWhen>
+		</handler>
+	</extension>
+
+	<!-- Quick Outline -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+	<extension
+		point="org.eclipse.ui.commands">
+		<command
+			description="Open the quick outline."
+			id="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+			name="Quick Outline">
+		</command>
+	</extension>
+	<extension point="org.eclipse.ui.menus">
+		<menuContribution
+			locationURI="popup:#TextEditorContext?after=group.open">
+			<command commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline"
+				style="push"
+				tooltip="Open Quick Outline">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+    <!-- quickfix marker resolution generator for org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax -->
+    <extension
+            point="org.eclipse.ui.ide.markerResolution">
+        <markerResolutionGenerator
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.papyrus.interoperability.rpy.parser.ui.rpysyntax.check.fast">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.papyrus.interoperability.rpy.parser.ui.rpysyntax.check.normal">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.papyrus.interoperability.rpy.parser.ui.rpysyntax.check.expensive">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+    </extension>
+   	<!-- Rename Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.DefaultRenameElementHandler"
+			commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+    <extension point="org.eclipse.ui.menus">
+         <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+         <command commandId="org.eclipse.xtext.ui.refactoring.RenameElement"
+               style="push">
+            <visibleWhen checkEnabled="false">
+               <reference
+                     definitionId="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+   <extension point="org.eclipse.ui.preferencePages">
+	    <page
+	        category="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax"
+	        class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+	        id="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.refactoring"
+	        name="Refactoring">
+	        <keywordReference id="org.eclipse.papyrus.interoperability.rpy.parser.ui.keyword_RpySyntax"/>
+	    </page>
+	</extension>
+
+  <extension point="org.eclipse.compare.contentViewers">
+    <viewer id="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.compare.contentViewers"
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="cmp,sbs,dat,omd,msc,rpy,clb,ucd,cls,ctd,pld,std">
+    </viewer>
+  </extension>
+  <extension point="org.eclipse.compare.contentMergeViewers">
+    <viewer id="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.compare.contentMergeViewers"
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="cmp,sbs,dat,omd,msc,rpy,clb,ucd,cls,ctd,pld,std" label="RpySyntax Compare">
+     </viewer>
+  </extension>
+  <extension point="org.eclipse.ui.editors.documentProviders">
+    <provider id="org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.editors.documentProviders"
+            class="org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+            extensions="cmp,sbs,dat,omd,msc,rpy,clb,ucd,cls,ctd,pld,std">
+    </provider>
+  </extension>
+  <extension point="org.eclipse.team.core.fileTypes">
+    <fileTypes
+            extension="cmp"
+            type="text">
+    </fileTypes>
+    <fileTypes
+            extension="sbs"
+            type="text">
+    </fileTypes>
+    <fileTypes
+            extension="dat"
+            type="text">
+    </fileTypes>
+    <fileTypes
+            extension="omd"
+            type="text">
+    </fileTypes>
+    <fileTypes
+            extension="msc"
+            type="text">
+    </fileTypes>
+    <fileTypes
+            extension="rpy"
+            type="text">
+    </fileTypes>
+    <fileTypes
+            extension="clb"
+            type="text">
+    </fileTypes>
+    <fileTypes
+            extension="ucd"
+            type="text">
+    </fileTypes>
+    <fileTypes
+            extension="cls"
+            type="text">
+    </fileTypes>
+    <fileTypes
+            extension="ctd"
+            type="text">
+    </fileTypes>
+    <fileTypes
+            extension="pld"
+            type="text">
+    </fileTypes>
+    <fileTypes
+            extension="std"
+            type="text">
+    </fileTypes>
+  </extension>
+
+</plugin>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/ui/AbstractRpySyntaxUiModule.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/ui/AbstractRpySyntaxUiModule.java
new file mode 100644
index 0000000..0bf6f4a
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/ui/AbstractRpySyntaxUiModule.java
@@ -0,0 +1,205 @@
+
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.parser.ui;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * Manual modifications go to {org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxUiModule}
+ */
+@SuppressWarnings("all")
+public abstract class AbstractRpySyntaxUiModule extends org.eclipse.xtext.common.types.ui.DefaultCommonTypesUiModule {
+	
+	public AbstractRpySyntaxUiModule(AbstractUIPlugin plugin) {
+		super(plugin);
+	}
+	
+	
+	// contributed by org.eclipse.xtext.ui.generator.ImplicitUiFragment
+	public com.google.inject.Provider<org.eclipse.xtext.resource.containers.IAllContainersState> provideIAllContainersState() {
+		return org.eclipse.xtext.ui.shared.Access.getJavaProjectsState();
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.IProposalConflictHelper> bindIProposalConflictHelper() {
+		return org.eclipse.xtext.ui.editor.contentassist.antlr.AntlrProposalConflictHelper.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public void configureHighlightingLexer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.parser.antlr.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.HIGHLIGHTING)).to(org.eclipse.papyrus.interoperability.rpy.parser.parser.antlr.internal.InternalRpySyntaxLexer.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public void configureHighlightingTokenDefProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.parser.antlr.ITokenDefProvider.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.HIGHLIGHTING)).to(org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.exporting.QualifiedNamesFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IDependentElementsCalculator> bindIDependentElementsCalculator() {
+		return org.eclipse.xtext.ui.refactoring.impl.DefaultDependentElementsCalculator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public void configureIResourceDescriptionsBuilderScope(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider.NAMED_BUILDER_SCOPE)).to(org.eclipse.xtext.builder.clustering.CurrentDescriptions.ResourceSetAware.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.IXtextEditorCallback> bindIXtextEditorCallback() {
+		return org.eclipse.xtext.builder.nature.NatureAddingEditorCallback.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public Class<? extends org.eclipse.xtext.generator.IContextualOutputConfigurationProvider> bindIContextualOutputConfigurationProvider() {
+		return org.eclipse.xtext.builder.EclipseOutputConfigurationProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public void configureIResourceDescriptionsPersisted(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider.PERSISTED_DESCRIPTIONS)).to(org.eclipse.xtext.builder.builderState.IBuilderState.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.DocumentBasedDirtyResource> bindDocumentBasedDirtyResource() {
+		return org.eclipse.xtext.builder.impl.PersistentDataAwareDirtyResource.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.generator.GeneratorFragment
+	public Class<? extends org.eclipse.xtext.builder.IXtextBuilderParticipant> bindIXtextBuilderParticipant() {
+		return org.eclipse.xtext.builder.BuilderParticipant.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.generator.GeneratorFragment
+	public org.eclipse.core.resources.IWorkspaceRoot bindIWorkspaceRootToInstance() {
+		return org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot();
+	}
+
+	// contributed by org.eclipse.xtext.generator.generator.GeneratorFragment
+	public void configureBuilderPreferenceStoreInitializer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreInitializer.class).annotatedWith(com.google.inject.name.Names.named("builderPreferenceInitializer")).to(org.eclipse.xtext.builder.preferences.BuilderPreferenceAccess.Initializer.class);
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.labeling.LabelProviderFragment
+	public Class<? extends org.eclipse.jface.viewers.ILabelProvider> bindILabelProvider() {
+		return org.eclipse.papyrus.interoperability.rpy.parser.ui.labeling.RpySyntaxLabelProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.labeling.LabelProviderFragment
+	public void configureResourceUIServiceLabelProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.jface.viewers.ILabelProvider.class).annotatedWith(org.eclipse.xtext.ui.resource.ResourceServiceDescriptionLabelProvider.class).to(org.eclipse.papyrus.interoperability.rpy.parser.ui.labeling.RpySyntaxDescriptionLabelProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.outline.OutlineTreeProviderFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.outline.IOutlineTreeProvider> bindIOutlineTreeProvider() {
+		return org.eclipse.papyrus.interoperability.rpy.parser.ui.outline.RpySyntaxOutlineTreeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.outline.OutlineTreeProviderFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.outline.impl.IOutlineTreeStructureProvider> bindIOutlineTreeStructureProvider() {
+		return org.eclipse.papyrus.interoperability.rpy.parser.ui.outline.RpySyntaxOutlineTreeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.quickfix.QuickfixProviderFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.quickfix.IssueResolutionProvider> bindIssueResolutionProvider() {
+		return org.eclipse.papyrus.interoperability.rpy.parser.ui.quickfix.RpySyntaxQuickfixProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.contentAssist.ContentAssistFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.IContentProposalProvider> bindIContentProposalProvider() {
+		return org.eclipse.papyrus.interoperability.rpy.parser.ui.contentassist.RpySyntaxProposalProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext.Factory> bindContentAssistContext$Factory() {
+		return org.eclipse.xtext.ui.editor.contentassist.antlr.ParserBasedContentAssistContextFactory.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.antlr.IContentAssistParser> bindIContentAssistParser() {
+		return org.eclipse.papyrus.interoperability.rpy.parser.ui.contentassist.antlr.RpySyntaxParser.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public void configureContentAssistLexerProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.papyrus.interoperability.rpy.parser.ui.contentassist.antlr.internal.InternalRpySyntaxLexer.class).toProvider(org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.papyrus.interoperability.rpy.parser.ui.contentassist.antlr.internal.InternalRpySyntaxLexer.class));
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public void configureContentAssistLexer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.ui.LexerUIBindings.CONTENT_ASSIST)).to(org.eclipse.papyrus.interoperability.rpy.parser.ui.contentassist.antlr.internal.InternalRpySyntaxLexer.class);
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IRenameStrategy> bindIRenameStrategy() {
+		return org.eclipse.xtext.ui.refactoring.impl.DefaultRenameStrategy.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IReferenceUpdater> bindIReferenceUpdater() {
+		return org.eclipse.xtext.ui.refactoring.impl.DefaultReferenceUpdater.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public void configureIPreferenceStoreInitializer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreInitializer.class).annotatedWith(com.google.inject.name.Names.named("RefactoringPreferences")).to(org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferences.Initializer.class);
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.IRenameRefactoringProvider> bindIRenameRefactoringProvider() {
+		return org.eclipse.xtext.ui.refactoring.impl.DefaultRenameRefactoringProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.refactoring.RefactorElementNameFragment
+	public Class<? extends org.eclipse.xtext.ui.refactoring.ui.IRenameSupport.Factory> bindIRenameSupport$Factory() {
+		return org.eclipse.xtext.ui.refactoring.ui.DefaultRenameSupport.Factory.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.PrefixMatcher> bindPrefixMatcher() {
+		return org.eclipse.xtext.ui.editor.contentassist.FQNPrefixMatcher.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	public com.google.inject.Provider<org.eclipse.xtext.ui.codetemplates.ui.preferences.TemplatesLanguageConfiguration> provideTemplatesLanguageConfiguration() {
+		return org.eclipse.xtext.ui.codetemplates.ui.AccessibleCodetemplatesActivator.getTemplatesLanguageConfigurationProvider();
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	public com.google.inject.Provider<org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistry> provideLanguageRegistry() {
+		return org.eclipse.xtext.ui.codetemplates.ui.AccessibleCodetemplatesActivator.getLanguageRegistry();
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistrar> bindLanguageRegistrar() {
+		return org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistrar.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage> bindXtextTemplatePreferencePage() {
+		return org.eclipse.xtext.ui.codetemplates.ui.preferences.AdvancedTemplatesPreferencePage.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.templates.CodetemplatesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.ui.codetemplates.ui.partialEditing.IPartialContentAssistParser> bindIPartialContentAssistParser() {
+		return org.eclipse.papyrus.interoperability.rpy.parser.ui.contentassist.antlr.PartialRpySyntaxContentAssistParser.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.compare.CompareFragment
+	public Class<? extends org.eclipse.compare.IViewerCreator> bindIViewerCreator() {
+		return org.eclipse.xtext.ui.compare.DefaultViewerCreator.class;
+	}
+
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/ui/RpySyntaxExecutableExtensionFactory.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/ui/RpySyntaxExecutableExtensionFactory.java
new file mode 100644
index 0000000..ac42028
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/ui/RpySyntaxExecutableExtensionFactory.java
@@ -0,0 +1,38 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.parser.ui;
+
+import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory;
+import org.osgi.framework.Bundle;
+
+import com.google.inject.Injector;
+
+import org.eclipse.papyrus.interoperability.rpy.parser.ui.internal.RpySyntaxActivator;
+
+/**
+ * This class was generated. Customizations should only happen in a newly
+ * introduced subclass. 
+ */
+public class RpySyntaxExecutableExtensionFactory extends AbstractGuiceAwareExecutableExtensionFactory {
+
+	@Override
+	protected Bundle getBundle() {
+		return RpySyntaxActivator.getInstance().getBundle();
+	}
+	
+	@Override
+	protected Injector getInjector() {
+		return RpySyntaxActivator.getInstance().getInjector(RpySyntaxActivator.ORG_ECLIPSE_PAPYRUS_INTEROPERABILITY_RPY_PARSER_RPYSYNTAX);
+	}
+	
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/ui/contentassist/AbstractRpySyntaxProposalProvider.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/ui/contentassist/AbstractRpySyntaxProposalProvider.java
new file mode 100644
index 0000000..a3b7ef3
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/ui/contentassist/AbstractRpySyntaxProposalProvider.java
@@ -0,0 +1,116 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.parser.ui.contentassist;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor;
+import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
+
+/**
+ * Represents a generated, default implementation of superclass {@link org.eclipse.xtext.common.ui.contentassist.TerminalsProposalProvider}.
+ * Methods are dynamically dispatched on the first parameter, i.e., you can override them 
+ * with a more concrete subtype. 
+ */
+@SuppressWarnings("all")
+public class AbstractRpySyntaxProposalProvider extends org.eclipse.xtext.common.ui.contentassist.TerminalsProposalProvider {
+		
+	public void completeRpyFile_Version(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRpyFile_Contents(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRpyNode_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRpyNode_Contents(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRpyFeature_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRpyFeature_Value(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRpyNodeList_Values(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeSimpleValueList_IsOldID(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeSimpleValueList_IsGUID(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeSimpleValueList_ValueElements(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRpySimpleValueElement_Values(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRpyStringMap_Entries(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRpyStringMapEntry_Key(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRpyStringMapEntry_Value(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+    
+	public void complete_RpyFile(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_RpyContent(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_RpyNode(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_RpyFeature(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_RpyFeatureValue(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_RpyNodeList(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_SimpleValueList(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_RpySimpleValueElement(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_VALUE_TERMINAL(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_RpyStringMap(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_RpyStringMapEntry(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_RPY_GUID(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_RPY_TIME(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_RPY_REAL(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_RPY_VERSION(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/ui/contentassist/antlr/PartialRpySyntaxContentAssistParser.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/ui/contentassist/antlr/PartialRpySyntaxContentAssistParser.java
new file mode 100644
index 0000000..b11925b
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/ui/contentassist/antlr/PartialRpySyntaxContentAssistParser.java
@@ -0,0 +1,47 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.parser.ui.contentassist.antlr;
+
+import java.util.Collection;
+import java.util.Collections;
+
+import org.eclipse.xtext.AbstractRule;
+import org.eclipse.xtext.ui.codetemplates.ui.partialEditing.IPartialContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.FollowElement;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.util.PolymorphicDispatcher;
+
+/*
+ * Template CodetemplatesGeneratorFragment.xpt
+ */
+public class PartialRpySyntaxContentAssistParser extends RpySyntaxParser implements IPartialContentAssistParser {
+
+	private AbstractRule rule;
+
+	@Override
+	public void initializeFor(AbstractRule rule) {
+		this.rule = rule;
+	}
+	
+	@Override
+	protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
+		if (rule == null || rule.eIsProxy())
+			return Collections.emptyList();
+		String methodName = "entryRule" + rule.getName();
+		PolymorphicDispatcher<Collection<FollowElement>> dispatcher = 
+			new PolymorphicDispatcher<Collection<FollowElement>>(methodName, 0, 0, Collections.singletonList(parser));
+		dispatcher.invoke();
+		return parser.getFollowElements();
+	}
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/ui/contentassist/antlr/RpySyntaxParser.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/ui/contentassist/antlr/RpySyntaxParser.java
new file mode 100644
index 0000000..23d992a
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/ui/contentassist/antlr/RpySyntaxParser.java
@@ -0,0 +1,101 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.parser.ui.contentassist.antlr;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.HashMap;
+
+import org.antlr.runtime.RecognitionException;
+import org.eclipse.xtext.AbstractElement;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.AbstractContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.FollowElement;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+
+import com.google.inject.Inject;
+
+import org.eclipse.papyrus.interoperability.rpy.parser.services.RpySyntaxGrammarAccess;
+
+public class RpySyntaxParser extends AbstractContentAssistParser {
+	
+	@Inject
+	private RpySyntaxGrammarAccess grammarAccess;
+	
+	private Map<AbstractElement, String> nameMappings;
+	
+	@Override
+	protected org.eclipse.papyrus.interoperability.rpy.parser.ui.contentassist.antlr.internal.InternalRpySyntaxParser createParser() {
+		org.eclipse.papyrus.interoperability.rpy.parser.ui.contentassist.antlr.internal.InternalRpySyntaxParser result = new org.eclipse.papyrus.interoperability.rpy.parser.ui.contentassist.antlr.internal.InternalRpySyntaxParser(null);
+		result.setGrammarAccess(grammarAccess);
+		return result;
+	}
+	
+	@Override
+	protected String getRuleName(AbstractElement element) {
+		if (nameMappings == null) {
+			nameMappings = new HashMap<AbstractElement, String>() {
+				private static final long serialVersionUID = 1L;
+				{
+					put(grammarAccess.getRpyContentAccess().getAlternatives(), "rule__RpyContent__Alternatives");
+					put(grammarAccess.getRpyFeatureValueAccess().getAlternatives(), "rule__RpyFeatureValue__Alternatives");
+					put(grammarAccess.getVALUE_TERMINALAccess().getAlternatives(), "rule__VALUE_TERMINAL__Alternatives");
+					put(grammarAccess.getRpyFileAccess().getGroup(), "rule__RpyFile__Group__0");
+					put(grammarAccess.getRpyNodeAccess().getGroup(), "rule__RpyNode__Group__0");
+					put(grammarAccess.getRpyFeatureAccess().getGroup(), "rule__RpyFeature__Group__0");
+					put(grammarAccess.getSimpleValueListAccess().getGroup(), "rule__SimpleValueList__Group__0");
+					put(grammarAccess.getRpySimpleValueElementAccess().getGroup(), "rule__RpySimpleValueElement__Group__0");
+					put(grammarAccess.getRpyStringMapEntryAccess().getGroup(), "rule__RpyStringMapEntry__Group__0");
+					put(grammarAccess.getRpyFileAccess().getVersionAssignment_1(), "rule__RpyFile__VersionAssignment_1");
+					put(grammarAccess.getRpyFileAccess().getContentsAssignment_2(), "rule__RpyFile__ContentsAssignment_2");
+					put(grammarAccess.getRpyNodeAccess().getNameAssignment_1(), "rule__RpyNode__NameAssignment_1");
+					put(grammarAccess.getRpyNodeAccess().getContentsAssignment_2(), "rule__RpyNode__ContentsAssignment_2");
+					put(grammarAccess.getRpyFeatureAccess().getNameAssignment_1(), "rule__RpyFeature__NameAssignment_1");
+					put(grammarAccess.getRpyFeatureAccess().getValueAssignment_3(), "rule__RpyFeature__ValueAssignment_3");
+					put(grammarAccess.getRpyNodeListAccess().getValuesAssignment(), "rule__RpyNodeList__ValuesAssignment");
+					put(grammarAccess.getSimpleValueListAccess().getIsOldIDAssignment_1(), "rule__SimpleValueList__IsOldIDAssignment_1");
+					put(grammarAccess.getSimpleValueListAccess().getIsGUIDAssignment_2(), "rule__SimpleValueList__IsGUIDAssignment_2");
+					put(grammarAccess.getSimpleValueListAccess().getValueElementsAssignment_3(), "rule__SimpleValueList__ValueElementsAssignment_3");
+					put(grammarAccess.getRpySimpleValueElementAccess().getValuesAssignment_1(), "rule__RpySimpleValueElement__ValuesAssignment_1");
+					put(grammarAccess.getRpyStringMapAccess().getEntriesAssignment(), "rule__RpyStringMap__EntriesAssignment");
+					put(grammarAccess.getRpyStringMapEntryAccess().getKeyAssignment_0(), "rule__RpyStringMapEntry__KeyAssignment_0");
+					put(grammarAccess.getRpyStringMapEntryAccess().getValueAssignment_1(), "rule__RpyStringMapEntry__ValueAssignment_1");
+				}
+			};
+		}
+		return nameMappings.get(element);
+	}
+	
+	@Override
+	protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
+		try {
+			org.eclipse.papyrus.interoperability.rpy.parser.ui.contentassist.antlr.internal.InternalRpySyntaxParser typedParser = (org.eclipse.papyrus.interoperability.rpy.parser.ui.contentassist.antlr.internal.InternalRpySyntaxParser) parser;
+			typedParser.entryRuleRpyFile();
+			return typedParser.getFollowElements();
+		} catch(RecognitionException ex) {
+			throw new RuntimeException(ex);
+		}		
+	}
+	
+	@Override
+	protected String[] getInitialHiddenTokens() {
+		return new String[] { "RULE_WS" };
+	}
+	
+	public RpySyntaxGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+	
+	public void setGrammarAccess(RpySyntaxGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/ui/contentassist/antlr/internal/InternalRpySyntax.g b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/ui/contentassist/antlr/internal/InternalRpySyntax.g
new file mode 100644
index 0000000..2633631
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/ui/contentassist/antlr/internal/InternalRpySyntax.g
@@ -0,0 +1,1384 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+grammar InternalRpySyntax;
+
+options {
+	superClass=AbstractInternalContentAssistParser;
+	backtrack=true;
+	
+}
+
+@lexer::header {
+package org.eclipse.papyrus.interoperability.rpy.parser.ui.contentassist.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import. 
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer;
+}
+
+@parser::header {
+package org.eclipse.papyrus.interoperability.rpy.parser.ui.contentassist.antlr.internal; 
+
+import java.io.InputStream;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
+import org.eclipse.papyrus.interoperability.rpy.parser.services.RpySyntaxGrammarAccess;
+
+}
+
+@parser::members {
+ 
+ 	private RpySyntaxGrammarAccess grammarAccess;
+ 	
+    public void setGrammarAccess(RpySyntaxGrammarAccess grammarAccess) {
+    	this.grammarAccess = grammarAccess;
+    }
+    
+    @Override
+    protected Grammar getGrammar() {
+    	return grammarAccess.getGrammar();
+    }
+    
+    @Override
+    protected String getValueForTokenName(String tokenName) {
+    	return tokenName;
+    }
+
+}
+
+
+
+
+// Entry rule entryRuleRpyFile
+entryRuleRpyFile 
+:
+{ before(grammarAccess.getRpyFileRule()); }
+	 ruleRpyFile
+{ after(grammarAccess.getRpyFileRule()); } 
+	 EOF 
+;
+
+// Rule RpyFile
+ruleRpyFile
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getRpyFileAccess().getGroup()); }
+(rule__RpyFile__Group__0)
+{ after(grammarAccess.getRpyFileAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleRpyContent
+entryRuleRpyContent 
+:
+{ before(grammarAccess.getRpyContentRule()); }
+	 ruleRpyContent
+{ after(grammarAccess.getRpyContentRule()); } 
+	 EOF 
+;
+
+// Rule RpyContent
+ruleRpyContent
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getRpyContentAccess().getAlternatives()); }
+(rule__RpyContent__Alternatives)
+{ after(grammarAccess.getRpyContentAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleRpyNode
+entryRuleRpyNode 
+:
+{ before(grammarAccess.getRpyNodeRule()); }
+	 ruleRpyNode
+{ after(grammarAccess.getRpyNodeRule()); } 
+	 EOF 
+;
+
+// Rule RpyNode
+ruleRpyNode
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getRpyNodeAccess().getGroup()); }
+(rule__RpyNode__Group__0)
+{ after(grammarAccess.getRpyNodeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleRpyFeature
+entryRuleRpyFeature 
+:
+{ before(grammarAccess.getRpyFeatureRule()); }
+	 ruleRpyFeature
+{ after(grammarAccess.getRpyFeatureRule()); } 
+	 EOF 
+;
+
+// Rule RpyFeature
+ruleRpyFeature
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getRpyFeatureAccess().getGroup()); }
+(rule__RpyFeature__Group__0)
+{ after(grammarAccess.getRpyFeatureAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleRpyFeatureValue
+entryRuleRpyFeatureValue 
+:
+{ before(grammarAccess.getRpyFeatureValueRule()); }
+	 ruleRpyFeatureValue
+{ after(grammarAccess.getRpyFeatureValueRule()); } 
+	 EOF 
+;
+
+// Rule RpyFeatureValue
+ruleRpyFeatureValue
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getRpyFeatureValueAccess().getAlternatives()); }
+(rule__RpyFeatureValue__Alternatives)
+{ after(grammarAccess.getRpyFeatureValueAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleRpyNodeList
+entryRuleRpyNodeList 
+:
+{ before(grammarAccess.getRpyNodeListRule()); }
+	 ruleRpyNodeList
+{ after(grammarAccess.getRpyNodeListRule()); } 
+	 EOF 
+;
+
+// Rule RpyNodeList
+ruleRpyNodeList
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+(
+{ before(grammarAccess.getRpyNodeListAccess().getValuesAssignment()); }
+(rule__RpyNodeList__ValuesAssignment)
+{ after(grammarAccess.getRpyNodeListAccess().getValuesAssignment()); }
+)
+(
+{ before(grammarAccess.getRpyNodeListAccess().getValuesAssignment()); }
+(rule__RpyNodeList__ValuesAssignment)*
+{ after(grammarAccess.getRpyNodeListAccess().getValuesAssignment()); }
+)
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleSimpleValueList
+entryRuleSimpleValueList 
+:
+{ before(grammarAccess.getSimpleValueListRule()); }
+	 ruleSimpleValueList
+{ after(grammarAccess.getSimpleValueListRule()); } 
+	 EOF 
+;
+
+// Rule SimpleValueList
+ruleSimpleValueList
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getSimpleValueListAccess().getGroup()); }
+(rule__SimpleValueList__Group__0)
+{ after(grammarAccess.getSimpleValueListAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleRpySimpleValueElement
+entryRuleRpySimpleValueElement 
+:
+{ before(grammarAccess.getRpySimpleValueElementRule()); }
+	 ruleRpySimpleValueElement
+{ after(grammarAccess.getRpySimpleValueElementRule()); } 
+	 EOF 
+;
+
+// Rule RpySimpleValueElement
+ruleRpySimpleValueElement
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getRpySimpleValueElementAccess().getGroup()); }
+(rule__RpySimpleValueElement__Group__0)
+{ after(grammarAccess.getRpySimpleValueElementAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleVALUE_TERMINAL
+entryRuleVALUE_TERMINAL 
+:
+{ before(grammarAccess.getVALUE_TERMINALRule()); }
+	 ruleVALUE_TERMINAL
+{ after(grammarAccess.getVALUE_TERMINALRule()); } 
+	 EOF 
+;
+
+// Rule VALUE_TERMINAL
+ruleVALUE_TERMINAL
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getVALUE_TERMINALAccess().getAlternatives()); }
+(rule__VALUE_TERMINAL__Alternatives)
+{ after(grammarAccess.getVALUE_TERMINALAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleRpyStringMap
+entryRuleRpyStringMap 
+:
+{ before(grammarAccess.getRpyStringMapRule()); }
+	 ruleRpyStringMap
+{ after(grammarAccess.getRpyStringMapRule()); } 
+	 EOF 
+;
+
+// Rule RpyStringMap
+ruleRpyStringMap
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+(
+{ before(grammarAccess.getRpyStringMapAccess().getEntriesAssignment()); }
+(rule__RpyStringMap__EntriesAssignment)
+{ after(grammarAccess.getRpyStringMapAccess().getEntriesAssignment()); }
+)
+(
+{ before(grammarAccess.getRpyStringMapAccess().getEntriesAssignment()); }
+(rule__RpyStringMap__EntriesAssignment)*
+{ after(grammarAccess.getRpyStringMapAccess().getEntriesAssignment()); }
+)
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleRpyStringMapEntry
+entryRuleRpyStringMapEntry 
+:
+{ before(grammarAccess.getRpyStringMapEntryRule()); }
+	 ruleRpyStringMapEntry
+{ after(grammarAccess.getRpyStringMapEntryRule()); } 
+	 EOF 
+;
+
+// Rule RpyStringMapEntry
+ruleRpyStringMapEntry
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getRpyStringMapEntryAccess().getGroup()); }
+(rule__RpyStringMapEntry__Group__0)
+{ after(grammarAccess.getRpyStringMapEntryAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+rule__RpyContent__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRpyContentAccess().getRpyNodeParserRuleCall_0()); }
+	ruleRpyNode
+{ after(grammarAccess.getRpyContentAccess().getRpyNodeParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getRpyContentAccess().getRpyFeatureParserRuleCall_1()); }
+	ruleRpyFeature
+{ after(grammarAccess.getRpyContentAccess().getRpyFeatureParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RpyFeatureValue__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRpyFeatureValueAccess().getSimpleValueListParserRuleCall_0()); }
+	ruleSimpleValueList
+{ after(grammarAccess.getRpyFeatureValueAccess().getSimpleValueListParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getRpyFeatureValueAccess().getRpyNodeListParserRuleCall_1()); }
+	ruleRpyNodeList
+{ after(grammarAccess.getRpyFeatureValueAccess().getRpyNodeListParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getRpyFeatureValueAccess().getRpyStringMapParserRuleCall_2()); }
+	ruleRpyStringMap
+{ after(grammarAccess.getRpyFeatureValueAccess().getRpyStringMapParserRuleCall_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__VALUE_TERMINAL__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getVALUE_TERMINALAccess().getSTRINGTerminalRuleCall_0()); }
+	RULE_STRING
+{ after(grammarAccess.getVALUE_TERMINALAccess().getSTRINGTerminalRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getVALUE_TERMINALAccess().getIDTerminalRuleCall_1()); }
+	RULE_ID
+{ after(grammarAccess.getVALUE_TERMINALAccess().getIDTerminalRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getVALUE_TERMINALAccess().getRPY_GUIDTerminalRuleCall_2()); }
+	RULE_RPY_GUID
+{ after(grammarAccess.getVALUE_TERMINALAccess().getRPY_GUIDTerminalRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getVALUE_TERMINALAccess().getINTTerminalRuleCall_3()); }
+	RULE_INT
+{ after(grammarAccess.getVALUE_TERMINALAccess().getINTTerminalRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getVALUE_TERMINALAccess().getRPY_TIMETerminalRuleCall_4()); }
+	RULE_RPY_TIME
+{ after(grammarAccess.getVALUE_TERMINALAccess().getRPY_TIMETerminalRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getVALUE_TERMINALAccess().getRPY_REALTerminalRuleCall_5()); }
+	RULE_RPY_REAL
+{ after(grammarAccess.getVALUE_TERMINALAccess().getRPY_REALTerminalRuleCall_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__RpyFile__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RpyFile__Group__0__Impl
+	rule__RpyFile__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RpyFile__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRpyFileAccess().getILogixRPYArchiveKeyword_0()); }
+
+	'I-Logix-RPY-Archive' 
+
+{ after(grammarAccess.getRpyFileAccess().getILogixRPYArchiveKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RpyFile__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RpyFile__Group__1__Impl
+	rule__RpyFile__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RpyFile__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRpyFileAccess().getVersionAssignment_1()); }
+(rule__RpyFile__VersionAssignment_1)
+{ after(grammarAccess.getRpyFileAccess().getVersionAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RpyFile__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RpyFile__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RpyFile__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRpyFileAccess().getContentsAssignment_2()); }
+(rule__RpyFile__ContentsAssignment_2)*
+{ after(grammarAccess.getRpyFileAccess().getContentsAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__RpyNode__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RpyNode__Group__0__Impl
+	rule__RpyNode__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RpyNode__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRpyNodeAccess().getLeftCurlyBracketKeyword_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getRpyNodeAccess().getLeftCurlyBracketKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RpyNode__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RpyNode__Group__1__Impl
+	rule__RpyNode__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RpyNode__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRpyNodeAccess().getNameAssignment_1()); }
+(rule__RpyNode__NameAssignment_1)
+{ after(grammarAccess.getRpyNodeAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RpyNode__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RpyNode__Group__2__Impl
+	rule__RpyNode__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RpyNode__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+(
+{ before(grammarAccess.getRpyNodeAccess().getContentsAssignment_2()); }
+(rule__RpyNode__ContentsAssignment_2)
+{ after(grammarAccess.getRpyNodeAccess().getContentsAssignment_2()); }
+)
+(
+{ before(grammarAccess.getRpyNodeAccess().getContentsAssignment_2()); }
+(rule__RpyNode__ContentsAssignment_2)*
+{ after(grammarAccess.getRpyNodeAccess().getContentsAssignment_2()); }
+)
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RpyNode__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RpyNode__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RpyNode__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRpyNodeAccess().getRightCurlyBracketKeyword_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getRpyNodeAccess().getRightCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__RpyFeature__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RpyFeature__Group__0__Impl
+	rule__RpyFeature__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RpyFeature__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRpyFeatureAccess().getHyphenMinusKeyword_0()); }
+
+	'-' 
+
+{ after(grammarAccess.getRpyFeatureAccess().getHyphenMinusKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RpyFeature__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RpyFeature__Group__1__Impl
+	rule__RpyFeature__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RpyFeature__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRpyFeatureAccess().getNameAssignment_1()); }
+(rule__RpyFeature__NameAssignment_1)
+{ after(grammarAccess.getRpyFeatureAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RpyFeature__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RpyFeature__Group__2__Impl
+	rule__RpyFeature__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RpyFeature__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRpyFeatureAccess().getEqualsSignKeyword_2()); }
+
+	'=' 
+
+{ after(grammarAccess.getRpyFeatureAccess().getEqualsSignKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RpyFeature__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RpyFeature__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RpyFeature__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRpyFeatureAccess().getValueAssignment_3()); }
+(rule__RpyFeature__ValueAssignment_3)
+{ after(grammarAccess.getRpyFeatureAccess().getValueAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__SimpleValueList__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SimpleValueList__Group__0__Impl
+	rule__SimpleValueList__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SimpleValueList__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSimpleValueListAccess().getSimpleValueListAction_0()); }
+(
+
+)
+{ after(grammarAccess.getSimpleValueListAccess().getSimpleValueListAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SimpleValueList__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SimpleValueList__Group__1__Impl
+	rule__SimpleValueList__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SimpleValueList__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSimpleValueListAccess().getIsOldIDAssignment_1()); }
+(rule__SimpleValueList__IsOldIDAssignment_1)?
+{ after(grammarAccess.getSimpleValueListAccess().getIsOldIDAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SimpleValueList__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SimpleValueList__Group__2__Impl
+	rule__SimpleValueList__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SimpleValueList__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSimpleValueListAccess().getIsGUIDAssignment_2()); }
+(rule__SimpleValueList__IsGUIDAssignment_2)?
+{ after(grammarAccess.getSimpleValueListAccess().getIsGUIDAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SimpleValueList__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__SimpleValueList__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SimpleValueList__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+(
+{ before(grammarAccess.getSimpleValueListAccess().getValueElementsAssignment_3()); }
+(rule__SimpleValueList__ValueElementsAssignment_3)
+{ after(grammarAccess.getSimpleValueListAccess().getValueElementsAssignment_3()); }
+)
+(
+{ before(grammarAccess.getSimpleValueListAccess().getValueElementsAssignment_3()); }
+(rule__SimpleValueList__ValueElementsAssignment_3)*
+{ after(grammarAccess.getSimpleValueListAccess().getValueElementsAssignment_3()); }
+)
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__RpySimpleValueElement__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RpySimpleValueElement__Group__0__Impl
+	rule__RpySimpleValueElement__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RpySimpleValueElement__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRpySimpleValueElementAccess().getRpySimpleValueElementAction_0()); }
+(
+
+)
+{ after(grammarAccess.getRpySimpleValueElementAccess().getRpySimpleValueElementAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RpySimpleValueElement__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RpySimpleValueElement__Group__1__Impl
+	rule__RpySimpleValueElement__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RpySimpleValueElement__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRpySimpleValueElementAccess().getValuesAssignment_1()); }
+(rule__RpySimpleValueElement__ValuesAssignment_1)*
+{ after(grammarAccess.getRpySimpleValueElementAccess().getValuesAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RpySimpleValueElement__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RpySimpleValueElement__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RpySimpleValueElement__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRpySimpleValueElementAccess().getSemicolonKeyword_2()); }
+
+	';' 
+
+{ after(grammarAccess.getRpySimpleValueElementAccess().getSemicolonKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__RpyStringMapEntry__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RpyStringMapEntry__Group__0__Impl
+	rule__RpyStringMapEntry__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RpyStringMapEntry__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRpyStringMapEntryAccess().getKeyAssignment_0()); }
+(rule__RpyStringMapEntry__KeyAssignment_0)
+{ after(grammarAccess.getRpyStringMapEntryAccess().getKeyAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__RpyStringMapEntry__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__RpyStringMapEntry__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RpyStringMapEntry__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRpyStringMapEntryAccess().getValueAssignment_1()); }
+(rule__RpyStringMapEntry__ValueAssignment_1)
+{ after(grammarAccess.getRpyStringMapEntryAccess().getValueAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+rule__RpyFile__VersionAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRpyFileAccess().getVersionRPY_VERSIONTerminalRuleCall_1_0()); }
+	RULE_RPY_VERSION{ after(grammarAccess.getRpyFileAccess().getVersionRPY_VERSIONTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RpyFile__ContentsAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRpyFileAccess().getContentsRpyContentParserRuleCall_2_0()); }
+	ruleRpyContent{ after(grammarAccess.getRpyFileAccess().getContentsRpyContentParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RpyNode__NameAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRpyNodeAccess().getNameIDTerminalRuleCall_1_0()); }
+	RULE_ID{ after(grammarAccess.getRpyNodeAccess().getNameIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RpyNode__ContentsAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRpyNodeAccess().getContentsRpyContentParserRuleCall_2_0()); }
+	ruleRpyContent{ after(grammarAccess.getRpyNodeAccess().getContentsRpyContentParserRuleCall_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RpyFeature__NameAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRpyFeatureAccess().getNameIDTerminalRuleCall_1_0()); }
+	RULE_ID{ after(grammarAccess.getRpyFeatureAccess().getNameIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RpyFeature__ValueAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRpyFeatureAccess().getValueRpyFeatureValueParserRuleCall_3_0()); }
+	ruleRpyFeatureValue{ after(grammarAccess.getRpyFeatureAccess().getValueRpyFeatureValueParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RpyNodeList__ValuesAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRpyNodeListAccess().getValuesRpyNodeParserRuleCall_0()); }
+	ruleRpyNode{ after(grammarAccess.getRpyNodeListAccess().getValuesRpyNodeParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SimpleValueList__IsOldIDAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSimpleValueListAccess().getIsOldIDOLDIDKeyword_1_0()); }
+(
+{ before(grammarAccess.getSimpleValueListAccess().getIsOldIDOLDIDKeyword_1_0()); }
+
+	'OLDID' 
+
+{ after(grammarAccess.getSimpleValueListAccess().getIsOldIDOLDIDKeyword_1_0()); }
+)
+
+{ after(grammarAccess.getSimpleValueListAccess().getIsOldIDOLDIDKeyword_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SimpleValueList__IsGUIDAssignment_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSimpleValueListAccess().getIsGUIDGUIDKeyword_2_0()); }
+(
+{ before(grammarAccess.getSimpleValueListAccess().getIsGUIDGUIDKeyword_2_0()); }
+
+	'GUID' 
+
+{ after(grammarAccess.getSimpleValueListAccess().getIsGUIDGUIDKeyword_2_0()); }
+)
+
+{ after(grammarAccess.getSimpleValueListAccess().getIsGUIDGUIDKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SimpleValueList__ValueElementsAssignment_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getSimpleValueListAccess().getValueElementsRpySimpleValueElementParserRuleCall_3_0()); }
+	ruleRpySimpleValueElement{ after(grammarAccess.getSimpleValueListAccess().getValueElementsRpySimpleValueElementParserRuleCall_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RpySimpleValueElement__ValuesAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRpySimpleValueElementAccess().getValuesVALUE_TERMINALParserRuleCall_1_0()); }
+	ruleVALUE_TERMINAL{ after(grammarAccess.getRpySimpleValueElementAccess().getValuesVALUE_TERMINALParserRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RpyStringMap__EntriesAssignment
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRpyStringMapAccess().getEntriesRpyStringMapEntryParserRuleCall_0()); }
+	ruleRpyStringMapEntry{ after(grammarAccess.getRpyStringMapAccess().getEntriesRpyStringMapEntryParserRuleCall_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RpyStringMapEntry__KeyAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRpyStringMapEntryAccess().getKeySTRINGTerminalRuleCall_0_0()); }
+	RULE_STRING{ after(grammarAccess.getRpyStringMapEntryAccess().getKeySTRINGTerminalRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RpyStringMapEntry__ValueAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getRpyStringMapEntryAccess().getValueSTRINGTerminalRuleCall_1_0()); }
+	RULE_STRING{ after(grammarAccess.getRpyStringMapEntryAccess().getValueSTRINGTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+RULE_RPY_GUID : ('a'..'z'|'A'..'Z'|'0'..'9')+ ('-' ('a'..'z'|'A'..'Z'|'0'..'9')+)+;
+
+RULE_RPY_TIME : ('0'..'9')+ '.' ('0'..'9')+ '.' ('0'..'9')+ '::' ('0'..'9')+ ':' ('0'..'9')+ ':' '0'..'9';
+
+RULE_RPY_REAL : '-'? ('0'..'9')+ '.' ('0'..'9')+;
+
+RULE_INT : '-'? ('0'..'9')+;
+
+RULE_RPY_VERSION : 'version' ~(('\n'|'\r'))* ('\n'|'\r');
+
+RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
+
+RULE_STRING : ('"' ('\\' .|~(('\\'|'"')))* '"'|'\'' ('\\' .|~(('\\'|'\'')))* '\'');
+
+RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';
+
+RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')?;
+
+RULE_WS : (' '|'\t'|'\r'|'\n')+;
+
+RULE_ANY_OTHER : .;
+
+
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/ui/contentassist/antlr/internal/InternalRpySyntax.tokens b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/ui/contentassist/antlr/internal/InternalRpySyntax.tokens
new file mode 100644
index 0000000..4695cfe
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/ui/contentassist/antlr/internal/InternalRpySyntax.tokens
@@ -0,0 +1,27 @@
+'-'=18
+';'=20
+'='=19
+'GUID'=22
+'I-Logix-RPY-Archive'=15
+'OLDID'=21
+'{'=16
+'}'=17
+RULE_ANY_OTHER=14
+RULE_ID=5
+RULE_INT=7
+RULE_ML_COMMENT=11
+RULE_RPY_GUID=6
+RULE_RPY_REAL=9
+RULE_RPY_TIME=8
+RULE_RPY_VERSION=10
+RULE_SL_COMMENT=12
+RULE_STRING=4
+RULE_WS=13
+T__15=15
+T__16=16
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/ui/contentassist/antlr/internal/InternalRpySyntaxLexer.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/ui/contentassist/antlr/internal/InternalRpySyntaxLexer.java
new file mode 100644
index 0000000..13bdea5
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/ui/contentassist/antlr/internal/InternalRpySyntaxLexer.java
@@ -0,0 +1,1602 @@
+package org.eclipse.papyrus.interoperability.rpy.parser.ui.contentassist.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import. 
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.Lexer;
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+@SuppressWarnings("all")
+public class InternalRpySyntaxLexer extends Lexer {
+    public static final int RULE_RPY_GUID=6;
+    public static final int RULE_RPY_TIME=8;
+    public static final int RULE_STRING=4;
+    public static final int RULE_SL_COMMENT=12;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int EOF=-1;
+    public static final int RULE_ID=5;
+    public static final int RULE_WS=13;
+    public static final int RULE_RPY_VERSION=10;
+    public static final int RULE_ANY_OTHER=14;
+    public static final int RULE_INT=7;
+    public static final int T__22=22;
+    public static final int RULE_ML_COMMENT=11;
+    public static final int RULE_RPY_REAL=9;
+    public static final int T__20=20;
+    public static final int T__21=21;
+
+    // delegates
+    // delegators
+
+    public InternalRpySyntaxLexer() {;} 
+    public InternalRpySyntaxLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalRpySyntaxLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "InternalRpySyntax.g"; }
+
+    // $ANTLR start "T__15"
+    public final void mT__15() throws RecognitionException {
+        try {
+            int _type = T__15;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:11:7: ( 'I-Logix-RPY-Archive' )
+            // InternalRpySyntax.g:11:9: 'I-Logix-RPY-Archive'
+            {
+            match("I-Logix-RPY-Archive"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__15"
+
+    // $ANTLR start "T__16"
+    public final void mT__16() throws RecognitionException {
+        try {
+            int _type = T__16;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:12:7: ( '{' )
+            // InternalRpySyntax.g:12:9: '{'
+            {
+            match('{'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__16"
+
+    // $ANTLR start "T__17"
+    public final void mT__17() throws RecognitionException {
+        try {
+            int _type = T__17;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:13:7: ( '}' )
+            // InternalRpySyntax.g:13:9: '}'
+            {
+            match('}'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__17"
+
+    // $ANTLR start "T__18"
+    public final void mT__18() throws RecognitionException {
+        try {
+            int _type = T__18;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:14:7: ( '-' )
+            // InternalRpySyntax.g:14:9: '-'
+            {
+            match('-'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__18"
+
+    // $ANTLR start "T__19"
+    public final void mT__19() throws RecognitionException {
+        try {
+            int _type = T__19;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:15:7: ( '=' )
+            // InternalRpySyntax.g:15:9: '='
+            {
+            match('='); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__19"
+
+    // $ANTLR start "T__20"
+    public final void mT__20() throws RecognitionException {
+        try {
+            int _type = T__20;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:16:7: ( ';' )
+            // InternalRpySyntax.g:16:9: ';'
+            {
+            match(';'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__20"
+
+    // $ANTLR start "T__21"
+    public final void mT__21() throws RecognitionException {
+        try {
+            int _type = T__21;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:17:7: ( 'OLDID' )
+            // InternalRpySyntax.g:17:9: 'OLDID'
+            {
+            match("OLDID"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__21"
+
+    // $ANTLR start "T__22"
+    public final void mT__22() throws RecognitionException {
+        try {
+            int _type = T__22;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:18:7: ( 'GUID' )
+            // InternalRpySyntax.g:18:9: 'GUID'
+            {
+            match("GUID"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__22"
+
+    // $ANTLR start "RULE_RPY_GUID"
+    public final void mRULE_RPY_GUID() throws RecognitionException {
+        try {
+            int _type = RULE_RPY_GUID;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:1362:15: ( ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )+ ( '-' ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )+ )+ )
+            // InternalRpySyntax.g:1362:17: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )+ ( '-' ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )+ )+
+            {
+            // InternalRpySyntax.g:1362:17: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )+
+            int cnt1=0;
+            loop1:
+            do {
+                int alt1=2;
+                int LA1_0 = input.LA(1);
+
+                if ( ((LA1_0>='0' && LA1_0<='9')||(LA1_0>='A' && LA1_0<='Z')||(LA1_0>='a' && LA1_0<='z')) ) {
+                    alt1=1;
+                }
+
+
+                switch (alt1) {
+            	case 1 :
+            	    // InternalRpySyntax.g:
+            	    {
+            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt1 >= 1 ) break loop1;
+                        EarlyExitException eee =
+                            new EarlyExitException(1, input);
+                        throw eee;
+                }
+                cnt1++;
+            } while (true);
+
+            // InternalRpySyntax.g:1362:47: ( '-' ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )+ )+
+            int cnt3=0;
+            loop3:
+            do {
+                int alt3=2;
+                int LA3_0 = input.LA(1);
+
+                if ( (LA3_0=='-') ) {
+                    alt3=1;
+                }
+
+
+                switch (alt3) {
+            	case 1 :
+            	    // InternalRpySyntax.g:1362:48: '-' ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )+
+            	    {
+            	    match('-'); 
+            	    // InternalRpySyntax.g:1362:52: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )+
+            	    int cnt2=0;
+            	    loop2:
+            	    do {
+            	        int alt2=2;
+            	        int LA2_0 = input.LA(1);
+
+            	        if ( ((LA2_0>='0' && LA2_0<='9')||(LA2_0>='A' && LA2_0<='Z')||(LA2_0>='a' && LA2_0<='z')) ) {
+            	            alt2=1;
+            	        }
+
+
+            	        switch (alt2) {
+            	    	case 1 :
+            	    	    // InternalRpySyntax.g:
+            	    	    {
+            	    	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+            	    	        input.consume();
+
+            	    	    }
+            	    	    else {
+            	    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	    	        recover(mse);
+            	    	        throw mse;}
+
+
+            	    	    }
+            	    	    break;
+
+            	    	default :
+            	    	    if ( cnt2 >= 1 ) break loop2;
+            	                EarlyExitException eee =
+            	                    new EarlyExitException(2, input);
+            	                throw eee;
+            	        }
+            	        cnt2++;
+            	    } while (true);
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt3 >= 1 ) break loop3;
+                        EarlyExitException eee =
+                            new EarlyExitException(3, input);
+                        throw eee;
+                }
+                cnt3++;
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_RPY_GUID"
+
+    // $ANTLR start "RULE_RPY_TIME"
+    public final void mRULE_RPY_TIME() throws RecognitionException {
+        try {
+            int _type = RULE_RPY_TIME;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:1364:15: ( ( '0' .. '9' )+ '.' ( '0' .. '9' )+ '.' ( '0' .. '9' )+ '::' ( '0' .. '9' )+ ':' ( '0' .. '9' )+ ':' '0' .. '9' )
+            // InternalRpySyntax.g:1364:17: ( '0' .. '9' )+ '.' ( '0' .. '9' )+ '.' ( '0' .. '9' )+ '::' ( '0' .. '9' )+ ':' ( '0' .. '9' )+ ':' '0' .. '9'
+            {
+            // InternalRpySyntax.g:1364:17: ( '0' .. '9' )+
+            int cnt4=0;
+            loop4:
+            do {
+                int alt4=2;
+                int LA4_0 = input.LA(1);
+
+                if ( ((LA4_0>='0' && LA4_0<='9')) ) {
+                    alt4=1;
+                }
+
+
+                switch (alt4) {
+            	case 1 :
+            	    // InternalRpySyntax.g:1364:18: '0' .. '9'
+            	    {
+            	    matchRange('0','9'); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt4 >= 1 ) break loop4;
+                        EarlyExitException eee =
+                            new EarlyExitException(4, input);
+                        throw eee;
+                }
+                cnt4++;
+            } while (true);
+
+            match('.'); 
+            // InternalRpySyntax.g:1364:33: ( '0' .. '9' )+
+            int cnt5=0;
+            loop5:
+            do {
+                int alt5=2;
+                int LA5_0 = input.LA(1);
+
+                if ( ((LA5_0>='0' && LA5_0<='9')) ) {
+                    alt5=1;
+                }
+
+
+                switch (alt5) {
+            	case 1 :
+            	    // InternalRpySyntax.g:1364:34: '0' .. '9'
+            	    {
+            	    matchRange('0','9'); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt5 >= 1 ) break loop5;
+                        EarlyExitException eee =
+                            new EarlyExitException(5, input);
+                        throw eee;
+                }
+                cnt5++;
+            } while (true);
+
+            match('.'); 
+            // InternalRpySyntax.g:1364:49: ( '0' .. '9' )+
+            int cnt6=0;
+            loop6:
+            do {
+                int alt6=2;
+                int LA6_0 = input.LA(1);
+
+                if ( ((LA6_0>='0' && LA6_0<='9')) ) {
+                    alt6=1;
+                }
+
+
+                switch (alt6) {
+            	case 1 :
+            	    // InternalRpySyntax.g:1364:50: '0' .. '9'
+            	    {
+            	    matchRange('0','9'); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt6 >= 1 ) break loop6;
+                        EarlyExitException eee =
+                            new EarlyExitException(6, input);
+                        throw eee;
+                }
+                cnt6++;
+            } while (true);
+
+            match("::"); 
+
+            // InternalRpySyntax.g:1364:66: ( '0' .. '9' )+
+            int cnt7=0;
+            loop7:
+            do {
+                int alt7=2;
+                int LA7_0 = input.LA(1);
+
+                if ( ((LA7_0>='0' && LA7_0<='9')) ) {
+                    alt7=1;
+                }
+
+
+                switch (alt7) {
+            	case 1 :
+            	    // InternalRpySyntax.g:1364:67: '0' .. '9'
+            	    {
+            	    matchRange('0','9'); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt7 >= 1 ) break loop7;
+                        EarlyExitException eee =
+                            new EarlyExitException(7, input);
+                        throw eee;
+                }
+                cnt7++;
+            } while (true);
+
+            match(':'); 
+            // InternalRpySyntax.g:1364:82: ( '0' .. '9' )+
+            int cnt8=0;
+            loop8:
+            do {
+                int alt8=2;
+                int LA8_0 = input.LA(1);
+
+                if ( ((LA8_0>='0' && LA8_0<='9')) ) {
+                    alt8=1;
+                }
+
+
+                switch (alt8) {
+            	case 1 :
+            	    // InternalRpySyntax.g:1364:83: '0' .. '9'
+            	    {
+            	    matchRange('0','9'); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt8 >= 1 ) break loop8;
+                        EarlyExitException eee =
+                            new EarlyExitException(8, input);
+                        throw eee;
+                }
+                cnt8++;
+            } while (true);
+
+            match(':'); 
+            matchRange('0','9'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_RPY_TIME"
+
+    // $ANTLR start "RULE_RPY_REAL"
+    public final void mRULE_RPY_REAL() throws RecognitionException {
+        try {
+            int _type = RULE_RPY_REAL;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:1366:15: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
+            // InternalRpySyntax.g:1366:17: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
+            {
+            // InternalRpySyntax.g:1366:17: ( '-' )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0=='-') ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // InternalRpySyntax.g:1366:17: '-'
+                    {
+                    match('-'); 
+
+                    }
+                    break;
+
+            }
+
+            // InternalRpySyntax.g:1366:22: ( '0' .. '9' )+
+            int cnt10=0;
+            loop10:
+            do {
+                int alt10=2;
+                int LA10_0 = input.LA(1);
+
+                if ( ((LA10_0>='0' && LA10_0<='9')) ) {
+                    alt10=1;
+                }
+
+
+                switch (alt10) {
+            	case 1 :
+            	    // InternalRpySyntax.g:1366:23: '0' .. '9'
+            	    {
+            	    matchRange('0','9'); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt10 >= 1 ) break loop10;
+                        EarlyExitException eee =
+                            new EarlyExitException(10, input);
+                        throw eee;
+                }
+                cnt10++;
+            } while (true);
+
+            match('.'); 
+            // InternalRpySyntax.g:1366:38: ( '0' .. '9' )+
+            int cnt11=0;
+            loop11:
+            do {
+                int alt11=2;
+                int LA11_0 = input.LA(1);
+
+                if ( ((LA11_0>='0' && LA11_0<='9')) ) {
+                    alt11=1;
+                }
+
+
+                switch (alt11) {
+            	case 1 :
+            	    // InternalRpySyntax.g:1366:39: '0' .. '9'
+            	    {
+            	    matchRange('0','9'); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt11 >= 1 ) break loop11;
+                        EarlyExitException eee =
+                            new EarlyExitException(11, input);
+                        throw eee;
+                }
+                cnt11++;
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_RPY_REAL"
+
+    // $ANTLR start "RULE_INT"
+    public final void mRULE_INT() throws RecognitionException {
+        try {
+            int _type = RULE_INT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:1368:10: ( ( '-' )? ( '0' .. '9' )+ )
+            // InternalRpySyntax.g:1368:12: ( '-' )? ( '0' .. '9' )+
+            {
+            // InternalRpySyntax.g:1368:12: ( '-' )?
+            int alt12=2;
+            int LA12_0 = input.LA(1);
+
+            if ( (LA12_0=='-') ) {
+                alt12=1;
+            }
+            switch (alt12) {
+                case 1 :
+                    // InternalRpySyntax.g:1368:12: '-'
+                    {
+                    match('-'); 
+
+                    }
+                    break;
+
+            }
+
+            // InternalRpySyntax.g:1368:17: ( '0' .. '9' )+
+            int cnt13=0;
+            loop13:
+            do {
+                int alt13=2;
+                int LA13_0 = input.LA(1);
+
+                if ( ((LA13_0>='0' && LA13_0<='9')) ) {
+                    alt13=1;
+                }
+
+
+                switch (alt13) {
+            	case 1 :
+            	    // InternalRpySyntax.g:1368:18: '0' .. '9'
+            	    {
+            	    matchRange('0','9'); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt13 >= 1 ) break loop13;
+                        EarlyExitException eee =
+                            new EarlyExitException(13, input);
+                        throw eee;
+                }
+                cnt13++;
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_INT"
+
+    // $ANTLR start "RULE_RPY_VERSION"
+    public final void mRULE_RPY_VERSION() throws RecognitionException {
+        try {
+            int _type = RULE_RPY_VERSION;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:1370:18: ( 'version' (~ ( ( '\\n' | '\\r' ) ) )* ( '\\n' | '\\r' ) )
+            // InternalRpySyntax.g:1370:20: 'version' (~ ( ( '\\n' | '\\r' ) ) )* ( '\\n' | '\\r' )
+            {
+            match("version"); 
+
+            // InternalRpySyntax.g:1370:30: (~ ( ( '\\n' | '\\r' ) ) )*
+            loop14:
+            do {
+                int alt14=2;
+                int LA14_0 = input.LA(1);
+
+                if ( ((LA14_0>='\u0000' && LA14_0<='\t')||(LA14_0>='\u000B' && LA14_0<='\f')||(LA14_0>='\u000E' && LA14_0<='\uFFFF')) ) {
+                    alt14=1;
+                }
+
+
+                switch (alt14) {
+            	case 1 :
+            	    // InternalRpySyntax.g:1370:30: ~ ( ( '\\n' | '\\r' ) )
+            	    {
+            	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop14;
+                }
+            } while (true);
+
+            if ( input.LA(1)=='\n'||input.LA(1)=='\r' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;}
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_RPY_VERSION"
+
+    // $ANTLR start "RULE_ID"
+    public final void mRULE_ID() throws RecognitionException {
+        try {
+            int _type = RULE_ID;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:1372:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
+            // InternalRpySyntax.g:1372:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+            {
+            // InternalRpySyntax.g:1372:11: ( '^' )?
+            int alt15=2;
+            int LA15_0 = input.LA(1);
+
+            if ( (LA15_0=='^') ) {
+                alt15=1;
+            }
+            switch (alt15) {
+                case 1 :
+                    // InternalRpySyntax.g:1372:11: '^'
+                    {
+                    match('^'); 
+
+                    }
+                    break;
+
+            }
+
+            if ( (input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;}
+
+            // InternalRpySyntax.g:1372:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+            loop16:
+            do {
+                int alt16=2;
+                int LA16_0 = input.LA(1);
+
+                if ( ((LA16_0>='0' && LA16_0<='9')||(LA16_0>='A' && LA16_0<='Z')||LA16_0=='_'||(LA16_0>='a' && LA16_0<='z')) ) {
+                    alt16=1;
+                }
+
+
+                switch (alt16) {
+            	case 1 :
+            	    // InternalRpySyntax.g:
+            	    {
+            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop16;
+                }
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ID"
+
+    // $ANTLR start "RULE_STRING"
+    public final void mRULE_STRING() throws RecognitionException {
+        try {
+            int _type = RULE_STRING;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:1374:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) )
+            // InternalRpySyntax.g:1374:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+            {
+            // InternalRpySyntax.g:1374:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+            int alt19=2;
+            int LA19_0 = input.LA(1);
+
+            if ( (LA19_0=='\"') ) {
+                alt19=1;
+            }
+            else if ( (LA19_0=='\'') ) {
+                alt19=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 19, 0, input);
+
+                throw nvae;
+            }
+            switch (alt19) {
+                case 1 :
+                    // InternalRpySyntax.g:1374:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"'
+                    {
+                    match('\"'); 
+                    // InternalRpySyntax.g:1374:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+                    loop17:
+                    do {
+                        int alt17=3;
+                        int LA17_0 = input.LA(1);
+
+                        if ( (LA17_0=='\\') ) {
+                            alt17=1;
+                        }
+                        else if ( ((LA17_0>='\u0000' && LA17_0<='!')||(LA17_0>='#' && LA17_0<='[')||(LA17_0>=']' && LA17_0<='\uFFFF')) ) {
+                            alt17=2;
+                        }
+
+
+                        switch (alt17) {
+                    	case 1 :
+                    	    // InternalRpySyntax.g:1374:21: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // InternalRpySyntax.g:1374:28: ~ ( ( '\\\\' | '\"' ) )
+                    	    {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop17;
+                        }
+                    } while (true);
+
+                    match('\"'); 
+
+                    }
+                    break;
+                case 2 :
+                    // InternalRpySyntax.g:1374:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\''
+                    {
+                    match('\''); 
+                    // InternalRpySyntax.g:1374:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    loop18:
+                    do {
+                        int alt18=3;
+                        int LA18_0 = input.LA(1);
+
+                        if ( (LA18_0=='\\') ) {
+                            alt18=1;
+                        }
+                        else if ( ((LA18_0>='\u0000' && LA18_0<='&')||(LA18_0>='(' && LA18_0<='[')||(LA18_0>=']' && LA18_0<='\uFFFF')) ) {
+                            alt18=2;
+                        }
+
+
+                        switch (alt18) {
+                    	case 1 :
+                    	    // InternalRpySyntax.g:1374:54: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // InternalRpySyntax.g:1374:61: ~ ( ( '\\\\' | '\\'' ) )
+                    	    {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop18;
+                        }
+                    } while (true);
+
+                    match('\''); 
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_STRING"
+
+    // $ANTLR start "RULE_ML_COMMENT"
+    public final void mRULE_ML_COMMENT() throws RecognitionException {
+        try {
+            int _type = RULE_ML_COMMENT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:1376:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // InternalRpySyntax.g:1376:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // InternalRpySyntax.g:1376:24: ( options {greedy=false; } : . )*
+            loop20:
+            do {
+                int alt20=2;
+                int LA20_0 = input.LA(1);
+
+                if ( (LA20_0=='*') ) {
+                    int LA20_1 = input.LA(2);
+
+                    if ( (LA20_1=='/') ) {
+                        alt20=2;
+                    }
+                    else if ( ((LA20_1>='\u0000' && LA20_1<='.')||(LA20_1>='0' && LA20_1<='\uFFFF')) ) {
+                        alt20=1;
+                    }
+
+
+                }
+                else if ( ((LA20_0>='\u0000' && LA20_0<=')')||(LA20_0>='+' && LA20_0<='\uFFFF')) ) {
+                    alt20=1;
+                }
+
+
+                switch (alt20) {
+            	case 1 :
+            	    // InternalRpySyntax.g:1376:52: .
+            	    {
+            	    matchAny(); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop20;
+                }
+            } while (true);
+
+            match("*/"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ML_COMMENT"
+
+    // $ANTLR start "RULE_SL_COMMENT"
+    public final void mRULE_SL_COMMENT() throws RecognitionException {
+        try {
+            int _type = RULE_SL_COMMENT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:1378:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // InternalRpySyntax.g:1378:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // InternalRpySyntax.g:1378:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            loop21:
+            do {
+                int alt21=2;
+                int LA21_0 = input.LA(1);
+
+                if ( ((LA21_0>='\u0000' && LA21_0<='\t')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\uFFFF')) ) {
+                    alt21=1;
+                }
+
+
+                switch (alt21) {
+            	case 1 :
+            	    // InternalRpySyntax.g:1378:24: ~ ( ( '\\n' | '\\r' ) )
+            	    {
+            	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop21;
+                }
+            } while (true);
+
+            // InternalRpySyntax.g:1378:40: ( ( '\\r' )? '\\n' )?
+            int alt23=2;
+            int LA23_0 = input.LA(1);
+
+            if ( (LA23_0=='\n'||LA23_0=='\r') ) {
+                alt23=1;
+            }
+            switch (alt23) {
+                case 1 :
+                    // InternalRpySyntax.g:1378:41: ( '\\r' )? '\\n'
+                    {
+                    // InternalRpySyntax.g:1378:41: ( '\\r' )?
+                    int alt22=2;
+                    int LA22_0 = input.LA(1);
+
+                    if ( (LA22_0=='\r') ) {
+                        alt22=1;
+                    }
+                    switch (alt22) {
+                        case 1 :
+                            // InternalRpySyntax.g:1378:41: '\\r'
+                            {
+                            match('\r'); 
+
+                            }
+                            break;
+
+                    }
+
+                    match('\n'); 
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_SL_COMMENT"
+
+    // $ANTLR start "RULE_WS"
+    public final void mRULE_WS() throws RecognitionException {
+        try {
+            int _type = RULE_WS;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:1380:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // InternalRpySyntax.g:1380:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // InternalRpySyntax.g:1380:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            int cnt24=0;
+            loop24:
+            do {
+                int alt24=2;
+                int LA24_0 = input.LA(1);
+
+                if ( ((LA24_0>='\t' && LA24_0<='\n')||LA24_0=='\r'||LA24_0==' ') ) {
+                    alt24=1;
+                }
+
+
+                switch (alt24) {
+            	case 1 :
+            	    // InternalRpySyntax.g:
+            	    {
+            	    if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt24 >= 1 ) break loop24;
+                        EarlyExitException eee =
+                            new EarlyExitException(24, input);
+                        throw eee;
+                }
+                cnt24++;
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_WS"
+
+    // $ANTLR start "RULE_ANY_OTHER"
+    public final void mRULE_ANY_OTHER() throws RecognitionException {
+        try {
+            int _type = RULE_ANY_OTHER;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:1382:16: ( . )
+            // InternalRpySyntax.g:1382:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // InternalRpySyntax.g:1:8: ( T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | RULE_RPY_GUID | RULE_RPY_TIME | RULE_RPY_REAL | RULE_INT | RULE_RPY_VERSION | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt25=19;
+        alt25 = dfa25.predict(input);
+        switch (alt25) {
+            case 1 :
+                // InternalRpySyntax.g:1:10: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 2 :
+                // InternalRpySyntax.g:1:16: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 3 :
+                // InternalRpySyntax.g:1:22: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 4 :
+                // InternalRpySyntax.g:1:28: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 5 :
+                // InternalRpySyntax.g:1:34: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 6 :
+                // InternalRpySyntax.g:1:40: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 7 :
+                // InternalRpySyntax.g:1:46: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 8 :
+                // InternalRpySyntax.g:1:52: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 9 :
+                // InternalRpySyntax.g:1:58: RULE_RPY_GUID
+                {
+                mRULE_RPY_GUID(); 
+
+                }
+                break;
+            case 10 :
+                // InternalRpySyntax.g:1:72: RULE_RPY_TIME
+                {
+                mRULE_RPY_TIME(); 
+
+                }
+                break;
+            case 11 :
+                // InternalRpySyntax.g:1:86: RULE_RPY_REAL
+                {
+                mRULE_RPY_REAL(); 
+
+                }
+                break;
+            case 12 :
+                // InternalRpySyntax.g:1:100: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 13 :
+                // InternalRpySyntax.g:1:109: RULE_RPY_VERSION
+                {
+                mRULE_RPY_VERSION(); 
+
+                }
+                break;
+            case 14 :
+                // InternalRpySyntax.g:1:126: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 15 :
+                // InternalRpySyntax.g:1:134: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 16 :
+                // InternalRpySyntax.g:1:146: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 17 :
+                // InternalRpySyntax.g:1:162: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 18 :
+                // InternalRpySyntax.g:1:178: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 19 :
+                // InternalRpySyntax.g:1:186: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA25 dfa25 = new DFA25(this);
+    static final String DFA25_eotS =
+        "\1\uffff\1\24\2\uffff\1\31\2\uffff\2\24\1\41\2\24\1\22\1\uffff\3\22\4\uffff\1\24\2\uffff\1\41\3\uffff\1\24\1\uffff\1\24\1\uffff\1\41\1\uffff\1\24\4\uffff\1\35\1\uffff\2\24\1\50\1\24\1\35\1\24\1\64\1\uffff\1\24\1\35\1\67\1\uffff\1\24\1\35\1\uffff\1\24\1\35\1\24\1\uffff\1\24\2\uffff\1\24\4\35\1\uffff\6\35\1\114\1\uffff";
+    static final String DFA25_eofS =
+        "\115\uffff";
+    static final String DFA25_minS =
+        "\1\0\1\55\2\uffff\1\60\2\uffff\5\55\1\101\1\uffff\2\0\1\52\2\uffff\1\60\1\uffff\1\55\2\uffff\1\56\3\uffff\1\55\1\uffff\1\55\1\60\1\55\1\uffff\1\55\4\uffff\1\157\1\uffff\2\55\1\56\1\55\1\147\2\55\1\uffff\1\55\1\151\1\55\1\uffff\1\55\1\170\1\uffff\2\55\1\0\1\60\1\0\1\uffff\2\0\1\120\1\0\1\131\1\55\1\60\1\162\1\143\1\150\1\151\1\166\1\145\1\55\1\uffff";
+    static final String DFA25_maxS =
+        "\1\uffff\1\172\2\uffff\1\71\2\uffff\6\172\1\uffff\2\uffff\1\57\2\uffff\1\172\1\uffff\1\172\2\uffff\1\71\3\uffff\1\172\1\uffff\1\172\1\71\1\172\1\uffff\1\172\4\uffff\1\157\1\uffff\2\172\1\71\1\172\1\147\2\172\1\uffff\1\172\1\151\1\172\1\uffff\1\172\1\170\1\uffff\1\172\1\55\1\uffff\1\172\1\uffff\1\uffff\2\uffff\1\120\1\uffff\1\131\1\55\1\172\1\162\1\143\1\150\1\151\1\166\1\145\1\172\1\uffff";
+    static final String DFA25_acceptS =
+        "\2\uffff\1\2\1\3\1\uffff\1\5\1\6\6\uffff\1\16\3\uffff\1\22\1\23\1\uffff\1\16\1\uffff\1\2\1\3\1\uffff\1\4\1\5\1\6\1\uffff\1\11\3\uffff\1\14\1\uffff\1\17\1\20\1\21\1\22\1\uffff\1\13\7\uffff\1\12\3\uffff\1\10\2\uffff\1\7\5\uffff\1\15\16\uffff\1\1";
+    static final String DFA25_specialS =
+        "\1\3\15\uffff\1\4\1\6\52\uffff\1\1\1\uffff\1\0\1\uffff\1\5\1\2\1\uffff\1\7\13\uffff}>";
+    static final String[] DFA25_transitionS = {
+            "\11\22\2\21\2\22\1\21\22\22\1\21\1\22\1\16\4\22\1\17\5\22\1\4\1\22\1\20\12\11\1\22\1\6\1\22\1\5\3\22\6\13\1\10\1\13\1\1\5\13\1\7\13\13\3\22\1\14\1\15\1\22\25\13\1\12\4\13\1\2\1\22\1\3\uff82\22",
+            "\1\23\2\uffff\12\25\7\uffff\32\25\6\uffff\32\25",
+            "",
+            "",
+            "\12\30",
+            "",
+            "",
+            "\1\35\2\uffff\12\25\7\uffff\13\25\1\34\16\25\6\uffff\32\25",
+            "\1\35\2\uffff\12\25\7\uffff\24\25\1\36\5\25\6\uffff\32\25",
+            "\1\35\1\37\1\uffff\12\40\7\uffff\32\35\6\uffff\32\35",
+            "\1\35\2\uffff\12\25\7\uffff\32\25\6\uffff\4\25\1\42\25\25",
+            "\1\35\2\uffff\12\25\7\uffff\32\25\6\uffff\32\25",
+            "\32\24\4\uffff\1\24\1\uffff\32\24",
+            "",
+            "\0\43",
+            "\0\43",
+            "\1\44\4\uffff\1\45",
+            "",
+            "",
+            "\12\35\7\uffff\13\35\1\47\16\35\6\uffff\32\35",
+            "",
+            "\1\35\2\uffff\12\25\7\uffff\32\25\6\uffff\32\25",
+            "",
+            "",
+            "\1\50\1\uffff\12\30",
+            "",
+            "",
+            "",
+            "\1\35\2\uffff\12\25\7\uffff\3\25\1\51\26\25\6\uffff\32\25",
+            "",
+            "\1\35\2\uffff\12\25\7\uffff\10\25\1\52\21\25\6\uffff\32\25",
+            "\12\53",
+            "\1\35\1\37\1\uffff\12\40\7\uffff\32\35\6\uffff\32\35",
+            "",
+            "\1\35\2\uffff\12\25\7\uffff\32\25\6\uffff\21\25\1\54\10\25",
+            "",
+            "",
+            "",
+            "",
+            "\1\55",
+            "",
+            "\1\35\2\uffff\12\25\7\uffff\10\25\1\56\21\25\6\uffff\32\25",
+            "\1\35\2\uffff\12\25\7\uffff\3\25\1\57\26\25\6\uffff\32\25",
+            "\1\60\1\uffff\12\53",
+            "\1\35\2\uffff\12\25\7\uffff\32\25\6\uffff\22\25\1\61\7\25",
+            "\1\62",
+            "\1\35\2\uffff\12\25\7\uffff\3\25\1\63\26\25\6\uffff\32\25",
+            "\1\35\2\uffff\12\25\7\uffff\32\25\4\uffff\1\24\1\uffff\32\25",
+            "",
+            "\1\35\2\uffff\12\25\7\uffff\32\25\6\uffff\10\25\1\65\21\25",
+            "\1\66",
+            "\1\35\2\uffff\12\25\7\uffff\32\25\4\uffff\1\24\1\uffff\32\25",
+            "",
+            "\1\35\2\uffff\12\25\7\uffff\32\25\6\uffff\16\25\1\70\13\25",
+            "\1\71",
+            "",
+            "\1\35\2\uffff\12\25\7\uffff\32\25\6\uffff\15\25\1\72\14\25",
+            "\1\73",
+            "\55\75\1\76\2\75\12\74\7\75\32\74\4\75\1\77\1\75\32\74\uff85\75",
+            "\12\35\7\uffff\21\35\1\100\10\35\6\uffff\32\35",
+            "\55\75\1\76\2\75\12\74\7\75\32\74\4\75\1\77\1\75\32\74\uff85\75",
+            "",
+            "\60\75\12\101\7\75\32\101\6\75\32\101\uff85\75",
+            "\60\75\12\77\7\75\32\77\4\75\1\77\1\75\32\77\uff85\75",
+            "\1\102",
+            "\55\75\1\76\2\75\12\101\7\75\32\101\6\75\32\101\uff85\75",
+            "\1\103",
+            "\1\104",
+            "\12\35\7\uffff\1\105\31\35\6\uffff\32\35",
+            "\1\106",
+            "\1\107",
+            "\1\110",
+            "\1\111",
+            "\1\112",
+            "\1\113",
+            "\1\35\2\uffff\12\35\7\uffff\32\35\6\uffff\32\35",
+            ""
+    };
+
+    static final short[] DFA25_eot = DFA.unpackEncodedString(DFA25_eotS);
+    static final short[] DFA25_eof = DFA.unpackEncodedString(DFA25_eofS);
+    static final char[] DFA25_min = DFA.unpackEncodedStringToUnsignedChars(DFA25_minS);
+    static final char[] DFA25_max = DFA.unpackEncodedStringToUnsignedChars(DFA25_maxS);
+    static final short[] DFA25_accept = DFA.unpackEncodedString(DFA25_acceptS);
+    static final short[] DFA25_special = DFA.unpackEncodedString(DFA25_specialS);
+    static final short[][] DFA25_transition;
+
+    static {
+        int numStates = DFA25_transitionS.length;
+        DFA25_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA25_transition[i] = DFA.unpackEncodedString(DFA25_transitionS[i]);
+        }
+    }
+
+    class DFA25 extends DFA {
+
+        public DFA25(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 25;
+            this.eot = DFA25_eot;
+            this.eof = DFA25_eof;
+            this.min = DFA25_min;
+            this.max = DFA25_max;
+            this.accept = DFA25_accept;
+            this.special = DFA25_special;
+            this.transition = DFA25_transition;
+        }
+        public String getDescription() {
+            return "1:1: Tokens : ( T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | RULE_RPY_GUID | RULE_RPY_TIME | RULE_RPY_REAL | RULE_INT | RULE_RPY_VERSION | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            IntStream input = _input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA25_60 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA25_60>='\u0000' && LA25_60<=',')||(LA25_60>='.' && LA25_60<='/')||(LA25_60>=':' && LA25_60<='@')||(LA25_60>='[' && LA25_60<='^')||LA25_60=='`'||(LA25_60>='{' && LA25_60<='\uFFFF')) ) {s = 61;}
+
+                        else if ( ((LA25_60>='0' && LA25_60<='9')||(LA25_60>='A' && LA25_60<='Z')||(LA25_60>='a' && LA25_60<='z')) ) {s = 60;}
+
+                        else if ( (LA25_60=='-') ) {s = 62;}
+
+                        else if ( (LA25_60=='_') ) {s = 63;}
+
+                        else s = 20;
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA25_58 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA25_58>='0' && LA25_58<='9')||(LA25_58>='A' && LA25_58<='Z')||(LA25_58>='a' && LA25_58<='z')) ) {s = 60;}
+
+                        else if ( ((LA25_58>='\u0000' && LA25_58<=',')||(LA25_58>='.' && LA25_58<='/')||(LA25_58>=':' && LA25_58<='@')||(LA25_58>='[' && LA25_58<='^')||LA25_58=='`'||(LA25_58>='{' && LA25_58<='\uFFFF')) ) {s = 61;}
+
+                        else if ( (LA25_58=='-') ) {s = 62;}
+
+                        else if ( (LA25_58=='_') ) {s = 63;}
+
+                        else s = 20;
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA25_63 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA25_63>='\u0000' && LA25_63<='/')||(LA25_63>=':' && LA25_63<='@')||(LA25_63>='[' && LA25_63<='^')||LA25_63=='`'||(LA25_63>='{' && LA25_63<='\uFFFF')) ) {s = 61;}
+
+                        else if ( ((LA25_63>='0' && LA25_63<='9')||(LA25_63>='A' && LA25_63<='Z')||LA25_63=='_'||(LA25_63>='a' && LA25_63<='z')) ) {s = 63;}
+
+                        else s = 20;
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA25_0 = input.LA(1);
+
+                        s = -1;
+                        if ( (LA25_0=='I') ) {s = 1;}
+
+                        else if ( (LA25_0=='{') ) {s = 2;}
+
+                        else if ( (LA25_0=='}') ) {s = 3;}
+
+                        else if ( (LA25_0=='-') ) {s = 4;}
+
+                        else if ( (LA25_0=='=') ) {s = 5;}
+
+                        else if ( (LA25_0==';') ) {s = 6;}
+
+                        else if ( (LA25_0=='O') ) {s = 7;}
+
+                        else if ( (LA25_0=='G') ) {s = 8;}
+
+                        else if ( ((LA25_0>='0' && LA25_0<='9')) ) {s = 9;}
+
+                        else if ( (LA25_0=='v') ) {s = 10;}
+
+                        else if ( ((LA25_0>='A' && LA25_0<='F')||LA25_0=='H'||(LA25_0>='J' && LA25_0<='N')||(LA25_0>='P' && LA25_0<='Z')||(LA25_0>='a' && LA25_0<='u')||(LA25_0>='w' && LA25_0<='z')) ) {s = 11;}
+
+                        else if ( (LA25_0=='^') ) {s = 12;}
+
+                        else if ( (LA25_0=='_') ) {s = 13;}
+
+                        else if ( (LA25_0=='\"') ) {s = 14;}
+
+                        else if ( (LA25_0=='\'') ) {s = 15;}
+
+                        else if ( (LA25_0=='/') ) {s = 16;}
+
+                        else if ( ((LA25_0>='\t' && LA25_0<='\n')||LA25_0=='\r'||LA25_0==' ') ) {s = 17;}
+
+                        else if ( ((LA25_0>='\u0000' && LA25_0<='\b')||(LA25_0>='\u000B' && LA25_0<='\f')||(LA25_0>='\u000E' && LA25_0<='\u001F')||LA25_0=='!'||(LA25_0>='#' && LA25_0<='&')||(LA25_0>='(' && LA25_0<=',')||LA25_0=='.'||LA25_0==':'||LA25_0=='<'||(LA25_0>='>' && LA25_0<='@')||(LA25_0>='[' && LA25_0<=']')||LA25_0=='`'||LA25_0=='|'||(LA25_0>='~' && LA25_0<='\uFFFF')) ) {s = 18;}
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA25_14 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA25_14>='\u0000' && LA25_14<='\uFFFF')) ) {s = 35;}
+
+                        else s = 18;
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA25_62 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA25_62>='0' && LA25_62<='9')||(LA25_62>='A' && LA25_62<='Z')||(LA25_62>='a' && LA25_62<='z')) ) {s = 65;}
+
+                        else if ( ((LA25_62>='\u0000' && LA25_62<='/')||(LA25_62>=':' && LA25_62<='@')||(LA25_62>='[' && LA25_62<='`')||(LA25_62>='{' && LA25_62<='\uFFFF')) ) {s = 61;}
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA25_15 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA25_15>='\u0000' && LA25_15<='\uFFFF')) ) {s = 35;}
+
+                        else s = 18;
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA25_65 = input.LA(1);
+
+                        s = -1;
+                        if ( (LA25_65=='-') ) {s = 62;}
+
+                        else if ( ((LA25_65>='0' && LA25_65<='9')||(LA25_65>='A' && LA25_65<='Z')||(LA25_65>='a' && LA25_65<='z')) ) {s = 65;}
+
+                        else if ( ((LA25_65>='\u0000' && LA25_65<=',')||(LA25_65>='.' && LA25_65<='/')||(LA25_65>=':' && LA25_65<='@')||(LA25_65>='[' && LA25_65<='`')||(LA25_65>='{' && LA25_65<='\uFFFF')) ) {s = 61;}
+
+                        else s = 29;
+
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 25, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+}
\ No newline at end of file
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/ui/contentassist/antlr/internal/InternalRpySyntaxParser.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/ui/contentassist/antlr/internal/InternalRpySyntaxParser.java
new file mode 100644
index 0000000..c85cded
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/ui/contentassist/antlr/internal/InternalRpySyntaxParser.java
@@ -0,0 +1,4039 @@
+package org.eclipse.papyrus.interoperability.rpy.parser.ui.contentassist.antlr.internal; 
+
+import java.io.InputStream;
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
+import org.eclipse.papyrus.interoperability.rpy.parser.services.RpySyntaxGrammarAccess;
+
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+@SuppressWarnings("all")
+public class InternalRpySyntaxParser extends AbstractInternalContentAssistParser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_RPY_GUID", "RULE_INT", "RULE_RPY_TIME", "RULE_RPY_REAL", "RULE_RPY_VERSION", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'I-Logix-RPY-Archive'", "'{'", "'}'", "'-'", "'='", "';'", "'OLDID'", "'GUID'"
+    };
+    public static final int RULE_RPY_GUID=6;
+    public static final int RULE_RPY_TIME=8;
+    public static final int RULE_STRING=4;
+    public static final int RULE_SL_COMMENT=12;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int EOF=-1;
+    public static final int RULE_ID=5;
+    public static final int RULE_WS=13;
+    public static final int RULE_RPY_VERSION=10;
+    public static final int RULE_ANY_OTHER=14;
+    public static final int RULE_INT=7;
+    public static final int T__22=22;
+    public static final int RULE_ML_COMMENT=11;
+    public static final int RULE_RPY_REAL=9;
+    public static final int T__20=20;
+    public static final int T__21=21;
+
+    // delegates
+    // delegators
+
+
+        public InternalRpySyntaxParser(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public InternalRpySyntaxParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+
+    public String[] getTokenNames() { return InternalRpySyntaxParser.tokenNames; }
+    public String getGrammarFileName() { return "InternalRpySyntax.g"; }
+
+
+     
+     	private RpySyntaxGrammarAccess grammarAccess;
+     	
+        public void setGrammarAccess(RpySyntaxGrammarAccess grammarAccess) {
+        	this.grammarAccess = grammarAccess;
+        }
+        
+        @Override
+        protected Grammar getGrammar() {
+        	return grammarAccess.getGrammar();
+        }
+        
+        @Override
+        protected String getValueForTokenName(String tokenName) {
+        	return tokenName;
+        }
+
+
+
+
+    // $ANTLR start "entryRuleRpyFile"
+    // InternalRpySyntax.g:70:1: entryRuleRpyFile : ruleRpyFile EOF ;
+    public final void entryRuleRpyFile() throws RecognitionException {
+        try {
+            // InternalRpySyntax.g:71:1: ( ruleRpyFile EOF )
+            // InternalRpySyntax.g:72:1: ruleRpyFile EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyFileRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleRpyFile();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyFileRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleRpyFile"
+
+
+    // $ANTLR start "ruleRpyFile"
+    // InternalRpySyntax.g:79:1: ruleRpyFile : ( ( rule__RpyFile__Group__0 ) ) ;
+    public final void ruleRpyFile() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:83:2: ( ( ( rule__RpyFile__Group__0 ) ) )
+            // InternalRpySyntax.g:84:1: ( ( rule__RpyFile__Group__0 ) )
+            {
+            // InternalRpySyntax.g:84:1: ( ( rule__RpyFile__Group__0 ) )
+            // InternalRpySyntax.g:85:1: ( rule__RpyFile__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyFileAccess().getGroup()); 
+            }
+            // InternalRpySyntax.g:86:1: ( rule__RpyFile__Group__0 )
+            // InternalRpySyntax.g:86:2: rule__RpyFile__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__RpyFile__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyFileAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleRpyFile"
+
+
+    // $ANTLR start "entryRuleRpyContent"
+    // InternalRpySyntax.g:98:1: entryRuleRpyContent : ruleRpyContent EOF ;
+    public final void entryRuleRpyContent() throws RecognitionException {
+        try {
+            // InternalRpySyntax.g:99:1: ( ruleRpyContent EOF )
+            // InternalRpySyntax.g:100:1: ruleRpyContent EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyContentRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleRpyContent();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyContentRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleRpyContent"
+
+
+    // $ANTLR start "ruleRpyContent"
+    // InternalRpySyntax.g:107:1: ruleRpyContent : ( ( rule__RpyContent__Alternatives ) ) ;
+    public final void ruleRpyContent() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:111:2: ( ( ( rule__RpyContent__Alternatives ) ) )
+            // InternalRpySyntax.g:112:1: ( ( rule__RpyContent__Alternatives ) )
+            {
+            // InternalRpySyntax.g:112:1: ( ( rule__RpyContent__Alternatives ) )
+            // InternalRpySyntax.g:113:1: ( rule__RpyContent__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyContentAccess().getAlternatives()); 
+            }
+            // InternalRpySyntax.g:114:1: ( rule__RpyContent__Alternatives )
+            // InternalRpySyntax.g:114:2: rule__RpyContent__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__RpyContent__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyContentAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleRpyContent"
+
+
+    // $ANTLR start "entryRuleRpyNode"
+    // InternalRpySyntax.g:126:1: entryRuleRpyNode : ruleRpyNode EOF ;
+    public final void entryRuleRpyNode() throws RecognitionException {
+        try {
+            // InternalRpySyntax.g:127:1: ( ruleRpyNode EOF )
+            // InternalRpySyntax.g:128:1: ruleRpyNode EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyNodeRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleRpyNode();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyNodeRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleRpyNode"
+
+
+    // $ANTLR start "ruleRpyNode"
+    // InternalRpySyntax.g:135:1: ruleRpyNode : ( ( rule__RpyNode__Group__0 ) ) ;
+    public final void ruleRpyNode() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:139:2: ( ( ( rule__RpyNode__Group__0 ) ) )
+            // InternalRpySyntax.g:140:1: ( ( rule__RpyNode__Group__0 ) )
+            {
+            // InternalRpySyntax.g:140:1: ( ( rule__RpyNode__Group__0 ) )
+            // InternalRpySyntax.g:141:1: ( rule__RpyNode__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyNodeAccess().getGroup()); 
+            }
+            // InternalRpySyntax.g:142:1: ( rule__RpyNode__Group__0 )
+            // InternalRpySyntax.g:142:2: rule__RpyNode__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__RpyNode__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyNodeAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleRpyNode"
+
+
+    // $ANTLR start "entryRuleRpyFeature"
+    // InternalRpySyntax.g:154:1: entryRuleRpyFeature : ruleRpyFeature EOF ;
+    public final void entryRuleRpyFeature() throws RecognitionException {
+        try {
+            // InternalRpySyntax.g:155:1: ( ruleRpyFeature EOF )
+            // InternalRpySyntax.g:156:1: ruleRpyFeature EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyFeatureRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleRpyFeature();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyFeatureRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleRpyFeature"
+
+
+    // $ANTLR start "ruleRpyFeature"
+    // InternalRpySyntax.g:163:1: ruleRpyFeature : ( ( rule__RpyFeature__Group__0 ) ) ;
+    public final void ruleRpyFeature() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:167:2: ( ( ( rule__RpyFeature__Group__0 ) ) )
+            // InternalRpySyntax.g:168:1: ( ( rule__RpyFeature__Group__0 ) )
+            {
+            // InternalRpySyntax.g:168:1: ( ( rule__RpyFeature__Group__0 ) )
+            // InternalRpySyntax.g:169:1: ( rule__RpyFeature__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyFeatureAccess().getGroup()); 
+            }
+            // InternalRpySyntax.g:170:1: ( rule__RpyFeature__Group__0 )
+            // InternalRpySyntax.g:170:2: rule__RpyFeature__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__RpyFeature__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyFeatureAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleRpyFeature"
+
+
+    // $ANTLR start "entryRuleRpyFeatureValue"
+    // InternalRpySyntax.g:182:1: entryRuleRpyFeatureValue : ruleRpyFeatureValue EOF ;
+    public final void entryRuleRpyFeatureValue() throws RecognitionException {
+        try {
+            // InternalRpySyntax.g:183:1: ( ruleRpyFeatureValue EOF )
+            // InternalRpySyntax.g:184:1: ruleRpyFeatureValue EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyFeatureValueRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleRpyFeatureValue();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyFeatureValueRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleRpyFeatureValue"
+
+
+    // $ANTLR start "ruleRpyFeatureValue"
+    // InternalRpySyntax.g:191:1: ruleRpyFeatureValue : ( ( rule__RpyFeatureValue__Alternatives ) ) ;
+    public final void ruleRpyFeatureValue() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:195:2: ( ( ( rule__RpyFeatureValue__Alternatives ) ) )
+            // InternalRpySyntax.g:196:1: ( ( rule__RpyFeatureValue__Alternatives ) )
+            {
+            // InternalRpySyntax.g:196:1: ( ( rule__RpyFeatureValue__Alternatives ) )
+            // InternalRpySyntax.g:197:1: ( rule__RpyFeatureValue__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyFeatureValueAccess().getAlternatives()); 
+            }
+            // InternalRpySyntax.g:198:1: ( rule__RpyFeatureValue__Alternatives )
+            // InternalRpySyntax.g:198:2: rule__RpyFeatureValue__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__RpyFeatureValue__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyFeatureValueAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleRpyFeatureValue"
+
+
+    // $ANTLR start "entryRuleRpyNodeList"
+    // InternalRpySyntax.g:210:1: entryRuleRpyNodeList : ruleRpyNodeList EOF ;
+    public final void entryRuleRpyNodeList() throws RecognitionException {
+        try {
+            // InternalRpySyntax.g:211:1: ( ruleRpyNodeList EOF )
+            // InternalRpySyntax.g:212:1: ruleRpyNodeList EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyNodeListRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleRpyNodeList();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyNodeListRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleRpyNodeList"
+
+
+    // $ANTLR start "ruleRpyNodeList"
+    // InternalRpySyntax.g:219:1: ruleRpyNodeList : ( ( ( rule__RpyNodeList__ValuesAssignment ) ) ( ( rule__RpyNodeList__ValuesAssignment )* ) ) ;
+    public final void ruleRpyNodeList() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:223:2: ( ( ( ( rule__RpyNodeList__ValuesAssignment ) ) ( ( rule__RpyNodeList__ValuesAssignment )* ) ) )
+            // InternalRpySyntax.g:224:1: ( ( ( rule__RpyNodeList__ValuesAssignment ) ) ( ( rule__RpyNodeList__ValuesAssignment )* ) )
+            {
+            // InternalRpySyntax.g:224:1: ( ( ( rule__RpyNodeList__ValuesAssignment ) ) ( ( rule__RpyNodeList__ValuesAssignment )* ) )
+            // InternalRpySyntax.g:225:1: ( ( rule__RpyNodeList__ValuesAssignment ) ) ( ( rule__RpyNodeList__ValuesAssignment )* )
+            {
+            // InternalRpySyntax.g:225:1: ( ( rule__RpyNodeList__ValuesAssignment ) )
+            // InternalRpySyntax.g:226:1: ( rule__RpyNodeList__ValuesAssignment )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyNodeListAccess().getValuesAssignment()); 
+            }
+            // InternalRpySyntax.g:227:1: ( rule__RpyNodeList__ValuesAssignment )
+            // InternalRpySyntax.g:227:2: rule__RpyNodeList__ValuesAssignment
+            {
+            pushFollow(FOLLOW_3);
+            rule__RpyNodeList__ValuesAssignment();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyNodeListAccess().getValuesAssignment()); 
+            }
+
+            }
+
+            // InternalRpySyntax.g:230:1: ( ( rule__RpyNodeList__ValuesAssignment )* )
+            // InternalRpySyntax.g:231:1: ( rule__RpyNodeList__ValuesAssignment )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyNodeListAccess().getValuesAssignment()); 
+            }
+            // InternalRpySyntax.g:232:1: ( rule__RpyNodeList__ValuesAssignment )*
+            loop1:
+            do {
+                int alt1=2;
+                int LA1_0 = input.LA(1);
+
+                if ( (LA1_0==16) ) {
+                    int LA1_2 = input.LA(2);
+
+                    if ( (synpred1_InternalRpySyntax()) ) {
+                        alt1=1;
+                    }
+
+
+                }
+
+
+                switch (alt1) {
+            	case 1 :
+            	    // InternalRpySyntax.g:232:2: rule__RpyNodeList__ValuesAssignment
+            	    {
+            	    pushFollow(FOLLOW_3);
+            	    rule__RpyNodeList__ValuesAssignment();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop1;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyNodeListAccess().getValuesAssignment()); 
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleRpyNodeList"
+
+
+    // $ANTLR start "entryRuleSimpleValueList"
+    // InternalRpySyntax.g:245:1: entryRuleSimpleValueList : ruleSimpleValueList EOF ;
+    public final void entryRuleSimpleValueList() throws RecognitionException {
+        try {
+            // InternalRpySyntax.g:246:1: ( ruleSimpleValueList EOF )
+            // InternalRpySyntax.g:247:1: ruleSimpleValueList EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSimpleValueListRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleSimpleValueList();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSimpleValueListRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleSimpleValueList"
+
+
+    // $ANTLR start "ruleSimpleValueList"
+    // InternalRpySyntax.g:254:1: ruleSimpleValueList : ( ( rule__SimpleValueList__Group__0 ) ) ;
+    public final void ruleSimpleValueList() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:258:2: ( ( ( rule__SimpleValueList__Group__0 ) ) )
+            // InternalRpySyntax.g:259:1: ( ( rule__SimpleValueList__Group__0 ) )
+            {
+            // InternalRpySyntax.g:259:1: ( ( rule__SimpleValueList__Group__0 ) )
+            // InternalRpySyntax.g:260:1: ( rule__SimpleValueList__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSimpleValueListAccess().getGroup()); 
+            }
+            // InternalRpySyntax.g:261:1: ( rule__SimpleValueList__Group__0 )
+            // InternalRpySyntax.g:261:2: rule__SimpleValueList__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__SimpleValueList__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSimpleValueListAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleSimpleValueList"
+
+
+    // $ANTLR start "entryRuleRpySimpleValueElement"
+    // InternalRpySyntax.g:273:1: entryRuleRpySimpleValueElement : ruleRpySimpleValueElement EOF ;
+    public final void entryRuleRpySimpleValueElement() throws RecognitionException {
+        try {
+            // InternalRpySyntax.g:274:1: ( ruleRpySimpleValueElement EOF )
+            // InternalRpySyntax.g:275:1: ruleRpySimpleValueElement EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpySimpleValueElementRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleRpySimpleValueElement();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpySimpleValueElementRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleRpySimpleValueElement"
+
+
+    // $ANTLR start "ruleRpySimpleValueElement"
+    // InternalRpySyntax.g:282:1: ruleRpySimpleValueElement : ( ( rule__RpySimpleValueElement__Group__0 ) ) ;
+    public final void ruleRpySimpleValueElement() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:286:2: ( ( ( rule__RpySimpleValueElement__Group__0 ) ) )
+            // InternalRpySyntax.g:287:1: ( ( rule__RpySimpleValueElement__Group__0 ) )
+            {
+            // InternalRpySyntax.g:287:1: ( ( rule__RpySimpleValueElement__Group__0 ) )
+            // InternalRpySyntax.g:288:1: ( rule__RpySimpleValueElement__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpySimpleValueElementAccess().getGroup()); 
+            }
+            // InternalRpySyntax.g:289:1: ( rule__RpySimpleValueElement__Group__0 )
+            // InternalRpySyntax.g:289:2: rule__RpySimpleValueElement__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__RpySimpleValueElement__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpySimpleValueElementAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleRpySimpleValueElement"
+
+
+    // $ANTLR start "entryRuleVALUE_TERMINAL"
+    // InternalRpySyntax.g:301:1: entryRuleVALUE_TERMINAL : ruleVALUE_TERMINAL EOF ;
+    public final void entryRuleVALUE_TERMINAL() throws RecognitionException {
+        try {
+            // InternalRpySyntax.g:302:1: ( ruleVALUE_TERMINAL EOF )
+            // InternalRpySyntax.g:303:1: ruleVALUE_TERMINAL EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getVALUE_TERMINALRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleVALUE_TERMINAL();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getVALUE_TERMINALRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleVALUE_TERMINAL"
+
+
+    // $ANTLR start "ruleVALUE_TERMINAL"
+    // InternalRpySyntax.g:310:1: ruleVALUE_TERMINAL : ( ( rule__VALUE_TERMINAL__Alternatives ) ) ;
+    public final void ruleVALUE_TERMINAL() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:314:2: ( ( ( rule__VALUE_TERMINAL__Alternatives ) ) )
+            // InternalRpySyntax.g:315:1: ( ( rule__VALUE_TERMINAL__Alternatives ) )
+            {
+            // InternalRpySyntax.g:315:1: ( ( rule__VALUE_TERMINAL__Alternatives ) )
+            // InternalRpySyntax.g:316:1: ( rule__VALUE_TERMINAL__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getVALUE_TERMINALAccess().getAlternatives()); 
+            }
+            // InternalRpySyntax.g:317:1: ( rule__VALUE_TERMINAL__Alternatives )
+            // InternalRpySyntax.g:317:2: rule__VALUE_TERMINAL__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__VALUE_TERMINAL__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getVALUE_TERMINALAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleVALUE_TERMINAL"
+
+
+    // $ANTLR start "entryRuleRpyStringMap"
+    // InternalRpySyntax.g:329:1: entryRuleRpyStringMap : ruleRpyStringMap EOF ;
+    public final void entryRuleRpyStringMap() throws RecognitionException {
+        try {
+            // InternalRpySyntax.g:330:1: ( ruleRpyStringMap EOF )
+            // InternalRpySyntax.g:331:1: ruleRpyStringMap EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyStringMapRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleRpyStringMap();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyStringMapRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleRpyStringMap"
+
+
+    // $ANTLR start "ruleRpyStringMap"
+    // InternalRpySyntax.g:338:1: ruleRpyStringMap : ( ( ( rule__RpyStringMap__EntriesAssignment ) ) ( ( rule__RpyStringMap__EntriesAssignment )* ) ) ;
+    public final void ruleRpyStringMap() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:342:2: ( ( ( ( rule__RpyStringMap__EntriesAssignment ) ) ( ( rule__RpyStringMap__EntriesAssignment )* ) ) )
+            // InternalRpySyntax.g:343:1: ( ( ( rule__RpyStringMap__EntriesAssignment ) ) ( ( rule__RpyStringMap__EntriesAssignment )* ) )
+            {
+            // InternalRpySyntax.g:343:1: ( ( ( rule__RpyStringMap__EntriesAssignment ) ) ( ( rule__RpyStringMap__EntriesAssignment )* ) )
+            // InternalRpySyntax.g:344:1: ( ( rule__RpyStringMap__EntriesAssignment ) ) ( ( rule__RpyStringMap__EntriesAssignment )* )
+            {
+            // InternalRpySyntax.g:344:1: ( ( rule__RpyStringMap__EntriesAssignment ) )
+            // InternalRpySyntax.g:345:1: ( rule__RpyStringMap__EntriesAssignment )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyStringMapAccess().getEntriesAssignment()); 
+            }
+            // InternalRpySyntax.g:346:1: ( rule__RpyStringMap__EntriesAssignment )
+            // InternalRpySyntax.g:346:2: rule__RpyStringMap__EntriesAssignment
+            {
+            pushFollow(FOLLOW_4);
+            rule__RpyStringMap__EntriesAssignment();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyStringMapAccess().getEntriesAssignment()); 
+            }
+
+            }
+
+            // InternalRpySyntax.g:349:1: ( ( rule__RpyStringMap__EntriesAssignment )* )
+            // InternalRpySyntax.g:350:1: ( rule__RpyStringMap__EntriesAssignment )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyStringMapAccess().getEntriesAssignment()); 
+            }
+            // InternalRpySyntax.g:351:1: ( rule__RpyStringMap__EntriesAssignment )*
+            loop2:
+            do {
+                int alt2=2;
+                int LA2_0 = input.LA(1);
+
+                if ( (LA2_0==RULE_STRING) ) {
+                    alt2=1;
+                }
+
+
+                switch (alt2) {
+            	case 1 :
+            	    // InternalRpySyntax.g:351:2: rule__RpyStringMap__EntriesAssignment
+            	    {
+            	    pushFollow(FOLLOW_4);
+            	    rule__RpyStringMap__EntriesAssignment();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop2;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyStringMapAccess().getEntriesAssignment()); 
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleRpyStringMap"
+
+
+    // $ANTLR start "entryRuleRpyStringMapEntry"
+    // InternalRpySyntax.g:364:1: entryRuleRpyStringMapEntry : ruleRpyStringMapEntry EOF ;
+    public final void entryRuleRpyStringMapEntry() throws RecognitionException {
+        try {
+            // InternalRpySyntax.g:365:1: ( ruleRpyStringMapEntry EOF )
+            // InternalRpySyntax.g:366:1: ruleRpyStringMapEntry EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyStringMapEntryRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleRpyStringMapEntry();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyStringMapEntryRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleRpyStringMapEntry"
+
+
+    // $ANTLR start "ruleRpyStringMapEntry"
+    // InternalRpySyntax.g:373:1: ruleRpyStringMapEntry : ( ( rule__RpyStringMapEntry__Group__0 ) ) ;
+    public final void ruleRpyStringMapEntry() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:377:2: ( ( ( rule__RpyStringMapEntry__Group__0 ) ) )
+            // InternalRpySyntax.g:378:1: ( ( rule__RpyStringMapEntry__Group__0 ) )
+            {
+            // InternalRpySyntax.g:378:1: ( ( rule__RpyStringMapEntry__Group__0 ) )
+            // InternalRpySyntax.g:379:1: ( rule__RpyStringMapEntry__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyStringMapEntryAccess().getGroup()); 
+            }
+            // InternalRpySyntax.g:380:1: ( rule__RpyStringMapEntry__Group__0 )
+            // InternalRpySyntax.g:380:2: rule__RpyStringMapEntry__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__RpyStringMapEntry__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyStringMapEntryAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleRpyStringMapEntry"
+
+
+    // $ANTLR start "rule__RpyContent__Alternatives"
+    // InternalRpySyntax.g:392:1: rule__RpyContent__Alternatives : ( ( ruleRpyNode ) | ( ruleRpyFeature ) );
+    public final void rule__RpyContent__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:396:1: ( ( ruleRpyNode ) | ( ruleRpyFeature ) )
+            int alt3=2;
+            int LA3_0 = input.LA(1);
+
+            if ( (LA3_0==16) ) {
+                alt3=1;
+            }
+            else if ( (LA3_0==18) ) {
+                alt3=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 3, 0, input);
+
+                throw nvae;
+            }
+            switch (alt3) {
+                case 1 :
+                    // InternalRpySyntax.g:397:1: ( ruleRpyNode )
+                    {
+                    // InternalRpySyntax.g:397:1: ( ruleRpyNode )
+                    // InternalRpySyntax.g:398:1: ruleRpyNode
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getRpyContentAccess().getRpyNodeParserRuleCall_0()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleRpyNode();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getRpyContentAccess().getRpyNodeParserRuleCall_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalRpySyntax.g:403:6: ( ruleRpyFeature )
+                    {
+                    // InternalRpySyntax.g:403:6: ( ruleRpyFeature )
+                    // InternalRpySyntax.g:404:1: ruleRpyFeature
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getRpyContentAccess().getRpyFeatureParserRuleCall_1()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleRpyFeature();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getRpyContentAccess().getRpyFeatureParserRuleCall_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyContent__Alternatives"
+
+
+    // $ANTLR start "rule__RpyFeatureValue__Alternatives"
+    // InternalRpySyntax.g:414:1: rule__RpyFeatureValue__Alternatives : ( ( ruleSimpleValueList ) | ( ruleRpyNodeList ) | ( ruleRpyStringMap ) );
+    public final void rule__RpyFeatureValue__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:418:1: ( ( ruleSimpleValueList ) | ( ruleRpyNodeList ) | ( ruleRpyStringMap ) )
+            int alt4=3;
+            alt4 = dfa4.predict(input);
+            switch (alt4) {
+                case 1 :
+                    // InternalRpySyntax.g:419:1: ( ruleSimpleValueList )
+                    {
+                    // InternalRpySyntax.g:419:1: ( ruleSimpleValueList )
+                    // InternalRpySyntax.g:420:1: ruleSimpleValueList
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getRpyFeatureValueAccess().getSimpleValueListParserRuleCall_0()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleSimpleValueList();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getRpyFeatureValueAccess().getSimpleValueListParserRuleCall_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalRpySyntax.g:425:6: ( ruleRpyNodeList )
+                    {
+                    // InternalRpySyntax.g:425:6: ( ruleRpyNodeList )
+                    // InternalRpySyntax.g:426:1: ruleRpyNodeList
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getRpyFeatureValueAccess().getRpyNodeListParserRuleCall_1()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleRpyNodeList();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getRpyFeatureValueAccess().getRpyNodeListParserRuleCall_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalRpySyntax.g:431:6: ( ruleRpyStringMap )
+                    {
+                    // InternalRpySyntax.g:431:6: ( ruleRpyStringMap )
+                    // InternalRpySyntax.g:432:1: ruleRpyStringMap
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getRpyFeatureValueAccess().getRpyStringMapParserRuleCall_2()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleRpyStringMap();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getRpyFeatureValueAccess().getRpyStringMapParserRuleCall_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyFeatureValue__Alternatives"
+
+
+    // $ANTLR start "rule__VALUE_TERMINAL__Alternatives"
+    // InternalRpySyntax.g:442:1: rule__VALUE_TERMINAL__Alternatives : ( ( RULE_STRING ) | ( RULE_ID ) | ( RULE_RPY_GUID ) | ( RULE_INT ) | ( RULE_RPY_TIME ) | ( RULE_RPY_REAL ) );
+    public final void rule__VALUE_TERMINAL__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:446:1: ( ( RULE_STRING ) | ( RULE_ID ) | ( RULE_RPY_GUID ) | ( RULE_INT ) | ( RULE_RPY_TIME ) | ( RULE_RPY_REAL ) )
+            int alt5=6;
+            switch ( input.LA(1) ) {
+            case RULE_STRING:
+                {
+                alt5=1;
+                }
+                break;
+            case RULE_ID:
+                {
+                alt5=2;
+                }
+                break;
+            case RULE_RPY_GUID:
+                {
+                alt5=3;
+                }
+                break;
+            case RULE_INT:
+                {
+                alt5=4;
+                }
+                break;
+            case RULE_RPY_TIME:
+                {
+                alt5=5;
+                }
+                break;
+            case RULE_RPY_REAL:
+                {
+                alt5=6;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 5, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt5) {
+                case 1 :
+                    // InternalRpySyntax.g:447:1: ( RULE_STRING )
+                    {
+                    // InternalRpySyntax.g:447:1: ( RULE_STRING )
+                    // InternalRpySyntax.g:448:1: RULE_STRING
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getVALUE_TERMINALAccess().getSTRINGTerminalRuleCall_0()); 
+                    }
+                    match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getVALUE_TERMINALAccess().getSTRINGTerminalRuleCall_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalRpySyntax.g:453:6: ( RULE_ID )
+                    {
+                    // InternalRpySyntax.g:453:6: ( RULE_ID )
+                    // InternalRpySyntax.g:454:1: RULE_ID
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getVALUE_TERMINALAccess().getIDTerminalRuleCall_1()); 
+                    }
+                    match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getVALUE_TERMINALAccess().getIDTerminalRuleCall_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalRpySyntax.g:459:6: ( RULE_RPY_GUID )
+                    {
+                    // InternalRpySyntax.g:459:6: ( RULE_RPY_GUID )
+                    // InternalRpySyntax.g:460:1: RULE_RPY_GUID
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getVALUE_TERMINALAccess().getRPY_GUIDTerminalRuleCall_2()); 
+                    }
+                    match(input,RULE_RPY_GUID,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getVALUE_TERMINALAccess().getRPY_GUIDTerminalRuleCall_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalRpySyntax.g:465:6: ( RULE_INT )
+                    {
+                    // InternalRpySyntax.g:465:6: ( RULE_INT )
+                    // InternalRpySyntax.g:466:1: RULE_INT
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getVALUE_TERMINALAccess().getINTTerminalRuleCall_3()); 
+                    }
+                    match(input,RULE_INT,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getVALUE_TERMINALAccess().getINTTerminalRuleCall_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalRpySyntax.g:471:6: ( RULE_RPY_TIME )
+                    {
+                    // InternalRpySyntax.g:471:6: ( RULE_RPY_TIME )
+                    // InternalRpySyntax.g:472:1: RULE_RPY_TIME
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getVALUE_TERMINALAccess().getRPY_TIMETerminalRuleCall_4()); 
+                    }
+                    match(input,RULE_RPY_TIME,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getVALUE_TERMINALAccess().getRPY_TIMETerminalRuleCall_4()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // InternalRpySyntax.g:477:6: ( RULE_RPY_REAL )
+                    {
+                    // InternalRpySyntax.g:477:6: ( RULE_RPY_REAL )
+                    // InternalRpySyntax.g:478:1: RULE_RPY_REAL
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getVALUE_TERMINALAccess().getRPY_REALTerminalRuleCall_5()); 
+                    }
+                    match(input,RULE_RPY_REAL,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getVALUE_TERMINALAccess().getRPY_REALTerminalRuleCall_5()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__VALUE_TERMINAL__Alternatives"
+
+
+    // $ANTLR start "rule__RpyFile__Group__0"
+    // InternalRpySyntax.g:490:1: rule__RpyFile__Group__0 : rule__RpyFile__Group__0__Impl rule__RpyFile__Group__1 ;
+    public final void rule__RpyFile__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:494:1: ( rule__RpyFile__Group__0__Impl rule__RpyFile__Group__1 )
+            // InternalRpySyntax.g:495:2: rule__RpyFile__Group__0__Impl rule__RpyFile__Group__1
+            {
+            pushFollow(FOLLOW_5);
+            rule__RpyFile__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__RpyFile__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyFile__Group__0"
+
+
+    // $ANTLR start "rule__RpyFile__Group__0__Impl"
+    // InternalRpySyntax.g:502:1: rule__RpyFile__Group__0__Impl : ( 'I-Logix-RPY-Archive' ) ;
+    public final void rule__RpyFile__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:506:1: ( ( 'I-Logix-RPY-Archive' ) )
+            // InternalRpySyntax.g:507:1: ( 'I-Logix-RPY-Archive' )
+            {
+            // InternalRpySyntax.g:507:1: ( 'I-Logix-RPY-Archive' )
+            // InternalRpySyntax.g:508:1: 'I-Logix-RPY-Archive'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyFileAccess().getILogixRPYArchiveKeyword_0()); 
+            }
+            match(input,15,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyFileAccess().getILogixRPYArchiveKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyFile__Group__0__Impl"
+
+
+    // $ANTLR start "rule__RpyFile__Group__1"
+    // InternalRpySyntax.g:521:1: rule__RpyFile__Group__1 : rule__RpyFile__Group__1__Impl rule__RpyFile__Group__2 ;
+    public final void rule__RpyFile__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:525:1: ( rule__RpyFile__Group__1__Impl rule__RpyFile__Group__2 )
+            // InternalRpySyntax.g:526:2: rule__RpyFile__Group__1__Impl rule__RpyFile__Group__2
+            {
+            pushFollow(FOLLOW_6);
+            rule__RpyFile__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__RpyFile__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyFile__Group__1"
+
+
+    // $ANTLR start "rule__RpyFile__Group__1__Impl"
+    // InternalRpySyntax.g:533:1: rule__RpyFile__Group__1__Impl : ( ( rule__RpyFile__VersionAssignment_1 ) ) ;
+    public final void rule__RpyFile__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:537:1: ( ( ( rule__RpyFile__VersionAssignment_1 ) ) )
+            // InternalRpySyntax.g:538:1: ( ( rule__RpyFile__VersionAssignment_1 ) )
+            {
+            // InternalRpySyntax.g:538:1: ( ( rule__RpyFile__VersionAssignment_1 ) )
+            // InternalRpySyntax.g:539:1: ( rule__RpyFile__VersionAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyFileAccess().getVersionAssignment_1()); 
+            }
+            // InternalRpySyntax.g:540:1: ( rule__RpyFile__VersionAssignment_1 )
+            // InternalRpySyntax.g:540:2: rule__RpyFile__VersionAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__RpyFile__VersionAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyFileAccess().getVersionAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyFile__Group__1__Impl"
+
+
+    // $ANTLR start "rule__RpyFile__Group__2"
+    // InternalRpySyntax.g:550:1: rule__RpyFile__Group__2 : rule__RpyFile__Group__2__Impl ;
+    public final void rule__RpyFile__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:554:1: ( rule__RpyFile__Group__2__Impl )
+            // InternalRpySyntax.g:555:2: rule__RpyFile__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__RpyFile__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyFile__Group__2"
+
+
+    // $ANTLR start "rule__RpyFile__Group__2__Impl"
+    // InternalRpySyntax.g:561:1: rule__RpyFile__Group__2__Impl : ( ( rule__RpyFile__ContentsAssignment_2 )* ) ;
+    public final void rule__RpyFile__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:565:1: ( ( ( rule__RpyFile__ContentsAssignment_2 )* ) )
+            // InternalRpySyntax.g:566:1: ( ( rule__RpyFile__ContentsAssignment_2 )* )
+            {
+            // InternalRpySyntax.g:566:1: ( ( rule__RpyFile__ContentsAssignment_2 )* )
+            // InternalRpySyntax.g:567:1: ( rule__RpyFile__ContentsAssignment_2 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyFileAccess().getContentsAssignment_2()); 
+            }
+            // InternalRpySyntax.g:568:1: ( rule__RpyFile__ContentsAssignment_2 )*
+            loop6:
+            do {
+                int alt6=2;
+                int LA6_0 = input.LA(1);
+
+                if ( (LA6_0==16||LA6_0==18) ) {
+                    alt6=1;
+                }
+
+
+                switch (alt6) {
+            	case 1 :
+            	    // InternalRpySyntax.g:568:2: rule__RpyFile__ContentsAssignment_2
+            	    {
+            	    pushFollow(FOLLOW_7);
+            	    rule__RpyFile__ContentsAssignment_2();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop6;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyFileAccess().getContentsAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyFile__Group__2__Impl"
+
+
+    // $ANTLR start "rule__RpyNode__Group__0"
+    // InternalRpySyntax.g:584:1: rule__RpyNode__Group__0 : rule__RpyNode__Group__0__Impl rule__RpyNode__Group__1 ;
+    public final void rule__RpyNode__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:588:1: ( rule__RpyNode__Group__0__Impl rule__RpyNode__Group__1 )
+            // InternalRpySyntax.g:589:2: rule__RpyNode__Group__0__Impl rule__RpyNode__Group__1
+            {
+            pushFollow(FOLLOW_8);
+            rule__RpyNode__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__RpyNode__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyNode__Group__0"
+
+
+    // $ANTLR start "rule__RpyNode__Group__0__Impl"
+    // InternalRpySyntax.g:596:1: rule__RpyNode__Group__0__Impl : ( '{' ) ;
+    public final void rule__RpyNode__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:600:1: ( ( '{' ) )
+            // InternalRpySyntax.g:601:1: ( '{' )
+            {
+            // InternalRpySyntax.g:601:1: ( '{' )
+            // InternalRpySyntax.g:602:1: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyNodeAccess().getLeftCurlyBracketKeyword_0()); 
+            }
+            match(input,16,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyNodeAccess().getLeftCurlyBracketKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyNode__Group__0__Impl"
+
+
+    // $ANTLR start "rule__RpyNode__Group__1"
+    // InternalRpySyntax.g:615:1: rule__RpyNode__Group__1 : rule__RpyNode__Group__1__Impl rule__RpyNode__Group__2 ;
+    public final void rule__RpyNode__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:619:1: ( rule__RpyNode__Group__1__Impl rule__RpyNode__Group__2 )
+            // InternalRpySyntax.g:620:2: rule__RpyNode__Group__1__Impl rule__RpyNode__Group__2
+            {
+            pushFollow(FOLLOW_6);
+            rule__RpyNode__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__RpyNode__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyNode__Group__1"
+
+
+    // $ANTLR start "rule__RpyNode__Group__1__Impl"
+    // InternalRpySyntax.g:627:1: rule__RpyNode__Group__1__Impl : ( ( rule__RpyNode__NameAssignment_1 ) ) ;
+    public final void rule__RpyNode__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:631:1: ( ( ( rule__RpyNode__NameAssignment_1 ) ) )
+            // InternalRpySyntax.g:632:1: ( ( rule__RpyNode__NameAssignment_1 ) )
+            {
+            // InternalRpySyntax.g:632:1: ( ( rule__RpyNode__NameAssignment_1 ) )
+            // InternalRpySyntax.g:633:1: ( rule__RpyNode__NameAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyNodeAccess().getNameAssignment_1()); 
+            }
+            // InternalRpySyntax.g:634:1: ( rule__RpyNode__NameAssignment_1 )
+            // InternalRpySyntax.g:634:2: rule__RpyNode__NameAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__RpyNode__NameAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyNodeAccess().getNameAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyNode__Group__1__Impl"
+
+
+    // $ANTLR start "rule__RpyNode__Group__2"
+    // InternalRpySyntax.g:644:1: rule__RpyNode__Group__2 : rule__RpyNode__Group__2__Impl rule__RpyNode__Group__3 ;
+    public final void rule__RpyNode__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:648:1: ( rule__RpyNode__Group__2__Impl rule__RpyNode__Group__3 )
+            // InternalRpySyntax.g:649:2: rule__RpyNode__Group__2__Impl rule__RpyNode__Group__3
+            {
+            pushFollow(FOLLOW_9);
+            rule__RpyNode__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__RpyNode__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyNode__Group__2"
+
+
+    // $ANTLR start "rule__RpyNode__Group__2__Impl"
+    // InternalRpySyntax.g:656:1: rule__RpyNode__Group__2__Impl : ( ( ( rule__RpyNode__ContentsAssignment_2 ) ) ( ( rule__RpyNode__ContentsAssignment_2 )* ) ) ;
+    public final void rule__RpyNode__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:660:1: ( ( ( ( rule__RpyNode__ContentsAssignment_2 ) ) ( ( rule__RpyNode__ContentsAssignment_2 )* ) ) )
+            // InternalRpySyntax.g:661:1: ( ( ( rule__RpyNode__ContentsAssignment_2 ) ) ( ( rule__RpyNode__ContentsAssignment_2 )* ) )
+            {
+            // InternalRpySyntax.g:661:1: ( ( ( rule__RpyNode__ContentsAssignment_2 ) ) ( ( rule__RpyNode__ContentsAssignment_2 )* ) )
+            // InternalRpySyntax.g:662:1: ( ( rule__RpyNode__ContentsAssignment_2 ) ) ( ( rule__RpyNode__ContentsAssignment_2 )* )
+            {
+            // InternalRpySyntax.g:662:1: ( ( rule__RpyNode__ContentsAssignment_2 ) )
+            // InternalRpySyntax.g:663:1: ( rule__RpyNode__ContentsAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyNodeAccess().getContentsAssignment_2()); 
+            }
+            // InternalRpySyntax.g:664:1: ( rule__RpyNode__ContentsAssignment_2 )
+            // InternalRpySyntax.g:664:2: rule__RpyNode__ContentsAssignment_2
+            {
+            pushFollow(FOLLOW_7);
+            rule__RpyNode__ContentsAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyNodeAccess().getContentsAssignment_2()); 
+            }
+
+            }
+
+            // InternalRpySyntax.g:667:1: ( ( rule__RpyNode__ContentsAssignment_2 )* )
+            // InternalRpySyntax.g:668:1: ( rule__RpyNode__ContentsAssignment_2 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyNodeAccess().getContentsAssignment_2()); 
+            }
+            // InternalRpySyntax.g:669:1: ( rule__RpyNode__ContentsAssignment_2 )*
+            loop7:
+            do {
+                int alt7=2;
+                int LA7_0 = input.LA(1);
+
+                if ( (LA7_0==16||LA7_0==18) ) {
+                    alt7=1;
+                }
+
+
+                switch (alt7) {
+            	case 1 :
+            	    // InternalRpySyntax.g:669:2: rule__RpyNode__ContentsAssignment_2
+            	    {
+            	    pushFollow(FOLLOW_7);
+            	    rule__RpyNode__ContentsAssignment_2();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop7;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyNodeAccess().getContentsAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyNode__Group__2__Impl"
+
+
+    // $ANTLR start "rule__RpyNode__Group__3"
+    // InternalRpySyntax.g:680:1: rule__RpyNode__Group__3 : rule__RpyNode__Group__3__Impl ;
+    public final void rule__RpyNode__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:684:1: ( rule__RpyNode__Group__3__Impl )
+            // InternalRpySyntax.g:685:2: rule__RpyNode__Group__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__RpyNode__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyNode__Group__3"
+
+
+    // $ANTLR start "rule__RpyNode__Group__3__Impl"
+    // InternalRpySyntax.g:691:1: rule__RpyNode__Group__3__Impl : ( '}' ) ;
+    public final void rule__RpyNode__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:695:1: ( ( '}' ) )
+            // InternalRpySyntax.g:696:1: ( '}' )
+            {
+            // InternalRpySyntax.g:696:1: ( '}' )
+            // InternalRpySyntax.g:697:1: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyNodeAccess().getRightCurlyBracketKeyword_3()); 
+            }
+            match(input,17,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyNodeAccess().getRightCurlyBracketKeyword_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyNode__Group__3__Impl"
+
+
+    // $ANTLR start "rule__RpyFeature__Group__0"
+    // InternalRpySyntax.g:718:1: rule__RpyFeature__Group__0 : rule__RpyFeature__Group__0__Impl rule__RpyFeature__Group__1 ;
+    public final void rule__RpyFeature__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:722:1: ( rule__RpyFeature__Group__0__Impl rule__RpyFeature__Group__1 )
+            // InternalRpySyntax.g:723:2: rule__RpyFeature__Group__0__Impl rule__RpyFeature__Group__1
+            {
+            pushFollow(FOLLOW_8);
+            rule__RpyFeature__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__RpyFeature__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyFeature__Group__0"
+
+
+    // $ANTLR start "rule__RpyFeature__Group__0__Impl"
+    // InternalRpySyntax.g:730:1: rule__RpyFeature__Group__0__Impl : ( '-' ) ;
+    public final void rule__RpyFeature__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:734:1: ( ( '-' ) )
+            // InternalRpySyntax.g:735:1: ( '-' )
+            {
+            // InternalRpySyntax.g:735:1: ( '-' )
+            // InternalRpySyntax.g:736:1: '-'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyFeatureAccess().getHyphenMinusKeyword_0()); 
+            }
+            match(input,18,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyFeatureAccess().getHyphenMinusKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyFeature__Group__0__Impl"
+
+
+    // $ANTLR start "rule__RpyFeature__Group__1"
+    // InternalRpySyntax.g:749:1: rule__RpyFeature__Group__1 : rule__RpyFeature__Group__1__Impl rule__RpyFeature__Group__2 ;
+    public final void rule__RpyFeature__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:753:1: ( rule__RpyFeature__Group__1__Impl rule__RpyFeature__Group__2 )
+            // InternalRpySyntax.g:754:2: rule__RpyFeature__Group__1__Impl rule__RpyFeature__Group__2
+            {
+            pushFollow(FOLLOW_10);
+            rule__RpyFeature__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__RpyFeature__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyFeature__Group__1"
+
+
+    // $ANTLR start "rule__RpyFeature__Group__1__Impl"
+    // InternalRpySyntax.g:761:1: rule__RpyFeature__Group__1__Impl : ( ( rule__RpyFeature__NameAssignment_1 ) ) ;
+    public final void rule__RpyFeature__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:765:1: ( ( ( rule__RpyFeature__NameAssignment_1 ) ) )
+            // InternalRpySyntax.g:766:1: ( ( rule__RpyFeature__NameAssignment_1 ) )
+            {
+            // InternalRpySyntax.g:766:1: ( ( rule__RpyFeature__NameAssignment_1 ) )
+            // InternalRpySyntax.g:767:1: ( rule__RpyFeature__NameAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyFeatureAccess().getNameAssignment_1()); 
+            }
+            // InternalRpySyntax.g:768:1: ( rule__RpyFeature__NameAssignment_1 )
+            // InternalRpySyntax.g:768:2: rule__RpyFeature__NameAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__RpyFeature__NameAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyFeatureAccess().getNameAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyFeature__Group__1__Impl"
+
+
+    // $ANTLR start "rule__RpyFeature__Group__2"
+    // InternalRpySyntax.g:778:1: rule__RpyFeature__Group__2 : rule__RpyFeature__Group__2__Impl rule__RpyFeature__Group__3 ;
+    public final void rule__RpyFeature__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:782:1: ( rule__RpyFeature__Group__2__Impl rule__RpyFeature__Group__3 )
+            // InternalRpySyntax.g:783:2: rule__RpyFeature__Group__2__Impl rule__RpyFeature__Group__3
+            {
+            pushFollow(FOLLOW_11);
+            rule__RpyFeature__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__RpyFeature__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyFeature__Group__2"
+
+
+    // $ANTLR start "rule__RpyFeature__Group__2__Impl"
+    // InternalRpySyntax.g:790:1: rule__RpyFeature__Group__2__Impl : ( '=' ) ;
+    public final void rule__RpyFeature__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:794:1: ( ( '=' ) )
+            // InternalRpySyntax.g:795:1: ( '=' )
+            {
+            // InternalRpySyntax.g:795:1: ( '=' )
+            // InternalRpySyntax.g:796:1: '='
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyFeatureAccess().getEqualsSignKeyword_2()); 
+            }
+            match(input,19,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyFeatureAccess().getEqualsSignKeyword_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyFeature__Group__2__Impl"
+
+
+    // $ANTLR start "rule__RpyFeature__Group__3"
+    // InternalRpySyntax.g:809:1: rule__RpyFeature__Group__3 : rule__RpyFeature__Group__3__Impl ;
+    public final void rule__RpyFeature__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:813:1: ( rule__RpyFeature__Group__3__Impl )
+            // InternalRpySyntax.g:814:2: rule__RpyFeature__Group__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__RpyFeature__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyFeature__Group__3"
+
+
+    // $ANTLR start "rule__RpyFeature__Group__3__Impl"
+    // InternalRpySyntax.g:820:1: rule__RpyFeature__Group__3__Impl : ( ( rule__RpyFeature__ValueAssignment_3 ) ) ;
+    public final void rule__RpyFeature__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:824:1: ( ( ( rule__RpyFeature__ValueAssignment_3 ) ) )
+            // InternalRpySyntax.g:825:1: ( ( rule__RpyFeature__ValueAssignment_3 ) )
+            {
+            // InternalRpySyntax.g:825:1: ( ( rule__RpyFeature__ValueAssignment_3 ) )
+            // InternalRpySyntax.g:826:1: ( rule__RpyFeature__ValueAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyFeatureAccess().getValueAssignment_3()); 
+            }
+            // InternalRpySyntax.g:827:1: ( rule__RpyFeature__ValueAssignment_3 )
+            // InternalRpySyntax.g:827:2: rule__RpyFeature__ValueAssignment_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__RpyFeature__ValueAssignment_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyFeatureAccess().getValueAssignment_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyFeature__Group__3__Impl"
+
+
+    // $ANTLR start "rule__SimpleValueList__Group__0"
+    // InternalRpySyntax.g:845:1: rule__SimpleValueList__Group__0 : rule__SimpleValueList__Group__0__Impl rule__SimpleValueList__Group__1 ;
+    public final void rule__SimpleValueList__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:849:1: ( rule__SimpleValueList__Group__0__Impl rule__SimpleValueList__Group__1 )
+            // InternalRpySyntax.g:850:2: rule__SimpleValueList__Group__0__Impl rule__SimpleValueList__Group__1
+            {
+            pushFollow(FOLLOW_12);
+            rule__SimpleValueList__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__SimpleValueList__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SimpleValueList__Group__0"
+
+
+    // $ANTLR start "rule__SimpleValueList__Group__0__Impl"
+    // InternalRpySyntax.g:857:1: rule__SimpleValueList__Group__0__Impl : ( () ) ;
+    public final void rule__SimpleValueList__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:861:1: ( ( () ) )
+            // InternalRpySyntax.g:862:1: ( () )
+            {
+            // InternalRpySyntax.g:862:1: ( () )
+            // InternalRpySyntax.g:863:1: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSimpleValueListAccess().getSimpleValueListAction_0()); 
+            }
+            // InternalRpySyntax.g:864:1: ()
+            // InternalRpySyntax.g:866:1: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSimpleValueListAccess().getSimpleValueListAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SimpleValueList__Group__0__Impl"
+
+
+    // $ANTLR start "rule__SimpleValueList__Group__1"
+    // InternalRpySyntax.g:876:1: rule__SimpleValueList__Group__1 : rule__SimpleValueList__Group__1__Impl rule__SimpleValueList__Group__2 ;
+    public final void rule__SimpleValueList__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:880:1: ( rule__SimpleValueList__Group__1__Impl rule__SimpleValueList__Group__2 )
+            // InternalRpySyntax.g:881:2: rule__SimpleValueList__Group__1__Impl rule__SimpleValueList__Group__2
+            {
+            pushFollow(FOLLOW_12);
+            rule__SimpleValueList__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__SimpleValueList__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SimpleValueList__Group__1"
+
+
+    // $ANTLR start "rule__SimpleValueList__Group__1__Impl"
+    // InternalRpySyntax.g:888:1: rule__SimpleValueList__Group__1__Impl : ( ( rule__SimpleValueList__IsOldIDAssignment_1 )? ) ;
+    public final void rule__SimpleValueList__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:892:1: ( ( ( rule__SimpleValueList__IsOldIDAssignment_1 )? ) )
+            // InternalRpySyntax.g:893:1: ( ( rule__SimpleValueList__IsOldIDAssignment_1 )? )
+            {
+            // InternalRpySyntax.g:893:1: ( ( rule__SimpleValueList__IsOldIDAssignment_1 )? )
+            // InternalRpySyntax.g:894:1: ( rule__SimpleValueList__IsOldIDAssignment_1 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSimpleValueListAccess().getIsOldIDAssignment_1()); 
+            }
+            // InternalRpySyntax.g:895:1: ( rule__SimpleValueList__IsOldIDAssignment_1 )?
+            int alt8=2;
+            int LA8_0 = input.LA(1);
+
+            if ( (LA8_0==21) ) {
+                alt8=1;
+            }
+            switch (alt8) {
+                case 1 :
+                    // InternalRpySyntax.g:895:2: rule__SimpleValueList__IsOldIDAssignment_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__SimpleValueList__IsOldIDAssignment_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSimpleValueListAccess().getIsOldIDAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SimpleValueList__Group__1__Impl"
+
+
+    // $ANTLR start "rule__SimpleValueList__Group__2"
+    // InternalRpySyntax.g:905:1: rule__SimpleValueList__Group__2 : rule__SimpleValueList__Group__2__Impl rule__SimpleValueList__Group__3 ;
+    public final void rule__SimpleValueList__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:909:1: ( rule__SimpleValueList__Group__2__Impl rule__SimpleValueList__Group__3 )
+            // InternalRpySyntax.g:910:2: rule__SimpleValueList__Group__2__Impl rule__SimpleValueList__Group__3
+            {
+            pushFollow(FOLLOW_12);
+            rule__SimpleValueList__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__SimpleValueList__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SimpleValueList__Group__2"
+
+
+    // $ANTLR start "rule__SimpleValueList__Group__2__Impl"
+    // InternalRpySyntax.g:917:1: rule__SimpleValueList__Group__2__Impl : ( ( rule__SimpleValueList__IsGUIDAssignment_2 )? ) ;
+    public final void rule__SimpleValueList__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:921:1: ( ( ( rule__SimpleValueList__IsGUIDAssignment_2 )? ) )
+            // InternalRpySyntax.g:922:1: ( ( rule__SimpleValueList__IsGUIDAssignment_2 )? )
+            {
+            // InternalRpySyntax.g:922:1: ( ( rule__SimpleValueList__IsGUIDAssignment_2 )? )
+            // InternalRpySyntax.g:923:1: ( rule__SimpleValueList__IsGUIDAssignment_2 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSimpleValueListAccess().getIsGUIDAssignment_2()); 
+            }
+            // InternalRpySyntax.g:924:1: ( rule__SimpleValueList__IsGUIDAssignment_2 )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0==22) ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // InternalRpySyntax.g:924:2: rule__SimpleValueList__IsGUIDAssignment_2
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__SimpleValueList__IsGUIDAssignment_2();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSimpleValueListAccess().getIsGUIDAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SimpleValueList__Group__2__Impl"
+
+
+    // $ANTLR start "rule__SimpleValueList__Group__3"
+    // InternalRpySyntax.g:934:1: rule__SimpleValueList__Group__3 : rule__SimpleValueList__Group__3__Impl ;
+    public final void rule__SimpleValueList__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:938:1: ( rule__SimpleValueList__Group__3__Impl )
+            // InternalRpySyntax.g:939:2: rule__SimpleValueList__Group__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__SimpleValueList__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SimpleValueList__Group__3"
+
+
+    // $ANTLR start "rule__SimpleValueList__Group__3__Impl"
+    // InternalRpySyntax.g:945:1: rule__SimpleValueList__Group__3__Impl : ( ( ( rule__SimpleValueList__ValueElementsAssignment_3 ) ) ( ( rule__SimpleValueList__ValueElementsAssignment_3 )* ) ) ;
+    public final void rule__SimpleValueList__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:949:1: ( ( ( ( rule__SimpleValueList__ValueElementsAssignment_3 ) ) ( ( rule__SimpleValueList__ValueElementsAssignment_3 )* ) ) )
+            // InternalRpySyntax.g:950:1: ( ( ( rule__SimpleValueList__ValueElementsAssignment_3 ) ) ( ( rule__SimpleValueList__ValueElementsAssignment_3 )* ) )
+            {
+            // InternalRpySyntax.g:950:1: ( ( ( rule__SimpleValueList__ValueElementsAssignment_3 ) ) ( ( rule__SimpleValueList__ValueElementsAssignment_3 )* ) )
+            // InternalRpySyntax.g:951:1: ( ( rule__SimpleValueList__ValueElementsAssignment_3 ) ) ( ( rule__SimpleValueList__ValueElementsAssignment_3 )* )
+            {
+            // InternalRpySyntax.g:951:1: ( ( rule__SimpleValueList__ValueElementsAssignment_3 ) )
+            // InternalRpySyntax.g:952:1: ( rule__SimpleValueList__ValueElementsAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSimpleValueListAccess().getValueElementsAssignment_3()); 
+            }
+            // InternalRpySyntax.g:953:1: ( rule__SimpleValueList__ValueElementsAssignment_3 )
+            // InternalRpySyntax.g:953:2: rule__SimpleValueList__ValueElementsAssignment_3
+            {
+            pushFollow(FOLLOW_13);
+            rule__SimpleValueList__ValueElementsAssignment_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSimpleValueListAccess().getValueElementsAssignment_3()); 
+            }
+
+            }
+
+            // InternalRpySyntax.g:956:1: ( ( rule__SimpleValueList__ValueElementsAssignment_3 )* )
+            // InternalRpySyntax.g:957:1: ( rule__SimpleValueList__ValueElementsAssignment_3 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSimpleValueListAccess().getValueElementsAssignment_3()); 
+            }
+            // InternalRpySyntax.g:958:1: ( rule__SimpleValueList__ValueElementsAssignment_3 )*
+            loop10:
+            do {
+                int alt10=2;
+                int LA10_0 = input.LA(1);
+
+                if ( ((LA10_0>=RULE_STRING && LA10_0<=RULE_RPY_REAL)||LA10_0==20) ) {
+                    alt10=1;
+                }
+
+
+                switch (alt10) {
+            	case 1 :
+            	    // InternalRpySyntax.g:958:2: rule__SimpleValueList__ValueElementsAssignment_3
+            	    {
+            	    pushFollow(FOLLOW_13);
+            	    rule__SimpleValueList__ValueElementsAssignment_3();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop10;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSimpleValueListAccess().getValueElementsAssignment_3()); 
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SimpleValueList__Group__3__Impl"
+
+
+    // $ANTLR start "rule__RpySimpleValueElement__Group__0"
+    // InternalRpySyntax.g:977:1: rule__RpySimpleValueElement__Group__0 : rule__RpySimpleValueElement__Group__0__Impl rule__RpySimpleValueElement__Group__1 ;
+    public final void rule__RpySimpleValueElement__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:981:1: ( rule__RpySimpleValueElement__Group__0__Impl rule__RpySimpleValueElement__Group__1 )
+            // InternalRpySyntax.g:982:2: rule__RpySimpleValueElement__Group__0__Impl rule__RpySimpleValueElement__Group__1
+            {
+            pushFollow(FOLLOW_12);
+            rule__RpySimpleValueElement__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__RpySimpleValueElement__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpySimpleValueElement__Group__0"
+
+
+    // $ANTLR start "rule__RpySimpleValueElement__Group__0__Impl"
+    // InternalRpySyntax.g:989:1: rule__RpySimpleValueElement__Group__0__Impl : ( () ) ;
+    public final void rule__RpySimpleValueElement__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:993:1: ( ( () ) )
+            // InternalRpySyntax.g:994:1: ( () )
+            {
+            // InternalRpySyntax.g:994:1: ( () )
+            // InternalRpySyntax.g:995:1: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpySimpleValueElementAccess().getRpySimpleValueElementAction_0()); 
+            }
+            // InternalRpySyntax.g:996:1: ()
+            // InternalRpySyntax.g:998:1: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpySimpleValueElementAccess().getRpySimpleValueElementAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpySimpleValueElement__Group__0__Impl"
+
+
+    // $ANTLR start "rule__RpySimpleValueElement__Group__1"
+    // InternalRpySyntax.g:1008:1: rule__RpySimpleValueElement__Group__1 : rule__RpySimpleValueElement__Group__1__Impl rule__RpySimpleValueElement__Group__2 ;
+    public final void rule__RpySimpleValueElement__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:1012:1: ( rule__RpySimpleValueElement__Group__1__Impl rule__RpySimpleValueElement__Group__2 )
+            // InternalRpySyntax.g:1013:2: rule__RpySimpleValueElement__Group__1__Impl rule__RpySimpleValueElement__Group__2
+            {
+            pushFollow(FOLLOW_12);
+            rule__RpySimpleValueElement__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__RpySimpleValueElement__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpySimpleValueElement__Group__1"
+
+
+    // $ANTLR start "rule__RpySimpleValueElement__Group__1__Impl"
+    // InternalRpySyntax.g:1020:1: rule__RpySimpleValueElement__Group__1__Impl : ( ( rule__RpySimpleValueElement__ValuesAssignment_1 )* ) ;
+    public final void rule__RpySimpleValueElement__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:1024:1: ( ( ( rule__RpySimpleValueElement__ValuesAssignment_1 )* ) )
+            // InternalRpySyntax.g:1025:1: ( ( rule__RpySimpleValueElement__ValuesAssignment_1 )* )
+            {
+            // InternalRpySyntax.g:1025:1: ( ( rule__RpySimpleValueElement__ValuesAssignment_1 )* )
+            // InternalRpySyntax.g:1026:1: ( rule__RpySimpleValueElement__ValuesAssignment_1 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpySimpleValueElementAccess().getValuesAssignment_1()); 
+            }
+            // InternalRpySyntax.g:1027:1: ( rule__RpySimpleValueElement__ValuesAssignment_1 )*
+            loop11:
+            do {
+                int alt11=2;
+                int LA11_0 = input.LA(1);
+
+                if ( ((LA11_0>=RULE_STRING && LA11_0<=RULE_RPY_REAL)) ) {
+                    alt11=1;
+                }
+
+
+                switch (alt11) {
+            	case 1 :
+            	    // InternalRpySyntax.g:1027:2: rule__RpySimpleValueElement__ValuesAssignment_1
+            	    {
+            	    pushFollow(FOLLOW_14);
+            	    rule__RpySimpleValueElement__ValuesAssignment_1();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop11;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpySimpleValueElementAccess().getValuesAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpySimpleValueElement__Group__1__Impl"
+
+
+    // $ANTLR start "rule__RpySimpleValueElement__Group__2"
+    // InternalRpySyntax.g:1037:1: rule__RpySimpleValueElement__Group__2 : rule__RpySimpleValueElement__Group__2__Impl ;
+    public final void rule__RpySimpleValueElement__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:1041:1: ( rule__RpySimpleValueElement__Group__2__Impl )
+            // InternalRpySyntax.g:1042:2: rule__RpySimpleValueElement__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__RpySimpleValueElement__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpySimpleValueElement__Group__2"
+
+
+    // $ANTLR start "rule__RpySimpleValueElement__Group__2__Impl"
+    // InternalRpySyntax.g:1048:1: rule__RpySimpleValueElement__Group__2__Impl : ( ';' ) ;
+    public final void rule__RpySimpleValueElement__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:1052:1: ( ( ';' ) )
+            // InternalRpySyntax.g:1053:1: ( ';' )
+            {
+            // InternalRpySyntax.g:1053:1: ( ';' )
+            // InternalRpySyntax.g:1054:1: ';'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpySimpleValueElementAccess().getSemicolonKeyword_2()); 
+            }
+            match(input,20,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpySimpleValueElementAccess().getSemicolonKeyword_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpySimpleValueElement__Group__2__Impl"
+
+
+    // $ANTLR start "rule__RpyStringMapEntry__Group__0"
+    // InternalRpySyntax.g:1073:1: rule__RpyStringMapEntry__Group__0 : rule__RpyStringMapEntry__Group__0__Impl rule__RpyStringMapEntry__Group__1 ;
+    public final void rule__RpyStringMapEntry__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:1077:1: ( rule__RpyStringMapEntry__Group__0__Impl rule__RpyStringMapEntry__Group__1 )
+            // InternalRpySyntax.g:1078:2: rule__RpyStringMapEntry__Group__0__Impl rule__RpyStringMapEntry__Group__1
+            {
+            pushFollow(FOLLOW_15);
+            rule__RpyStringMapEntry__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__RpyStringMapEntry__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyStringMapEntry__Group__0"
+
+
+    // $ANTLR start "rule__RpyStringMapEntry__Group__0__Impl"
+    // InternalRpySyntax.g:1085:1: rule__RpyStringMapEntry__Group__0__Impl : ( ( rule__RpyStringMapEntry__KeyAssignment_0 ) ) ;
+    public final void rule__RpyStringMapEntry__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:1089:1: ( ( ( rule__RpyStringMapEntry__KeyAssignment_0 ) ) )
+            // InternalRpySyntax.g:1090:1: ( ( rule__RpyStringMapEntry__KeyAssignment_0 ) )
+            {
+            // InternalRpySyntax.g:1090:1: ( ( rule__RpyStringMapEntry__KeyAssignment_0 ) )
+            // InternalRpySyntax.g:1091:1: ( rule__RpyStringMapEntry__KeyAssignment_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyStringMapEntryAccess().getKeyAssignment_0()); 
+            }
+            // InternalRpySyntax.g:1092:1: ( rule__RpyStringMapEntry__KeyAssignment_0 )
+            // InternalRpySyntax.g:1092:2: rule__RpyStringMapEntry__KeyAssignment_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__RpyStringMapEntry__KeyAssignment_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyStringMapEntryAccess().getKeyAssignment_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyStringMapEntry__Group__0__Impl"
+
+
+    // $ANTLR start "rule__RpyStringMapEntry__Group__1"
+    // InternalRpySyntax.g:1102:1: rule__RpyStringMapEntry__Group__1 : rule__RpyStringMapEntry__Group__1__Impl ;
+    public final void rule__RpyStringMapEntry__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:1106:1: ( rule__RpyStringMapEntry__Group__1__Impl )
+            // InternalRpySyntax.g:1107:2: rule__RpyStringMapEntry__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__RpyStringMapEntry__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyStringMapEntry__Group__1"
+
+
+    // $ANTLR start "rule__RpyStringMapEntry__Group__1__Impl"
+    // InternalRpySyntax.g:1113:1: rule__RpyStringMapEntry__Group__1__Impl : ( ( rule__RpyStringMapEntry__ValueAssignment_1 ) ) ;
+    public final void rule__RpyStringMapEntry__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:1117:1: ( ( ( rule__RpyStringMapEntry__ValueAssignment_1 ) ) )
+            // InternalRpySyntax.g:1118:1: ( ( rule__RpyStringMapEntry__ValueAssignment_1 ) )
+            {
+            // InternalRpySyntax.g:1118:1: ( ( rule__RpyStringMapEntry__ValueAssignment_1 ) )
+            // InternalRpySyntax.g:1119:1: ( rule__RpyStringMapEntry__ValueAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyStringMapEntryAccess().getValueAssignment_1()); 
+            }
+            // InternalRpySyntax.g:1120:1: ( rule__RpyStringMapEntry__ValueAssignment_1 )
+            // InternalRpySyntax.g:1120:2: rule__RpyStringMapEntry__ValueAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__RpyStringMapEntry__ValueAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyStringMapEntryAccess().getValueAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyStringMapEntry__Group__1__Impl"
+
+
+    // $ANTLR start "rule__RpyFile__VersionAssignment_1"
+    // InternalRpySyntax.g:1135:1: rule__RpyFile__VersionAssignment_1 : ( RULE_RPY_VERSION ) ;
+    public final void rule__RpyFile__VersionAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:1139:1: ( ( RULE_RPY_VERSION ) )
+            // InternalRpySyntax.g:1140:1: ( RULE_RPY_VERSION )
+            {
+            // InternalRpySyntax.g:1140:1: ( RULE_RPY_VERSION )
+            // InternalRpySyntax.g:1141:1: RULE_RPY_VERSION
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyFileAccess().getVersionRPY_VERSIONTerminalRuleCall_1_0()); 
+            }
+            match(input,RULE_RPY_VERSION,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyFileAccess().getVersionRPY_VERSIONTerminalRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyFile__VersionAssignment_1"
+
+
+    // $ANTLR start "rule__RpyFile__ContentsAssignment_2"
+    // InternalRpySyntax.g:1150:1: rule__RpyFile__ContentsAssignment_2 : ( ruleRpyContent ) ;
+    public final void rule__RpyFile__ContentsAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:1154:1: ( ( ruleRpyContent ) )
+            // InternalRpySyntax.g:1155:1: ( ruleRpyContent )
+            {
+            // InternalRpySyntax.g:1155:1: ( ruleRpyContent )
+            // InternalRpySyntax.g:1156:1: ruleRpyContent
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyFileAccess().getContentsRpyContentParserRuleCall_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleRpyContent();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyFileAccess().getContentsRpyContentParserRuleCall_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyFile__ContentsAssignment_2"
+
+
+    // $ANTLR start "rule__RpyNode__NameAssignment_1"
+    // InternalRpySyntax.g:1165:1: rule__RpyNode__NameAssignment_1 : ( RULE_ID ) ;
+    public final void rule__RpyNode__NameAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:1169:1: ( ( RULE_ID ) )
+            // InternalRpySyntax.g:1170:1: ( RULE_ID )
+            {
+            // InternalRpySyntax.g:1170:1: ( RULE_ID )
+            // InternalRpySyntax.g:1171:1: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyNodeAccess().getNameIDTerminalRuleCall_1_0()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyNodeAccess().getNameIDTerminalRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyNode__NameAssignment_1"
+
+
+    // $ANTLR start "rule__RpyNode__ContentsAssignment_2"
+    // InternalRpySyntax.g:1180:1: rule__RpyNode__ContentsAssignment_2 : ( ruleRpyContent ) ;
+    public final void rule__RpyNode__ContentsAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:1184:1: ( ( ruleRpyContent ) )
+            // InternalRpySyntax.g:1185:1: ( ruleRpyContent )
+            {
+            // InternalRpySyntax.g:1185:1: ( ruleRpyContent )
+            // InternalRpySyntax.g:1186:1: ruleRpyContent
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyNodeAccess().getContentsRpyContentParserRuleCall_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleRpyContent();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyNodeAccess().getContentsRpyContentParserRuleCall_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyNode__ContentsAssignment_2"
+
+
+    // $ANTLR start "rule__RpyFeature__NameAssignment_1"
+    // InternalRpySyntax.g:1195:1: rule__RpyFeature__NameAssignment_1 : ( RULE_ID ) ;
+    public final void rule__RpyFeature__NameAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:1199:1: ( ( RULE_ID ) )
+            // InternalRpySyntax.g:1200:1: ( RULE_ID )
+            {
+            // InternalRpySyntax.g:1200:1: ( RULE_ID )
+            // InternalRpySyntax.g:1201:1: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyFeatureAccess().getNameIDTerminalRuleCall_1_0()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyFeatureAccess().getNameIDTerminalRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyFeature__NameAssignment_1"
+
+
+    // $ANTLR start "rule__RpyFeature__ValueAssignment_3"
+    // InternalRpySyntax.g:1210:1: rule__RpyFeature__ValueAssignment_3 : ( ruleRpyFeatureValue ) ;
+    public final void rule__RpyFeature__ValueAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:1214:1: ( ( ruleRpyFeatureValue ) )
+            // InternalRpySyntax.g:1215:1: ( ruleRpyFeatureValue )
+            {
+            // InternalRpySyntax.g:1215:1: ( ruleRpyFeatureValue )
+            // InternalRpySyntax.g:1216:1: ruleRpyFeatureValue
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyFeatureAccess().getValueRpyFeatureValueParserRuleCall_3_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleRpyFeatureValue();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyFeatureAccess().getValueRpyFeatureValueParserRuleCall_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyFeature__ValueAssignment_3"
+
+
+    // $ANTLR start "rule__RpyNodeList__ValuesAssignment"
+    // InternalRpySyntax.g:1225:1: rule__RpyNodeList__ValuesAssignment : ( ruleRpyNode ) ;
+    public final void rule__RpyNodeList__ValuesAssignment() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:1229:1: ( ( ruleRpyNode ) )
+            // InternalRpySyntax.g:1230:1: ( ruleRpyNode )
+            {
+            // InternalRpySyntax.g:1230:1: ( ruleRpyNode )
+            // InternalRpySyntax.g:1231:1: ruleRpyNode
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyNodeListAccess().getValuesRpyNodeParserRuleCall_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleRpyNode();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyNodeListAccess().getValuesRpyNodeParserRuleCall_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyNodeList__ValuesAssignment"
+
+
+    // $ANTLR start "rule__SimpleValueList__IsOldIDAssignment_1"
+    // InternalRpySyntax.g:1240:1: rule__SimpleValueList__IsOldIDAssignment_1 : ( ( 'OLDID' ) ) ;
+    public final void rule__SimpleValueList__IsOldIDAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:1244:1: ( ( ( 'OLDID' ) ) )
+            // InternalRpySyntax.g:1245:1: ( ( 'OLDID' ) )
+            {
+            // InternalRpySyntax.g:1245:1: ( ( 'OLDID' ) )
+            // InternalRpySyntax.g:1246:1: ( 'OLDID' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSimpleValueListAccess().getIsOldIDOLDIDKeyword_1_0()); 
+            }
+            // InternalRpySyntax.g:1247:1: ( 'OLDID' )
+            // InternalRpySyntax.g:1248:1: 'OLDID'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSimpleValueListAccess().getIsOldIDOLDIDKeyword_1_0()); 
+            }
+            match(input,21,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSimpleValueListAccess().getIsOldIDOLDIDKeyword_1_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSimpleValueListAccess().getIsOldIDOLDIDKeyword_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SimpleValueList__IsOldIDAssignment_1"
+
+
+    // $ANTLR start "rule__SimpleValueList__IsGUIDAssignment_2"
+    // InternalRpySyntax.g:1263:1: rule__SimpleValueList__IsGUIDAssignment_2 : ( ( 'GUID' ) ) ;
+    public final void rule__SimpleValueList__IsGUIDAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:1267:1: ( ( ( 'GUID' ) ) )
+            // InternalRpySyntax.g:1268:1: ( ( 'GUID' ) )
+            {
+            // InternalRpySyntax.g:1268:1: ( ( 'GUID' ) )
+            // InternalRpySyntax.g:1269:1: ( 'GUID' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSimpleValueListAccess().getIsGUIDGUIDKeyword_2_0()); 
+            }
+            // InternalRpySyntax.g:1270:1: ( 'GUID' )
+            // InternalRpySyntax.g:1271:1: 'GUID'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSimpleValueListAccess().getIsGUIDGUIDKeyword_2_0()); 
+            }
+            match(input,22,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSimpleValueListAccess().getIsGUIDGUIDKeyword_2_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSimpleValueListAccess().getIsGUIDGUIDKeyword_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SimpleValueList__IsGUIDAssignment_2"
+
+
+    // $ANTLR start "rule__SimpleValueList__ValueElementsAssignment_3"
+    // InternalRpySyntax.g:1286:1: rule__SimpleValueList__ValueElementsAssignment_3 : ( ruleRpySimpleValueElement ) ;
+    public final void rule__SimpleValueList__ValueElementsAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:1290:1: ( ( ruleRpySimpleValueElement ) )
+            // InternalRpySyntax.g:1291:1: ( ruleRpySimpleValueElement )
+            {
+            // InternalRpySyntax.g:1291:1: ( ruleRpySimpleValueElement )
+            // InternalRpySyntax.g:1292:1: ruleRpySimpleValueElement
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSimpleValueListAccess().getValueElementsRpySimpleValueElementParserRuleCall_3_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleRpySimpleValueElement();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSimpleValueListAccess().getValueElementsRpySimpleValueElementParserRuleCall_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SimpleValueList__ValueElementsAssignment_3"
+
+
+    // $ANTLR start "rule__RpySimpleValueElement__ValuesAssignment_1"
+    // InternalRpySyntax.g:1301:1: rule__RpySimpleValueElement__ValuesAssignment_1 : ( ruleVALUE_TERMINAL ) ;
+    public final void rule__RpySimpleValueElement__ValuesAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:1305:1: ( ( ruleVALUE_TERMINAL ) )
+            // InternalRpySyntax.g:1306:1: ( ruleVALUE_TERMINAL )
+            {
+            // InternalRpySyntax.g:1306:1: ( ruleVALUE_TERMINAL )
+            // InternalRpySyntax.g:1307:1: ruleVALUE_TERMINAL
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpySimpleValueElementAccess().getValuesVALUE_TERMINALParserRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleVALUE_TERMINAL();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpySimpleValueElementAccess().getValuesVALUE_TERMINALParserRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpySimpleValueElement__ValuesAssignment_1"
+
+
+    // $ANTLR start "rule__RpyStringMap__EntriesAssignment"
+    // InternalRpySyntax.g:1316:1: rule__RpyStringMap__EntriesAssignment : ( ruleRpyStringMapEntry ) ;
+    public final void rule__RpyStringMap__EntriesAssignment() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:1320:1: ( ( ruleRpyStringMapEntry ) )
+            // InternalRpySyntax.g:1321:1: ( ruleRpyStringMapEntry )
+            {
+            // InternalRpySyntax.g:1321:1: ( ruleRpyStringMapEntry )
+            // InternalRpySyntax.g:1322:1: ruleRpyStringMapEntry
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyStringMapAccess().getEntriesRpyStringMapEntryParserRuleCall_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleRpyStringMapEntry();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyStringMapAccess().getEntriesRpyStringMapEntryParserRuleCall_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyStringMap__EntriesAssignment"
+
+
+    // $ANTLR start "rule__RpyStringMapEntry__KeyAssignment_0"
+    // InternalRpySyntax.g:1331:1: rule__RpyStringMapEntry__KeyAssignment_0 : ( RULE_STRING ) ;
+    public final void rule__RpyStringMapEntry__KeyAssignment_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:1335:1: ( ( RULE_STRING ) )
+            // InternalRpySyntax.g:1336:1: ( RULE_STRING )
+            {
+            // InternalRpySyntax.g:1336:1: ( RULE_STRING )
+            // InternalRpySyntax.g:1337:1: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyStringMapEntryAccess().getKeySTRINGTerminalRuleCall_0_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyStringMapEntryAccess().getKeySTRINGTerminalRuleCall_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyStringMapEntry__KeyAssignment_0"
+
+
+    // $ANTLR start "rule__RpyStringMapEntry__ValueAssignment_1"
+    // InternalRpySyntax.g:1346:1: rule__RpyStringMapEntry__ValueAssignment_1 : ( RULE_STRING ) ;
+    public final void rule__RpyStringMapEntry__ValueAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+            
+        try {
+            // InternalRpySyntax.g:1350:1: ( ( RULE_STRING ) )
+            // InternalRpySyntax.g:1351:1: ( RULE_STRING )
+            {
+            // InternalRpySyntax.g:1351:1: ( RULE_STRING )
+            // InternalRpySyntax.g:1352:1: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRpyStringMapEntryAccess().getValueSTRINGTerminalRuleCall_1_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRpyStringMapEntryAccess().getValueSTRINGTerminalRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RpyStringMapEntry__ValueAssignment_1"
+
+    // $ANTLR start synpred1_InternalRpySyntax
+    public final void synpred1_InternalRpySyntax_fragment() throws RecognitionException {   
+        // InternalRpySyntax.g:232:2: ( rule__RpyNodeList__ValuesAssignment )
+        // InternalRpySyntax.g:232:2: rule__RpyNodeList__ValuesAssignment
+        {
+        pushFollow(FOLLOW_2);
+        rule__RpyNodeList__ValuesAssignment();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred1_InternalRpySyntax
+
+    // Delegated rules
+
+    public final boolean synpred1_InternalRpySyntax() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred1_InternalRpySyntax_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+
+
+    protected DFA4 dfa4 = new DFA4(this);
+    static final String dfa_1s = "\10\uffff";
+    static final String dfa_2s = "\4\uffff\1\6\2\uffff\1\6";
+    static final String dfa_3s = "\1\4\1\uffff\1\4\1\uffff\2\4\1\uffff\1\4";
+    static final String dfa_4s = "\1\26\1\uffff\1\24\1\uffff\2\24\1\uffff\1\24";
+    static final String dfa_5s = "\1\uffff\1\1\1\uffff\1\2\2\uffff\1\3\1\uffff";
+    static final String dfa_6s = "\10\uffff}>";
+    static final String[] dfa_7s = {
+            "\1\2\5\1\6\uffff\1\3\3\uffff\3\1",
+            "",
+            "\1\4\5\1\12\uffff\1\1",
+            "",
+            "\1\5\5\1\6\uffff\3\6\1\uffff\1\1",
+            "\1\7\5\1\12\uffff\1\1",
+            "",
+            "\1\5\5\1\6\uffff\3\6\1\uffff\1\1"
+    };
+
+    static final short[] dfa_1 = DFA.unpackEncodedString(dfa_1s);
+    static final short[] dfa_2 = DFA.unpackEncodedString(dfa_2s);
+    static final char[] dfa_3 = DFA.unpackEncodedStringToUnsignedChars(dfa_3s);
+    static final char[] dfa_4 = DFA.unpackEncodedStringToUnsignedChars(dfa_4s);
+    static final short[] dfa_5 = DFA.unpackEncodedString(dfa_5s);
+    static final short[] dfa_6 = DFA.unpackEncodedString(dfa_6s);
+    static final short[][] dfa_7 = unpackEncodedStringArray(dfa_7s);
+
+    class DFA4 extends DFA {
+
+        public DFA4(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 4;
+            this.eot = dfa_1;
+            this.eof = dfa_2;
+            this.min = dfa_3;
+            this.max = dfa_4;
+            this.accept = dfa_5;
+            this.special = dfa_6;
+            this.transition = dfa_7;
+        }
+        public String getDescription() {
+            return "414:1: rule__RpyFeatureValue__Alternatives : ( ( ruleSimpleValueList ) | ( ruleRpyNodeList ) | ( ruleRpyStringMap ) );";
+        }
+    }
+ 
+
+    public static final BitSet FOLLOW_1 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_2 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_3 = new BitSet(new long[]{0x0000000000010002L});
+    public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000000012L});
+    public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000000000000400L});
+    public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000050000L});
+    public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000000050002L});
+    public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000020000L});
+    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000080000L});
+    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x00000000007103F0L});
+    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x00000000007003F0L});
+    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x00000000007003F2L});
+    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x00000000000003F2L});
+    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000000000010L});
+
+}
\ No newline at end of file
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/ui/internal/RpySyntaxActivator.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/ui/internal/RpySyntaxActivator.java
new file mode 100644
index 0000000..5baa479
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/ui/internal/RpySyntaxActivator.java
@@ -0,0 +1,104 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.parser.ui.internal;
+
+import java.util.Collections;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.xtext.ui.shared.SharedStateModule;
+import org.eclipse.xtext.util.Modules2;
+import org.osgi.framework.BundleContext;
+
+import com.google.common.collect.Maps;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.Module;
+
+/**
+ * This class was generated. Customizations should only happen in a newly
+ * introduced subclass. 
+ */
+public class RpySyntaxActivator extends AbstractUIPlugin {
+	
+	public static final String ORG_ECLIPSE_PAPYRUS_INTEROPERABILITY_RPY_PARSER_RPYSYNTAX = "org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax";
+	
+	private static final Logger logger = Logger.getLogger(RpySyntaxActivator.class);
+	
+	private static RpySyntaxActivator INSTANCE;
+	
+	private Map<String, Injector> injectors = Collections.synchronizedMap(Maps.<String, Injector> newHashMapWithExpectedSize(1));
+	
+	@Override
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		INSTANCE = this;
+	}
+	
+	@Override
+	public void stop(BundleContext context) throws Exception {
+		injectors.clear();
+		INSTANCE = null;
+		super.stop(context);
+	}
+	
+	public static RpySyntaxActivator getInstance() {
+		return INSTANCE;
+	}
+	
+	public Injector getInjector(String language) {
+		synchronized (injectors) {
+			Injector injector = injectors.get(language);
+			if (injector == null) {
+				injectors.put(language, injector = createInjector(language));
+			}
+			return injector;
+		}
+	}
+	
+	protected Injector createInjector(String language) {
+		try {
+			Module runtimeModule = getRuntimeModule(language);
+			Module sharedStateModule = getSharedStateModule();
+			Module uiModule = getUiModule(language);
+			Module mergedModule = Modules2.mixin(runtimeModule, sharedStateModule, uiModule);
+			return Guice.createInjector(mergedModule);
+		} catch (Exception e) {
+			logger.error("Failed to create injector for " + language);
+			logger.error(e.getMessage(), e);
+			throw new RuntimeException("Failed to create injector for " + language, e);
+		}
+	}
+
+	protected Module getRuntimeModule(String grammar) {
+		if (ORG_ECLIPSE_PAPYRUS_INTEROPERABILITY_RPY_PARSER_RPYSYNTAX.equals(grammar)) {
+			return new org.eclipse.papyrus.interoperability.rpy.parser.RpySyntaxRuntimeModule();
+		}
+		
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getUiModule(String grammar) {
+		if (ORG_ECLIPSE_PAPYRUS_INTEROPERABILITY_RPY_PARSER_RPYSYNTAX.equals(grammar)) {
+			return new org.eclipse.papyrus.interoperability.rpy.parser.ui.RpySyntaxUiModule(this);
+		}
+		
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getSharedStateModule() {
+		return new SharedStateModule();
+	}
+	
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src/org/eclipse/papyrus/interoperability/rpy/parser/ui/RpySyntaxUiModule.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src/org/eclipse/papyrus/interoperability/rpy/parser/ui/RpySyntaxUiModule.java
new file mode 100644
index 0000000..b27e247
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src/org/eclipse/papyrus/interoperability/rpy/parser/ui/RpySyntaxUiModule.java
@@ -0,0 +1,24 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.parser.ui;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * Use this class to register components to be used within the IDE.
+ */
+public class RpySyntaxUiModule extends org.eclipse.papyrus.interoperability.rpy.parser.ui.AbstractRpySyntaxUiModule {
+	public RpySyntaxUiModule(AbstractUIPlugin plugin) {
+		super(plugin);
+	}
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src/org/eclipse/papyrus/interoperability/rpy/parser/ui/contentassist/RpySyntaxProposalProvider.xtend b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src/org/eclipse/papyrus/interoperability/rpy/parser/ui/contentassist/RpySyntaxProposalProvider.xtend
new file mode 100644
index 0000000..7d3cb49
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src/org/eclipse/papyrus/interoperability/rpy/parser/ui/contentassist/RpySyntaxProposalProvider.xtend
@@ -0,0 +1,22 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.parser.ui.contentassist
+
+import org.eclipse.papyrus.interoperability.rpy.parser.ui.contentassist.AbstractRpySyntaxProposalProvider
+
+/**
+ * See https://www.eclipse.org/Xtext/documentation/304_ide_concepts.html#content-assist
+ * on how to customize the content assistant.
+ */
+class RpySyntaxProposalProvider extends AbstractRpySyntaxProposalProvider {
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src/org/eclipse/papyrus/interoperability/rpy/parser/ui/labeling/RpySyntaxDescriptionLabelProvider.xtend b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src/org/eclipse/papyrus/interoperability/rpy/parser/ui/labeling/RpySyntaxDescriptionLabelProvider.xtend
new file mode 100644
index 0000000..eb366c3
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src/org/eclipse/papyrus/interoperability/rpy/parser/ui/labeling/RpySyntaxDescriptionLabelProvider.xtend
@@ -0,0 +1,33 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.parser.ui.labeling
+
+//import org.eclipse.xtext.resource.IEObjectDescription
+
+/**
+ * Provides labels for IEObjectDescriptions and IResourceDescriptions.
+ * 
+ * See https://www.eclipse.org/Xtext/documentation/304_ide_concepts.html#label-provider
+ */
+class RpySyntaxDescriptionLabelProvider extends org.eclipse.xtext.ui.label.DefaultDescriptionLabelProvider {
+
+	// Labels and icons can be computed like this:
+	
+//	override text(IEObjectDescription ele) {
+//		ele.name.toString
+//	}
+//	 
+//	override image(IEObjectDescription ele) {
+//		ele.EClass.name + '.gif'
+//	}	 
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src/org/eclipse/papyrus/interoperability/rpy/parser/ui/labeling/RpySyntaxLabelProvider.xtend b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src/org/eclipse/papyrus/interoperability/rpy/parser/ui/labeling/RpySyntaxLabelProvider.xtend
new file mode 100644
index 0000000..d49e1fb
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src/org/eclipse/papyrus/interoperability/rpy/parser/ui/labeling/RpySyntaxLabelProvider.xtend
@@ -0,0 +1,38 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.parser.ui.labeling
+
+import com.google.inject.Inject
+
+/**
+ * Provides labels for EObjects.
+ * 
+ * See https://www.eclipse.org/Xtext/documentation/304_ide_concepts.html#label-provider
+ */
+class RpySyntaxLabelProvider extends org.eclipse.xtext.ui.label.DefaultEObjectLabelProvider {
+
+	@Inject
+	new(org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider delegate) {
+		super(delegate);
+	}
+
+	// Labels and icons can be computed like this:
+	
+//	def text(Greeting ele) {
+//		'A greeting to ' + ele.name
+//	}
+//
+//	def image(Greeting ele) {
+//		'Greeting.gif'
+//	}
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src/org/eclipse/papyrus/interoperability/rpy/parser/ui/outline/RpySyntaxOutlineTreeProvider.xtend b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src/org/eclipse/papyrus/interoperability/rpy/parser/ui/outline/RpySyntaxOutlineTreeProvider.xtend
new file mode 100644
index 0000000..457b28e
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src/org/eclipse/papyrus/interoperability/rpy/parser/ui/outline/RpySyntaxOutlineTreeProvider.xtend
@@ -0,0 +1,22 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.parser.ui.outline
+
+/**
+ * Customization of the default outline structure.
+ *
+ * See https://www.eclipse.org/Xtext/documentation/304_ide_concepts.html#outline
+ */
+class RpySyntaxOutlineTreeProvider extends org.eclipse.xtext.ui.editor.outline.impl.DefaultOutlineTreeProvider {
+	
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src/org/eclipse/papyrus/interoperability/rpy/parser/ui/quickfix/RpySyntaxQuickfixProvider.xtend b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src/org/eclipse/papyrus/interoperability/rpy/parser/ui/quickfix/RpySyntaxQuickfixProvider.xtend
new file mode 100644
index 0000000..d78a7bf
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser.ui/src/org/eclipse/papyrus/interoperability/rpy/parser/ui/quickfix/RpySyntaxQuickfixProvider.xtend
@@ -0,0 +1,35 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.parser.ui.quickfix
+
+//import org.eclipse.xtext.ui.editor.quickfix.Fix
+//import org.eclipse.xtext.ui.editor.quickfix.IssueResolutionAcceptor
+//import org.eclipse.xtext.validation.Issue
+
+/**
+ * Custom quickfixes.
+ *
+ * See https://www.eclipse.org/Xtext/documentation/310_eclipse_support.html#quick-fixes
+ */
+class RpySyntaxQuickfixProvider extends org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider {
+
+//	@Fix(MyDslValidator::INVALID_NAME)
+//	def capitalizeName(Issue issue, IssueResolutionAcceptor acceptor) {
+//		acceptor.accept(issue, 'Capitalize name', 'Capitalize the name.', 'upcase.png') [
+//			context |
+//			val xtextDocument = context.xtextDocument
+//			val firstLetter = xtextDocument.get(issue.offset, 1)
+//			xtextDocument.replace(issue.offset, 1, firstLetter.toUpperCase)
+//		]
+//	}
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/.antlr-generator-3.2.0-patch.jar b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/.antlr-generator-3.2.0-patch.jar
new file mode 100644
index 0000000..90516fd
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/.antlr-generator-3.2.0-patch.jar
Binary files differ
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/.classpath b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/.classpath
new file mode 100644
index 0000000..9081d4f
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/.classpath
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="src-gen"/>
+	<classpathentry kind="src" path="xtend-gen"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/.gitignore b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/.gitignore
new file mode 100644
index 0000000..b33f6af
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/.gitignore
@@ -0,0 +1,2 @@
+/bin/
+/xtend-gen/
diff --git "a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/.launch/Generate Language Infrastructure \050org.eclipse.papyrus.interoperability.rpy.parser\051.launch" "b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/.launch/Generate Language Infrastructure \050org.eclipse.papyrus.interoperability.rpy.parser\051.launch"
new file mode 100644
index 0000000..2c0db5e
--- /dev/null
+++ "b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/.launch/Generate Language Infrastructure \050org.eclipse.papyrus.interoperability.rpy.parser\051.launch"
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.emf.mwe2.launch.Mwe2LaunchConfigurationType">
+<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;resources&gt;&#13;&#10;&lt;item path=&quot;/org.eclipse.papyrus.interoperability.rpy.parser&quot; type=&quot;4&quot;/&gt;&#13;&#10;&lt;item path=&quot;/org.eclipse.papyrus.interoperability.rpy.parser.generator&quot; type=&quot;4&quot;/&gt;&#13;&#10;&lt;item path=&quot;/org.eclipse.papyrus.interoperability.rpy.parser.tests&quot; type=&quot;4&quot;/&gt;&#13;&#10;&lt;item path=&quot;/org.eclipse.papyrus.interoperability.rpy.parser.ui&quot; type=&quot;4&quot;/&gt;&#13;&#10;&lt;/resources&gt;}"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.papyrus.interoperability.rpy.parser"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="4"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="src/org/eclipse/papyrus/interoperability/rpy/parser/GenerateRpySyntax.mwe2"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.papyrus.interoperability.rpy.parser"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx512m"/>
+</launchConfiguration>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/.launch/Launch Runtime Eclipse.launch b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/.launch/Launch Runtime Eclipse.launch
new file mode 100644
index 0000000..e589568
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/.launch/Launch Runtime Eclipse.launch
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
+<booleanAttribute key="append.args" value="true"/>
+<booleanAttribute key="askclear" value="false"/>
+<booleanAttribute key="automaticAdd" value="true"/>
+<booleanAttribute key="automaticValidate" value="false"/>
+<stringAttribute key="bad_container_name" value="/org.eclipse.papyrus.interoperability.rpy.parser/.launch/"/>
+<stringAttribute key="bootstrap" value=""/>
+<stringAttribute key="checked" value="[NONE]"/>
+<booleanAttribute key="clearConfig" value="false"/>
+<booleanAttribute key="clearws" value="false"/>
+<booleanAttribute key="clearwslog" value="false"/>
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/Launch Runtime Eclipse"/>
+<booleanAttribute key="default" value="true"/>
+<booleanAttribute key="includeOptional" value="true"/>
+<stringAttribute key="location" value="${workspace_loc}/../runtime-EclipseXtext"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl}"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms40m -Xmx512m -XX:MaxPermSize=256m 
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.platform.ide"/>
+<booleanAttribute key="show_selected_only" value="false"/>
+<stringAttribute key="templateConfig" value="${target_home}/configuration/config.ini"/>
+<booleanAttribute key="tracing" value="false"/>
+<booleanAttribute key="useCustomFeatures" value="false"/>
+<booleanAttribute key="useDefaultConfig" value="true"/>
+<booleanAttribute key="useDefaultConfigArea" value="true"/>
+<booleanAttribute key="useProduct" value="true"/>
+<booleanAttribute key="usefeatures" value="false"/>
+</launchConfiguration>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/.project b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/.project
new file mode 100644
index 0000000..7a90e8f
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.interoperability.rpy.parser</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+	</natures>
+</projectDescription>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/.settings/org.eclipse.core.resources.prefs b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/.settings/org.eclipse.jdt.core.prefs b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..b3aa6d6
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/.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.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
+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/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/.settings/org.eclipse.jdt.ui.prefs b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..954281d
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/.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/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/.settings/org.eclipse.pde.api.tools.prefs b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..23fb95e
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,98 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Ignore
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Ignore
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Ignore
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=Enabled
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Warning
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/META-INF/MANIFEST.MF b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..694ab3e
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/META-INF/MANIFEST.MF
@@ -0,0 +1,31 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name
+Bundle-Vendor: %Bundle-Vendor
+Bundle-Version: 0.7.0.qualifier
+Bundle-SymbolicName: org.eclipse.papyrus.interoperability.rpy.parser;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.xtext;visibility:=reexport,
+ org.eclipse.equinox.common;bundle-version="3.5.0",
+ org.eclipse.xtext.util,
+ org.eclipse.emf.ecore,
+ org.eclipse.emf.common,
+ org.eclipse.xtext.xbase.lib,
+ org.antlr.runtime,
+ org.eclipse.xtext.common.types,
+ org.objectweb.asm;bundle-version="[5.0.1,6.0.0)";resolution:=optional,
+ org.apache.log4j;bundle-version="1.2.15"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.papyrus.interoperability.rpy.parser,
+ org.eclipse.papyrus.interoperability.rpy.parser.formatting,
+ org.eclipse.papyrus.interoperability.rpy.parser.generator,
+ org.eclipse.papyrus.interoperability.rpy.parser.parser.antlr,
+ org.eclipse.papyrus.interoperability.rpy.parser.parser.antlr.internal,
+ org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax,
+ org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl,
+ org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.util,
+ org.eclipse.papyrus.interoperability.rpy.parser.scoping,
+ org.eclipse.papyrus.interoperability.rpy.parser.serializer,
+ org.eclipse.papyrus.interoperability.rpy.parser.services,
+ org.eclipse.papyrus.interoperability.rpy.parser.validation
+Import-Package: org.apache.log4j
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/OSGI-INF/l10n/bundle.properties b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/OSGI-INF/l10n/bundle.properties
new file mode 100644
index 0000000..e1215c3
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/OSGI-INF/l10n/bundle.properties
@@ -0,0 +1,3 @@
+#Properties file for org.eclipse.papyrus.interoperability.rpy.parser
+Bundle-Vendor = Eclipse Modeling Project
+Bundle-Name = Papyrus Interoperability Rpy Parser (Incubation)
\ No newline at end of file
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/about.html b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/about.html
new file mode 100644
index 0000000..dd3c089
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>November 14, 2008</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/build.properties b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/build.properties
new file mode 100644
index 0000000..d0b95be
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/build.properties
@@ -0,0 +1,18 @@
+source.. = src/,\
+           src-gen/,\
+           xtend-gen/
+bin.includes = model/,\
+               META-INF/,\
+               .,\
+               plugin.xml,\
+               OSGI-INF/,\
+               about.html
+additional.bundles = org.eclipse.xtext.xbase,\
+                     org.eclipse.xtext.generator,\
+                     org.apache.commons.logging,\
+                     org.eclipse.emf.codegen.ecore,\
+                     org.eclipse.emf.mwe.utils,\
+                     org.eclipse.emf.mwe2.launch,\
+                     org.eclipse.xtext.common.types,\
+                     org.objectweb.asm
+src.includes = about.html
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/model/generated/RpySyntax.ecore b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/model/generated/RpySyntax.ecore
new file mode 100644
index 0000000..2b3de8b
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/model/generated/RpySyntax.ecore
@@ -0,0 +1,44 @@
+<?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="rpySyntax" nsURI="http://www.eclipse.org/papyrus/rpy/RpySyntax"
+    nsPrefix="rpySyntax">
+  <eClassifiers xsi:type="ecore:EClass" name="RpyFile">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="contents" upperBound="-1"
+        eType="#//RpyContent" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="RpyContent">
+    <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="RpyNode" eSuperTypes="#//RpyContent">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="contents" upperBound="-1"
+        eType="#//RpyContent" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="RpyFeature" eSuperTypes="#//RpyContent">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="#//RpyFeatureValue"
+        containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="RpyFeatureValue"/>
+  <eClassifiers xsi:type="ecore:EClass" name="RpyNodeList" eSuperTypes="#//RpyFeatureValue">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="values" upperBound="-1"
+        eType="#//RpyNode" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="SimpleValueList" eSuperTypes="#//RpyFeatureValue">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isOldID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isGUID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="valueElements" upperBound="-1"
+        eType="#//RpySimpleValueElement" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="RpySimpleValueElement">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="values" unique="false"
+        upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="RpyStringMap" eSuperTypes="#//RpyFeatureValue">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="entries" upperBound="-1"
+        eType="#//RpyStringMapEntry" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="RpyStringMapEntry">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/model/generated/RpySyntax.genmodel b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/model/generated/RpySyntax.genmodel
new file mode 100644
index 0000000..dc8ff52
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/model/generated/RpySyntax.genmodel
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.papyrus.interoperability.rpy.parser/src-gen"
+    editDirectory="/org.eclipse.papyrus.interoperability.rpy.parser.edit/src" editorDirectory="/org.eclipse.papyrus.interoperability.rpy.parser.editor/src"
+    modelPluginID="org.eclipse.papyrus.interoperability.rpy.parser" forceOverwrite="true"
+    modelName="RpySyntax" updateClasspath="false" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+    complianceLevel="6.0" copyrightFields="false" editPluginID="org.eclipse.papyrus.interoperability.rpy.parser.edit"
+    editorPluginID="org.eclipse.papyrus.interoperability.rpy.parser.editor" runtimeVersion="2.13">
+  <genPackages prefix="RpySyntax" basePackage="org.eclipse.papyrus.interoperability.rpy.parser"
+      disposableProviderFactory="true" fileExtensions="cmp,sbs,dat,omd,msc,rpy,clb,ucd,cls,ctd,pld,std"
+      ecorePackage="RpySyntax.ecore#/">
+    <genClasses ecoreClass="RpySyntax.ecore#//RpyFile">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute RpySyntax.ecore#//RpyFile/version"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference RpySyntax.ecore#//RpyFile/contents"/>
+    </genClasses>
+    <genClasses ecoreClass="RpySyntax.ecore#//RpyContent">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute RpySyntax.ecore#//RpyContent/name"/>
+    </genClasses>
+    <genClasses ecoreClass="RpySyntax.ecore#//RpyNode">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference RpySyntax.ecore#//RpyNode/contents"/>
+    </genClasses>
+    <genClasses ecoreClass="RpySyntax.ecore#//RpyFeature">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference RpySyntax.ecore#//RpyFeature/value"/>
+    </genClasses>
+    <genClasses ecoreClass="RpySyntax.ecore#//RpyFeatureValue"/>
+    <genClasses ecoreClass="RpySyntax.ecore#//RpyNodeList">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference RpySyntax.ecore#//RpyNodeList/values"/>
+    </genClasses>
+    <genClasses ecoreClass="RpySyntax.ecore#//SimpleValueList">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute RpySyntax.ecore#//SimpleValueList/isOldID"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute RpySyntax.ecore#//SimpleValueList/isGUID"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference RpySyntax.ecore#//SimpleValueList/valueElements"/>
+    </genClasses>
+    <genClasses ecoreClass="RpySyntax.ecore#//RpySimpleValueElement">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute RpySyntax.ecore#//RpySimpleValueElement/values"/>
+    </genClasses>
+    <genClasses ecoreClass="RpySyntax.ecore#//RpyStringMap">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference RpySyntax.ecore#//RpyStringMap/entries"/>
+    </genClasses>
+    <genClasses ecoreClass="RpySyntax.ecore#//RpyStringMapEntry">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute RpySyntax.ecore#//RpyStringMapEntry/key"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute RpySyntax.ecore#//RpyStringMapEntry/value"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/plugin.xml b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/plugin.xml
new file mode 100644
index 0000000..349f13d
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/plugin.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+  <extension point="org.eclipse.emf.ecore.generated_package">
+    <package 
+       uri = "http://www.eclipse.org/papyrus/rpy/RpySyntax" 
+       class = "org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage"
+       genModel = "model/generated/RpySyntax.genmodel" /> 
+	
+  </extension>
+
+
+
+</plugin>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/plugin.xml_gen b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/plugin.xml_gen
new file mode 100644
index 0000000..349f13d
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/plugin.xml_gen
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+  <extension point="org.eclipse.emf.ecore.generated_package">
+    <package 
+       uri = "http://www.eclipse.org/papyrus/rpy/RpySyntax" 
+       class = "org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage"
+       genModel = "model/generated/RpySyntax.genmodel" /> 
+	
+  </extension>
+
+
+
+</plugin>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/AbstractRpySyntaxRuntimeModule.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/AbstractRpySyntaxRuntimeModule.java
new file mode 100644
index 0000000..3302643
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/AbstractRpySyntaxRuntimeModule.java
@@ -0,0 +1,165 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.parser;
+
+import java.util.Properties;
+
+import org.eclipse.xtext.Constants;
+
+import com.google.inject.Binder;
+import com.google.inject.name.Names;
+
+/**
+ * Manual modifications go to {org.eclipse.papyrus.interoperability.rpy.parser.RpySyntaxRuntimeModule}
+ */
+@SuppressWarnings("all")
+public abstract class AbstractRpySyntaxRuntimeModule extends org.eclipse.xtext.common.types.DefaultCommonTypesRuntimeModule {
+
+	protected Properties properties = null;
+
+	@Override
+	public void configure(Binder binder) {
+		properties = tryBindProperties(binder, "org/eclipse/papyrus/interoperability/rpy/parser/RpySyntax.properties");
+		super.configure(binder);
+	}
+	
+	public void configureLanguageName(Binder binder) {
+		binder.bind(String.class).annotatedWith(Names.named(Constants.LANGUAGE_NAME)).toInstance("org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax");
+	}
+	
+	public void configureFileExtensions(Binder binder) {
+		if (properties == null || properties.getProperty(Constants.FILE_EXTENSIONS) == null)
+			binder.bind(String.class).annotatedWith(Names.named(Constants.FILE_EXTENSIONS)).toInstance("cmp,sbs,dat,omd,msc,rpy,clb,ucd,cls,ctd,pld,std");
+	}
+	
+	// contributed by org.eclipse.xtext.generator.grammarAccess.GrammarAccessFragment
+	public java.lang.ClassLoader bindClassLoaderToInstance() {
+		return getClass().getClassLoader();
+	}
+
+	// contributed by org.eclipse.xtext.generator.grammarAccess.GrammarAccessFragment
+	public Class<? extends org.eclipse.xtext.IGrammarAccess> bindIGrammarAccess() {
+		return org.eclipse.papyrus.interoperability.rpy.parser.services.RpySyntaxGrammarAccess.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISemanticSequencer> bindISemanticSequencer() {
+		return org.eclipse.papyrus.interoperability.rpy.parser.serializer.RpySyntaxSemanticSequencer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISyntacticSequencer> bindISyntacticSequencer() {
+		return org.eclipse.papyrus.interoperability.rpy.parser.serializer.RpySyntaxSyntacticSequencer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+	public Class<? extends org.eclipse.xtext.serializer.ISerializer> bindISerializer() {
+		return org.eclipse.xtext.serializer.impl.Serializer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.IParser> bindIParser() {
+		return org.eclipse.papyrus.interoperability.rpy.parser.parser.antlr.RpySyntaxParser.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.ITokenToStringConverter> bindITokenToStringConverter() {
+		return org.eclipse.xtext.parser.antlr.AntlrTokenToStringConverter.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider> bindIAntlrTokenFileProvider() {
+		return org.eclipse.papyrus.interoperability.rpy.parser.parser.antlr.RpySyntaxAntlrTokenFileProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.antlr.Lexer> bindLexer() {
+		return org.eclipse.papyrus.interoperability.rpy.parser.parser.antlr.internal.InternalRpySyntaxLexer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public com.google.inject.Provider<org.eclipse.papyrus.interoperability.rpy.parser.parser.antlr.internal.InternalRpySyntaxLexer> provideInternalRpySyntaxLexer() {
+		return org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.papyrus.interoperability.rpy.parser.parser.antlr.internal.InternalRpySyntaxLexer.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public void configureRuntimeLexer(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.parser.antlr.Lexer.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.parser.antlr.LexerBindings.RUNTIME)).to(org.eclipse.papyrus.interoperability.rpy.parser.parser.antlr.internal.InternalRpySyntaxLexer.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.antlr.ITokenDefProvider> bindITokenDefProvider() {
+		return org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.validation.ValidatorFragment
+	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.eclipse.papyrus.interoperability.rpy.parser.validation.RpySyntaxValidator> bindRpySyntaxValidator() {
+		return org.eclipse.papyrus.interoperability.rpy.parser.validation.RpySyntaxValidator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.scoping.AbstractScopingFragment
+	public Class<? extends org.eclipse.xtext.scoping.IScopeProvider> bindIScopeProvider() {
+		return org.eclipse.papyrus.interoperability.rpy.parser.scoping.RpySyntaxScopeProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.scoping.AbstractScopingFragment
+	public void configureIScopeProviderDelegate(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.scoping.IScopeProvider.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider.NAMED_DELEGATE)).to(org.eclipse.xtext.scoping.impl.ImportedNamespaceAwareLocalScopeProvider.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.scoping.AbstractScopingFragment
+	public void configureIgnoreCaseLinking(com.google.inject.Binder binder) {
+		binder.bindConstant().annotatedWith(org.eclipse.xtext.scoping.IgnoreCaseLinking.class).to(false);
+	}
+
+	// contributed by org.eclipse.xtext.generator.exporting.QualifiedNamesFragment
+	public Class<? extends org.eclipse.xtext.naming.IQualifiedNameProvider> bindIQualifiedNameProvider() {
+		return org.eclipse.xtext.naming.DefaultDeclarativeQualifiedNameProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public Class<? extends org.eclipse.xtext.resource.IContainer.Manager> bindIContainer$Manager() {
+		return org.eclipse.xtext.resource.containers.StateBasedContainerManager.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public Class<? extends org.eclipse.xtext.resource.containers.IAllContainersState.Provider> bindIAllContainersState$Provider() {
+		return org.eclipse.xtext.resource.containers.ResourceSetBasedAllContainersStateProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public void configureIResourceDescriptions(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).to(org.eclipse.xtext.resource.impl.ResourceSetBasedResourceDescriptions.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.builder.BuilderIntegrationFragment
+	public void configureIResourceDescriptionsPersisted(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.xtext.resource.IResourceDescriptions.class).annotatedWith(com.google.inject.name.Names.named(org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider.PERSISTED_DESCRIPTIONS)).to(org.eclipse.xtext.resource.impl.ResourceSetBasedResourceDescriptions.class);
+	}
+
+	// contributed by org.eclipse.xtext.generator.generator.GeneratorFragment
+	public Class<? extends org.eclipse.xtext.generator.IGenerator> bindIGenerator() {
+		return org.eclipse.papyrus.interoperability.rpy.parser.generator.RpySyntaxGenerator.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.formatting.FormatterFragment
+	public Class<? extends org.eclipse.xtext.formatting.IFormatter> bindIFormatter() {
+		return org.eclipse.papyrus.interoperability.rpy.parser.formatting.RpySyntaxFormatter.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.scoping.IGlobalScopeProvider> bindIGlobalScopeProvider() {
+		return org.eclipse.xtext.common.types.xtext.TypesAwareDefaultGlobalScopeProvider.class;
+	}
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/RpySyntax.xtextbin b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/RpySyntax.xtextbin
new file mode 100644
index 0000000..2c213fe
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/RpySyntax.xtextbin
Binary files differ
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/RpySyntaxStandaloneSetupGenerated.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/RpySyntaxStandaloneSetupGenerated.java
new file mode 100644
index 0000000..7301af6
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/RpySyntaxStandaloneSetupGenerated.java
@@ -0,0 +1,76 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.parser;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.xtext.ISetup;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+/**
+ * Generated from StandaloneSetup.xpt!
+ */
+@SuppressWarnings("all")
+public class RpySyntaxStandaloneSetupGenerated implements ISetup {
+
+	@Override
+	public Injector createInjectorAndDoEMFRegistration() {
+		org.eclipse.xtext.common.TerminalsStandaloneSetup.doSetup();
+
+		Injector injector = createInjector();
+		register(injector);
+		return injector;
+	}
+	
+	public Injector createInjector() {
+		return Guice.createInjector(new org.eclipse.papyrus.interoperability.rpy.parser.RpySyntaxRuntimeModule());
+	}
+	
+	public void register(Injector injector) {
+	if (!EPackage.Registry.INSTANCE.containsKey("http://www.eclipse.org/papyrus/rpy/RpySyntax")) {
+		EPackage.Registry.INSTANCE.put("http://www.eclipse.org/papyrus/rpy/RpySyntax", org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage.eINSTANCE);
+	}
+
+		org.eclipse.xtext.resource.IResourceFactory resourceFactory = injector.getInstance(org.eclipse.xtext.resource.IResourceFactory.class);
+		org.eclipse.xtext.resource.IResourceServiceProvider serviceProvider = injector.getInstance(org.eclipse.xtext.resource.IResourceServiceProvider.class);
+		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("cmp", resourceFactory);
+		org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("cmp", serviceProvider);
+		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("sbs", resourceFactory);
+		org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("sbs", serviceProvider);
+		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("dat", resourceFactory);
+		org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("dat", serviceProvider);
+		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("omd", resourceFactory);
+		org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("omd", serviceProvider);
+		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("msc", resourceFactory);
+		org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("msc", serviceProvider);
+		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("rpy", resourceFactory);
+		org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("rpy", serviceProvider);
+		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("clb", resourceFactory);
+		org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("clb", serviceProvider);
+		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("ucd", resourceFactory);
+		org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("ucd", serviceProvider);
+		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("cls", resourceFactory);
+		org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("cls", serviceProvider);
+		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("ctd", resourceFactory);
+		org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("ctd", serviceProvider);
+		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("pld", resourceFactory);
+		org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("pld", serviceProvider);
+		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("std", resourceFactory);
+		org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("std", serviceProvider);
+		
+
+
+	}
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/parser/antlr/RpySyntaxAntlrTokenFileProvider.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/parser/antlr/RpySyntaxAntlrTokenFileProvider.java
new file mode 100644
index 0000000..db6f93d
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/parser/antlr/RpySyntaxAntlrTokenFileProvider.java
@@ -0,0 +1,25 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.parser.parser.antlr;
+
+import java.io.InputStream;
+import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider;
+
+public class RpySyntaxAntlrTokenFileProvider implements IAntlrTokenFileProvider {
+	
+	@Override
+	public InputStream getAntlrTokenFile() {
+		ClassLoader classLoader = getClass().getClassLoader();
+    	return classLoader.getResourceAsStream("org/eclipse/papyrus/interoperability/rpy/parser/parser/antlr/internal/InternalRpySyntax.tokens");
+	}
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/parser/antlr/RpySyntaxParser.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/parser/antlr/RpySyntaxParser.java
new file mode 100644
index 0000000..44f185d
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/parser/antlr/RpySyntaxParser.java
@@ -0,0 +1,48 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.parser.parser.antlr;
+
+import com.google.inject.Inject;
+
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.papyrus.interoperability.rpy.parser.services.RpySyntaxGrammarAccess;
+
+public class RpySyntaxParser extends org.eclipse.xtext.parser.antlr.AbstractAntlrParser {
+	
+	@Inject
+	private RpySyntaxGrammarAccess grammarAccess;
+	
+	@Override
+	protected void setInitialHiddenTokens(XtextTokenStream tokenStream) {
+		tokenStream.setInitialHiddenTokens("RULE_WS");
+	}
+	
+	@Override
+	protected org.eclipse.papyrus.interoperability.rpy.parser.parser.antlr.internal.InternalRpySyntaxParser createParser(XtextTokenStream stream) {
+		return new org.eclipse.papyrus.interoperability.rpy.parser.parser.antlr.internal.InternalRpySyntaxParser(stream, getGrammarAccess());
+	}
+	
+	@Override 
+	protected String getDefaultRuleName() {
+		return "RpyFile";
+	}
+	
+	public RpySyntaxGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+	
+	public void setGrammarAccess(RpySyntaxGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+	
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/parser/antlr/internal/InternalRpySyntax.g b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/parser/antlr/internal/InternalRpySyntax.g
new file mode 100644
index 0000000..e95d757
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/parser/antlr/internal/InternalRpySyntax.g
@@ -0,0 +1,732 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+grammar InternalRpySyntax;
+
+options {
+	superClass=AbstractInternalAntlrParser;
+	backtrack=true;
+	
+}
+
+@lexer::header {
+package org.eclipse.papyrus.interoperability.rpy.parser.parser.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import. 
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.parser.antlr.Lexer;
+}
+
+@parser::header {
+package org.eclipse.papyrus.interoperability.rpy.parser.parser.antlr.internal; 
+
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
+import org.eclipse.papyrus.interoperability.rpy.parser.services.RpySyntaxGrammarAccess;
+
+}
+
+@parser::members {
+
+/*
+  This grammar contains a lot of empty actions to work around a bug in ANTLR.
+  Otherwise the ANTLR tool will create synpreds that cannot be compiled in some rare cases.
+*/
+ 
+ 	private RpySyntaxGrammarAccess grammarAccess;
+ 	
+    public InternalRpySyntaxParser(TokenStream input, RpySyntaxGrammarAccess grammarAccess) {
+        this(input);
+        this.grammarAccess = grammarAccess;
+        registerRules(grammarAccess.getGrammar());
+    }
+    
+    @Override
+    protected String getFirstRuleName() {
+    	return "RpyFile";	
+   	}
+   	
+   	@Override
+   	protected RpySyntaxGrammarAccess getGrammarAccess() {
+   		return grammarAccess;
+   	}
+}
+
+@rulecatch { 
+    catch (RecognitionException re) { 
+        recover(input,re); 
+        appendSkippedTokens();
+    } 
+}
+
+
+
+
+// Entry rule entryRuleRpyFile
+entryRuleRpyFile returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getRpyFileRule()); }
+	 iv_ruleRpyFile=ruleRpyFile 
+	 { $current=$iv_ruleRpyFile.current; } 
+	 EOF 
+;
+
+// Rule RpyFile
+ruleRpyFile returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='I-Logix-RPY-Archive' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getRpyFileAccess().getILogixRPYArchiveKeyword_0());
+    }
+(
+(
+		lv_version_1_0=RULE_RPY_VERSION
+		{
+			newLeafNode(lv_version_1_0, grammarAccess.getRpyFileAccess().getVersionRPY_VERSIONTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getRpyFileRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"version",
+        		lv_version_1_0, 
+        		"org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.RPY_VERSION");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRpyFileAccess().getContentsRpyContentParserRuleCall_2_0()); 
+	    }
+		lv_contents_2_0=ruleRpyContent		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRpyFileRule());
+	        }
+       		add(
+       			$current, 
+       			"contents",
+        		lv_contents_2_0, 
+        		"org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.RpyContent");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*)
+;
+
+
+
+
+
+// Entry rule entryRuleRpyContent
+entryRuleRpyContent returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getRpyContentRule()); }
+	 iv_ruleRpyContent=ruleRpyContent 
+	 { $current=$iv_ruleRpyContent.current; } 
+	 EOF 
+;
+
+// Rule RpyContent
+ruleRpyContent returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getRpyContentAccess().getRpyNodeParserRuleCall_0()); 
+    }
+    this_RpyNode_0=ruleRpyNode
+    { 
+        $current = $this_RpyNode_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getRpyContentAccess().getRpyFeatureParserRuleCall_1()); 
+    }
+    this_RpyFeature_1=ruleRpyFeature
+    { 
+        $current = $this_RpyFeature_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleRpyNode
+entryRuleRpyNode returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getRpyNodeRule()); }
+	 iv_ruleRpyNode=ruleRpyNode 
+	 { $current=$iv_ruleRpyNode.current; } 
+	 EOF 
+;
+
+// Rule RpyNode
+ruleRpyNode returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='{' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getRpyNodeAccess().getLeftCurlyBracketKeyword_0());
+    }
+(
+(
+		lv_name_1_0=RULE_ID
+		{
+			newLeafNode(lv_name_1_0, grammarAccess.getRpyNodeAccess().getNameIDTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getRpyNodeRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"org.eclipse.xtext.common.Terminals.ID");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRpyNodeAccess().getContentsRpyContentParserRuleCall_2_0()); 
+	    }
+		lv_contents_2_0=ruleRpyContent		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRpyNodeRule());
+	        }
+       		add(
+       			$current, 
+       			"contents",
+        		lv_contents_2_0, 
+        		"org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.RpyContent");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)+	otherlv_3='}' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getRpyNodeAccess().getRightCurlyBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleRpyFeature
+entryRuleRpyFeature returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getRpyFeatureRule()); }
+	 iv_ruleRpyFeature=ruleRpyFeature 
+	 { $current=$iv_ruleRpyFeature.current; } 
+	 EOF 
+;
+
+// Rule RpyFeature
+ruleRpyFeature returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='-' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getRpyFeatureAccess().getHyphenMinusKeyword_0());
+    }
+(
+(
+		lv_name_1_0=RULE_ID
+		{
+			newLeafNode(lv_name_1_0, grammarAccess.getRpyFeatureAccess().getNameIDTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getRpyFeatureRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"org.eclipse.xtext.common.Terminals.ID");
+	    }
+
+)
+)	otherlv_2='=' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getRpyFeatureAccess().getEqualsSignKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRpyFeatureAccess().getValueRpyFeatureValueParserRuleCall_3_0()); 
+	    }
+		lv_value_3_0=ruleRpyFeatureValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRpyFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"value",
+        		lv_value_3_0, 
+        		"org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.RpyFeatureValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleRpyFeatureValue
+entryRuleRpyFeatureValue returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getRpyFeatureValueRule()); }
+	 iv_ruleRpyFeatureValue=ruleRpyFeatureValue 
+	 { $current=$iv_ruleRpyFeatureValue.current; } 
+	 EOF 
+;
+
+// Rule RpyFeatureValue
+ruleRpyFeatureValue returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getRpyFeatureValueAccess().getSimpleValueListParserRuleCall_0()); 
+    }
+    this_SimpleValueList_0=ruleSimpleValueList
+    { 
+        $current = $this_SimpleValueList_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getRpyFeatureValueAccess().getRpyNodeListParserRuleCall_1()); 
+    }
+    this_RpyNodeList_1=ruleRpyNodeList
+    { 
+        $current = $this_RpyNodeList_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+	{ 
+	  /* */ 
+	}
+    { 
+        newCompositeNode(grammarAccess.getRpyFeatureValueAccess().getRpyStringMapParserRuleCall_2()); 
+    }
+    this_RpyStringMap_2=ruleRpyStringMap
+    { 
+        $current = $this_RpyStringMap_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleRpyNodeList
+entryRuleRpyNodeList returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getRpyNodeListRule()); }
+	 iv_ruleRpyNodeList=ruleRpyNodeList 
+	 { $current=$iv_ruleRpyNodeList.current; } 
+	 EOF 
+;
+
+// Rule RpyNodeList
+ruleRpyNodeList returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRpyNodeListAccess().getValuesRpyNodeParserRuleCall_0()); 
+	    }
+		lv_values_0_0=ruleRpyNode		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRpyNodeListRule());
+	        }
+       		add(
+       			$current, 
+       			"values",
+        		lv_values_0_0, 
+        		"org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.RpyNode");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)+
+;
+
+
+
+
+
+// Entry rule entryRuleSimpleValueList
+entryRuleSimpleValueList returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getSimpleValueListRule()); }
+	 iv_ruleSimpleValueList=ruleSimpleValueList 
+	 { $current=$iv_ruleSimpleValueList.current; } 
+	 EOF 
+;
+
+// Rule SimpleValueList
+ruleSimpleValueList returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getSimpleValueListAccess().getSimpleValueListAction_0(),
+            $current);
+    }
+)(
+(
+		lv_isOldID_1_0=	'OLDID' 
+    {
+        newLeafNode(lv_isOldID_1_0, grammarAccess.getSimpleValueListAccess().getIsOldIDOLDIDKeyword_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getSimpleValueListRule());
+	        }
+       		setWithLastConsumed($current, "isOldID", true, "OLDID");
+	    }
+
+)
+)?(
+(
+		lv_isGUID_2_0=	'GUID' 
+    {
+        newLeafNode(lv_isGUID_2_0, grammarAccess.getSimpleValueListAccess().getIsGUIDGUIDKeyword_2_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getSimpleValueListRule());
+	        }
+       		setWithLastConsumed($current, "isGUID", true, "GUID");
+	    }
+
+)
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getSimpleValueListAccess().getValueElementsRpySimpleValueElementParserRuleCall_3_0()); 
+	    }
+		lv_valueElements_3_0=ruleRpySimpleValueElement		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getSimpleValueListRule());
+	        }
+       		add(
+       			$current, 
+       			"valueElements",
+        		lv_valueElements_3_0, 
+        		"org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.RpySimpleValueElement");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)+)
+;
+
+
+
+
+
+// Entry rule entryRuleRpySimpleValueElement
+entryRuleRpySimpleValueElement returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getRpySimpleValueElementRule()); }
+	 iv_ruleRpySimpleValueElement=ruleRpySimpleValueElement 
+	 { $current=$iv_ruleRpySimpleValueElement.current; } 
+	 EOF 
+;
+
+// Rule RpySimpleValueElement
+ruleRpySimpleValueElement returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	{ 
+	  /* */ 
+	}
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getRpySimpleValueElementAccess().getRpySimpleValueElementAction_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRpySimpleValueElementAccess().getValuesVALUE_TERMINALParserRuleCall_1_0()); 
+	    }
+		lv_values_1_0=ruleVALUE_TERMINAL		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRpySimpleValueElementRule());
+	        }
+       		add(
+       			$current, 
+       			"values",
+        		lv_values_1_0, 
+        		"org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.VALUE_TERMINAL");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_2=';' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getRpySimpleValueElementAccess().getSemicolonKeyword_2());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleVALUE_TERMINAL
+entryRuleVALUE_TERMINAL returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getVALUE_TERMINALRule()); } 
+	 iv_ruleVALUE_TERMINAL=ruleVALUE_TERMINAL 
+	 { $current=$iv_ruleVALUE_TERMINAL.current.getText(); }  
+	 EOF 
+;
+
+// Rule VALUE_TERMINAL
+ruleVALUE_TERMINAL returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(    this_STRING_0=RULE_STRING    {
+		$current.merge(this_STRING_0);
+    }
+
+    { 
+    newLeafNode(this_STRING_0, grammarAccess.getVALUE_TERMINALAccess().getSTRINGTerminalRuleCall_0()); 
+    }
+
+    |    this_ID_1=RULE_ID    {
+		$current.merge(this_ID_1);
+    }
+
+    { 
+    newLeafNode(this_ID_1, grammarAccess.getVALUE_TERMINALAccess().getIDTerminalRuleCall_1()); 
+    }
+
+    |    this_RPY_GUID_2=RULE_RPY_GUID    {
+		$current.merge(this_RPY_GUID_2);
+    }
+
+    { 
+    newLeafNode(this_RPY_GUID_2, grammarAccess.getVALUE_TERMINALAccess().getRPY_GUIDTerminalRuleCall_2()); 
+    }
+
+    |    this_INT_3=RULE_INT    {
+		$current.merge(this_INT_3);
+    }
+
+    { 
+    newLeafNode(this_INT_3, grammarAccess.getVALUE_TERMINALAccess().getINTTerminalRuleCall_3()); 
+    }
+
+    |    this_RPY_TIME_4=RULE_RPY_TIME    {
+		$current.merge(this_RPY_TIME_4);
+    }
+
+    { 
+    newLeafNode(this_RPY_TIME_4, grammarAccess.getVALUE_TERMINALAccess().getRPY_TIMETerminalRuleCall_4()); 
+    }
+
+    |    this_RPY_REAL_5=RULE_RPY_REAL    {
+		$current.merge(this_RPY_REAL_5);
+    }
+
+    { 
+    newLeafNode(this_RPY_REAL_5, grammarAccess.getVALUE_TERMINALAccess().getRPY_REALTerminalRuleCall_5()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleRpyStringMap
+entryRuleRpyStringMap returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getRpyStringMapRule()); }
+	 iv_ruleRpyStringMap=ruleRpyStringMap 
+	 { $current=$iv_ruleRpyStringMap.current; } 
+	 EOF 
+;
+
+// Rule RpyStringMap
+ruleRpyStringMap returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getRpyStringMapAccess().getEntriesRpyStringMapEntryParserRuleCall_0()); 
+	    }
+		lv_entries_0_0=ruleRpyStringMapEntry		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getRpyStringMapRule());
+	        }
+       		add(
+       			$current, 
+       			"entries",
+        		lv_entries_0_0, 
+        		"org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.RpyStringMapEntry");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)+
+;
+
+
+
+
+
+// Entry rule entryRuleRpyStringMapEntry
+entryRuleRpyStringMapEntry returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getRpyStringMapEntryRule()); }
+	 iv_ruleRpyStringMapEntry=ruleRpyStringMapEntry 
+	 { $current=$iv_ruleRpyStringMapEntry.current; } 
+	 EOF 
+;
+
+// Rule RpyStringMapEntry
+ruleRpyStringMapEntry returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_key_0_0=RULE_STRING
+		{
+			newLeafNode(lv_key_0_0, grammarAccess.getRpyStringMapEntryAccess().getKeySTRINGTerminalRuleCall_0_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getRpyStringMapEntryRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"key",
+        		lv_key_0_0, 
+        		"org.eclipse.xtext.common.Terminals.STRING");
+	    }
+
+)
+)(
+(
+		lv_value_1_0=RULE_STRING
+		{
+			newLeafNode(lv_value_1_0, grammarAccess.getRpyStringMapEntryAccess().getValueSTRINGTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getRpyStringMapEntryRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"value",
+        		lv_value_1_0, 
+        		"org.eclipse.xtext.common.Terminals.STRING");
+	    }
+
+)
+))
+;
+
+
+
+
+
+RULE_RPY_GUID : ('a'..'z'|'A'..'Z'|'0'..'9')+ ('-' ('a'..'z'|'A'..'Z'|'0'..'9')+)+;
+
+RULE_RPY_TIME : ('0'..'9')+ '.' ('0'..'9')+ '.' ('0'..'9')+ '::' ('0'..'9')+ ':' ('0'..'9')+ ':' '0'..'9';
+
+RULE_RPY_REAL : '-'? ('0'..'9')+ '.' ('0'..'9')+;
+
+RULE_INT : '-'? ('0'..'9')+;
+
+RULE_RPY_VERSION : 'version' ~(('\n'|'\r'))* ('\n'|'\r');
+
+RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
+
+RULE_STRING : ('"' ('\\' .|~(('\\'|'"')))* '"'|'\'' ('\\' .|~(('\\'|'\'')))* '\'');
+
+RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/';
+
+RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')?;
+
+RULE_WS : (' '|'\t'|'\r'|'\n')+;
+
+RULE_ANY_OTHER : .;
+
+
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/parser/antlr/internal/InternalRpySyntax.tokens b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/parser/antlr/internal/InternalRpySyntax.tokens
new file mode 100644
index 0000000..91d9581
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/parser/antlr/internal/InternalRpySyntax.tokens
@@ -0,0 +1,27 @@
+'-'=18
+';'=22
+'='=19
+'GUID'=21
+'I-Logix-RPY-Archive'=15
+'OLDID'=20
+'{'=16
+'}'=17
+RULE_ANY_OTHER=14
+RULE_ID=5
+RULE_INT=8
+RULE_ML_COMMENT=11
+RULE_RPY_GUID=7
+RULE_RPY_REAL=10
+RULE_RPY_TIME=9
+RULE_RPY_VERSION=4
+RULE_SL_COMMENT=12
+RULE_STRING=6
+RULE_WS=13
+T__15=15
+T__16=16
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/parser/antlr/internal/InternalRpySyntaxLexer.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/parser/antlr/internal/InternalRpySyntaxLexer.java
new file mode 100644
index 0000000..34b83b2
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/parser/antlr/internal/InternalRpySyntaxLexer.java
@@ -0,0 +1,1602 @@
+package org.eclipse.papyrus.interoperability.rpy.parser.parser.antlr.internal;
+
+// Hack: Use our own Lexer superclass by means of import. 
+// Currently there is no other way to specify the superclass for the lexer.
+import org.eclipse.xtext.parser.antlr.Lexer;
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+
+@SuppressWarnings("all")
+public class InternalRpySyntaxLexer extends Lexer {
+    public static final int RULE_RPY_GUID=7;
+    public static final int RULE_RPY_TIME=9;
+    public static final int RULE_STRING=6;
+    public static final int RULE_SL_COMMENT=12;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int EOF=-1;
+    public static final int RULE_ID=5;
+    public static final int RULE_WS=13;
+    public static final int RULE_RPY_VERSION=4;
+    public static final int RULE_ANY_OTHER=14;
+    public static final int RULE_INT=8;
+    public static final int T__22=22;
+    public static final int RULE_ML_COMMENT=11;
+    public static final int RULE_RPY_REAL=10;
+    public static final int T__20=20;
+    public static final int T__21=21;
+
+    // delegates
+    // delegators
+
+    public InternalRpySyntaxLexer() {;} 
+    public InternalRpySyntaxLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalRpySyntaxLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "InternalRpySyntax.g"; }
+
+    // $ANTLR start "T__15"
+    public final void mT__15() throws RecognitionException {
+        try {
+            int _type = T__15;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:11:7: ( 'I-Logix-RPY-Archive' )
+            // InternalRpySyntax.g:11:9: 'I-Logix-RPY-Archive'
+            {
+            match("I-Logix-RPY-Archive"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__15"
+
+    // $ANTLR start "T__16"
+    public final void mT__16() throws RecognitionException {
+        try {
+            int _type = T__16;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:12:7: ( '{' )
+            // InternalRpySyntax.g:12:9: '{'
+            {
+            match('{'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__16"
+
+    // $ANTLR start "T__17"
+    public final void mT__17() throws RecognitionException {
+        try {
+            int _type = T__17;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:13:7: ( '}' )
+            // InternalRpySyntax.g:13:9: '}'
+            {
+            match('}'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__17"
+
+    // $ANTLR start "T__18"
+    public final void mT__18() throws RecognitionException {
+        try {
+            int _type = T__18;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:14:7: ( '-' )
+            // InternalRpySyntax.g:14:9: '-'
+            {
+            match('-'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__18"
+
+    // $ANTLR start "T__19"
+    public final void mT__19() throws RecognitionException {
+        try {
+            int _type = T__19;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:15:7: ( '=' )
+            // InternalRpySyntax.g:15:9: '='
+            {
+            match('='); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__19"
+
+    // $ANTLR start "T__20"
+    public final void mT__20() throws RecognitionException {
+        try {
+            int _type = T__20;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:16:7: ( 'OLDID' )
+            // InternalRpySyntax.g:16:9: 'OLDID'
+            {
+            match("OLDID"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__20"
+
+    // $ANTLR start "T__21"
+    public final void mT__21() throws RecognitionException {
+        try {
+            int _type = T__21;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:17:7: ( 'GUID' )
+            // InternalRpySyntax.g:17:9: 'GUID'
+            {
+            match("GUID"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__21"
+
+    // $ANTLR start "T__22"
+    public final void mT__22() throws RecognitionException {
+        try {
+            int _type = T__22;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:18:7: ( ';' )
+            // InternalRpySyntax.g:18:9: ';'
+            {
+            match(';'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__22"
+
+    // $ANTLR start "RULE_RPY_GUID"
+    public final void mRULE_RPY_GUID() throws RecognitionException {
+        try {
+            int _type = RULE_RPY_GUID;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:710:15: ( ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )+ ( '-' ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )+ )+ )
+            // InternalRpySyntax.g:710:17: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )+ ( '-' ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )+ )+
+            {
+            // InternalRpySyntax.g:710:17: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )+
+            int cnt1=0;
+            loop1:
+            do {
+                int alt1=2;
+                int LA1_0 = input.LA(1);
+
+                if ( ((LA1_0>='0' && LA1_0<='9')||(LA1_0>='A' && LA1_0<='Z')||(LA1_0>='a' && LA1_0<='z')) ) {
+                    alt1=1;
+                }
+
+
+                switch (alt1) {
+            	case 1 :
+            	    // InternalRpySyntax.g:
+            	    {
+            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt1 >= 1 ) break loop1;
+                        EarlyExitException eee =
+                            new EarlyExitException(1, input);
+                        throw eee;
+                }
+                cnt1++;
+            } while (true);
+
+            // InternalRpySyntax.g:710:47: ( '-' ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )+ )+
+            int cnt3=0;
+            loop3:
+            do {
+                int alt3=2;
+                int LA3_0 = input.LA(1);
+
+                if ( (LA3_0=='-') ) {
+                    alt3=1;
+                }
+
+
+                switch (alt3) {
+            	case 1 :
+            	    // InternalRpySyntax.g:710:48: '-' ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )+
+            	    {
+            	    match('-'); 
+            	    // InternalRpySyntax.g:710:52: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' )+
+            	    int cnt2=0;
+            	    loop2:
+            	    do {
+            	        int alt2=2;
+            	        int LA2_0 = input.LA(1);
+
+            	        if ( ((LA2_0>='0' && LA2_0<='9')||(LA2_0>='A' && LA2_0<='Z')||(LA2_0>='a' && LA2_0<='z')) ) {
+            	            alt2=1;
+            	        }
+
+
+            	        switch (alt2) {
+            	    	case 1 :
+            	    	    // InternalRpySyntax.g:
+            	    	    {
+            	    	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+            	    	        input.consume();
+
+            	    	    }
+            	    	    else {
+            	    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	    	        recover(mse);
+            	    	        throw mse;}
+
+
+            	    	    }
+            	    	    break;
+
+            	    	default :
+            	    	    if ( cnt2 >= 1 ) break loop2;
+            	                EarlyExitException eee =
+            	                    new EarlyExitException(2, input);
+            	                throw eee;
+            	        }
+            	        cnt2++;
+            	    } while (true);
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt3 >= 1 ) break loop3;
+                        EarlyExitException eee =
+                            new EarlyExitException(3, input);
+                        throw eee;
+                }
+                cnt3++;
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_RPY_GUID"
+
+    // $ANTLR start "RULE_RPY_TIME"
+    public final void mRULE_RPY_TIME() throws RecognitionException {
+        try {
+            int _type = RULE_RPY_TIME;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:712:15: ( ( '0' .. '9' )+ '.' ( '0' .. '9' )+ '.' ( '0' .. '9' )+ '::' ( '0' .. '9' )+ ':' ( '0' .. '9' )+ ':' '0' .. '9' )
+            // InternalRpySyntax.g:712:17: ( '0' .. '9' )+ '.' ( '0' .. '9' )+ '.' ( '0' .. '9' )+ '::' ( '0' .. '9' )+ ':' ( '0' .. '9' )+ ':' '0' .. '9'
+            {
+            // InternalRpySyntax.g:712:17: ( '0' .. '9' )+
+            int cnt4=0;
+            loop4:
+            do {
+                int alt4=2;
+                int LA4_0 = input.LA(1);
+
+                if ( ((LA4_0>='0' && LA4_0<='9')) ) {
+                    alt4=1;
+                }
+
+
+                switch (alt4) {
+            	case 1 :
+            	    // InternalRpySyntax.g:712:18: '0' .. '9'
+            	    {
+            	    matchRange('0','9'); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt4 >= 1 ) break loop4;
+                        EarlyExitException eee =
+                            new EarlyExitException(4, input);
+                        throw eee;
+                }
+                cnt4++;
+            } while (true);
+
+            match('.'); 
+            // InternalRpySyntax.g:712:33: ( '0' .. '9' )+
+            int cnt5=0;
+            loop5:
+            do {
+                int alt5=2;
+                int LA5_0 = input.LA(1);
+
+                if ( ((LA5_0>='0' && LA5_0<='9')) ) {
+                    alt5=1;
+                }
+
+
+                switch (alt5) {
+            	case 1 :
+            	    // InternalRpySyntax.g:712:34: '0' .. '9'
+            	    {
+            	    matchRange('0','9'); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt5 >= 1 ) break loop5;
+                        EarlyExitException eee =
+                            new EarlyExitException(5, input);
+                        throw eee;
+                }
+                cnt5++;
+            } while (true);
+
+            match('.'); 
+            // InternalRpySyntax.g:712:49: ( '0' .. '9' )+
+            int cnt6=0;
+            loop6:
+            do {
+                int alt6=2;
+                int LA6_0 = input.LA(1);
+
+                if ( ((LA6_0>='0' && LA6_0<='9')) ) {
+                    alt6=1;
+                }
+
+
+                switch (alt6) {
+            	case 1 :
+            	    // InternalRpySyntax.g:712:50: '0' .. '9'
+            	    {
+            	    matchRange('0','9'); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt6 >= 1 ) break loop6;
+                        EarlyExitException eee =
+                            new EarlyExitException(6, input);
+                        throw eee;
+                }
+                cnt6++;
+            } while (true);
+
+            match("::"); 
+
+            // InternalRpySyntax.g:712:66: ( '0' .. '9' )+
+            int cnt7=0;
+            loop7:
+            do {
+                int alt7=2;
+                int LA7_0 = input.LA(1);
+
+                if ( ((LA7_0>='0' && LA7_0<='9')) ) {
+                    alt7=1;
+                }
+
+
+                switch (alt7) {
+            	case 1 :
+            	    // InternalRpySyntax.g:712:67: '0' .. '9'
+            	    {
+            	    matchRange('0','9'); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt7 >= 1 ) break loop7;
+                        EarlyExitException eee =
+                            new EarlyExitException(7, input);
+                        throw eee;
+                }
+                cnt7++;
+            } while (true);
+
+            match(':'); 
+            // InternalRpySyntax.g:712:82: ( '0' .. '9' )+
+            int cnt8=0;
+            loop8:
+            do {
+                int alt8=2;
+                int LA8_0 = input.LA(1);
+
+                if ( ((LA8_0>='0' && LA8_0<='9')) ) {
+                    alt8=1;
+                }
+
+
+                switch (alt8) {
+            	case 1 :
+            	    // InternalRpySyntax.g:712:83: '0' .. '9'
+            	    {
+            	    matchRange('0','9'); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt8 >= 1 ) break loop8;
+                        EarlyExitException eee =
+                            new EarlyExitException(8, input);
+                        throw eee;
+                }
+                cnt8++;
+            } while (true);
+
+            match(':'); 
+            matchRange('0','9'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_RPY_TIME"
+
+    // $ANTLR start "RULE_RPY_REAL"
+    public final void mRULE_RPY_REAL() throws RecognitionException {
+        try {
+            int _type = RULE_RPY_REAL;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:714:15: ( ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+ )
+            // InternalRpySyntax.g:714:17: ( '-' )? ( '0' .. '9' )+ '.' ( '0' .. '9' )+
+            {
+            // InternalRpySyntax.g:714:17: ( '-' )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0=='-') ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // InternalRpySyntax.g:714:17: '-'
+                    {
+                    match('-'); 
+
+                    }
+                    break;
+
+            }
+
+            // InternalRpySyntax.g:714:22: ( '0' .. '9' )+
+            int cnt10=0;
+            loop10:
+            do {
+                int alt10=2;
+                int LA10_0 = input.LA(1);
+
+                if ( ((LA10_0>='0' && LA10_0<='9')) ) {
+                    alt10=1;
+                }
+
+
+                switch (alt10) {
+            	case 1 :
+            	    // InternalRpySyntax.g:714:23: '0' .. '9'
+            	    {
+            	    matchRange('0','9'); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt10 >= 1 ) break loop10;
+                        EarlyExitException eee =
+                            new EarlyExitException(10, input);
+                        throw eee;
+                }
+                cnt10++;
+            } while (true);
+
+            match('.'); 
+            // InternalRpySyntax.g:714:38: ( '0' .. '9' )+
+            int cnt11=0;
+            loop11:
+            do {
+                int alt11=2;
+                int LA11_0 = input.LA(1);
+
+                if ( ((LA11_0>='0' && LA11_0<='9')) ) {
+                    alt11=1;
+                }
+
+
+                switch (alt11) {
+            	case 1 :
+            	    // InternalRpySyntax.g:714:39: '0' .. '9'
+            	    {
+            	    matchRange('0','9'); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt11 >= 1 ) break loop11;
+                        EarlyExitException eee =
+                            new EarlyExitException(11, input);
+                        throw eee;
+                }
+                cnt11++;
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_RPY_REAL"
+
+    // $ANTLR start "RULE_INT"
+    public final void mRULE_INT() throws RecognitionException {
+        try {
+            int _type = RULE_INT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:716:10: ( ( '-' )? ( '0' .. '9' )+ )
+            // InternalRpySyntax.g:716:12: ( '-' )? ( '0' .. '9' )+
+            {
+            // InternalRpySyntax.g:716:12: ( '-' )?
+            int alt12=2;
+            int LA12_0 = input.LA(1);
+
+            if ( (LA12_0=='-') ) {
+                alt12=1;
+            }
+            switch (alt12) {
+                case 1 :
+                    // InternalRpySyntax.g:716:12: '-'
+                    {
+                    match('-'); 
+
+                    }
+                    break;
+
+            }
+
+            // InternalRpySyntax.g:716:17: ( '0' .. '9' )+
+            int cnt13=0;
+            loop13:
+            do {
+                int alt13=2;
+                int LA13_0 = input.LA(1);
+
+                if ( ((LA13_0>='0' && LA13_0<='9')) ) {
+                    alt13=1;
+                }
+
+
+                switch (alt13) {
+            	case 1 :
+            	    // InternalRpySyntax.g:716:18: '0' .. '9'
+            	    {
+            	    matchRange('0','9'); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt13 >= 1 ) break loop13;
+                        EarlyExitException eee =
+                            new EarlyExitException(13, input);
+                        throw eee;
+                }
+                cnt13++;
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_INT"
+
+    // $ANTLR start "RULE_RPY_VERSION"
+    public final void mRULE_RPY_VERSION() throws RecognitionException {
+        try {
+            int _type = RULE_RPY_VERSION;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:718:18: ( 'version' (~ ( ( '\\n' | '\\r' ) ) )* ( '\\n' | '\\r' ) )
+            // InternalRpySyntax.g:718:20: 'version' (~ ( ( '\\n' | '\\r' ) ) )* ( '\\n' | '\\r' )
+            {
+            match("version"); 
+
+            // InternalRpySyntax.g:718:30: (~ ( ( '\\n' | '\\r' ) ) )*
+            loop14:
+            do {
+                int alt14=2;
+                int LA14_0 = input.LA(1);
+
+                if ( ((LA14_0>='\u0000' && LA14_0<='\t')||(LA14_0>='\u000B' && LA14_0<='\f')||(LA14_0>='\u000E' && LA14_0<='\uFFFF')) ) {
+                    alt14=1;
+                }
+
+
+                switch (alt14) {
+            	case 1 :
+            	    // InternalRpySyntax.g:718:30: ~ ( ( '\\n' | '\\r' ) )
+            	    {
+            	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop14;
+                }
+            } while (true);
+
+            if ( input.LA(1)=='\n'||input.LA(1)=='\r' ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;}
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_RPY_VERSION"
+
+    // $ANTLR start "RULE_ID"
+    public final void mRULE_ID() throws RecognitionException {
+        try {
+            int _type = RULE_ID;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:720:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
+            // InternalRpySyntax.g:720:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+            {
+            // InternalRpySyntax.g:720:11: ( '^' )?
+            int alt15=2;
+            int LA15_0 = input.LA(1);
+
+            if ( (LA15_0=='^') ) {
+                alt15=1;
+            }
+            switch (alt15) {
+                case 1 :
+                    // InternalRpySyntax.g:720:11: '^'
+                    {
+                    match('^'); 
+
+                    }
+                    break;
+
+            }
+
+            if ( (input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+                input.consume();
+
+            }
+            else {
+                MismatchedSetException mse = new MismatchedSetException(null,input);
+                recover(mse);
+                throw mse;}
+
+            // InternalRpySyntax.g:720:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+            loop16:
+            do {
+                int alt16=2;
+                int LA16_0 = input.LA(1);
+
+                if ( ((LA16_0>='0' && LA16_0<='9')||(LA16_0>='A' && LA16_0<='Z')||LA16_0=='_'||(LA16_0>='a' && LA16_0<='z')) ) {
+                    alt16=1;
+                }
+
+
+                switch (alt16) {
+            	case 1 :
+            	    // InternalRpySyntax.g:
+            	    {
+            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop16;
+                }
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ID"
+
+    // $ANTLR start "RULE_STRING"
+    public final void mRULE_STRING() throws RecognitionException {
+        try {
+            int _type = RULE_STRING;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:722:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) )
+            // InternalRpySyntax.g:722:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+            {
+            // InternalRpySyntax.g:722:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+            int alt19=2;
+            int LA19_0 = input.LA(1);
+
+            if ( (LA19_0=='\"') ) {
+                alt19=1;
+            }
+            else if ( (LA19_0=='\'') ) {
+                alt19=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 19, 0, input);
+
+                throw nvae;
+            }
+            switch (alt19) {
+                case 1 :
+                    // InternalRpySyntax.g:722:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"'
+                    {
+                    match('\"'); 
+                    // InternalRpySyntax.g:722:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+                    loop17:
+                    do {
+                        int alt17=3;
+                        int LA17_0 = input.LA(1);
+
+                        if ( (LA17_0=='\\') ) {
+                            alt17=1;
+                        }
+                        else if ( ((LA17_0>='\u0000' && LA17_0<='!')||(LA17_0>='#' && LA17_0<='[')||(LA17_0>=']' && LA17_0<='\uFFFF')) ) {
+                            alt17=2;
+                        }
+
+
+                        switch (alt17) {
+                    	case 1 :
+                    	    // InternalRpySyntax.g:722:21: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // InternalRpySyntax.g:722:28: ~ ( ( '\\\\' | '\"' ) )
+                    	    {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop17;
+                        }
+                    } while (true);
+
+                    match('\"'); 
+
+                    }
+                    break;
+                case 2 :
+                    // InternalRpySyntax.g:722:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\''
+                    {
+                    match('\''); 
+                    // InternalRpySyntax.g:722:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    loop18:
+                    do {
+                        int alt18=3;
+                        int LA18_0 = input.LA(1);
+
+                        if ( (LA18_0=='\\') ) {
+                            alt18=1;
+                        }
+                        else if ( ((LA18_0>='\u0000' && LA18_0<='&')||(LA18_0>='(' && LA18_0<='[')||(LA18_0>=']' && LA18_0<='\uFFFF')) ) {
+                            alt18=2;
+                        }
+
+
+                        switch (alt18) {
+                    	case 1 :
+                    	    // InternalRpySyntax.g:722:54: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // InternalRpySyntax.g:722:61: ~ ( ( '\\\\' | '\\'' ) )
+                    	    {
+                    	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
+                    	        input.consume();
+
+                    	    }
+                    	    else {
+                    	        MismatchedSetException mse = new MismatchedSetException(null,input);
+                    	        recover(mse);
+                    	        throw mse;}
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop18;
+                        }
+                    } while (true);
+
+                    match('\''); 
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_STRING"
+
+    // $ANTLR start "RULE_ML_COMMENT"
+    public final void mRULE_ML_COMMENT() throws RecognitionException {
+        try {
+            int _type = RULE_ML_COMMENT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:724:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // InternalRpySyntax.g:724:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // InternalRpySyntax.g:724:24: ( options {greedy=false; } : . )*
+            loop20:
+            do {
+                int alt20=2;
+                int LA20_0 = input.LA(1);
+
+                if ( (LA20_0=='*') ) {
+                    int LA20_1 = input.LA(2);
+
+                    if ( (LA20_1=='/') ) {
+                        alt20=2;
+                    }
+                    else if ( ((LA20_1>='\u0000' && LA20_1<='.')||(LA20_1>='0' && LA20_1<='\uFFFF')) ) {
+                        alt20=1;
+                    }
+
+
+                }
+                else if ( ((LA20_0>='\u0000' && LA20_0<=')')||(LA20_0>='+' && LA20_0<='\uFFFF')) ) {
+                    alt20=1;
+                }
+
+
+                switch (alt20) {
+            	case 1 :
+            	    // InternalRpySyntax.g:724:52: .
+            	    {
+            	    matchAny(); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop20;
+                }
+            } while (true);
+
+            match("*/"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ML_COMMENT"
+
+    // $ANTLR start "RULE_SL_COMMENT"
+    public final void mRULE_SL_COMMENT() throws RecognitionException {
+        try {
+            int _type = RULE_SL_COMMENT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:726:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // InternalRpySyntax.g:726:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // InternalRpySyntax.g:726:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            loop21:
+            do {
+                int alt21=2;
+                int LA21_0 = input.LA(1);
+
+                if ( ((LA21_0>='\u0000' && LA21_0<='\t')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\uFFFF')) ) {
+                    alt21=1;
+                }
+
+
+                switch (alt21) {
+            	case 1 :
+            	    // InternalRpySyntax.g:726:24: ~ ( ( '\\n' | '\\r' ) )
+            	    {
+            	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop21;
+                }
+            } while (true);
+
+            // InternalRpySyntax.g:726:40: ( ( '\\r' )? '\\n' )?
+            int alt23=2;
+            int LA23_0 = input.LA(1);
+
+            if ( (LA23_0=='\n'||LA23_0=='\r') ) {
+                alt23=1;
+            }
+            switch (alt23) {
+                case 1 :
+                    // InternalRpySyntax.g:726:41: ( '\\r' )? '\\n'
+                    {
+                    // InternalRpySyntax.g:726:41: ( '\\r' )?
+                    int alt22=2;
+                    int LA22_0 = input.LA(1);
+
+                    if ( (LA22_0=='\r') ) {
+                        alt22=1;
+                    }
+                    switch (alt22) {
+                        case 1 :
+                            // InternalRpySyntax.g:726:41: '\\r'
+                            {
+                            match('\r'); 
+
+                            }
+                            break;
+
+                    }
+
+                    match('\n'); 
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_SL_COMMENT"
+
+    // $ANTLR start "RULE_WS"
+    public final void mRULE_WS() throws RecognitionException {
+        try {
+            int _type = RULE_WS;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:728:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // InternalRpySyntax.g:728:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // InternalRpySyntax.g:728:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            int cnt24=0;
+            loop24:
+            do {
+                int alt24=2;
+                int LA24_0 = input.LA(1);
+
+                if ( ((LA24_0>='\t' && LA24_0<='\n')||LA24_0=='\r'||LA24_0==' ') ) {
+                    alt24=1;
+                }
+
+
+                switch (alt24) {
+            	case 1 :
+            	    // InternalRpySyntax.g:
+            	    {
+            	    if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) {
+            	        input.consume();
+
+            	    }
+            	    else {
+            	        MismatchedSetException mse = new MismatchedSetException(null,input);
+            	        recover(mse);
+            	        throw mse;}
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt24 >= 1 ) break loop24;
+                        EarlyExitException eee =
+                            new EarlyExitException(24, input);
+                        throw eee;
+                }
+                cnt24++;
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_WS"
+
+    // $ANTLR start "RULE_ANY_OTHER"
+    public final void mRULE_ANY_OTHER() throws RecognitionException {
+        try {
+            int _type = RULE_ANY_OTHER;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalRpySyntax.g:730:16: ( . )
+            // InternalRpySyntax.g:730:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // InternalRpySyntax.g:1:8: ( T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | RULE_RPY_GUID | RULE_RPY_TIME | RULE_RPY_REAL | RULE_INT | RULE_RPY_VERSION | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt25=19;
+        alt25 = dfa25.predict(input);
+        switch (alt25) {
+            case 1 :
+                // InternalRpySyntax.g:1:10: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 2 :
+                // InternalRpySyntax.g:1:16: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 3 :
+                // InternalRpySyntax.g:1:22: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 4 :
+                // InternalRpySyntax.g:1:28: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 5 :
+                // InternalRpySyntax.g:1:34: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 6 :
+                // InternalRpySyntax.g:1:40: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 7 :
+                // InternalRpySyntax.g:1:46: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 8 :
+                // InternalRpySyntax.g:1:52: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 9 :
+                // InternalRpySyntax.g:1:58: RULE_RPY_GUID
+                {
+                mRULE_RPY_GUID(); 
+
+                }
+                break;
+            case 10 :
+                // InternalRpySyntax.g:1:72: RULE_RPY_TIME
+                {
+                mRULE_RPY_TIME(); 
+
+                }
+                break;
+            case 11 :
+                // InternalRpySyntax.g:1:86: RULE_RPY_REAL
+                {
+                mRULE_RPY_REAL(); 
+
+                }
+                break;
+            case 12 :
+                // InternalRpySyntax.g:1:100: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 13 :
+                // InternalRpySyntax.g:1:109: RULE_RPY_VERSION
+                {
+                mRULE_RPY_VERSION(); 
+
+                }
+                break;
+            case 14 :
+                // InternalRpySyntax.g:1:126: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 15 :
+                // InternalRpySyntax.g:1:134: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 16 :
+                // InternalRpySyntax.g:1:146: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 17 :
+                // InternalRpySyntax.g:1:162: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 18 :
+                // InternalRpySyntax.g:1:178: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 19 :
+                // InternalRpySyntax.g:1:186: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA25 dfa25 = new DFA25(this);
+    static final String DFA25_eotS =
+        "\1\uffff\1\24\2\uffff\1\31\1\uffff\2\24\1\uffff\1\41\2\24\1\22\1\uffff\3\22\4\uffff\1\24\2\uffff\1\41\2\uffff\1\24\1\uffff\1\24\2\uffff\1\41\1\uffff\1\24\4\uffff\1\34\1\uffff\2\24\1\50\1\24\1\34\1\24\1\64\1\uffff\1\24\1\34\1\67\1\uffff\1\24\1\34\1\uffff\1\24\1\34\1\24\1\uffff\1\24\2\uffff\1\24\4\34\1\uffff\6\34\1\114\1\uffff";
+    static final String DFA25_eofS =
+        "\115\uffff";
+    static final String DFA25_minS =
+        "\1\0\1\55\2\uffff\1\60\1\uffff\2\55\1\uffff\3\55\1\101\1\uffff\2\0\1\52\2\uffff\1\60\1\uffff\1\55\2\uffff\1\56\2\uffff\1\55\1\uffff\1\55\1\uffff\1\60\1\55\1\uffff\1\55\4\uffff\1\157\1\uffff\2\55\1\56\1\55\1\147\2\55\1\uffff\1\55\1\151\1\55\1\uffff\1\55\1\170\1\uffff\2\55\1\0\1\60\1\0\1\uffff\2\0\1\120\1\0\1\131\1\55\1\60\1\162\1\143\1\150\1\151\1\166\1\145\1\55\1\uffff";
+    static final String DFA25_maxS =
+        "\1\uffff\1\172\2\uffff\1\71\1\uffff\2\172\1\uffff\4\172\1\uffff\2\uffff\1\57\2\uffff\1\172\1\uffff\1\172\2\uffff\1\71\2\uffff\1\172\1\uffff\1\172\1\uffff\1\71\1\172\1\uffff\1\172\4\uffff\1\157\1\uffff\2\172\1\71\1\172\1\147\2\172\1\uffff\1\172\1\151\1\172\1\uffff\1\172\1\170\1\uffff\1\172\1\55\1\uffff\1\172\1\uffff\1\uffff\2\uffff\1\120\1\uffff\1\131\1\55\1\172\1\162\1\143\1\150\1\151\1\166\1\145\1\172\1\uffff";
+    static final String DFA25_acceptS =
+        "\2\uffff\1\2\1\3\1\uffff\1\5\2\uffff\1\10\4\uffff\1\16\3\uffff\1\22\1\23\1\uffff\1\16\1\uffff\1\2\1\3\1\uffff\1\4\1\5\1\uffff\1\11\1\uffff\1\10\2\uffff\1\14\1\uffff\1\17\1\20\1\21\1\22\1\uffff\1\13\7\uffff\1\12\3\uffff\1\7\2\uffff\1\6\5\uffff\1\15\16\uffff\1\1";
+    static final String DFA25_specialS =
+        "\1\4\15\uffff\1\3\1\6\52\uffff\1\1\1\uffff\1\0\1\uffff\1\5\1\2\1\uffff\1\7\13\uffff}>";
+    static final String[] DFA25_transitionS = {
+            "\11\22\2\21\2\22\1\21\22\22\1\21\1\22\1\16\4\22\1\17\5\22\1\4\1\22\1\20\12\11\1\22\1\10\1\22\1\5\3\22\6\13\1\7\1\13\1\1\5\13\1\6\13\13\3\22\1\14\1\15\1\22\25\13\1\12\4\13\1\2\1\22\1\3\uff82\22",
+            "\1\23\2\uffff\12\25\7\uffff\32\25\6\uffff\32\25",
+            "",
+            "",
+            "\12\30",
+            "",
+            "\1\34\2\uffff\12\25\7\uffff\13\25\1\33\16\25\6\uffff\32\25",
+            "\1\34\2\uffff\12\25\7\uffff\24\25\1\35\5\25\6\uffff\32\25",
+            "",
+            "\1\34\1\37\1\uffff\12\40\7\uffff\32\34\6\uffff\32\34",
+            "\1\34\2\uffff\12\25\7\uffff\32\25\6\uffff\4\25\1\42\25\25",
+            "\1\34\2\uffff\12\25\7\uffff\32\25\6\uffff\32\25",
+            "\32\24\4\uffff\1\24\1\uffff\32\24",
+            "",
+            "\0\43",
+            "\0\43",
+            "\1\44\4\uffff\1\45",
+            "",
+            "",
+            "\12\34\7\uffff\13\34\1\47\16\34\6\uffff\32\34",
+            "",
+            "\1\34\2\uffff\12\25\7\uffff\32\25\6\uffff\32\25",
+            "",
+            "",
+            "\1\50\1\uffff\12\30",
+            "",
+            "",
+            "\1\34\2\uffff\12\25\7\uffff\3\25\1\51\26\25\6\uffff\32\25",
+            "",
+            "\1\34\2\uffff\12\25\7\uffff\10\25\1\52\21\25\6\uffff\32\25",
+            "",
+            "\12\53",
+            "\1\34\1\37\1\uffff\12\40\7\uffff\32\34\6\uffff\32\34",
+            "",
+            "\1\34\2\uffff\12\25\7\uffff\32\25\6\uffff\21\25\1\54\10\25",
+            "",
+            "",
+            "",
+            "",
+            "\1\55",
+            "",
+            "\1\34\2\uffff\12\25\7\uffff\10\25\1\56\21\25\6\uffff\32\25",
+            "\1\34\2\uffff\12\25\7\uffff\3\25\1\57\26\25\6\uffff\32\25",
+            "\1\60\1\uffff\12\53",
+            "\1\34\2\uffff\12\25\7\uffff\32\25\6\uffff\22\25\1\61\7\25",
+            "\1\62",
+            "\1\34\2\uffff\12\25\7\uffff\3\25\1\63\26\25\6\uffff\32\25",
+            "\1\34\2\uffff\12\25\7\uffff\32\25\4\uffff\1\24\1\uffff\32\25",
+            "",
+            "\1\34\2\uffff\12\25\7\uffff\32\25\6\uffff\10\25\1\65\21\25",
+            "\1\66",
+            "\1\34\2\uffff\12\25\7\uffff\32\25\4\uffff\1\24\1\uffff\32\25",
+            "",
+            "\1\34\2\uffff\12\25\7\uffff\32\25\6\uffff\16\25\1\70\13\25",
+            "\1\71",
+            "",
+            "\1\34\2\uffff\12\25\7\uffff\32\25\6\uffff\15\25\1\72\14\25",
+            "\1\73",
+            "\55\75\1\76\2\75\12\74\7\75\32\74\4\75\1\77\1\75\32\74\uff85\75",
+            "\12\34\7\uffff\21\34\1\100\10\34\6\uffff\32\34",
+            "\55\75\1\76\2\75\12\74\7\75\32\74\4\75\1\77\1\75\32\74\uff85\75",
+            "",
+            "\60\75\12\101\7\75\32\101\6\75\32\101\uff85\75",
+            "\60\75\12\77\7\75\32\77\4\75\1\77\1\75\32\77\uff85\75",
+            "\1\102",
+            "\55\75\1\76\2\75\12\101\7\75\32\101\6\75\32\101\uff85\75",
+            "\1\103",
+            "\1\104",
+            "\12\34\7\uffff\1\105\31\34\6\uffff\32\34",
+            "\1\106",
+            "\1\107",
+            "\1\110",
+            "\1\111",
+            "\1\112",
+            "\1\113",
+            "\1\34\2\uffff\12\34\7\uffff\32\34\6\uffff\32\34",
+            ""
+    };
+
+    static final short[] DFA25_eot = DFA.unpackEncodedString(DFA25_eotS);
+    static final short[] DFA25_eof = DFA.unpackEncodedString(DFA25_eofS);
+    static final char[] DFA25_min = DFA.unpackEncodedStringToUnsignedChars(DFA25_minS);
+    static final char[] DFA25_max = DFA.unpackEncodedStringToUnsignedChars(DFA25_maxS);
+    static final short[] DFA25_accept = DFA.unpackEncodedString(DFA25_acceptS);
+    static final short[] DFA25_special = DFA.unpackEncodedString(DFA25_specialS);
+    static final short[][] DFA25_transition;
+
+    static {
+        int numStates = DFA25_transitionS.length;
+        DFA25_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA25_transition[i] = DFA.unpackEncodedString(DFA25_transitionS[i]);
+        }
+    }
+
+    class DFA25 extends DFA {
+
+        public DFA25(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 25;
+            this.eot = DFA25_eot;
+            this.eof = DFA25_eof;
+            this.min = DFA25_min;
+            this.max = DFA25_max;
+            this.accept = DFA25_accept;
+            this.special = DFA25_special;
+            this.transition = DFA25_transition;
+        }
+        public String getDescription() {
+            return "1:1: Tokens : ( T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | RULE_RPY_GUID | RULE_RPY_TIME | RULE_RPY_REAL | RULE_INT | RULE_RPY_VERSION | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            IntStream input = _input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA25_60 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA25_60>='\u0000' && LA25_60<=',')||(LA25_60>='.' && LA25_60<='/')||(LA25_60>=':' && LA25_60<='@')||(LA25_60>='[' && LA25_60<='^')||LA25_60=='`'||(LA25_60>='{' && LA25_60<='\uFFFF')) ) {s = 61;}
+
+                        else if ( ((LA25_60>='0' && LA25_60<='9')||(LA25_60>='A' && LA25_60<='Z')||(LA25_60>='a' && LA25_60<='z')) ) {s = 60;}
+
+                        else if ( (LA25_60=='-') ) {s = 62;}
+
+                        else if ( (LA25_60=='_') ) {s = 63;}
+
+                        else s = 20;
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA25_58 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA25_58>='0' && LA25_58<='9')||(LA25_58>='A' && LA25_58<='Z')||(LA25_58>='a' && LA25_58<='z')) ) {s = 60;}
+
+                        else if ( ((LA25_58>='\u0000' && LA25_58<=',')||(LA25_58>='.' && LA25_58<='/')||(LA25_58>=':' && LA25_58<='@')||(LA25_58>='[' && LA25_58<='^')||LA25_58=='`'||(LA25_58>='{' && LA25_58<='\uFFFF')) ) {s = 61;}
+
+                        else if ( (LA25_58=='-') ) {s = 62;}
+
+                        else if ( (LA25_58=='_') ) {s = 63;}
+
+                        else s = 20;
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA25_63 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA25_63>='\u0000' && LA25_63<='/')||(LA25_63>=':' && LA25_63<='@')||(LA25_63>='[' && LA25_63<='^')||LA25_63=='`'||(LA25_63>='{' && LA25_63<='\uFFFF')) ) {s = 61;}
+
+                        else if ( ((LA25_63>='0' && LA25_63<='9')||(LA25_63>='A' && LA25_63<='Z')||LA25_63=='_'||(LA25_63>='a' && LA25_63<='z')) ) {s = 63;}
+
+                        else s = 20;
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA25_14 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA25_14>='\u0000' && LA25_14<='\uFFFF')) ) {s = 35;}
+
+                        else s = 18;
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA25_0 = input.LA(1);
+
+                        s = -1;
+                        if ( (LA25_0=='I') ) {s = 1;}
+
+                        else if ( (LA25_0=='{') ) {s = 2;}
+
+                        else if ( (LA25_0=='}') ) {s = 3;}
+
+                        else if ( (LA25_0=='-') ) {s = 4;}
+
+                        else if ( (LA25_0=='=') ) {s = 5;}
+
+                        else if ( (LA25_0=='O') ) {s = 6;}
+
+                        else if ( (LA25_0=='G') ) {s = 7;}
+
+                        else if ( (LA25_0==';') ) {s = 8;}
+
+                        else if ( ((LA25_0>='0' && LA25_0<='9')) ) {s = 9;}
+
+                        else if ( (LA25_0=='v') ) {s = 10;}
+
+                        else if ( ((LA25_0>='A' && LA25_0<='F')||LA25_0=='H'||(LA25_0>='J' && LA25_0<='N')||(LA25_0>='P' && LA25_0<='Z')||(LA25_0>='a' && LA25_0<='u')||(LA25_0>='w' && LA25_0<='z')) ) {s = 11;}
+
+                        else if ( (LA25_0=='^') ) {s = 12;}
+
+                        else if ( (LA25_0=='_') ) {s = 13;}
+
+                        else if ( (LA25_0=='\"') ) {s = 14;}
+
+                        else if ( (LA25_0=='\'') ) {s = 15;}
+
+                        else if ( (LA25_0=='/') ) {s = 16;}
+
+                        else if ( ((LA25_0>='\t' && LA25_0<='\n')||LA25_0=='\r'||LA25_0==' ') ) {s = 17;}
+
+                        else if ( ((LA25_0>='\u0000' && LA25_0<='\b')||(LA25_0>='\u000B' && LA25_0<='\f')||(LA25_0>='\u000E' && LA25_0<='\u001F')||LA25_0=='!'||(LA25_0>='#' && LA25_0<='&')||(LA25_0>='(' && LA25_0<=',')||LA25_0=='.'||LA25_0==':'||LA25_0=='<'||(LA25_0>='>' && LA25_0<='@')||(LA25_0>='[' && LA25_0<=']')||LA25_0=='`'||LA25_0=='|'||(LA25_0>='~' && LA25_0<='\uFFFF')) ) {s = 18;}
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA25_62 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA25_62>='0' && LA25_62<='9')||(LA25_62>='A' && LA25_62<='Z')||(LA25_62>='a' && LA25_62<='z')) ) {s = 65;}
+
+                        else if ( ((LA25_62>='\u0000' && LA25_62<='/')||(LA25_62>=':' && LA25_62<='@')||(LA25_62>='[' && LA25_62<='`')||(LA25_62>='{' && LA25_62<='\uFFFF')) ) {s = 61;}
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA25_15 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA25_15>='\u0000' && LA25_15<='\uFFFF')) ) {s = 35;}
+
+                        else s = 18;
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA25_65 = input.LA(1);
+
+                        s = -1;
+                        if ( (LA25_65=='-') ) {s = 62;}
+
+                        else if ( ((LA25_65>='0' && LA25_65<='9')||(LA25_65>='A' && LA25_65<='Z')||(LA25_65>='a' && LA25_65<='z')) ) {s = 65;}
+
+                        else if ( ((LA25_65>='\u0000' && LA25_65<=',')||(LA25_65>='.' && LA25_65<='/')||(LA25_65>=':' && LA25_65<='@')||(LA25_65>='[' && LA25_65<='`')||(LA25_65>='{' && LA25_65<='\uFFFF')) ) {s = 61;}
+
+                        else s = 28;
+
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 25, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+}
\ No newline at end of file
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/parser/antlr/internal/InternalRpySyntaxParser.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/parser/antlr/internal/InternalRpySyntaxParser.java
new file mode 100644
index 0000000..7a6d269
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/parser/antlr/internal/InternalRpySyntaxParser.java
@@ -0,0 +1,2057 @@
+package org.eclipse.papyrus.interoperability.rpy.parser.parser.antlr.internal; 
+
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.parser.*;
+import org.eclipse.xtext.parser.impl.*;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
+import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
+import org.eclipse.papyrus.interoperability.rpy.parser.services.RpySyntaxGrammarAccess;
+
+
+
+import org.antlr.runtime.*;
+import java.util.Stack;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+@SuppressWarnings("all")
+public class InternalRpySyntaxParser extends AbstractInternalAntlrParser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_RPY_VERSION", "RULE_ID", "RULE_STRING", "RULE_RPY_GUID", "RULE_INT", "RULE_RPY_TIME", "RULE_RPY_REAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'I-Logix-RPY-Archive'", "'{'", "'}'", "'-'", "'='", "'OLDID'", "'GUID'", "';'"
+    };
+    public static final int RULE_RPY_GUID=7;
+    public static final int RULE_RPY_TIME=9;
+    public static final int RULE_STRING=6;
+    public static final int RULE_SL_COMMENT=12;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int EOF=-1;
+    public static final int RULE_ID=5;
+    public static final int RULE_WS=13;
+    public static final int RULE_RPY_VERSION=4;
+    public static final int RULE_ANY_OTHER=14;
+    public static final int RULE_INT=8;
+    public static final int T__22=22;
+    public static final int RULE_ML_COMMENT=11;
+    public static final int RULE_RPY_REAL=10;
+    public static final int T__20=20;
+    public static final int T__21=21;
+
+    // delegates
+    // delegators
+
+
+        public InternalRpySyntaxParser(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public InternalRpySyntaxParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+
+    public String[] getTokenNames() { return InternalRpySyntaxParser.tokenNames; }
+    public String getGrammarFileName() { return "InternalRpySyntax.g"; }
+
+
+
+    /*
+      This grammar contains a lot of empty actions to work around a bug in ANTLR.
+      Otherwise the ANTLR tool will create synpreds that cannot be compiled in some rare cases.
+    */
+     
+     	private RpySyntaxGrammarAccess grammarAccess;
+     	
+        public InternalRpySyntaxParser(TokenStream input, RpySyntaxGrammarAccess grammarAccess) {
+            this(input);
+            this.grammarAccess = grammarAccess;
+            registerRules(grammarAccess.getGrammar());
+        }
+        
+        @Override
+        protected String getFirstRuleName() {
+        	return "RpyFile";	
+       	}
+       	
+       	@Override
+       	protected RpySyntaxGrammarAccess getGrammarAccess() {
+       		return grammarAccess;
+       	}
+
+
+
+    // $ANTLR start "entryRuleRpyFile"
+    // InternalRpySyntax.g:82:1: entryRuleRpyFile returns [EObject current=null] : iv_ruleRpyFile= ruleRpyFile EOF ;
+    public final EObject entryRuleRpyFile() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleRpyFile = null;
+
+
+        try {
+            // InternalRpySyntax.g:83:2: (iv_ruleRpyFile= ruleRpyFile EOF )
+            // InternalRpySyntax.g:84:2: iv_ruleRpyFile= ruleRpyFile EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getRpyFileRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleRpyFile=ruleRpyFile();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleRpyFile; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleRpyFile"
+
+
+    // $ANTLR start "ruleRpyFile"
+    // InternalRpySyntax.g:91:1: ruleRpyFile returns [EObject current=null] : (otherlv_0= 'I-Logix-RPY-Archive' ( (lv_version_1_0= RULE_RPY_VERSION ) ) ( (lv_contents_2_0= ruleRpyContent ) )* ) ;
+    public final EObject ruleRpyFile() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token lv_version_1_0=null;
+        EObject lv_contents_2_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // InternalRpySyntax.g:94:28: ( (otherlv_0= 'I-Logix-RPY-Archive' ( (lv_version_1_0= RULE_RPY_VERSION ) ) ( (lv_contents_2_0= ruleRpyContent ) )* ) )
+            // InternalRpySyntax.g:95:1: (otherlv_0= 'I-Logix-RPY-Archive' ( (lv_version_1_0= RULE_RPY_VERSION ) ) ( (lv_contents_2_0= ruleRpyContent ) )* )
+            {
+            // InternalRpySyntax.g:95:1: (otherlv_0= 'I-Logix-RPY-Archive' ( (lv_version_1_0= RULE_RPY_VERSION ) ) ( (lv_contents_2_0= ruleRpyContent ) )* )
+            // InternalRpySyntax.g:95:3: otherlv_0= 'I-Logix-RPY-Archive' ( (lv_version_1_0= RULE_RPY_VERSION ) ) ( (lv_contents_2_0= ruleRpyContent ) )*
+            {
+            otherlv_0=(Token)match(input,15,FOLLOW_3); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getRpyFileAccess().getILogixRPYArchiveKeyword_0());
+                  
+            }
+            // InternalRpySyntax.g:99:1: ( (lv_version_1_0= RULE_RPY_VERSION ) )
+            // InternalRpySyntax.g:100:1: (lv_version_1_0= RULE_RPY_VERSION )
+            {
+            // InternalRpySyntax.g:100:1: (lv_version_1_0= RULE_RPY_VERSION )
+            // InternalRpySyntax.g:101:3: lv_version_1_0= RULE_RPY_VERSION
+            {
+            lv_version_1_0=(Token)match(input,RULE_RPY_VERSION,FOLLOW_4); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_version_1_0, grammarAccess.getRpyFileAccess().getVersionRPY_VERSIONTerminalRuleCall_1_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getRpyFileRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"version",
+                      		lv_version_1_0, 
+                      		"org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.RPY_VERSION");
+              	    
+            }
+
+            }
+
+
+            }
+
+            // InternalRpySyntax.g:117:2: ( (lv_contents_2_0= ruleRpyContent ) )*
+            loop1:
+            do {
+                int alt1=2;
+                int LA1_0 = input.LA(1);
+
+                if ( (LA1_0==16||LA1_0==18) ) {
+                    alt1=1;
+                }
+
+
+                switch (alt1) {
+            	case 1 :
+            	    // InternalRpySyntax.g:118:1: (lv_contents_2_0= ruleRpyContent )
+            	    {
+            	    // InternalRpySyntax.g:118:1: (lv_contents_2_0= ruleRpyContent )
+            	    // InternalRpySyntax.g:119:3: lv_contents_2_0= ruleRpyContent
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getRpyFileAccess().getContentsRpyContentParserRuleCall_2_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_4);
+            	    lv_contents_2_0=ruleRpyContent();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getRpyFileRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"contents",
+            	              		lv_contents_2_0, 
+            	              		"org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.RpyContent");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop1;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleRpyFile"
+
+
+    // $ANTLR start "entryRuleRpyContent"
+    // InternalRpySyntax.g:143:1: entryRuleRpyContent returns [EObject current=null] : iv_ruleRpyContent= ruleRpyContent EOF ;
+    public final EObject entryRuleRpyContent() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleRpyContent = null;
+
+
+        try {
+            // InternalRpySyntax.g:144:2: (iv_ruleRpyContent= ruleRpyContent EOF )
+            // InternalRpySyntax.g:145:2: iv_ruleRpyContent= ruleRpyContent EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getRpyContentRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleRpyContent=ruleRpyContent();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleRpyContent; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleRpyContent"
+
+
+    // $ANTLR start "ruleRpyContent"
+    // InternalRpySyntax.g:152:1: ruleRpyContent returns [EObject current=null] : (this_RpyNode_0= ruleRpyNode | this_RpyFeature_1= ruleRpyFeature ) ;
+    public final EObject ruleRpyContent() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_RpyNode_0 = null;
+
+        EObject this_RpyFeature_1 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // InternalRpySyntax.g:155:28: ( (this_RpyNode_0= ruleRpyNode | this_RpyFeature_1= ruleRpyFeature ) )
+            // InternalRpySyntax.g:156:1: (this_RpyNode_0= ruleRpyNode | this_RpyFeature_1= ruleRpyFeature )
+            {
+            // InternalRpySyntax.g:156:1: (this_RpyNode_0= ruleRpyNode | this_RpyFeature_1= ruleRpyFeature )
+            int alt2=2;
+            int LA2_0 = input.LA(1);
+
+            if ( (LA2_0==16) ) {
+                alt2=1;
+            }
+            else if ( (LA2_0==18) ) {
+                alt2=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 2, 0, input);
+
+                throw nvae;
+            }
+            switch (alt2) {
+                case 1 :
+                    // InternalRpySyntax.g:157:2: this_RpyNode_0= ruleRpyNode
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	  /* */ 
+                      	
+                    }
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getRpyContentAccess().getRpyNodeParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_RpyNode_0=ruleRpyNode();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_RpyNode_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalRpySyntax.g:170:2: this_RpyFeature_1= ruleRpyFeature
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	  /* */ 
+                      	
+                    }
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getRpyContentAccess().getRpyFeatureParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_RpyFeature_1=ruleRpyFeature();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_RpyFeature_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleRpyContent"
+
+
+    // $ANTLR start "entryRuleRpyNode"
+    // InternalRpySyntax.g:189:1: entryRuleRpyNode returns [EObject current=null] : iv_ruleRpyNode= ruleRpyNode EOF ;
+    public final EObject entryRuleRpyNode() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleRpyNode = null;
+
+
+        try {
+            // InternalRpySyntax.g:190:2: (iv_ruleRpyNode= ruleRpyNode EOF )
+            // InternalRpySyntax.g:191:2: iv_ruleRpyNode= ruleRpyNode EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getRpyNodeRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleRpyNode=ruleRpyNode();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleRpyNode; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleRpyNode"
+
+
+    // $ANTLR start "ruleRpyNode"
+    // InternalRpySyntax.g:198:1: ruleRpyNode returns [EObject current=null] : (otherlv_0= '{' ( (lv_name_1_0= RULE_ID ) ) ( (lv_contents_2_0= ruleRpyContent ) )+ otherlv_3= '}' ) ;
+    public final EObject ruleRpyNode() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token lv_name_1_0=null;
+        Token otherlv_3=null;
+        EObject lv_contents_2_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // InternalRpySyntax.g:201:28: ( (otherlv_0= '{' ( (lv_name_1_0= RULE_ID ) ) ( (lv_contents_2_0= ruleRpyContent ) )+ otherlv_3= '}' ) )
+            // InternalRpySyntax.g:202:1: (otherlv_0= '{' ( (lv_name_1_0= RULE_ID ) ) ( (lv_contents_2_0= ruleRpyContent ) )+ otherlv_3= '}' )
+            {
+            // InternalRpySyntax.g:202:1: (otherlv_0= '{' ( (lv_name_1_0= RULE_ID ) ) ( (lv_contents_2_0= ruleRpyContent ) )+ otherlv_3= '}' )
+            // InternalRpySyntax.g:202:3: otherlv_0= '{' ( (lv_name_1_0= RULE_ID ) ) ( (lv_contents_2_0= ruleRpyContent ) )+ otherlv_3= '}'
+            {
+            otherlv_0=(Token)match(input,16,FOLLOW_5); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getRpyNodeAccess().getLeftCurlyBracketKeyword_0());
+                  
+            }
+            // InternalRpySyntax.g:206:1: ( (lv_name_1_0= RULE_ID ) )
+            // InternalRpySyntax.g:207:1: (lv_name_1_0= RULE_ID )
+            {
+            // InternalRpySyntax.g:207:1: (lv_name_1_0= RULE_ID )
+            // InternalRpySyntax.g:208:3: lv_name_1_0= RULE_ID
+            {
+            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_6); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_name_1_0, grammarAccess.getRpyNodeAccess().getNameIDTerminalRuleCall_1_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getRpyNodeRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"name",
+                      		lv_name_1_0, 
+                      		"org.eclipse.xtext.common.Terminals.ID");
+              	    
+            }
+
+            }
+
+
+            }
+
+            // InternalRpySyntax.g:224:2: ( (lv_contents_2_0= ruleRpyContent ) )+
+            int cnt3=0;
+            loop3:
+            do {
+                int alt3=2;
+                int LA3_0 = input.LA(1);
+
+                if ( (LA3_0==16||LA3_0==18) ) {
+                    alt3=1;
+                }
+
+
+                switch (alt3) {
+            	case 1 :
+            	    // InternalRpySyntax.g:225:1: (lv_contents_2_0= ruleRpyContent )
+            	    {
+            	    // InternalRpySyntax.g:225:1: (lv_contents_2_0= ruleRpyContent )
+            	    // InternalRpySyntax.g:226:3: lv_contents_2_0= ruleRpyContent
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getRpyNodeAccess().getContentsRpyContentParserRuleCall_2_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_7);
+            	    lv_contents_2_0=ruleRpyContent();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getRpyNodeRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"contents",
+            	              		lv_contents_2_0, 
+            	              		"org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.RpyContent");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt3 >= 1 ) break loop3;
+            	    if (state.backtracking>0) {state.failed=true; return current;}
+                        EarlyExitException eee =
+                            new EarlyExitException(3, input);
+                        throw eee;
+                }
+                cnt3++;
+            } while (true);
+
+            otherlv_3=(Token)match(input,17,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getRpyNodeAccess().getRightCurlyBracketKeyword_3());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleRpyNode"
+
+
+    // $ANTLR start "entryRuleRpyFeature"
+    // InternalRpySyntax.g:254:1: entryRuleRpyFeature returns [EObject current=null] : iv_ruleRpyFeature= ruleRpyFeature EOF ;
+    public final EObject entryRuleRpyFeature() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleRpyFeature = null;
+
+
+        try {
+            // InternalRpySyntax.g:255:2: (iv_ruleRpyFeature= ruleRpyFeature EOF )
+            // InternalRpySyntax.g:256:2: iv_ruleRpyFeature= ruleRpyFeature EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getRpyFeatureRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleRpyFeature=ruleRpyFeature();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleRpyFeature; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleRpyFeature"
+
+
+    // $ANTLR start "ruleRpyFeature"
+    // InternalRpySyntax.g:263:1: ruleRpyFeature returns [EObject current=null] : (otherlv_0= '-' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '=' ( (lv_value_3_0= ruleRpyFeatureValue ) ) ) ;
+    public final EObject ruleRpyFeature() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token lv_name_1_0=null;
+        Token otherlv_2=null;
+        EObject lv_value_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // InternalRpySyntax.g:266:28: ( (otherlv_0= '-' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '=' ( (lv_value_3_0= ruleRpyFeatureValue ) ) ) )
+            // InternalRpySyntax.g:267:1: (otherlv_0= '-' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '=' ( (lv_value_3_0= ruleRpyFeatureValue ) ) )
+            {
+            // InternalRpySyntax.g:267:1: (otherlv_0= '-' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '=' ( (lv_value_3_0= ruleRpyFeatureValue ) ) )
+            // InternalRpySyntax.g:267:3: otherlv_0= '-' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '=' ( (lv_value_3_0= ruleRpyFeatureValue ) )
+            {
+            otherlv_0=(Token)match(input,18,FOLLOW_5); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getRpyFeatureAccess().getHyphenMinusKeyword_0());
+                  
+            }
+            // InternalRpySyntax.g:271:1: ( (lv_name_1_0= RULE_ID ) )
+            // InternalRpySyntax.g:272:1: (lv_name_1_0= RULE_ID )
+            {
+            // InternalRpySyntax.g:272:1: (lv_name_1_0= RULE_ID )
+            // InternalRpySyntax.g:273:3: lv_name_1_0= RULE_ID
+            {
+            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_8); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_name_1_0, grammarAccess.getRpyFeatureAccess().getNameIDTerminalRuleCall_1_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getRpyFeatureRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"name",
+                      		lv_name_1_0, 
+                      		"org.eclipse.xtext.common.Terminals.ID");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,19,FOLLOW_9); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getRpyFeatureAccess().getEqualsSignKeyword_2());
+                  
+            }
+            // InternalRpySyntax.g:293:1: ( (lv_value_3_0= ruleRpyFeatureValue ) )
+            // InternalRpySyntax.g:294:1: (lv_value_3_0= ruleRpyFeatureValue )
+            {
+            // InternalRpySyntax.g:294:1: (lv_value_3_0= ruleRpyFeatureValue )
+            // InternalRpySyntax.g:295:3: lv_value_3_0= ruleRpyFeatureValue
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getRpyFeatureAccess().getValueRpyFeatureValueParserRuleCall_3_0()); 
+              	    
+            }
+            pushFollow(FOLLOW_2);
+            lv_value_3_0=ruleRpyFeatureValue();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getRpyFeatureRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"value",
+                      		lv_value_3_0, 
+                      		"org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.RpyFeatureValue");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleRpyFeature"
+
+
+    // $ANTLR start "entryRuleRpyFeatureValue"
+    // InternalRpySyntax.g:319:1: entryRuleRpyFeatureValue returns [EObject current=null] : iv_ruleRpyFeatureValue= ruleRpyFeatureValue EOF ;
+    public final EObject entryRuleRpyFeatureValue() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleRpyFeatureValue = null;
+
+
+        try {
+            // InternalRpySyntax.g:320:2: (iv_ruleRpyFeatureValue= ruleRpyFeatureValue EOF )
+            // InternalRpySyntax.g:321:2: iv_ruleRpyFeatureValue= ruleRpyFeatureValue EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getRpyFeatureValueRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleRpyFeatureValue=ruleRpyFeatureValue();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleRpyFeatureValue; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleRpyFeatureValue"
+
+
+    // $ANTLR start "ruleRpyFeatureValue"
+    // InternalRpySyntax.g:328:1: ruleRpyFeatureValue returns [EObject current=null] : (this_SimpleValueList_0= ruleSimpleValueList | this_RpyNodeList_1= ruleRpyNodeList | this_RpyStringMap_2= ruleRpyStringMap ) ;
+    public final EObject ruleRpyFeatureValue() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_SimpleValueList_0 = null;
+
+        EObject this_RpyNodeList_1 = null;
+
+        EObject this_RpyStringMap_2 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // InternalRpySyntax.g:331:28: ( (this_SimpleValueList_0= ruleSimpleValueList | this_RpyNodeList_1= ruleRpyNodeList | this_RpyStringMap_2= ruleRpyStringMap ) )
+            // InternalRpySyntax.g:332:1: (this_SimpleValueList_0= ruleSimpleValueList | this_RpyNodeList_1= ruleRpyNodeList | this_RpyStringMap_2= ruleRpyStringMap )
+            {
+            // InternalRpySyntax.g:332:1: (this_SimpleValueList_0= ruleSimpleValueList | this_RpyNodeList_1= ruleRpyNodeList | this_RpyStringMap_2= ruleRpyStringMap )
+            int alt4=3;
+            alt4 = dfa4.predict(input);
+            switch (alt4) {
+                case 1 :
+                    // InternalRpySyntax.g:333:2: this_SimpleValueList_0= ruleSimpleValueList
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	  /* */ 
+                      	
+                    }
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getRpyFeatureValueAccess().getSimpleValueListParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_SimpleValueList_0=ruleSimpleValueList();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_SimpleValueList_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalRpySyntax.g:346:2: this_RpyNodeList_1= ruleRpyNodeList
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	  /* */ 
+                      	
+                    }
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getRpyFeatureValueAccess().getRpyNodeListParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_RpyNodeList_1=ruleRpyNodeList();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_RpyNodeList_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // InternalRpySyntax.g:359:2: this_RpyStringMap_2= ruleRpyStringMap
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	  /* */ 
+                      	
+                    }
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getRpyFeatureValueAccess().getRpyStringMapParserRuleCall_2()); 
+                          
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_RpyStringMap_2=ruleRpyStringMap();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_RpyStringMap_2; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleRpyFeatureValue"
+
+
+    // $ANTLR start "entryRuleRpyNodeList"
+    // InternalRpySyntax.g:378:1: entryRuleRpyNodeList returns [EObject current=null] : iv_ruleRpyNodeList= ruleRpyNodeList EOF ;
+    public final EObject entryRuleRpyNodeList() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleRpyNodeList = null;
+
+
+        try {
+            // InternalRpySyntax.g:379:2: (iv_ruleRpyNodeList= ruleRpyNodeList EOF )
+            // InternalRpySyntax.g:380:2: iv_ruleRpyNodeList= ruleRpyNodeList EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getRpyNodeListRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleRpyNodeList=ruleRpyNodeList();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleRpyNodeList; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleRpyNodeList"
+
+
+    // $ANTLR start "ruleRpyNodeList"
+    // InternalRpySyntax.g:387:1: ruleRpyNodeList returns [EObject current=null] : ( (lv_values_0_0= ruleRpyNode ) )+ ;
+    public final EObject ruleRpyNodeList() throws RecognitionException {
+        EObject current = null;
+
+        EObject lv_values_0_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // InternalRpySyntax.g:390:28: ( ( (lv_values_0_0= ruleRpyNode ) )+ )
+            // InternalRpySyntax.g:391:1: ( (lv_values_0_0= ruleRpyNode ) )+
+            {
+            // InternalRpySyntax.g:391:1: ( (lv_values_0_0= ruleRpyNode ) )+
+            int cnt5=0;
+            loop5:
+            do {
+                int alt5=2;
+                int LA5_0 = input.LA(1);
+
+                if ( (LA5_0==16) ) {
+                    int LA5_2 = input.LA(2);
+
+                    if ( (synpred6_InternalRpySyntax()) ) {
+                        alt5=1;
+                    }
+
+
+                }
+
+
+                switch (alt5) {
+            	case 1 :
+            	    // InternalRpySyntax.g:392:1: (lv_values_0_0= ruleRpyNode )
+            	    {
+            	    // InternalRpySyntax.g:392:1: (lv_values_0_0= ruleRpyNode )
+            	    // InternalRpySyntax.g:393:3: lv_values_0_0= ruleRpyNode
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getRpyNodeListAccess().getValuesRpyNodeParserRuleCall_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_10);
+            	    lv_values_0_0=ruleRpyNode();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getRpyNodeListRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"values",
+            	              		lv_values_0_0, 
+            	              		"org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.RpyNode");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt5 >= 1 ) break loop5;
+            	    if (state.backtracking>0) {state.failed=true; return current;}
+                        EarlyExitException eee =
+                            new EarlyExitException(5, input);
+                        throw eee;
+                }
+                cnt5++;
+            } while (true);
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleRpyNodeList"
+
+
+    // $ANTLR start "entryRuleSimpleValueList"
+    // InternalRpySyntax.g:417:1: entryRuleSimpleValueList returns [EObject current=null] : iv_ruleSimpleValueList= ruleSimpleValueList EOF ;
+    public final EObject entryRuleSimpleValueList() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleSimpleValueList = null;
+
+
+        try {
+            // InternalRpySyntax.g:418:2: (iv_ruleSimpleValueList= ruleSimpleValueList EOF )
+            // InternalRpySyntax.g:419:2: iv_ruleSimpleValueList= ruleSimpleValueList EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getSimpleValueListRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleSimpleValueList=ruleSimpleValueList();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleSimpleValueList; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleSimpleValueList"
+
+
+    // $ANTLR start "ruleSimpleValueList"
+    // InternalRpySyntax.g:426:1: ruleSimpleValueList returns [EObject current=null] : ( () ( (lv_isOldID_1_0= 'OLDID' ) )? ( (lv_isGUID_2_0= 'GUID' ) )? ( (lv_valueElements_3_0= ruleRpySimpleValueElement ) )+ ) ;
+    public final EObject ruleSimpleValueList() throws RecognitionException {
+        EObject current = null;
+
+        Token lv_isOldID_1_0=null;
+        Token lv_isGUID_2_0=null;
+        EObject lv_valueElements_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // InternalRpySyntax.g:429:28: ( ( () ( (lv_isOldID_1_0= 'OLDID' ) )? ( (lv_isGUID_2_0= 'GUID' ) )? ( (lv_valueElements_3_0= ruleRpySimpleValueElement ) )+ ) )
+            // InternalRpySyntax.g:430:1: ( () ( (lv_isOldID_1_0= 'OLDID' ) )? ( (lv_isGUID_2_0= 'GUID' ) )? ( (lv_valueElements_3_0= ruleRpySimpleValueElement ) )+ )
+            {
+            // InternalRpySyntax.g:430:1: ( () ( (lv_isOldID_1_0= 'OLDID' ) )? ( (lv_isGUID_2_0= 'GUID' ) )? ( (lv_valueElements_3_0= ruleRpySimpleValueElement ) )+ )
+            // InternalRpySyntax.g:430:2: () ( (lv_isOldID_1_0= 'OLDID' ) )? ( (lv_isGUID_2_0= 'GUID' ) )? ( (lv_valueElements_3_0= ruleRpySimpleValueElement ) )+
+            {
+            // InternalRpySyntax.g:430:2: ()
+            // InternalRpySyntax.g:431:2: 
+            {
+            if ( state.backtracking==0 ) {
+               
+              	  /* */ 
+              	
+            }
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getSimpleValueListAccess().getSimpleValueListAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            // InternalRpySyntax.g:439:2: ( (lv_isOldID_1_0= 'OLDID' ) )?
+            int alt6=2;
+            int LA6_0 = input.LA(1);
+
+            if ( (LA6_0==20) ) {
+                alt6=1;
+            }
+            switch (alt6) {
+                case 1 :
+                    // InternalRpySyntax.g:440:1: (lv_isOldID_1_0= 'OLDID' )
+                    {
+                    // InternalRpySyntax.g:440:1: (lv_isOldID_1_0= 'OLDID' )
+                    // InternalRpySyntax.g:441:3: lv_isOldID_1_0= 'OLDID'
+                    {
+                    lv_isOldID_1_0=(Token)match(input,20,FOLLOW_11); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_isOldID_1_0, grammarAccess.getSimpleValueListAccess().getIsOldIDOLDIDKeyword_1_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getSimpleValueListRule());
+                      	        }
+                             		setWithLastConsumed(current, "isOldID", true, "OLDID");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // InternalRpySyntax.g:454:3: ( (lv_isGUID_2_0= 'GUID' ) )?
+            int alt7=2;
+            int LA7_0 = input.LA(1);
+
+            if ( (LA7_0==21) ) {
+                alt7=1;
+            }
+            switch (alt7) {
+                case 1 :
+                    // InternalRpySyntax.g:455:1: (lv_isGUID_2_0= 'GUID' )
+                    {
+                    // InternalRpySyntax.g:455:1: (lv_isGUID_2_0= 'GUID' )
+                    // InternalRpySyntax.g:456:3: lv_isGUID_2_0= 'GUID'
+                    {
+                    lv_isGUID_2_0=(Token)match(input,21,FOLLOW_11); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_isGUID_2_0, grammarAccess.getSimpleValueListAccess().getIsGUIDGUIDKeyword_2_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getSimpleValueListRule());
+                      	        }
+                             		setWithLastConsumed(current, "isGUID", true, "GUID");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // InternalRpySyntax.g:469:3: ( (lv_valueElements_3_0= ruleRpySimpleValueElement ) )+
+            int cnt8=0;
+            loop8:
+            do {
+                int alt8=2;
+                int LA8_0 = input.LA(1);
+
+                if ( ((LA8_0>=RULE_ID && LA8_0<=RULE_RPY_REAL)||LA8_0==22) ) {
+                    alt8=1;
+                }
+
+
+                switch (alt8) {
+            	case 1 :
+            	    // InternalRpySyntax.g:470:1: (lv_valueElements_3_0= ruleRpySimpleValueElement )
+            	    {
+            	    // InternalRpySyntax.g:470:1: (lv_valueElements_3_0= ruleRpySimpleValueElement )
+            	    // InternalRpySyntax.g:471:3: lv_valueElements_3_0= ruleRpySimpleValueElement
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getSimpleValueListAccess().getValueElementsRpySimpleValueElementParserRuleCall_3_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_12);
+            	    lv_valueElements_3_0=ruleRpySimpleValueElement();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getSimpleValueListRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"valueElements",
+            	              		lv_valueElements_3_0, 
+            	              		"org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.RpySimpleValueElement");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt8 >= 1 ) break loop8;
+            	    if (state.backtracking>0) {state.failed=true; return current;}
+                        EarlyExitException eee =
+                            new EarlyExitException(8, input);
+                        throw eee;
+                }
+                cnt8++;
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleSimpleValueList"
+
+
+    // $ANTLR start "entryRuleRpySimpleValueElement"
+    // InternalRpySyntax.g:495:1: entryRuleRpySimpleValueElement returns [EObject current=null] : iv_ruleRpySimpleValueElement= ruleRpySimpleValueElement EOF ;
+    public final EObject entryRuleRpySimpleValueElement() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleRpySimpleValueElement = null;
+
+
+        try {
+            // InternalRpySyntax.g:496:2: (iv_ruleRpySimpleValueElement= ruleRpySimpleValueElement EOF )
+            // InternalRpySyntax.g:497:2: iv_ruleRpySimpleValueElement= ruleRpySimpleValueElement EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getRpySimpleValueElementRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleRpySimpleValueElement=ruleRpySimpleValueElement();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleRpySimpleValueElement; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleRpySimpleValueElement"
+
+
+    // $ANTLR start "ruleRpySimpleValueElement"
+    // InternalRpySyntax.g:504:1: ruleRpySimpleValueElement returns [EObject current=null] : ( () ( (lv_values_1_0= ruleVALUE_TERMINAL ) )* otherlv_2= ';' ) ;
+    public final EObject ruleRpySimpleValueElement() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_2=null;
+        AntlrDatatypeRuleToken lv_values_1_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // InternalRpySyntax.g:507:28: ( ( () ( (lv_values_1_0= ruleVALUE_TERMINAL ) )* otherlv_2= ';' ) )
+            // InternalRpySyntax.g:508:1: ( () ( (lv_values_1_0= ruleVALUE_TERMINAL ) )* otherlv_2= ';' )
+            {
+            // InternalRpySyntax.g:508:1: ( () ( (lv_values_1_0= ruleVALUE_TERMINAL ) )* otherlv_2= ';' )
+            // InternalRpySyntax.g:508:2: () ( (lv_values_1_0= ruleVALUE_TERMINAL ) )* otherlv_2= ';'
+            {
+            // InternalRpySyntax.g:508:2: ()
+            // InternalRpySyntax.g:509:2: 
+            {
+            if ( state.backtracking==0 ) {
+               
+              	  /* */ 
+              	
+            }
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getRpySimpleValueElementAccess().getRpySimpleValueElementAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            // InternalRpySyntax.g:517:2: ( (lv_values_1_0= ruleVALUE_TERMINAL ) )*
+            loop9:
+            do {
+                int alt9=2;
+                int LA9_0 = input.LA(1);
+
+                if ( ((LA9_0>=RULE_ID && LA9_0<=RULE_RPY_REAL)) ) {
+                    alt9=1;
+                }
+
+
+                switch (alt9) {
+            	case 1 :
+            	    // InternalRpySyntax.g:518:1: (lv_values_1_0= ruleVALUE_TERMINAL )
+            	    {
+            	    // InternalRpySyntax.g:518:1: (lv_values_1_0= ruleVALUE_TERMINAL )
+            	    // InternalRpySyntax.g:519:3: lv_values_1_0= ruleVALUE_TERMINAL
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getRpySimpleValueElementAccess().getValuesVALUE_TERMINALParserRuleCall_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_13);
+            	    lv_values_1_0=ruleVALUE_TERMINAL();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getRpySimpleValueElementRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"values",
+            	              		lv_values_1_0, 
+            	              		"org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.VALUE_TERMINAL");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop9;
+                }
+            } while (true);
+
+            otherlv_2=(Token)match(input,22,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getRpySimpleValueElementAccess().getSemicolonKeyword_2());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleRpySimpleValueElement"
+
+
+    // $ANTLR start "entryRuleVALUE_TERMINAL"
+    // InternalRpySyntax.g:547:1: entryRuleVALUE_TERMINAL returns [String current=null] : iv_ruleVALUE_TERMINAL= ruleVALUE_TERMINAL EOF ;
+    public final String entryRuleVALUE_TERMINAL() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleVALUE_TERMINAL = null;
+
+
+        try {
+            // InternalRpySyntax.g:548:2: (iv_ruleVALUE_TERMINAL= ruleVALUE_TERMINAL EOF )
+            // InternalRpySyntax.g:549:2: iv_ruleVALUE_TERMINAL= ruleVALUE_TERMINAL EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getVALUE_TERMINALRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleVALUE_TERMINAL=ruleVALUE_TERMINAL();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleVALUE_TERMINAL.getText(); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleVALUE_TERMINAL"
+
+
+    // $ANTLR start "ruleVALUE_TERMINAL"
+    // InternalRpySyntax.g:556:1: ruleVALUE_TERMINAL returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_STRING_0= RULE_STRING | this_ID_1= RULE_ID | this_RPY_GUID_2= RULE_RPY_GUID | this_INT_3= RULE_INT | this_RPY_TIME_4= RULE_RPY_TIME | this_RPY_REAL_5= RULE_RPY_REAL ) ;
+    public final AntlrDatatypeRuleToken ruleVALUE_TERMINAL() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token this_STRING_0=null;
+        Token this_ID_1=null;
+        Token this_RPY_GUID_2=null;
+        Token this_INT_3=null;
+        Token this_RPY_TIME_4=null;
+        Token this_RPY_REAL_5=null;
+
+         enterRule(); 
+            
+        try {
+            // InternalRpySyntax.g:559:28: ( (this_STRING_0= RULE_STRING | this_ID_1= RULE_ID | this_RPY_GUID_2= RULE_RPY_GUID | this_INT_3= RULE_INT | this_RPY_TIME_4= RULE_RPY_TIME | this_RPY_REAL_5= RULE_RPY_REAL ) )
+            // InternalRpySyntax.g:560:1: (this_STRING_0= RULE_STRING | this_ID_1= RULE_ID | this_RPY_GUID_2= RULE_RPY_GUID | this_INT_3= RULE_INT | this_RPY_TIME_4= RULE_RPY_TIME | this_RPY_REAL_5= RULE_RPY_REAL )
+            {
+            // InternalRpySyntax.g:560:1: (this_STRING_0= RULE_STRING | this_ID_1= RULE_ID | this_RPY_GUID_2= RULE_RPY_GUID | this_INT_3= RULE_INT | this_RPY_TIME_4= RULE_RPY_TIME | this_RPY_REAL_5= RULE_RPY_REAL )
+            int alt10=6;
+            switch ( input.LA(1) ) {
+            case RULE_STRING:
+                {
+                alt10=1;
+                }
+                break;
+            case RULE_ID:
+                {
+                alt10=2;
+                }
+                break;
+            case RULE_RPY_GUID:
+                {
+                alt10=3;
+                }
+                break;
+            case RULE_INT:
+                {
+                alt10=4;
+                }
+                break;
+            case RULE_RPY_TIME:
+                {
+                alt10=5;
+                }
+                break;
+            case RULE_RPY_REAL:
+                {
+                alt10=6;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 10, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt10) {
+                case 1 :
+                    // InternalRpySyntax.g:560:6: this_STRING_0= RULE_STRING
+                    {
+                    this_STRING_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      		current.merge(this_STRING_0);
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+                       
+                          newLeafNode(this_STRING_0, grammarAccess.getVALUE_TERMINALAccess().getSTRINGTerminalRuleCall_0()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalRpySyntax.g:568:10: this_ID_1= RULE_ID
+                    {
+                    this_ID_1=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      		current.merge(this_ID_1);
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+                       
+                          newLeafNode(this_ID_1, grammarAccess.getVALUE_TERMINALAccess().getIDTerminalRuleCall_1()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // InternalRpySyntax.g:576:10: this_RPY_GUID_2= RULE_RPY_GUID
+                    {
+                    this_RPY_GUID_2=(Token)match(input,RULE_RPY_GUID,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      		current.merge(this_RPY_GUID_2);
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+                       
+                          newLeafNode(this_RPY_GUID_2, grammarAccess.getVALUE_TERMINALAccess().getRPY_GUIDTerminalRuleCall_2()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // InternalRpySyntax.g:584:10: this_INT_3= RULE_INT
+                    {
+                    this_INT_3=(Token)match(input,RULE_INT,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      		current.merge(this_INT_3);
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+                       
+                          newLeafNode(this_INT_3, grammarAccess.getVALUE_TERMINALAccess().getINTTerminalRuleCall_3()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 5 :
+                    // InternalRpySyntax.g:592:10: this_RPY_TIME_4= RULE_RPY_TIME
+                    {
+                    this_RPY_TIME_4=(Token)match(input,RULE_RPY_TIME,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      		current.merge(this_RPY_TIME_4);
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+                       
+                          newLeafNode(this_RPY_TIME_4, grammarAccess.getVALUE_TERMINALAccess().getRPY_TIMETerminalRuleCall_4()); 
+                          
+                    }
+
+                    }
+                    break;
+                case 6 :
+                    // InternalRpySyntax.g:600:10: this_RPY_REAL_5= RULE_RPY_REAL
+                    {
+                    this_RPY_REAL_5=(Token)match(input,RULE_RPY_REAL,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      		current.merge(this_RPY_REAL_5);
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+                       
+                          newLeafNode(this_RPY_REAL_5, grammarAccess.getVALUE_TERMINALAccess().getRPY_REALTerminalRuleCall_5()); 
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleVALUE_TERMINAL"
+
+
+    // $ANTLR start "entryRuleRpyStringMap"
+    // InternalRpySyntax.g:615:1: entryRuleRpyStringMap returns [EObject current=null] : iv_ruleRpyStringMap= ruleRpyStringMap EOF ;
+    public final EObject entryRuleRpyStringMap() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleRpyStringMap = null;
+
+
+        try {
+            // InternalRpySyntax.g:616:2: (iv_ruleRpyStringMap= ruleRpyStringMap EOF )
+            // InternalRpySyntax.g:617:2: iv_ruleRpyStringMap= ruleRpyStringMap EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getRpyStringMapRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleRpyStringMap=ruleRpyStringMap();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleRpyStringMap; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleRpyStringMap"
+
+
+    // $ANTLR start "ruleRpyStringMap"
+    // InternalRpySyntax.g:624:1: ruleRpyStringMap returns [EObject current=null] : ( (lv_entries_0_0= ruleRpyStringMapEntry ) )+ ;
+    public final EObject ruleRpyStringMap() throws RecognitionException {
+        EObject current = null;
+
+        EObject lv_entries_0_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // InternalRpySyntax.g:627:28: ( ( (lv_entries_0_0= ruleRpyStringMapEntry ) )+ )
+            // InternalRpySyntax.g:628:1: ( (lv_entries_0_0= ruleRpyStringMapEntry ) )+
+            {
+            // InternalRpySyntax.g:628:1: ( (lv_entries_0_0= ruleRpyStringMapEntry ) )+
+            int cnt11=0;
+            loop11:
+            do {
+                int alt11=2;
+                int LA11_0 = input.LA(1);
+
+                if ( (LA11_0==RULE_STRING) ) {
+                    alt11=1;
+                }
+
+
+                switch (alt11) {
+            	case 1 :
+            	    // InternalRpySyntax.g:629:1: (lv_entries_0_0= ruleRpyStringMapEntry )
+            	    {
+            	    // InternalRpySyntax.g:629:1: (lv_entries_0_0= ruleRpyStringMapEntry )
+            	    // InternalRpySyntax.g:630:3: lv_entries_0_0= ruleRpyStringMapEntry
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getRpyStringMapAccess().getEntriesRpyStringMapEntryParserRuleCall_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FOLLOW_14);
+            	    lv_entries_0_0=ruleRpyStringMapEntry();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getRpyStringMapRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"entries",
+            	              		lv_entries_0_0, 
+            	              		"org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.RpyStringMapEntry");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt11 >= 1 ) break loop11;
+            	    if (state.backtracking>0) {state.failed=true; return current;}
+                        EarlyExitException eee =
+                            new EarlyExitException(11, input);
+                        throw eee;
+                }
+                cnt11++;
+            } while (true);
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleRpyStringMap"
+
+
+    // $ANTLR start "entryRuleRpyStringMapEntry"
+    // InternalRpySyntax.g:654:1: entryRuleRpyStringMapEntry returns [EObject current=null] : iv_ruleRpyStringMapEntry= ruleRpyStringMapEntry EOF ;
+    public final EObject entryRuleRpyStringMapEntry() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleRpyStringMapEntry = null;
+
+
+        try {
+            // InternalRpySyntax.g:655:2: (iv_ruleRpyStringMapEntry= ruleRpyStringMapEntry EOF )
+            // InternalRpySyntax.g:656:2: iv_ruleRpyStringMapEntry= ruleRpyStringMapEntry EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getRpyStringMapEntryRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleRpyStringMapEntry=ruleRpyStringMapEntry();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleRpyStringMapEntry; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleRpyStringMapEntry"
+
+
+    // $ANTLR start "ruleRpyStringMapEntry"
+    // InternalRpySyntax.g:663:1: ruleRpyStringMapEntry returns [EObject current=null] : ( ( (lv_key_0_0= RULE_STRING ) ) ( (lv_value_1_0= RULE_STRING ) ) ) ;
+    public final EObject ruleRpyStringMapEntry() throws RecognitionException {
+        EObject current = null;
+
+        Token lv_key_0_0=null;
+        Token lv_value_1_0=null;
+
+         enterRule(); 
+            
+        try {
+            // InternalRpySyntax.g:666:28: ( ( ( (lv_key_0_0= RULE_STRING ) ) ( (lv_value_1_0= RULE_STRING ) ) ) )
+            // InternalRpySyntax.g:667:1: ( ( (lv_key_0_0= RULE_STRING ) ) ( (lv_value_1_0= RULE_STRING ) ) )
+            {
+            // InternalRpySyntax.g:667:1: ( ( (lv_key_0_0= RULE_STRING ) ) ( (lv_value_1_0= RULE_STRING ) ) )
+            // InternalRpySyntax.g:667:2: ( (lv_key_0_0= RULE_STRING ) ) ( (lv_value_1_0= RULE_STRING ) )
+            {
+            // InternalRpySyntax.g:667:2: ( (lv_key_0_0= RULE_STRING ) )
+            // InternalRpySyntax.g:668:1: (lv_key_0_0= RULE_STRING )
+            {
+            // InternalRpySyntax.g:668:1: (lv_key_0_0= RULE_STRING )
+            // InternalRpySyntax.g:669:3: lv_key_0_0= RULE_STRING
+            {
+            lv_key_0_0=(Token)match(input,RULE_STRING,FOLLOW_15); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_key_0_0, grammarAccess.getRpyStringMapEntryAccess().getKeySTRINGTerminalRuleCall_0_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getRpyStringMapEntryRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"key",
+                      		lv_key_0_0, 
+                      		"org.eclipse.xtext.common.Terminals.STRING");
+              	    
+            }
+
+            }
+
+
+            }
+
+            // InternalRpySyntax.g:685:2: ( (lv_value_1_0= RULE_STRING ) )
+            // InternalRpySyntax.g:686:1: (lv_value_1_0= RULE_STRING )
+            {
+            // InternalRpySyntax.g:686:1: (lv_value_1_0= RULE_STRING )
+            // InternalRpySyntax.g:687:3: lv_value_1_0= RULE_STRING
+            {
+            lv_value_1_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_value_1_0, grammarAccess.getRpyStringMapEntryAccess().getValueSTRINGTerminalRuleCall_1_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getRpyStringMapEntryRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"value",
+                      		lv_value_1_0, 
+                      		"org.eclipse.xtext.common.Terminals.STRING");
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleRpyStringMapEntry"
+
+    // $ANTLR start synpred6_InternalRpySyntax
+    public final void synpred6_InternalRpySyntax_fragment() throws RecognitionException {   
+        EObject lv_values_0_0 = null;
+
+
+        // InternalRpySyntax.g:392:1: ( (lv_values_0_0= ruleRpyNode ) )
+        // InternalRpySyntax.g:392:1: (lv_values_0_0= ruleRpyNode )
+        {
+        // InternalRpySyntax.g:392:1: (lv_values_0_0= ruleRpyNode )
+        // InternalRpySyntax.g:393:3: lv_values_0_0= ruleRpyNode
+        {
+        if ( state.backtracking==0 ) {
+           
+          	        newCompositeNode(grammarAccess.getRpyNodeListAccess().getValuesRpyNodeParserRuleCall_0()); 
+          	    
+        }
+        pushFollow(FOLLOW_2);
+        lv_values_0_0=ruleRpyNode();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred6_InternalRpySyntax
+
+    // Delegated rules
+
+    public final boolean synpred6_InternalRpySyntax() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred6_InternalRpySyntax_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+
+
+    protected DFA4 dfa4 = new DFA4(this);
+    static final String dfa_1s = "\6\uffff";
+    static final String dfa_2s = "\4\uffff\1\5\1\uffff";
+    static final String dfa_3s = "\1\5\1\uffff\1\5\1\uffff\1\5\1\uffff";
+    static final String dfa_4s = "\1\26\1\uffff\1\26\1\uffff\1\26\1\uffff";
+    static final String dfa_5s = "\1\uffff\1\1\1\uffff\1\2\1\uffff\1\3";
+    static final String dfa_6s = "\6\uffff}>";
+    static final String[] dfa_7s = {
+            "\1\1\1\2\4\1\5\uffff\1\3\3\uffff\3\1",
+            "",
+            "\1\1\1\4\4\1\13\uffff\1\1",
+            "",
+            "\1\1\1\2\4\1\5\uffff\3\5\3\uffff\1\1",
+            ""
+    };
+
+    static final short[] dfa_1 = DFA.unpackEncodedString(dfa_1s);
+    static final short[] dfa_2 = DFA.unpackEncodedString(dfa_2s);
+    static final char[] dfa_3 = DFA.unpackEncodedStringToUnsignedChars(dfa_3s);
+    static final char[] dfa_4 = DFA.unpackEncodedStringToUnsignedChars(dfa_4s);
+    static final short[] dfa_5 = DFA.unpackEncodedString(dfa_5s);
+    static final short[] dfa_6 = DFA.unpackEncodedString(dfa_6s);
+    static final short[][] dfa_7 = unpackEncodedStringArray(dfa_7s);
+
+    class DFA4 extends DFA {
+
+        public DFA4(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 4;
+            this.eot = dfa_1;
+            this.eof = dfa_2;
+            this.min = dfa_3;
+            this.max = dfa_4;
+            this.accept = dfa_5;
+            this.special = dfa_6;
+            this.transition = dfa_7;
+        }
+        public String getDescription() {
+            return "332:1: (this_SimpleValueList_0= ruleSimpleValueList | this_RpyNodeList_1= ruleRpyNodeList | this_RpyStringMap_2= ruleRpyStringMap )";
+        }
+    }
+ 
+
+    public static final BitSet FOLLOW_1 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_2 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_3 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000050002L});
+    public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000050000L});
+    public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000000070000L});
+    public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0000000000080000L});
+    public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x00000000007107E0L});
+    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000010002L});
+    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x00000000007007E0L});
+    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x00000000007007E2L});
+    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x00000000004007E0L});
+    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x00000000007107E2L});
+    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000000000040L});
+
+}
\ No newline at end of file
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpyContent.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpyContent.java
new file mode 100644
index 0000000..afcd240
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpyContent.java
@@ -0,0 +1,51 @@
+/**
+ */
+package org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Rpy Content</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyContent#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage#getRpyContent()
+ * @model
+ * @generated
+ */
+public interface RpyContent 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.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage#getRpyContent_Name()
+   * @model
+   * @generated
+   */
+  String getName();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyContent#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);
+
+} // RpyContent
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpyFeature.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpyFeature.java
new file mode 100644
index 0000000..4da6962
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpyFeature.java
@@ -0,0 +1,50 @@
+/**
+ */
+package org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Rpy Feature</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFeature#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage#getRpyFeature()
+ * @model
+ * @generated
+ */
+public interface RpyFeature extends RpyContent
+{
+  /**
+   * Returns the value of the '<em><b>Value</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Value</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>Value</em>' containment reference.
+   * @see #setValue(RpyFeatureValue)
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage#getRpyFeature_Value()
+   * @model containment="true"
+   * @generated
+   */
+  RpyFeatureValue getValue();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFeature#getValue <em>Value</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Value</em>' containment reference.
+   * @see #getValue()
+   * @generated
+   */
+  void setValue(RpyFeatureValue value);
+
+} // RpyFeature
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpyFeatureValue.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpyFeatureValue.java
new file mode 100644
index 0000000..c3293f6
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpyFeatureValue.java
@@ -0,0 +1,19 @@
+/**
+ */
+package org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Rpy Feature Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage#getRpyFeatureValue()
+ * @model
+ * @generated
+ */
+public interface RpyFeatureValue extends EObject
+{
+} // RpyFeatureValue
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpyFile.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpyFile.java
new file mode 100644
index 0000000..941c35a
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpyFile.java
@@ -0,0 +1,70 @@
+/**
+ */
+package org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Rpy File</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFile#getVersion <em>Version</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFile#getContents <em>Contents</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage#getRpyFile()
+ * @model
+ * @generated
+ */
+public interface RpyFile extends EObject
+{
+  /**
+   * Returns the value of the '<em><b>Version</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Version</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Version</em>' attribute.
+   * @see #setVersion(String)
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage#getRpyFile_Version()
+   * @model
+   * @generated
+   */
+  String getVersion();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFile#getVersion <em>Version</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Version</em>' attribute.
+   * @see #getVersion()
+   * @generated
+   */
+  void setVersion(String value);
+
+  /**
+   * Returns the value of the '<em><b>Contents</b></em>' containment reference list.
+   * The list contents are of type {@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyContent}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Contents</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>Contents</em>' containment reference list.
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage#getRpyFile_Contents()
+   * @model containment="true"
+   * @generated
+   */
+  EList<RpyContent> getContents();
+
+} // RpyFile
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpyNode.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpyNode.java
new file mode 100644
index 0000000..25c8262
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpyNode.java
@@ -0,0 +1,41 @@
+/**
+ */
+package org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Rpy Node</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyNode#getContents <em>Contents</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage#getRpyNode()
+ * @model
+ * @generated
+ */
+public interface RpyNode extends RpyContent
+{
+  /**
+   * Returns the value of the '<em><b>Contents</b></em>' containment reference list.
+   * The list contents are of type {@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyContent}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Contents</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>Contents</em>' containment reference list.
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage#getRpyNode_Contents()
+   * @model containment="true"
+   * @generated
+   */
+  EList<RpyContent> getContents();
+
+} // RpyNode
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpyNodeList.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpyNodeList.java
new file mode 100644
index 0000000..3500e5f
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpyNodeList.java
@@ -0,0 +1,41 @@
+/**
+ */
+package org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Rpy Node List</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyNodeList#getValues <em>Values</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage#getRpyNodeList()
+ * @model
+ * @generated
+ */
+public interface RpyNodeList extends RpyFeatureValue
+{
+  /**
+   * Returns the value of the '<em><b>Values</b></em>' containment reference list.
+   * The list contents are of type {@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyNode}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Values</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>Values</em>' containment reference list.
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage#getRpyNodeList_Values()
+   * @model containment="true"
+   * @generated
+   */
+  EList<RpyNode> getValues();
+
+} // RpyNodeList
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpySimpleValueElement.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpySimpleValueElement.java
new file mode 100644
index 0000000..6c8de04
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpySimpleValueElement.java
@@ -0,0 +1,43 @@
+/**
+ */
+package org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Rpy Simple Value Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySimpleValueElement#getValues <em>Values</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage#getRpySimpleValueElement()
+ * @model
+ * @generated
+ */
+public interface RpySimpleValueElement extends EObject
+{
+  /**
+   * Returns the value of the '<em><b>Values</b></em>' attribute list.
+   * The list contents are of type {@link java.lang.String}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Values</em>' attribute list isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Values</em>' attribute list.
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage#getRpySimpleValueElement_Values()
+   * @model unique="false"
+   * @generated
+   */
+  EList<String> getValues();
+
+} // RpySimpleValueElement
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpyStringMap.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpyStringMap.java
new file mode 100644
index 0000000..963109d
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpyStringMap.java
@@ -0,0 +1,41 @@
+/**
+ */
+package org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Rpy String Map</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyStringMap#getEntries <em>Entries</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage#getRpyStringMap()
+ * @model
+ * @generated
+ */
+public interface RpyStringMap extends RpyFeatureValue
+{
+  /**
+   * Returns the value of the '<em><b>Entries</b></em>' containment reference list.
+   * The list contents are of type {@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyStringMapEntry}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Entries</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>Entries</em>' containment reference list.
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage#getRpyStringMap_Entries()
+   * @model containment="true"
+   * @generated
+   */
+  EList<RpyStringMapEntry> getEntries();
+
+} // RpyStringMap
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpyStringMapEntry.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpyStringMapEntry.java
new file mode 100644
index 0000000..4307c11
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpyStringMapEntry.java
@@ -0,0 +1,78 @@
+/**
+ */
+package org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Rpy String Map Entry</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyStringMapEntry#getKey <em>Key</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyStringMapEntry#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage#getRpyStringMapEntry()
+ * @model
+ * @generated
+ */
+public interface RpyStringMapEntry 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.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage#getRpyStringMapEntry_Key()
+   * @model
+   * @generated
+   */
+  String getKey();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyStringMapEntry#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>' 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.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage#getRpyStringMapEntry_Value()
+   * @model
+   * @generated
+   */
+  String getValue();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyStringMapEntry#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);
+
+} // RpyStringMapEntry
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpySyntaxFactory.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpySyntaxFactory.java
new file mode 100644
index 0000000..56e1a3d
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpySyntaxFactory.java
@@ -0,0 +1,124 @@
+/**
+ */
+package org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax;
+
+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.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage
+ * @generated
+ */
+public interface RpySyntaxFactory extends EFactory
+{
+  /**
+   * The singleton instance of the factory.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  RpySyntaxFactory eINSTANCE = org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpySyntaxFactoryImpl.init();
+
+  /**
+   * Returns a new object of class '<em>Rpy File</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Rpy File</em>'.
+   * @generated
+   */
+  RpyFile createRpyFile();
+
+  /**
+   * Returns a new object of class '<em>Rpy Content</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Rpy Content</em>'.
+   * @generated
+   */
+  RpyContent createRpyContent();
+
+  /**
+   * Returns a new object of class '<em>Rpy Node</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Rpy Node</em>'.
+   * @generated
+   */
+  RpyNode createRpyNode();
+
+  /**
+   * Returns a new object of class '<em>Rpy Feature</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Rpy Feature</em>'.
+   * @generated
+   */
+  RpyFeature createRpyFeature();
+
+  /**
+   * Returns a new object of class '<em>Rpy Feature Value</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Rpy Feature Value</em>'.
+   * @generated
+   */
+  RpyFeatureValue createRpyFeatureValue();
+
+  /**
+   * Returns a new object of class '<em>Rpy Node List</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Rpy Node List</em>'.
+   * @generated
+   */
+  RpyNodeList createRpyNodeList();
+
+  /**
+   * Returns a new object of class '<em>Simple Value List</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Simple Value List</em>'.
+   * @generated
+   */
+  SimpleValueList createSimpleValueList();
+
+  /**
+   * Returns a new object of class '<em>Rpy Simple Value Element</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Rpy Simple Value Element</em>'.
+   * @generated
+   */
+  RpySimpleValueElement createRpySimpleValueElement();
+
+  /**
+   * Returns a new object of class '<em>Rpy String Map</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Rpy String Map</em>'.
+   * @generated
+   */
+  RpyStringMap createRpyStringMap();
+
+  /**
+   * Returns a new object of class '<em>Rpy String Map Entry</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Rpy String Map Entry</em>'.
+   * @generated
+   */
+  RpyStringMapEntry createRpyStringMapEntry();
+
+  /**
+   * Returns the package supported by this factory.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the package supported by this factory.
+   * @generated
+   */
+  RpySyntaxPackage getRpySyntaxPackage();
+
+} //RpySyntaxFactory
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpySyntaxPackage.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpySyntaxPackage.java
new file mode 100644
index 0000000..f9eb554
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/RpySyntaxPackage.java
@@ -0,0 +1,857 @@
+/**
+ */
+package org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface RpySyntaxPackage extends EPackage
+{
+  /**
+   * The package name.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  String eNAME = "rpySyntax";
+
+  /**
+   * The package namespace URI.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  String eNS_URI = "http://www.eclipse.org/papyrus/rpy/RpySyntax";
+
+  /**
+   * The package namespace name.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  String eNS_PREFIX = "rpySyntax";
+
+  /**
+   * The singleton instance of the package.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  RpySyntaxPackage eINSTANCE = org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpySyntaxPackageImpl.init();
+
+  /**
+   * The meta object id for the '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyFileImpl <em>Rpy File</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyFileImpl
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpySyntaxPackageImpl#getRpyFile()
+   * @generated
+   */
+  int RPY_FILE = 0;
+
+  /**
+   * The feature id for the '<em><b>Version</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int RPY_FILE__VERSION = 0;
+
+  /**
+   * The feature id for the '<em><b>Contents</b></em>' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int RPY_FILE__CONTENTS = 1;
+
+  /**
+   * The number of structural features of the '<em>Rpy File</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int RPY_FILE_FEATURE_COUNT = 2;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyContentImpl <em>Rpy Content</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyContentImpl
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpySyntaxPackageImpl#getRpyContent()
+   * @generated
+   */
+  int RPY_CONTENT = 1;
+
+  /**
+   * The feature id for the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int RPY_CONTENT__NAME = 0;
+
+  /**
+   * The number of structural features of the '<em>Rpy Content</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int RPY_CONTENT_FEATURE_COUNT = 1;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyNodeImpl <em>Rpy Node</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyNodeImpl
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpySyntaxPackageImpl#getRpyNode()
+   * @generated
+   */
+  int RPY_NODE = 2;
+
+  /**
+   * The feature id for the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int RPY_NODE__NAME = RPY_CONTENT__NAME;
+
+  /**
+   * The feature id for the '<em><b>Contents</b></em>' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int RPY_NODE__CONTENTS = RPY_CONTENT_FEATURE_COUNT + 0;
+
+  /**
+   * The number of structural features of the '<em>Rpy Node</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int RPY_NODE_FEATURE_COUNT = RPY_CONTENT_FEATURE_COUNT + 1;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyFeatureImpl <em>Rpy Feature</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyFeatureImpl
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpySyntaxPackageImpl#getRpyFeature()
+   * @generated
+   */
+  int RPY_FEATURE = 3;
+
+  /**
+   * The feature id for the '<em><b>Name</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int RPY_FEATURE__NAME = RPY_CONTENT__NAME;
+
+  /**
+   * The feature id for the '<em><b>Value</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int RPY_FEATURE__VALUE = RPY_CONTENT_FEATURE_COUNT + 0;
+
+  /**
+   * The number of structural features of the '<em>Rpy Feature</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int RPY_FEATURE_FEATURE_COUNT = RPY_CONTENT_FEATURE_COUNT + 1;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyFeatureValueImpl <em>Rpy Feature Value</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyFeatureValueImpl
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpySyntaxPackageImpl#getRpyFeatureValue()
+   * @generated
+   */
+  int RPY_FEATURE_VALUE = 4;
+
+  /**
+   * The number of structural features of the '<em>Rpy Feature Value</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int RPY_FEATURE_VALUE_FEATURE_COUNT = 0;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyNodeListImpl <em>Rpy Node List</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyNodeListImpl
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpySyntaxPackageImpl#getRpyNodeList()
+   * @generated
+   */
+  int RPY_NODE_LIST = 5;
+
+  /**
+   * The feature id for the '<em><b>Values</b></em>' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int RPY_NODE_LIST__VALUES = RPY_FEATURE_VALUE_FEATURE_COUNT + 0;
+
+  /**
+   * The number of structural features of the '<em>Rpy Node List</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int RPY_NODE_LIST_FEATURE_COUNT = RPY_FEATURE_VALUE_FEATURE_COUNT + 1;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.SimpleValueListImpl <em>Simple Value List</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.SimpleValueListImpl
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpySyntaxPackageImpl#getSimpleValueList()
+   * @generated
+   */
+  int SIMPLE_VALUE_LIST = 6;
+
+  /**
+   * The feature id for the '<em><b>Is Old ID</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int SIMPLE_VALUE_LIST__IS_OLD_ID = RPY_FEATURE_VALUE_FEATURE_COUNT + 0;
+
+  /**
+   * The feature id for the '<em><b>Is GUID</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int SIMPLE_VALUE_LIST__IS_GUID = RPY_FEATURE_VALUE_FEATURE_COUNT + 1;
+
+  /**
+   * The feature id for the '<em><b>Value Elements</b></em>' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int SIMPLE_VALUE_LIST__VALUE_ELEMENTS = RPY_FEATURE_VALUE_FEATURE_COUNT + 2;
+
+  /**
+   * The number of structural features of the '<em>Simple Value List</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int SIMPLE_VALUE_LIST_FEATURE_COUNT = RPY_FEATURE_VALUE_FEATURE_COUNT + 3;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpySimpleValueElementImpl <em>Rpy Simple Value Element</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpySimpleValueElementImpl
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpySyntaxPackageImpl#getRpySimpleValueElement()
+   * @generated
+   */
+  int RPY_SIMPLE_VALUE_ELEMENT = 7;
+
+  /**
+   * The feature id for the '<em><b>Values</b></em>' attribute list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int RPY_SIMPLE_VALUE_ELEMENT__VALUES = 0;
+
+  /**
+   * The number of structural features of the '<em>Rpy Simple Value Element</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int RPY_SIMPLE_VALUE_ELEMENT_FEATURE_COUNT = 1;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyStringMapImpl <em>Rpy String Map</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyStringMapImpl
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpySyntaxPackageImpl#getRpyStringMap()
+   * @generated
+   */
+  int RPY_STRING_MAP = 8;
+
+  /**
+   * The feature id for the '<em><b>Entries</b></em>' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int RPY_STRING_MAP__ENTRIES = RPY_FEATURE_VALUE_FEATURE_COUNT + 0;
+
+  /**
+   * The number of structural features of the '<em>Rpy String Map</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int RPY_STRING_MAP_FEATURE_COUNT = RPY_FEATURE_VALUE_FEATURE_COUNT + 1;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyStringMapEntryImpl <em>Rpy String Map Entry</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyStringMapEntryImpl
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpySyntaxPackageImpl#getRpyStringMapEntry()
+   * @generated
+   */
+  int RPY_STRING_MAP_ENTRY = 9;
+
+  /**
+   * The feature id for the '<em><b>Key</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int RPY_STRING_MAP_ENTRY__KEY = 0;
+
+  /**
+   * The feature id for the '<em><b>Value</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int RPY_STRING_MAP_ENTRY__VALUE = 1;
+
+  /**
+   * The number of structural features of the '<em>Rpy String Map Entry</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int RPY_STRING_MAP_ENTRY_FEATURE_COUNT = 2;
+
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFile <em>Rpy File</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Rpy File</em>'.
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFile
+   * @generated
+   */
+  EClass getRpyFile();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFile#getVersion <em>Version</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Version</em>'.
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFile#getVersion()
+   * @see #getRpyFile()
+   * @generated
+   */
+  EAttribute getRpyFile_Version();
+
+  /**
+   * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFile#getContents <em>Contents</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference list '<em>Contents</em>'.
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFile#getContents()
+   * @see #getRpyFile()
+   * @generated
+   */
+  EReference getRpyFile_Contents();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyContent <em>Rpy Content</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Rpy Content</em>'.
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyContent
+   * @generated
+   */
+  EClass getRpyContent();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyContent#getName <em>Name</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Name</em>'.
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyContent#getName()
+   * @see #getRpyContent()
+   * @generated
+   */
+  EAttribute getRpyContent_Name();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyNode <em>Rpy Node</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Rpy Node</em>'.
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyNode
+   * @generated
+   */
+  EClass getRpyNode();
+
+  /**
+   * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyNode#getContents <em>Contents</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference list '<em>Contents</em>'.
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyNode#getContents()
+   * @see #getRpyNode()
+   * @generated
+   */
+  EReference getRpyNode_Contents();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFeature <em>Rpy Feature</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Rpy Feature</em>'.
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFeature
+   * @generated
+   */
+  EClass getRpyFeature();
+
+  /**
+   * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFeature#getValue <em>Value</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference '<em>Value</em>'.
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFeature#getValue()
+   * @see #getRpyFeature()
+   * @generated
+   */
+  EReference getRpyFeature_Value();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFeatureValue <em>Rpy Feature Value</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Rpy Feature Value</em>'.
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFeatureValue
+   * @generated
+   */
+  EClass getRpyFeatureValue();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyNodeList <em>Rpy Node List</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Rpy Node List</em>'.
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyNodeList
+   * @generated
+   */
+  EClass getRpyNodeList();
+
+  /**
+   * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyNodeList#getValues <em>Values</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference list '<em>Values</em>'.
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyNodeList#getValues()
+   * @see #getRpyNodeList()
+   * @generated
+   */
+  EReference getRpyNodeList_Values();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.SimpleValueList <em>Simple Value List</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Simple Value List</em>'.
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.SimpleValueList
+   * @generated
+   */
+  EClass getSimpleValueList();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.SimpleValueList#isIsOldID <em>Is Old ID</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Is Old ID</em>'.
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.SimpleValueList#isIsOldID()
+   * @see #getSimpleValueList()
+   * @generated
+   */
+  EAttribute getSimpleValueList_IsOldID();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.SimpleValueList#isIsGUID <em>Is GUID</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Is GUID</em>'.
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.SimpleValueList#isIsGUID()
+   * @see #getSimpleValueList()
+   * @generated
+   */
+  EAttribute getSimpleValueList_IsGUID();
+
+  /**
+   * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.SimpleValueList#getValueElements <em>Value Elements</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference list '<em>Value Elements</em>'.
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.SimpleValueList#getValueElements()
+   * @see #getSimpleValueList()
+   * @generated
+   */
+  EReference getSimpleValueList_ValueElements();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySimpleValueElement <em>Rpy Simple Value Element</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Rpy Simple Value Element</em>'.
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySimpleValueElement
+   * @generated
+   */
+  EClass getRpySimpleValueElement();
+
+  /**
+   * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySimpleValueElement#getValues <em>Values</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute list '<em>Values</em>'.
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySimpleValueElement#getValues()
+   * @see #getRpySimpleValueElement()
+   * @generated
+   */
+  EAttribute getRpySimpleValueElement_Values();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyStringMap <em>Rpy String Map</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Rpy String Map</em>'.
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyStringMap
+   * @generated
+   */
+  EClass getRpyStringMap();
+
+  /**
+   * Returns the meta object for the containment reference list '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyStringMap#getEntries <em>Entries</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference list '<em>Entries</em>'.
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyStringMap#getEntries()
+   * @see #getRpyStringMap()
+   * @generated
+   */
+  EReference getRpyStringMap_Entries();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyStringMapEntry <em>Rpy String Map Entry</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Rpy String Map Entry</em>'.
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyStringMapEntry
+   * @generated
+   */
+  EClass getRpyStringMapEntry();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyStringMapEntry#getKey <em>Key</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Key</em>'.
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyStringMapEntry#getKey()
+   * @see #getRpyStringMapEntry()
+   * @generated
+   */
+  EAttribute getRpyStringMapEntry_Key();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyStringMapEntry#getValue <em>Value</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Value</em>'.
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyStringMapEntry#getValue()
+   * @see #getRpyStringMapEntry()
+   * @generated
+   */
+  EAttribute getRpyStringMapEntry_Value();
+
+  /**
+   * 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
+   */
+  RpySyntaxFactory getRpySyntaxFactory();
+
+  /**
+   * <!-- begin-user-doc -->
+   * Defines literals for the meta objects that represent
+   * <ul>
+   *   <li>each class,</li>
+   *   <li>each feature of each class,</li>
+   *   <li>each enum,</li>
+   *   <li>and each data type</li>
+   * </ul>
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  interface Literals
+  {
+    /**
+     * The meta object literal for the '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyFileImpl <em>Rpy File</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyFileImpl
+     * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpySyntaxPackageImpl#getRpyFile()
+     * @generated
+     */
+    EClass RPY_FILE = eINSTANCE.getRpyFile();
+
+    /**
+     * The meta object literal for the '<em><b>Version</b></em>' attribute feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EAttribute RPY_FILE__VERSION = eINSTANCE.getRpyFile_Version();
+
+    /**
+     * The meta object literal for the '<em><b>Contents</b></em>' containment reference list feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EReference RPY_FILE__CONTENTS = eINSTANCE.getRpyFile_Contents();
+
+    /**
+     * The meta object literal for the '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyContentImpl <em>Rpy Content</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyContentImpl
+     * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpySyntaxPackageImpl#getRpyContent()
+     * @generated
+     */
+    EClass RPY_CONTENT = eINSTANCE.getRpyContent();
+
+    /**
+     * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EAttribute RPY_CONTENT__NAME = eINSTANCE.getRpyContent_Name();
+
+    /**
+     * The meta object literal for the '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyNodeImpl <em>Rpy Node</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyNodeImpl
+     * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpySyntaxPackageImpl#getRpyNode()
+     * @generated
+     */
+    EClass RPY_NODE = eINSTANCE.getRpyNode();
+
+    /**
+     * The meta object literal for the '<em><b>Contents</b></em>' containment reference list feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EReference RPY_NODE__CONTENTS = eINSTANCE.getRpyNode_Contents();
+
+    /**
+     * The meta object literal for the '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyFeatureImpl <em>Rpy Feature</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyFeatureImpl
+     * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpySyntaxPackageImpl#getRpyFeature()
+     * @generated
+     */
+    EClass RPY_FEATURE = eINSTANCE.getRpyFeature();
+
+    /**
+     * The meta object literal for the '<em><b>Value</b></em>' containment reference feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EReference RPY_FEATURE__VALUE = eINSTANCE.getRpyFeature_Value();
+
+    /**
+     * The meta object literal for the '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyFeatureValueImpl <em>Rpy Feature Value</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyFeatureValueImpl
+     * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpySyntaxPackageImpl#getRpyFeatureValue()
+     * @generated
+     */
+    EClass RPY_FEATURE_VALUE = eINSTANCE.getRpyFeatureValue();
+
+    /**
+     * The meta object literal for the '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyNodeListImpl <em>Rpy Node List</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyNodeListImpl
+     * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpySyntaxPackageImpl#getRpyNodeList()
+     * @generated
+     */
+    EClass RPY_NODE_LIST = eINSTANCE.getRpyNodeList();
+
+    /**
+     * The meta object literal for the '<em><b>Values</b></em>' containment reference list feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EReference RPY_NODE_LIST__VALUES = eINSTANCE.getRpyNodeList_Values();
+
+    /**
+     * The meta object literal for the '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.SimpleValueListImpl <em>Simple Value List</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.SimpleValueListImpl
+     * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpySyntaxPackageImpl#getSimpleValueList()
+     * @generated
+     */
+    EClass SIMPLE_VALUE_LIST = eINSTANCE.getSimpleValueList();
+
+    /**
+     * The meta object literal for the '<em><b>Is Old ID</b></em>' attribute feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EAttribute SIMPLE_VALUE_LIST__IS_OLD_ID = eINSTANCE.getSimpleValueList_IsOldID();
+
+    /**
+     * The meta object literal for the '<em><b>Is GUID</b></em>' attribute feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EAttribute SIMPLE_VALUE_LIST__IS_GUID = eINSTANCE.getSimpleValueList_IsGUID();
+
+    /**
+     * The meta object literal for the '<em><b>Value Elements</b></em>' containment reference list feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EReference SIMPLE_VALUE_LIST__VALUE_ELEMENTS = eINSTANCE.getSimpleValueList_ValueElements();
+
+    /**
+     * The meta object literal for the '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpySimpleValueElementImpl <em>Rpy Simple Value Element</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpySimpleValueElementImpl
+     * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpySyntaxPackageImpl#getRpySimpleValueElement()
+     * @generated
+     */
+    EClass RPY_SIMPLE_VALUE_ELEMENT = eINSTANCE.getRpySimpleValueElement();
+
+    /**
+     * The meta object literal for the '<em><b>Values</b></em>' attribute list feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EAttribute RPY_SIMPLE_VALUE_ELEMENT__VALUES = eINSTANCE.getRpySimpleValueElement_Values();
+
+    /**
+     * The meta object literal for the '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyStringMapImpl <em>Rpy String Map</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyStringMapImpl
+     * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpySyntaxPackageImpl#getRpyStringMap()
+     * @generated
+     */
+    EClass RPY_STRING_MAP = eINSTANCE.getRpyStringMap();
+
+    /**
+     * The meta object literal for the '<em><b>Entries</b></em>' containment reference list feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EReference RPY_STRING_MAP__ENTRIES = eINSTANCE.getRpyStringMap_Entries();
+
+    /**
+     * The meta object literal for the '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyStringMapEntryImpl <em>Rpy String Map Entry</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyStringMapEntryImpl
+     * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpySyntaxPackageImpl#getRpyStringMapEntry()
+     * @generated
+     */
+    EClass RPY_STRING_MAP_ENTRY = eINSTANCE.getRpyStringMapEntry();
+
+    /**
+     * The meta object literal for the '<em><b>Key</b></em>' attribute feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EAttribute RPY_STRING_MAP_ENTRY__KEY = eINSTANCE.getRpyStringMapEntry_Key();
+
+    /**
+     * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EAttribute RPY_STRING_MAP_ENTRY__VALUE = eINSTANCE.getRpyStringMapEntry_Value();
+
+  }
+
+} //RpySyntaxPackage
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/SimpleValueList.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/SimpleValueList.java
new file mode 100644
index 0000000..5c40aa5
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/SimpleValueList.java
@@ -0,0 +1,95 @@
+/**
+ */
+package org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Simple Value List</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.SimpleValueList#isIsOldID <em>Is Old ID</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.SimpleValueList#isIsGUID <em>Is GUID</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.SimpleValueList#getValueElements <em>Value Elements</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage#getSimpleValueList()
+ * @model
+ * @generated
+ */
+public interface SimpleValueList extends RpyFeatureValue
+{
+  /**
+   * Returns the value of the '<em><b>Is Old ID</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Is Old 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>Is Old ID</em>' attribute.
+   * @see #setIsOldID(boolean)
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage#getSimpleValueList_IsOldID()
+   * @model
+   * @generated
+   */
+  boolean isIsOldID();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.SimpleValueList#isIsOldID <em>Is Old ID</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Is Old ID</em>' attribute.
+   * @see #isIsOldID()
+   * @generated
+   */
+  void setIsOldID(boolean value);
+
+  /**
+   * Returns the value of the '<em><b>Is GUID</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Is GUID</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 GUID</em>' attribute.
+   * @see #setIsGUID(boolean)
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage#getSimpleValueList_IsGUID()
+   * @model
+   * @generated
+   */
+  boolean isIsGUID();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.SimpleValueList#isIsGUID <em>Is GUID</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Is GUID</em>' attribute.
+   * @see #isIsGUID()
+   * @generated
+   */
+  void setIsGUID(boolean value);
+
+  /**
+   * Returns the value of the '<em><b>Value Elements</b></em>' containment reference list.
+   * The list contents are of type {@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySimpleValueElement}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Value 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>Value Elements</em>' containment reference list.
+   * @see org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage#getSimpleValueList_ValueElements()
+   * @model containment="true"
+   * @generated
+   */
+  EList<RpySimpleValueElement> getValueElements();
+
+} // SimpleValueList
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpyContentImpl.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpyContentImpl.java
new file mode 100644
index 0000000..886c6b6
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpyContentImpl.java
@@ -0,0 +1,177 @@
+/**
+ */
+package org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.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.interoperability.rpy.parser.rpySyntax.RpyContent;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Rpy Content</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyContentImpl#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class RpyContentImpl extends MinimalEObjectImpl.Container implements RpyContent
+{
+  /**
+   * 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 RpyContentImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return RpySyntaxPackage.Literals.RPY_CONTENT;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String getName()
+  {
+    return name;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setName(String newName)
+  {
+    String oldName = name;
+    name = newName;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, RpySyntaxPackage.RPY_CONTENT__NAME, oldName, name));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object eGet(int featureID, boolean resolve, boolean coreType)
+  {
+    switch (featureID)
+    {
+      case RpySyntaxPackage.RPY_CONTENT__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 RpySyntaxPackage.RPY_CONTENT__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 RpySyntaxPackage.RPY_CONTENT__NAME:
+        setName(NAME_EDEFAULT);
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case RpySyntaxPackage.RPY_CONTENT__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();
+  }
+
+} //RpyContentImpl
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpyFeatureImpl.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpyFeatureImpl.java
new file mode 100644
index 0000000..ce46fb7
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpyFeatureImpl.java
@@ -0,0 +1,193 @@
+/**
+ */
+package org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.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.interoperability.rpy.parser.rpySyntax.RpyFeature;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFeatureValue;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Rpy Feature</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyFeatureImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class RpyFeatureImpl extends RpyContentImpl implements RpyFeature
+{
+  /**
+   * The cached value of the '{@link #getValue() <em>Value</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getValue()
+   * @generated
+   * @ordered
+   */
+  protected RpyFeatureValue value;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected RpyFeatureImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return RpySyntaxPackage.Literals.RPY_FEATURE;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public RpyFeatureValue getValue()
+  {
+    return value;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetValue(RpyFeatureValue newValue, NotificationChain msgs)
+  {
+    RpyFeatureValue oldValue = value;
+    value = newValue;
+    if (eNotificationRequired())
+    {
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, RpySyntaxPackage.RPY_FEATURE__VALUE, oldValue, newValue);
+      if (msgs == null) msgs = notification; else msgs.add(notification);
+    }
+    return msgs;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setValue(RpyFeatureValue newValue)
+  {
+    if (newValue != value)
+    {
+      NotificationChain msgs = null;
+      if (value != null)
+        msgs = ((InternalEObject)value).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - RpySyntaxPackage.RPY_FEATURE__VALUE, null, msgs);
+      if (newValue != null)
+        msgs = ((InternalEObject)newValue).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - RpySyntaxPackage.RPY_FEATURE__VALUE, null, msgs);
+      msgs = basicSetValue(newValue, msgs);
+      if (msgs != null) msgs.dispatch();
+    }
+    else if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, RpySyntaxPackage.RPY_FEATURE__VALUE, newValue, newValue));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+  {
+    switch (featureID)
+    {
+      case RpySyntaxPackage.RPY_FEATURE__VALUE:
+        return basicSetValue(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 RpySyntaxPackage.RPY_FEATURE__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 RpySyntaxPackage.RPY_FEATURE__VALUE:
+        setValue((RpyFeatureValue)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case RpySyntaxPackage.RPY_FEATURE__VALUE:
+        setValue((RpyFeatureValue)null);
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case RpySyntaxPackage.RPY_FEATURE__VALUE:
+        return value != null;
+    }
+    return super.eIsSet(featureID);
+  }
+
+} //RpyFeatureImpl
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpyFeatureValueImpl.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpyFeatureValueImpl.java
new file mode 100644
index 0000000..41117e4
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpyFeatureValueImpl.java
@@ -0,0 +1,42 @@
+/**
+ */
+package org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFeatureValue;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Rpy Feature Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class RpyFeatureValueImpl extends MinimalEObjectImpl.Container implements RpyFeatureValue
+{
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected RpyFeatureValueImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return RpySyntaxPackage.Literals.RPY_FEATURE_VALUE;
+  }
+
+} //RpyFeatureValueImpl
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpyFileImpl.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpyFileImpl.java
new file mode 100644
index 0000000..45071cb
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpyFileImpl.java
@@ -0,0 +1,240 @@
+/**
+ */
+package org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyContent;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFile;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Rpy File</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyFileImpl#getVersion <em>Version</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyFileImpl#getContents <em>Contents</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class RpyFileImpl extends MinimalEObjectImpl.Container implements RpyFile
+{
+  /**
+   * The default value of the '{@link #getVersion() <em>Version</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getVersion()
+   * @generated
+   * @ordered
+   */
+  protected static final String VERSION_EDEFAULT = null;
+
+  /**
+   * The cached value of the '{@link #getVersion() <em>Version</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getVersion()
+   * @generated
+   * @ordered
+   */
+  protected String version = VERSION_EDEFAULT;
+
+  /**
+   * The cached value of the '{@link #getContents() <em>Contents</em>}' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getContents()
+   * @generated
+   * @ordered
+   */
+  protected EList<RpyContent> contents;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected RpyFileImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return RpySyntaxPackage.Literals.RPY_FILE;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String getVersion()
+  {
+    return version;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setVersion(String newVersion)
+  {
+    String oldVersion = version;
+    version = newVersion;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, RpySyntaxPackage.RPY_FILE__VERSION, oldVersion, version));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EList<RpyContent> getContents()
+  {
+    if (contents == null)
+    {
+      contents = new EObjectContainmentEList<RpyContent>(RpyContent.class, this, RpySyntaxPackage.RPY_FILE__CONTENTS);
+    }
+    return contents;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+  {
+    switch (featureID)
+    {
+      case RpySyntaxPackage.RPY_FILE__CONTENTS:
+        return ((InternalEList<?>)getContents()).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 RpySyntaxPackage.RPY_FILE__VERSION:
+        return getVersion();
+      case RpySyntaxPackage.RPY_FILE__CONTENTS:
+        return getContents();
+    }
+    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 RpySyntaxPackage.RPY_FILE__VERSION:
+        setVersion((String)newValue);
+        return;
+      case RpySyntaxPackage.RPY_FILE__CONTENTS:
+        getContents().clear();
+        getContents().addAll((Collection<? extends RpyContent>)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case RpySyntaxPackage.RPY_FILE__VERSION:
+        setVersion(VERSION_EDEFAULT);
+        return;
+      case RpySyntaxPackage.RPY_FILE__CONTENTS:
+        getContents().clear();
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case RpySyntaxPackage.RPY_FILE__VERSION:
+        return VERSION_EDEFAULT == null ? version != null : !VERSION_EDEFAULT.equals(version);
+      case RpySyntaxPackage.RPY_FILE__CONTENTS:
+        return contents != null && !contents.isEmpty();
+    }
+    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(" (version: ");
+    result.append(version);
+    result.append(')');
+    return result.toString();
+  }
+
+} //RpyFileImpl
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpyNodeImpl.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpyNodeImpl.java
new file mode 100644
index 0000000..f092075
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpyNodeImpl.java
@@ -0,0 +1,165 @@
+/**
+ */
+package org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.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.interoperability.rpy.parser.rpySyntax.RpyContent;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyNode;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Rpy Node</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyNodeImpl#getContents <em>Contents</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class RpyNodeImpl extends RpyContentImpl implements RpyNode
+{
+  /**
+   * The cached value of the '{@link #getContents() <em>Contents</em>}' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getContents()
+   * @generated
+   * @ordered
+   */
+  protected EList<RpyContent> contents;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected RpyNodeImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return RpySyntaxPackage.Literals.RPY_NODE;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EList<RpyContent> getContents()
+  {
+    if (contents == null)
+    {
+      contents = new EObjectContainmentEList<RpyContent>(RpyContent.class, this, RpySyntaxPackage.RPY_NODE__CONTENTS);
+    }
+    return contents;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+  {
+    switch (featureID)
+    {
+      case RpySyntaxPackage.RPY_NODE__CONTENTS:
+        return ((InternalEList<?>)getContents()).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 RpySyntaxPackage.RPY_NODE__CONTENTS:
+        return getContents();
+    }
+    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 RpySyntaxPackage.RPY_NODE__CONTENTS:
+        getContents().clear();
+        getContents().addAll((Collection<? extends RpyContent>)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case RpySyntaxPackage.RPY_NODE__CONTENTS:
+        getContents().clear();
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case RpySyntaxPackage.RPY_NODE__CONTENTS:
+        return contents != null && !contents.isEmpty();
+    }
+    return super.eIsSet(featureID);
+  }
+
+} //RpyNodeImpl
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpyNodeListImpl.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpyNodeListImpl.java
new file mode 100644
index 0000000..1ada980
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpyNodeListImpl.java
@@ -0,0 +1,165 @@
+/**
+ */
+package org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.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.interoperability.rpy.parser.rpySyntax.RpyNode;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyNodeList;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Rpy Node List</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyNodeListImpl#getValues <em>Values</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class RpyNodeListImpl extends RpyFeatureValueImpl implements RpyNodeList
+{
+  /**
+   * The cached value of the '{@link #getValues() <em>Values</em>}' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getValues()
+   * @generated
+   * @ordered
+   */
+  protected EList<RpyNode> values;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected RpyNodeListImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return RpySyntaxPackage.Literals.RPY_NODE_LIST;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EList<RpyNode> getValues()
+  {
+    if (values == null)
+    {
+      values = new EObjectContainmentEList<RpyNode>(RpyNode.class, this, RpySyntaxPackage.RPY_NODE_LIST__VALUES);
+    }
+    return values;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+  {
+    switch (featureID)
+    {
+      case RpySyntaxPackage.RPY_NODE_LIST__VALUES:
+        return ((InternalEList<?>)getValues()).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 RpySyntaxPackage.RPY_NODE_LIST__VALUES:
+        return getValues();
+    }
+    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 RpySyntaxPackage.RPY_NODE_LIST__VALUES:
+        getValues().clear();
+        getValues().addAll((Collection<? extends RpyNode>)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case RpySyntaxPackage.RPY_NODE_LIST__VALUES:
+        getValues().clear();
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case RpySyntaxPackage.RPY_NODE_LIST__VALUES:
+        return values != null && !values.isEmpty();
+    }
+    return super.eIsSet(featureID);
+  }
+
+} //RpyNodeListImpl
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpySimpleValueElementImpl.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpySimpleValueElementImpl.java
new file mode 100644
index 0000000..7057a1a
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpySimpleValueElementImpl.java
@@ -0,0 +1,163 @@
+/**
+ */
+package org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EDataTypeEList;
+
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySimpleValueElement;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Rpy Simple Value Element</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpySimpleValueElementImpl#getValues <em>Values</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class RpySimpleValueElementImpl extends MinimalEObjectImpl.Container implements RpySimpleValueElement
+{
+  /**
+   * The cached value of the '{@link #getValues() <em>Values</em>}' attribute list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getValues()
+   * @generated
+   * @ordered
+   */
+  protected EList<String> values;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected RpySimpleValueElementImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return RpySyntaxPackage.Literals.RPY_SIMPLE_VALUE_ELEMENT;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EList<String> getValues()
+  {
+    if (values == null)
+    {
+      values = new EDataTypeEList<String>(String.class, this, RpySyntaxPackage.RPY_SIMPLE_VALUE_ELEMENT__VALUES);
+    }
+    return values;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object eGet(int featureID, boolean resolve, boolean coreType)
+  {
+    switch (featureID)
+    {
+      case RpySyntaxPackage.RPY_SIMPLE_VALUE_ELEMENT__VALUES:
+        return getValues();
+    }
+    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 RpySyntaxPackage.RPY_SIMPLE_VALUE_ELEMENT__VALUES:
+        getValues().clear();
+        getValues().addAll((Collection<? extends String>)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case RpySyntaxPackage.RPY_SIMPLE_VALUE_ELEMENT__VALUES:
+        getValues().clear();
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case RpySyntaxPackage.RPY_SIMPLE_VALUE_ELEMENT__VALUES:
+        return values != null && !values.isEmpty();
+    }
+    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(" (values: ");
+    result.append(values);
+    result.append(')');
+    return result.toString();
+  }
+
+} //RpySimpleValueElementImpl
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpyStringMapEntryImpl.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpyStringMapEntryImpl.java
new file mode 100644
index 0000000..06b0994
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpyStringMapEntryImpl.java
@@ -0,0 +1,233 @@
+/**
+ */
+package org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.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.interoperability.rpy.parser.rpySyntax.RpyStringMapEntry;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Rpy String Map Entry</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyStringMapEntryImpl#getKey <em>Key</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyStringMapEntryImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class RpyStringMapEntryImpl extends MinimalEObjectImpl.Container implements RpyStringMapEntry
+{
+  /**
+   * The default value of the '{@link #getKey() <em>Key</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getKey()
+   * @generated
+   * @ordered
+   */
+  protected static final String KEY_EDEFAULT = null;
+
+  /**
+   * The cached value of the '{@link #getKey() <em>Key</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getKey()
+   * @generated
+   * @ordered
+   */
+  protected String key = KEY_EDEFAULT;
+
+  /**
+   * 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 RpyStringMapEntryImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return RpySyntaxPackage.Literals.RPY_STRING_MAP_ENTRY;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String getKey()
+  {
+    return key;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setKey(String newKey)
+  {
+    String oldKey = key;
+    key = newKey;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, RpySyntaxPackage.RPY_STRING_MAP_ENTRY__KEY, oldKey, key));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String getValue()
+  {
+    return value;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setValue(String newValue)
+  {
+    String oldValue = value;
+    value = newValue;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, RpySyntaxPackage.RPY_STRING_MAP_ENTRY__VALUE, oldValue, value));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object eGet(int featureID, boolean resolve, boolean coreType)
+  {
+    switch (featureID)
+    {
+      case RpySyntaxPackage.RPY_STRING_MAP_ENTRY__KEY:
+        return getKey();
+      case RpySyntaxPackage.RPY_STRING_MAP_ENTRY__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 RpySyntaxPackage.RPY_STRING_MAP_ENTRY__KEY:
+        setKey((String)newValue);
+        return;
+      case RpySyntaxPackage.RPY_STRING_MAP_ENTRY__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 RpySyntaxPackage.RPY_STRING_MAP_ENTRY__KEY:
+        setKey(KEY_EDEFAULT);
+        return;
+      case RpySyntaxPackage.RPY_STRING_MAP_ENTRY__VALUE:
+        setValue(VALUE_EDEFAULT);
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case RpySyntaxPackage.RPY_STRING_MAP_ENTRY__KEY:
+        return KEY_EDEFAULT == null ? key != null : !KEY_EDEFAULT.equals(key);
+      case RpySyntaxPackage.RPY_STRING_MAP_ENTRY__VALUE:
+        return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+    }
+    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(", value: ");
+    result.append(value);
+    result.append(')');
+    return result.toString();
+  }
+
+} //RpyStringMapEntryImpl
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpyStringMapImpl.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpyStringMapImpl.java
new file mode 100644
index 0000000..f8a5dbc
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpyStringMapImpl.java
@@ -0,0 +1,165 @@
+/**
+ */
+package org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.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.interoperability.rpy.parser.rpySyntax.RpyStringMap;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyStringMapEntry;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Rpy String Map</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.RpyStringMapImpl#getEntries <em>Entries</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class RpyStringMapImpl extends RpyFeatureValueImpl implements RpyStringMap
+{
+  /**
+   * The cached value of the '{@link #getEntries() <em>Entries</em>}' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getEntries()
+   * @generated
+   * @ordered
+   */
+  protected EList<RpyStringMapEntry> entries;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected RpyStringMapImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return RpySyntaxPackage.Literals.RPY_STRING_MAP;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EList<RpyStringMapEntry> getEntries()
+  {
+    if (entries == null)
+    {
+      entries = new EObjectContainmentEList<RpyStringMapEntry>(RpyStringMapEntry.class, this, RpySyntaxPackage.RPY_STRING_MAP__ENTRIES);
+    }
+    return entries;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+  {
+    switch (featureID)
+    {
+      case RpySyntaxPackage.RPY_STRING_MAP__ENTRIES:
+        return ((InternalEList<?>)getEntries()).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 RpySyntaxPackage.RPY_STRING_MAP__ENTRIES:
+        return getEntries();
+    }
+    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 RpySyntaxPackage.RPY_STRING_MAP__ENTRIES:
+        getEntries().clear();
+        getEntries().addAll((Collection<? extends RpyStringMapEntry>)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case RpySyntaxPackage.RPY_STRING_MAP__ENTRIES:
+        getEntries().clear();
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case RpySyntaxPackage.RPY_STRING_MAP__ENTRIES:
+        return entries != null && !entries.isEmpty();
+    }
+    return super.eIsSet(featureID);
+  }
+
+} //RpyStringMapImpl
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpySyntaxFactoryImpl.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpySyntaxFactoryImpl.java
new file mode 100644
index 0000000..bf9f129
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpySyntaxFactoryImpl.java
@@ -0,0 +1,214 @@
+/**
+ */
+package org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class RpySyntaxFactoryImpl extends EFactoryImpl implements RpySyntaxFactory
+{
+  /**
+   * Creates the default factory implementation.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public static RpySyntaxFactory init()
+  {
+    try
+    {
+      RpySyntaxFactory theRpySyntaxFactory = (RpySyntaxFactory)EPackage.Registry.INSTANCE.getEFactory(RpySyntaxPackage.eNS_URI);
+      if (theRpySyntaxFactory != null)
+      {
+        return theRpySyntaxFactory;
+      }
+    }
+    catch (Exception exception)
+    {
+      EcorePlugin.INSTANCE.log(exception);
+    }
+    return new RpySyntaxFactoryImpl();
+  }
+
+  /**
+   * Creates an instance of the factory.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public RpySyntaxFactoryImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public EObject create(EClass eClass)
+  {
+    switch (eClass.getClassifierID())
+    {
+      case RpySyntaxPackage.RPY_FILE: return createRpyFile();
+      case RpySyntaxPackage.RPY_CONTENT: return createRpyContent();
+      case RpySyntaxPackage.RPY_NODE: return createRpyNode();
+      case RpySyntaxPackage.RPY_FEATURE: return createRpyFeature();
+      case RpySyntaxPackage.RPY_FEATURE_VALUE: return createRpyFeatureValue();
+      case RpySyntaxPackage.RPY_NODE_LIST: return createRpyNodeList();
+      case RpySyntaxPackage.SIMPLE_VALUE_LIST: return createSimpleValueList();
+      case RpySyntaxPackage.RPY_SIMPLE_VALUE_ELEMENT: return createRpySimpleValueElement();
+      case RpySyntaxPackage.RPY_STRING_MAP: return createRpyStringMap();
+      case RpySyntaxPackage.RPY_STRING_MAP_ENTRY: return createRpyStringMapEntry();
+      default:
+        throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+    }
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public RpyFile createRpyFile()
+  {
+    RpyFileImpl rpyFile = new RpyFileImpl();
+    return rpyFile;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public RpyContent createRpyContent()
+  {
+    RpyContentImpl rpyContent = new RpyContentImpl();
+    return rpyContent;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public RpyNode createRpyNode()
+  {
+    RpyNodeImpl rpyNode = new RpyNodeImpl();
+    return rpyNode;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public RpyFeature createRpyFeature()
+  {
+    RpyFeatureImpl rpyFeature = new RpyFeatureImpl();
+    return rpyFeature;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public RpyFeatureValue createRpyFeatureValue()
+  {
+    RpyFeatureValueImpl rpyFeatureValue = new RpyFeatureValueImpl();
+    return rpyFeatureValue;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public RpyNodeList createRpyNodeList()
+  {
+    RpyNodeListImpl rpyNodeList = new RpyNodeListImpl();
+    return rpyNodeList;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public SimpleValueList createSimpleValueList()
+  {
+    SimpleValueListImpl simpleValueList = new SimpleValueListImpl();
+    return simpleValueList;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public RpySimpleValueElement createRpySimpleValueElement()
+  {
+    RpySimpleValueElementImpl rpySimpleValueElement = new RpySimpleValueElementImpl();
+    return rpySimpleValueElement;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public RpyStringMap createRpyStringMap()
+  {
+    RpyStringMapImpl rpyStringMap = new RpyStringMapImpl();
+    return rpyStringMap;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public RpyStringMapEntry createRpyStringMapEntry()
+  {
+    RpyStringMapEntryImpl rpyStringMapEntry = new RpyStringMapEntryImpl();
+    return rpyStringMapEntry;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public RpySyntaxPackage getRpySyntaxPackage()
+  {
+    return (RpySyntaxPackage)getEPackage();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @deprecated
+   * @generated
+   */
+  @Deprecated
+  public static RpySyntaxPackage getPackage()
+  {
+    return RpySyntaxPackage.eINSTANCE;
+  }
+
+} //RpySyntaxFactoryImpl
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpySyntaxPackageImpl.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpySyntaxPackageImpl.java
new file mode 100644
index 0000000..f01d17b
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/RpySyntaxPackageImpl.java
@@ -0,0 +1,533 @@
+/**
+ */
+package org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyContent;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFeature;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFeatureValue;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFile;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyNode;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyNodeList;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySimpleValueElement;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyStringMap;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyStringMapEntry;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxFactory;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.SimpleValueList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class RpySyntaxPackageImpl extends EPackageImpl implements RpySyntaxPackage
+{
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass rpyFileEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass rpyContentEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass rpyNodeEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass rpyFeatureEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass rpyFeatureValueEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass rpyNodeListEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass simpleValueListEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass rpySimpleValueElementEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass rpyStringMapEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass rpyStringMapEntryEClass = 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.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage#eNS_URI
+   * @see #init()
+   * @generated
+   */
+  private RpySyntaxPackageImpl()
+  {
+    super(eNS_URI, RpySyntaxFactory.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 RpySyntaxPackage#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 RpySyntaxPackage init()
+  {
+    if (isInited) return (RpySyntaxPackage)EPackage.Registry.INSTANCE.getEPackage(RpySyntaxPackage.eNS_URI);
+
+    // Obtain or create and register package
+    RpySyntaxPackageImpl theRpySyntaxPackage = (RpySyntaxPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof RpySyntaxPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new RpySyntaxPackageImpl());
+
+    isInited = true;
+
+    // Create package meta-data objects
+    theRpySyntaxPackage.createPackageContents();
+
+    // Initialize created meta-data
+    theRpySyntaxPackage.initializePackageContents();
+
+    // Mark meta-data to indicate it can't be changed
+    theRpySyntaxPackage.freeze();
+
+  
+    // Update the registry and return the package
+    EPackage.Registry.INSTANCE.put(RpySyntaxPackage.eNS_URI, theRpySyntaxPackage);
+    return theRpySyntaxPackage;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getRpyFile()
+  {
+    return rpyFileEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getRpyFile_Version()
+  {
+    return (EAttribute)rpyFileEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getRpyFile_Contents()
+  {
+    return (EReference)rpyFileEClass.getEStructuralFeatures().get(1);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getRpyContent()
+  {
+    return rpyContentEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getRpyContent_Name()
+  {
+    return (EAttribute)rpyContentEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getRpyNode()
+  {
+    return rpyNodeEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getRpyNode_Contents()
+  {
+    return (EReference)rpyNodeEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getRpyFeature()
+  {
+    return rpyFeatureEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getRpyFeature_Value()
+  {
+    return (EReference)rpyFeatureEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getRpyFeatureValue()
+  {
+    return rpyFeatureValueEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getRpyNodeList()
+  {
+    return rpyNodeListEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getRpyNodeList_Values()
+  {
+    return (EReference)rpyNodeListEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getSimpleValueList()
+  {
+    return simpleValueListEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getSimpleValueList_IsOldID()
+  {
+    return (EAttribute)simpleValueListEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getSimpleValueList_IsGUID()
+  {
+    return (EAttribute)simpleValueListEClass.getEStructuralFeatures().get(1);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getSimpleValueList_ValueElements()
+  {
+    return (EReference)simpleValueListEClass.getEStructuralFeatures().get(2);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getRpySimpleValueElement()
+  {
+    return rpySimpleValueElementEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getRpySimpleValueElement_Values()
+  {
+    return (EAttribute)rpySimpleValueElementEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getRpyStringMap()
+  {
+    return rpyStringMapEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getRpyStringMap_Entries()
+  {
+    return (EReference)rpyStringMapEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getRpyStringMapEntry()
+  {
+    return rpyStringMapEntryEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getRpyStringMapEntry_Key()
+  {
+    return (EAttribute)rpyStringMapEntryEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getRpyStringMapEntry_Value()
+  {
+    return (EAttribute)rpyStringMapEntryEClass.getEStructuralFeatures().get(1);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public RpySyntaxFactory getRpySyntaxFactory()
+  {
+    return (RpySyntaxFactory)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
+    rpyFileEClass = createEClass(RPY_FILE);
+    createEAttribute(rpyFileEClass, RPY_FILE__VERSION);
+    createEReference(rpyFileEClass, RPY_FILE__CONTENTS);
+
+    rpyContentEClass = createEClass(RPY_CONTENT);
+    createEAttribute(rpyContentEClass, RPY_CONTENT__NAME);
+
+    rpyNodeEClass = createEClass(RPY_NODE);
+    createEReference(rpyNodeEClass, RPY_NODE__CONTENTS);
+
+    rpyFeatureEClass = createEClass(RPY_FEATURE);
+    createEReference(rpyFeatureEClass, RPY_FEATURE__VALUE);
+
+    rpyFeatureValueEClass = createEClass(RPY_FEATURE_VALUE);
+
+    rpyNodeListEClass = createEClass(RPY_NODE_LIST);
+    createEReference(rpyNodeListEClass, RPY_NODE_LIST__VALUES);
+
+    simpleValueListEClass = createEClass(SIMPLE_VALUE_LIST);
+    createEAttribute(simpleValueListEClass, SIMPLE_VALUE_LIST__IS_OLD_ID);
+    createEAttribute(simpleValueListEClass, SIMPLE_VALUE_LIST__IS_GUID);
+    createEReference(simpleValueListEClass, SIMPLE_VALUE_LIST__VALUE_ELEMENTS);
+
+    rpySimpleValueElementEClass = createEClass(RPY_SIMPLE_VALUE_ELEMENT);
+    createEAttribute(rpySimpleValueElementEClass, RPY_SIMPLE_VALUE_ELEMENT__VALUES);
+
+    rpyStringMapEClass = createEClass(RPY_STRING_MAP);
+    createEReference(rpyStringMapEClass, RPY_STRING_MAP__ENTRIES);
+
+    rpyStringMapEntryEClass = createEClass(RPY_STRING_MAP_ENTRY);
+    createEAttribute(rpyStringMapEntryEClass, RPY_STRING_MAP_ENTRY__KEY);
+    createEAttribute(rpyStringMapEntryEClass, RPY_STRING_MAP_ENTRY__VALUE);
+  }
+
+  /**
+   * <!-- 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
+    rpyNodeEClass.getESuperTypes().add(this.getRpyContent());
+    rpyFeatureEClass.getESuperTypes().add(this.getRpyContent());
+    rpyNodeListEClass.getESuperTypes().add(this.getRpyFeatureValue());
+    simpleValueListEClass.getESuperTypes().add(this.getRpyFeatureValue());
+    rpyStringMapEClass.getESuperTypes().add(this.getRpyFeatureValue());
+
+    // Initialize classes and features; add operations and parameters
+    initEClass(rpyFileEClass, RpyFile.class, "RpyFile", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEAttribute(getRpyFile_Version(), ecorePackage.getEString(), "version", null, 0, 1, RpyFile.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEReference(getRpyFile_Contents(), this.getRpyContent(), null, "contents", null, 0, -1, RpyFile.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(rpyContentEClass, RpyContent.class, "RpyContent", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEAttribute(getRpyContent_Name(), ecorePackage.getEString(), "name", null, 0, 1, RpyContent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(rpyNodeEClass, RpyNode.class, "RpyNode", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEReference(getRpyNode_Contents(), this.getRpyContent(), null, "contents", null, 0, -1, RpyNode.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(rpyFeatureEClass, RpyFeature.class, "RpyFeature", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEReference(getRpyFeature_Value(), this.getRpyFeatureValue(), null, "value", null, 0, 1, RpyFeature.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(rpyFeatureValueEClass, RpyFeatureValue.class, "RpyFeatureValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+    initEClass(rpyNodeListEClass, RpyNodeList.class, "RpyNodeList", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEReference(getRpyNodeList_Values(), this.getRpyNode(), null, "values", null, 0, -1, RpyNodeList.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(simpleValueListEClass, SimpleValueList.class, "SimpleValueList", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEAttribute(getSimpleValueList_IsOldID(), ecorePackage.getEBoolean(), "isOldID", null, 0, 1, SimpleValueList.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getSimpleValueList_IsGUID(), ecorePackage.getEBoolean(), "isGUID", null, 0, 1, SimpleValueList.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEReference(getSimpleValueList_ValueElements(), this.getRpySimpleValueElement(), null, "valueElements", null, 0, -1, SimpleValueList.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(rpySimpleValueElementEClass, RpySimpleValueElement.class, "RpySimpleValueElement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEAttribute(getRpySimpleValueElement_Values(), ecorePackage.getEString(), "values", null, 0, -1, RpySimpleValueElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(rpyStringMapEClass, RpyStringMap.class, "RpyStringMap", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEReference(getRpyStringMap_Entries(), this.getRpyStringMapEntry(), null, "entries", null, 0, -1, RpyStringMap.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(rpyStringMapEntryEClass, RpyStringMapEntry.class, "RpyStringMapEntry", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEAttribute(getRpyStringMapEntry_Key(), ecorePackage.getEString(), "key", null, 0, 1, RpyStringMapEntry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getRpyStringMapEntry_Value(), ecorePackage.getEString(), "value", null, 0, 1, RpyStringMapEntry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    // Create resource
+    createResource(eNS_URI);
+  }
+
+} //RpySyntaxPackageImpl
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/SimpleValueListImpl.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/SimpleValueListImpl.java
new file mode 100644
index 0000000..522569a
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/impl/SimpleValueListImpl.java
@@ -0,0 +1,295 @@
+/**
+ */
+package org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.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.interoperability.rpy.parser.rpySyntax.RpySimpleValueElement;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.SimpleValueList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Simple Value List</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.SimpleValueListImpl#isIsOldID <em>Is Old ID</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.SimpleValueListImpl#isIsGUID <em>Is GUID</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.impl.SimpleValueListImpl#getValueElements <em>Value Elements</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class SimpleValueListImpl extends RpyFeatureValueImpl implements SimpleValueList
+{
+  /**
+   * The default value of the '{@link #isIsOldID() <em>Is Old ID</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isIsOldID()
+   * @generated
+   * @ordered
+   */
+  protected static final boolean IS_OLD_ID_EDEFAULT = false;
+
+  /**
+   * The cached value of the '{@link #isIsOldID() <em>Is Old ID</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isIsOldID()
+   * @generated
+   * @ordered
+   */
+  protected boolean isOldID = IS_OLD_ID_EDEFAULT;
+
+  /**
+   * The default value of the '{@link #isIsGUID() <em>Is GUID</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isIsGUID()
+   * @generated
+   * @ordered
+   */
+  protected static final boolean IS_GUID_EDEFAULT = false;
+
+  /**
+   * The cached value of the '{@link #isIsGUID() <em>Is GUID</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isIsGUID()
+   * @generated
+   * @ordered
+   */
+  protected boolean isGUID = IS_GUID_EDEFAULT;
+
+  /**
+   * The cached value of the '{@link #getValueElements() <em>Value Elements</em>}' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getValueElements()
+   * @generated
+   * @ordered
+   */
+  protected EList<RpySimpleValueElement> valueElements;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected SimpleValueListImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return RpySyntaxPackage.Literals.SIMPLE_VALUE_LIST;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isIsOldID()
+  {
+    return isOldID;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setIsOldID(boolean newIsOldID)
+  {
+    boolean oldIsOldID = isOldID;
+    isOldID = newIsOldID;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, RpySyntaxPackage.SIMPLE_VALUE_LIST__IS_OLD_ID, oldIsOldID, isOldID));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public boolean isIsGUID()
+  {
+    return isGUID;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setIsGUID(boolean newIsGUID)
+  {
+    boolean oldIsGUID = isGUID;
+    isGUID = newIsGUID;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, RpySyntaxPackage.SIMPLE_VALUE_LIST__IS_GUID, oldIsGUID, isGUID));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EList<RpySimpleValueElement> getValueElements()
+  {
+    if (valueElements == null)
+    {
+      valueElements = new EObjectContainmentEList<RpySimpleValueElement>(RpySimpleValueElement.class, this, RpySyntaxPackage.SIMPLE_VALUE_LIST__VALUE_ELEMENTS);
+    }
+    return valueElements;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+  {
+    switch (featureID)
+    {
+      case RpySyntaxPackage.SIMPLE_VALUE_LIST__VALUE_ELEMENTS:
+        return ((InternalEList<?>)getValueElements()).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 RpySyntaxPackage.SIMPLE_VALUE_LIST__IS_OLD_ID:
+        return isIsOldID();
+      case RpySyntaxPackage.SIMPLE_VALUE_LIST__IS_GUID:
+        return isIsGUID();
+      case RpySyntaxPackage.SIMPLE_VALUE_LIST__VALUE_ELEMENTS:
+        return getValueElements();
+    }
+    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 RpySyntaxPackage.SIMPLE_VALUE_LIST__IS_OLD_ID:
+        setIsOldID((Boolean)newValue);
+        return;
+      case RpySyntaxPackage.SIMPLE_VALUE_LIST__IS_GUID:
+        setIsGUID((Boolean)newValue);
+        return;
+      case RpySyntaxPackage.SIMPLE_VALUE_LIST__VALUE_ELEMENTS:
+        getValueElements().clear();
+        getValueElements().addAll((Collection<? extends RpySimpleValueElement>)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case RpySyntaxPackage.SIMPLE_VALUE_LIST__IS_OLD_ID:
+        setIsOldID(IS_OLD_ID_EDEFAULT);
+        return;
+      case RpySyntaxPackage.SIMPLE_VALUE_LIST__IS_GUID:
+        setIsGUID(IS_GUID_EDEFAULT);
+        return;
+      case RpySyntaxPackage.SIMPLE_VALUE_LIST__VALUE_ELEMENTS:
+        getValueElements().clear();
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case RpySyntaxPackage.SIMPLE_VALUE_LIST__IS_OLD_ID:
+        return isOldID != IS_OLD_ID_EDEFAULT;
+      case RpySyntaxPackage.SIMPLE_VALUE_LIST__IS_GUID:
+        return isGUID != IS_GUID_EDEFAULT;
+      case RpySyntaxPackage.SIMPLE_VALUE_LIST__VALUE_ELEMENTS:
+        return valueElements != null && !valueElements.isEmpty();
+    }
+    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(" (isOldID: ");
+    result.append(isOldID);
+    result.append(", isGUID: ");
+    result.append(isGUID);
+    result.append(')');
+    return result.toString();
+  }
+
+} //SimpleValueListImpl
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/util/RpySyntaxAdapterFactory.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/util/RpySyntaxAdapterFactory.java
new file mode 100644
index 0000000..1a23edd
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/util/RpySyntaxAdapterFactory.java
@@ -0,0 +1,312 @@
+/**
+ */
+package org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.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.interoperability.rpy.parser.rpySyntax.*;
+
+/**
+ * <!-- 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.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage
+ * @generated
+ */
+public class RpySyntaxAdapterFactory extends AdapterFactoryImpl
+{
+  /**
+   * The cached model package.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected static RpySyntaxPackage modelPackage;
+
+  /**
+   * Creates an instance of the adapter factory.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public RpySyntaxAdapterFactory()
+  {
+    if (modelPackage == null)
+    {
+      modelPackage = RpySyntaxPackage.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 RpySyntaxSwitch<Adapter> modelSwitch =
+    new RpySyntaxSwitch<Adapter>()
+    {
+      @Override
+      public Adapter caseRpyFile(RpyFile object)
+      {
+        return createRpyFileAdapter();
+      }
+      @Override
+      public Adapter caseRpyContent(RpyContent object)
+      {
+        return createRpyContentAdapter();
+      }
+      @Override
+      public Adapter caseRpyNode(RpyNode object)
+      {
+        return createRpyNodeAdapter();
+      }
+      @Override
+      public Adapter caseRpyFeature(RpyFeature object)
+      {
+        return createRpyFeatureAdapter();
+      }
+      @Override
+      public Adapter caseRpyFeatureValue(RpyFeatureValue object)
+      {
+        return createRpyFeatureValueAdapter();
+      }
+      @Override
+      public Adapter caseRpyNodeList(RpyNodeList object)
+      {
+        return createRpyNodeListAdapter();
+      }
+      @Override
+      public Adapter caseSimpleValueList(SimpleValueList object)
+      {
+        return createSimpleValueListAdapter();
+      }
+      @Override
+      public Adapter caseRpySimpleValueElement(RpySimpleValueElement object)
+      {
+        return createRpySimpleValueElementAdapter();
+      }
+      @Override
+      public Adapter caseRpyStringMap(RpyStringMap object)
+      {
+        return createRpyStringMapAdapter();
+      }
+      @Override
+      public Adapter caseRpyStringMapEntry(RpyStringMapEntry object)
+      {
+        return createRpyStringMapEntryAdapter();
+      }
+      @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.interoperability.rpy.parser.rpySyntax.RpyFile <em>Rpy File</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.interoperability.rpy.parser.rpySyntax.RpyFile
+   * @generated
+   */
+  public Adapter createRpyFileAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyContent <em>Rpy Content</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.interoperability.rpy.parser.rpySyntax.RpyContent
+   * @generated
+   */
+  public Adapter createRpyContentAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyNode <em>Rpy Node</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.interoperability.rpy.parser.rpySyntax.RpyNode
+   * @generated
+   */
+  public Adapter createRpyNodeAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFeature <em>Rpy Feature</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.interoperability.rpy.parser.rpySyntax.RpyFeature
+   * @generated
+   */
+  public Adapter createRpyFeatureAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFeatureValue <em>Rpy Feature Value</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.interoperability.rpy.parser.rpySyntax.RpyFeatureValue
+   * @generated
+   */
+  public Adapter createRpyFeatureValueAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyNodeList <em>Rpy Node List</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.interoperability.rpy.parser.rpySyntax.RpyNodeList
+   * @generated
+   */
+  public Adapter createRpyNodeListAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.SimpleValueList <em>Simple Value List</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.interoperability.rpy.parser.rpySyntax.SimpleValueList
+   * @generated
+   */
+  public Adapter createSimpleValueListAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySimpleValueElement <em>Rpy Simple Value 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.interoperability.rpy.parser.rpySyntax.RpySimpleValueElement
+   * @generated
+   */
+  public Adapter createRpySimpleValueElementAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyStringMap <em>Rpy String 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 org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyStringMap
+   * @generated
+   */
+  public Adapter createRpyStringMapAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyStringMapEntry <em>Rpy String Map Entry</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.interoperability.rpy.parser.rpySyntax.RpyStringMapEntry
+   * @generated
+   */
+  public Adapter createRpyStringMapEntryAdapter()
+  {
+    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;
+  }
+
+} //RpySyntaxAdapterFactory
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/util/RpySyntaxSwitch.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/util/RpySyntaxSwitch.java
new file mode 100644
index 0000000..46f6568
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/rpySyntax/util/RpySyntaxSwitch.java
@@ -0,0 +1,331 @@
+/**
+ */
+package org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.*;
+
+/**
+ * <!-- 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.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage
+ * @generated
+ */
+public class RpySyntaxSwitch<T> extends Switch<T>
+{
+  /**
+   * The cached model package
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected static RpySyntaxPackage modelPackage;
+
+  /**
+   * Creates an instance of the switch.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public RpySyntaxSwitch()
+  {
+    if (modelPackage == null)
+    {
+      modelPackage = RpySyntaxPackage.eINSTANCE;
+    }
+  }
+
+  /**
+   * Checks whether this is a switch for the given package.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param 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 RpySyntaxPackage.RPY_FILE:
+      {
+        RpyFile rpyFile = (RpyFile)theEObject;
+        T result = caseRpyFile(rpyFile);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case RpySyntaxPackage.RPY_CONTENT:
+      {
+        RpyContent rpyContent = (RpyContent)theEObject;
+        T result = caseRpyContent(rpyContent);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case RpySyntaxPackage.RPY_NODE:
+      {
+        RpyNode rpyNode = (RpyNode)theEObject;
+        T result = caseRpyNode(rpyNode);
+        if (result == null) result = caseRpyContent(rpyNode);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case RpySyntaxPackage.RPY_FEATURE:
+      {
+        RpyFeature rpyFeature = (RpyFeature)theEObject;
+        T result = caseRpyFeature(rpyFeature);
+        if (result == null) result = caseRpyContent(rpyFeature);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case RpySyntaxPackage.RPY_FEATURE_VALUE:
+      {
+        RpyFeatureValue rpyFeatureValue = (RpyFeatureValue)theEObject;
+        T result = caseRpyFeatureValue(rpyFeatureValue);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case RpySyntaxPackage.RPY_NODE_LIST:
+      {
+        RpyNodeList rpyNodeList = (RpyNodeList)theEObject;
+        T result = caseRpyNodeList(rpyNodeList);
+        if (result == null) result = caseRpyFeatureValue(rpyNodeList);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case RpySyntaxPackage.SIMPLE_VALUE_LIST:
+      {
+        SimpleValueList simpleValueList = (SimpleValueList)theEObject;
+        T result = caseSimpleValueList(simpleValueList);
+        if (result == null) result = caseRpyFeatureValue(simpleValueList);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case RpySyntaxPackage.RPY_SIMPLE_VALUE_ELEMENT:
+      {
+        RpySimpleValueElement rpySimpleValueElement = (RpySimpleValueElement)theEObject;
+        T result = caseRpySimpleValueElement(rpySimpleValueElement);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case RpySyntaxPackage.RPY_STRING_MAP:
+      {
+        RpyStringMap rpyStringMap = (RpyStringMap)theEObject;
+        T result = caseRpyStringMap(rpyStringMap);
+        if (result == null) result = caseRpyFeatureValue(rpyStringMap);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case RpySyntaxPackage.RPY_STRING_MAP_ENTRY:
+      {
+        RpyStringMapEntry rpyStringMapEntry = (RpyStringMapEntry)theEObject;
+        T result = caseRpyStringMapEntry(rpyStringMapEntry);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      default: return defaultCase(theEObject);
+    }
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Rpy File</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>Rpy File</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseRpyFile(RpyFile object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Rpy Content</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>Rpy Content</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseRpyContent(RpyContent object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Rpy Node</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>Rpy Node</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseRpyNode(RpyNode object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Rpy Feature</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>Rpy Feature</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseRpyFeature(RpyFeature object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Rpy Feature Value</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>Rpy Feature Value</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseRpyFeatureValue(RpyFeatureValue object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Rpy Node List</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>Rpy Node List</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseRpyNodeList(RpyNodeList object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Simple Value List</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 Value List</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseSimpleValueList(SimpleValueList object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Rpy Simple Value 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>Rpy Simple Value Element</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseRpySimpleValueElement(RpySimpleValueElement object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Rpy String 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>Rpy String Map</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseRpyStringMap(RpyStringMap object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Rpy String Map Entry</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>Rpy String Map Entry</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseRpyStringMapEntry(RpyStringMapEntry 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;
+  }
+
+} //RpySyntaxSwitch
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/serializer/RpySyntaxSemanticSequencer.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/serializer/RpySyntaxSemanticSequencer.java
new file mode 100644
index 0000000..db24a55
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/serializer/RpySyntaxSemanticSequencer.java
@@ -0,0 +1,199 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.parser.serializer;
+
+import com.google.inject.Inject;
+import java.util.Set;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFeature;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFile;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyNode;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyNodeList;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySimpleValueElement;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyStringMap;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyStringMapEntry;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.SimpleValueList;
+import org.eclipse.papyrus.interoperability.rpy.parser.services.RpySyntaxGrammarAccess;
+import org.eclipse.xtext.Action;
+import org.eclipse.xtext.Parameter;
+import org.eclipse.xtext.ParserRule;
+import org.eclipse.xtext.serializer.ISerializationContext;
+import org.eclipse.xtext.serializer.acceptor.SequenceFeeder;
+import org.eclipse.xtext.serializer.sequencer.AbstractDelegatingSemanticSequencer;
+import org.eclipse.xtext.serializer.sequencer.ITransientValueService.ValueTransient;
+
+@SuppressWarnings("all")
+public class RpySyntaxSemanticSequencer extends AbstractDelegatingSemanticSequencer {
+
+	@Inject
+	private RpySyntaxGrammarAccess grammarAccess;
+	
+	@Override
+	public void sequence(ISerializationContext context, EObject semanticObject) {
+		EPackage epackage = semanticObject.eClass().getEPackage();
+		ParserRule rule = context.getParserRule();
+		Action action = context.getAssignedAction();
+		Set<Parameter> parameters = context.getEnabledBooleanParameters();
+		if (epackage == RpySyntaxPackage.eINSTANCE)
+			switch (semanticObject.eClass().getClassifierID()) {
+			case RpySyntaxPackage.RPY_FEATURE:
+				sequence_RpyFeature(context, (RpyFeature) semanticObject); 
+				return; 
+			case RpySyntaxPackage.RPY_FILE:
+				sequence_RpyFile(context, (RpyFile) semanticObject); 
+				return; 
+			case RpySyntaxPackage.RPY_NODE:
+				sequence_RpyNode(context, (RpyNode) semanticObject); 
+				return; 
+			case RpySyntaxPackage.RPY_NODE_LIST:
+				sequence_RpyNodeList(context, (RpyNodeList) semanticObject); 
+				return; 
+			case RpySyntaxPackage.RPY_SIMPLE_VALUE_ELEMENT:
+				sequence_RpySimpleValueElement(context, (RpySimpleValueElement) semanticObject); 
+				return; 
+			case RpySyntaxPackage.RPY_STRING_MAP:
+				sequence_RpyStringMap(context, (RpyStringMap) semanticObject); 
+				return; 
+			case RpySyntaxPackage.RPY_STRING_MAP_ENTRY:
+				sequence_RpyStringMapEntry(context, (RpyStringMapEntry) semanticObject); 
+				return; 
+			case RpySyntaxPackage.SIMPLE_VALUE_LIST:
+				sequence_SimpleValueList(context, (SimpleValueList) semanticObject); 
+				return; 
+			}
+		if (errorAcceptor != null)
+			errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
+	}
+	
+	/**
+	 * Contexts:
+	 *     RpyContent returns RpyFeature
+	 *     RpyFeature returns RpyFeature
+	 *
+	 * Constraint:
+	 *     (name=ID value=RpyFeatureValue)
+	 */
+	protected void sequence_RpyFeature(ISerializationContext context, RpyFeature semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, RpySyntaxPackage.Literals.RPY_CONTENT__NAME) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, RpySyntaxPackage.Literals.RPY_CONTENT__NAME));
+			if (transientValues.isValueTransient(semanticObject, RpySyntaxPackage.Literals.RPY_FEATURE__VALUE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, RpySyntaxPackage.Literals.RPY_FEATURE__VALUE));
+		}
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+		feeder.accept(grammarAccess.getRpyFeatureAccess().getNameIDTerminalRuleCall_1_0(), semanticObject.getName());
+		feeder.accept(grammarAccess.getRpyFeatureAccess().getValueRpyFeatureValueParserRuleCall_3_0(), semanticObject.getValue());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     RpyFile returns RpyFile
+	 *
+	 * Constraint:
+	 *     (version=RPY_VERSION contents+=RpyContent*)
+	 */
+	protected void sequence_RpyFile(ISerializationContext context, RpyFile semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     RpyFeatureValue returns RpyNodeList
+	 *     RpyNodeList returns RpyNodeList
+	 *
+	 * Constraint:
+	 *     values+=RpyNode+
+	 */
+	protected void sequence_RpyNodeList(ISerializationContext context, RpyNodeList semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     RpyContent returns RpyNode
+	 *     RpyNode returns RpyNode
+	 *
+	 * Constraint:
+	 *     (name=ID contents+=RpyContent+)
+	 */
+	protected void sequence_RpyNode(ISerializationContext context, RpyNode semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     RpySimpleValueElement returns RpySimpleValueElement
+	 *
+	 * Constraint:
+	 *     values+=VALUE_TERMINAL*
+	 */
+	protected void sequence_RpySimpleValueElement(ISerializationContext context, RpySimpleValueElement semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     RpyStringMapEntry returns RpyStringMapEntry
+	 *
+	 * Constraint:
+	 *     (key=STRING value=STRING)
+	 */
+	protected void sequence_RpyStringMapEntry(ISerializationContext context, RpyStringMapEntry semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, RpySyntaxPackage.Literals.RPY_STRING_MAP_ENTRY__KEY) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, RpySyntaxPackage.Literals.RPY_STRING_MAP_ENTRY__KEY));
+			if (transientValues.isValueTransient(semanticObject, RpySyntaxPackage.Literals.RPY_STRING_MAP_ENTRY__VALUE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, RpySyntaxPackage.Literals.RPY_STRING_MAP_ENTRY__VALUE));
+		}
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+		feeder.accept(grammarAccess.getRpyStringMapEntryAccess().getKeySTRINGTerminalRuleCall_0_0(), semanticObject.getKey());
+		feeder.accept(grammarAccess.getRpyStringMapEntryAccess().getValueSTRINGTerminalRuleCall_1_0(), semanticObject.getValue());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     RpyFeatureValue returns RpyStringMap
+	 *     RpyStringMap returns RpyStringMap
+	 *
+	 * Constraint:
+	 *     entries+=RpyStringMapEntry+
+	 */
+	protected void sequence_RpyStringMap(ISerializationContext context, RpyStringMap semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     RpyFeatureValue returns SimpleValueList
+	 *     SimpleValueList returns SimpleValueList
+	 *
+	 * Constraint:
+	 *     (isOldID?='OLDID'? isGUID?='GUID'? valueElements+=RpySimpleValueElement+)
+	 */
+	protected void sequence_SimpleValueList(ISerializationContext context, SimpleValueList semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/serializer/RpySyntaxSyntacticSequencer.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/serializer/RpySyntaxSyntacticSequencer.java
new file mode 100644
index 0000000..828e99e
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/serializer/RpySyntaxSyntacticSequencer.java
@@ -0,0 +1,52 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.parser.serializer;
+
+import com.google.inject.Inject;
+import java.util.List;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.interoperability.rpy.parser.services.RpySyntaxGrammarAccess;
+import org.eclipse.xtext.IGrammarAccess;
+import org.eclipse.xtext.RuleCall;
+import org.eclipse.xtext.nodemodel.INode;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.AbstractElementAlias;
+import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynTransition;
+import org.eclipse.xtext.serializer.sequencer.AbstractSyntacticSequencer;
+
+@SuppressWarnings("all")
+public class RpySyntaxSyntacticSequencer extends AbstractSyntacticSequencer {
+
+	protected RpySyntaxGrammarAccess grammarAccess;
+	
+	@Inject
+	protected void init(IGrammarAccess access) {
+		grammarAccess = (RpySyntaxGrammarAccess) access;
+	}
+	
+	@Override
+	protected String getUnassignedRuleCallToken(EObject semanticObject, RuleCall ruleCall, INode node) {
+		return "";
+	}
+	
+	
+	@Override
+	protected void emitUnassignedTokens(EObject semanticObject, ISynTransition transition, INode fromNode, INode toNode) {
+		if (transition.getAmbiguousSyntaxes().isEmpty()) return;
+		List<INode> transitionNodes = collectNodes(fromNode, toNode);
+		for (AbstractElementAlias syntax : transition.getAmbiguousSyntaxes()) {
+			List<INode> syntaxNodes = getNodesFor(transitionNodes, syntax);
+			acceptNodes(getLastNavigableState(), syntaxNodes);
+		}
+	}
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/services/RpySyntaxGrammarAccess.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/services/RpySyntaxGrammarAccess.java
new file mode 100644
index 0000000..ca675d8
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/services/RpySyntaxGrammarAccess.java
@@ -0,0 +1,589 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.parser.services;
+
+import com.google.inject.Singleton;
+import com.google.inject.Inject;
+
+import java.util.List;
+
+import org.eclipse.xtext.*;
+import org.eclipse.xtext.service.GrammarProvider;
+import org.eclipse.xtext.service.AbstractElementFinder.*;
+
+import org.eclipse.xtext.common.services.TerminalsGrammarAccess;
+
+@Singleton
+public class RpySyntaxGrammarAccess extends AbstractGrammarElementFinder {
+	
+	
+	public class RpyFileElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.RpyFile");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cILogixRPYArchiveKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cVersionAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cVersionRPY_VERSIONTerminalRuleCall_1_0 = (RuleCall)cVersionAssignment_1.eContents().get(0);
+		private final Assignment cContentsAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cContentsRpyContentParserRuleCall_2_0 = (RuleCall)cContentsAssignment_2.eContents().get(0);
+		
+		//RpyFile:
+		//	'I-Logix-RPY-Archive' version=RPY_VERSION contents+=RpyContent*;
+		@Override public ParserRule getRule() { return rule; }
+
+		//'I-Logix-RPY-Archive' version=RPY_VERSION contents+=RpyContent*
+		public Group getGroup() { return cGroup; }
+
+		//'I-Logix-RPY-Archive'
+		public Keyword getILogixRPYArchiveKeyword_0() { return cILogixRPYArchiveKeyword_0; }
+
+		//version=RPY_VERSION
+		public Assignment getVersionAssignment_1() { return cVersionAssignment_1; }
+
+		//RPY_VERSION
+		public RuleCall getVersionRPY_VERSIONTerminalRuleCall_1_0() { return cVersionRPY_VERSIONTerminalRuleCall_1_0; }
+
+		//contents+=RpyContent*
+		public Assignment getContentsAssignment_2() { return cContentsAssignment_2; }
+
+		//RpyContent
+		public RuleCall getContentsRpyContentParserRuleCall_2_0() { return cContentsRpyContentParserRuleCall_2_0; }
+	}
+
+	public class RpyContentElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.RpyContent");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cRpyNodeParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cRpyFeatureParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		
+		//RpyContent:
+		//	RpyNode | RpyFeature;
+		@Override public ParserRule getRule() { return rule; }
+
+		//RpyNode | RpyFeature
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//RpyNode
+		public RuleCall getRpyNodeParserRuleCall_0() { return cRpyNodeParserRuleCall_0; }
+
+		//RpyFeature
+		public RuleCall getRpyFeatureParserRuleCall_1() { return cRpyFeatureParserRuleCall_1; }
+	}
+
+	public class RpyNodeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.RpyNode");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Assignment cContentsAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cContentsRpyContentParserRuleCall_2_0 = (RuleCall)cContentsAssignment_2.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		
+		//RpyNode:
+		//	'{' name=ID contents+=RpyContent+ '}';
+		@Override public ParserRule getRule() { return rule; }
+
+		//'{' name=ID contents+=RpyContent+ '}'
+		public Group getGroup() { return cGroup; }
+
+		//'{'
+		public Keyword getLeftCurlyBracketKeyword_0() { return cLeftCurlyBracketKeyword_0; }
+
+		//name=ID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ID
+		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+		//contents+=RpyContent+
+		public Assignment getContentsAssignment_2() { return cContentsAssignment_2; }
+
+		//RpyContent
+		public RuleCall getContentsRpyContentParserRuleCall_2_0() { return cContentsRpyContentParserRuleCall_2_0; }
+
+		//'}'
+		public Keyword getRightCurlyBracketKeyword_3() { return cRightCurlyBracketKeyword_3; }
+	}
+
+	public class RpyFeatureElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.RpyFeature");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cHyphenMinusKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameIDTerminalRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cValueAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cValueRpyFeatureValueParserRuleCall_3_0 = (RuleCall)cValueAssignment_3.eContents().get(0);
+		
+		//RpyFeature:
+		//	'-' name=ID '=' value=RpyFeatureValue;
+		@Override public ParserRule getRule() { return rule; }
+
+		//'-' name=ID '=' value=RpyFeatureValue
+		public Group getGroup() { return cGroup; }
+
+		//'-'
+		public Keyword getHyphenMinusKeyword_0() { return cHyphenMinusKeyword_0; }
+
+		//name=ID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ID
+		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+		//'='
+		public Keyword getEqualsSignKeyword_2() { return cEqualsSignKeyword_2; }
+
+		//value=RpyFeatureValue
+		public Assignment getValueAssignment_3() { return cValueAssignment_3; }
+
+		//RpyFeatureValue
+		public RuleCall getValueRpyFeatureValueParserRuleCall_3_0() { return cValueRpyFeatureValueParserRuleCall_3_0; }
+	}
+
+	public class RpyFeatureValueElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.RpyFeatureValue");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cSimpleValueListParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cRpyNodeListParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cRpyStringMapParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		
+		//RpyFeatureValue:
+		//	SimpleValueList | RpyNodeList | RpyStringMap;
+		@Override public ParserRule getRule() { return rule; }
+
+		//SimpleValueList | RpyNodeList | RpyStringMap
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//SimpleValueList
+		public RuleCall getSimpleValueListParserRuleCall_0() { return cSimpleValueListParserRuleCall_0; }
+
+		//RpyNodeList
+		public RuleCall getRpyNodeListParserRuleCall_1() { return cRpyNodeListParserRuleCall_1; }
+
+		//RpyStringMap
+		public RuleCall getRpyStringMapParserRuleCall_2() { return cRpyStringMapParserRuleCall_2; }
+	}
+
+	public class RpyNodeListElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.RpyNodeList");
+		private final Assignment cValuesAssignment = (Assignment)rule.eContents().get(1);
+		private final RuleCall cValuesRpyNodeParserRuleCall_0 = (RuleCall)cValuesAssignment.eContents().get(0);
+		
+		//RpyNodeList:
+		//	values+=RpyNode+;
+		@Override public ParserRule getRule() { return rule; }
+
+		//values+=RpyNode+
+		public Assignment getValuesAssignment() { return cValuesAssignment; }
+
+		//RpyNode
+		public RuleCall getValuesRpyNodeParserRuleCall_0() { return cValuesRpyNodeParserRuleCall_0; }
+	}
+
+	public class SimpleValueListElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.SimpleValueList");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cSimpleValueListAction_0 = (Action)cGroup.eContents().get(0);
+		private final Assignment cIsOldIDAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final Keyword cIsOldIDOLDIDKeyword_1_0 = (Keyword)cIsOldIDAssignment_1.eContents().get(0);
+		private final Assignment cIsGUIDAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final Keyword cIsGUIDGUIDKeyword_2_0 = (Keyword)cIsGUIDAssignment_2.eContents().get(0);
+		private final Assignment cValueElementsAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cValueElementsRpySimpleValueElementParserRuleCall_3_0 = (RuleCall)cValueElementsAssignment_3.eContents().get(0);
+		
+		//SimpleValueList:
+		//	{SimpleValueList} isOldID?='OLDID'? isGUID?='GUID'? valueElements+=RpySimpleValueElement+;
+		@Override public ParserRule getRule() { return rule; }
+
+		//{SimpleValueList} isOldID?='OLDID'? isGUID?='GUID'? valueElements+=RpySimpleValueElement+
+		public Group getGroup() { return cGroup; }
+
+		//{SimpleValueList}
+		public Action getSimpleValueListAction_0() { return cSimpleValueListAction_0; }
+
+		//isOldID?='OLDID'?
+		public Assignment getIsOldIDAssignment_1() { return cIsOldIDAssignment_1; }
+
+		//'OLDID'
+		public Keyword getIsOldIDOLDIDKeyword_1_0() { return cIsOldIDOLDIDKeyword_1_0; }
+
+		//isGUID?='GUID'?
+		public Assignment getIsGUIDAssignment_2() { return cIsGUIDAssignment_2; }
+
+		//'GUID'
+		public Keyword getIsGUIDGUIDKeyword_2_0() { return cIsGUIDGUIDKeyword_2_0; }
+
+		//valueElements+=RpySimpleValueElement+
+		public Assignment getValueElementsAssignment_3() { return cValueElementsAssignment_3; }
+
+		//RpySimpleValueElement
+		public RuleCall getValueElementsRpySimpleValueElementParserRuleCall_3_0() { return cValueElementsRpySimpleValueElementParserRuleCall_3_0; }
+	}
+
+	public class RpySimpleValueElementElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.RpySimpleValueElement");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cRpySimpleValueElementAction_0 = (Action)cGroup.eContents().get(0);
+		private final Assignment cValuesAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cValuesVALUE_TERMINALParserRuleCall_1_0 = (RuleCall)cValuesAssignment_1.eContents().get(0);
+		private final Keyword cSemicolonKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		
+		//RpySimpleValueElement:
+		//	{RpySimpleValueElement} values+=VALUE_TERMINAL* ';';
+		@Override public ParserRule getRule() { return rule; }
+
+		//{RpySimpleValueElement} values+=VALUE_TERMINAL* ';'
+		public Group getGroup() { return cGroup; }
+
+		//{RpySimpleValueElement}
+		public Action getRpySimpleValueElementAction_0() { return cRpySimpleValueElementAction_0; }
+
+		//values+=VALUE_TERMINAL*
+		public Assignment getValuesAssignment_1() { return cValuesAssignment_1; }
+
+		//VALUE_TERMINAL
+		public RuleCall getValuesVALUE_TERMINALParserRuleCall_1_0() { return cValuesVALUE_TERMINALParserRuleCall_1_0; }
+
+		//';'
+		public Keyword getSemicolonKeyword_2() { return cSemicolonKeyword_2; }
+	}
+
+	public class VALUE_TERMINALElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.VALUE_TERMINAL");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cSTRINGTerminalRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cIDTerminalRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cRPY_GUIDTerminalRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		private final RuleCall cINTTerminalRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		private final RuleCall cRPY_TIMETerminalRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
+		private final RuleCall cRPY_REALTerminalRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
+		
+		//VALUE_TERMINAL:
+		//	STRING | ID | RPY_GUID | INT | RPY_TIME | RPY_REAL;
+		@Override public ParserRule getRule() { return rule; }
+
+		//STRING | ID | RPY_GUID | INT | RPY_TIME | RPY_REAL
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//STRING
+		public RuleCall getSTRINGTerminalRuleCall_0() { return cSTRINGTerminalRuleCall_0; }
+
+		//ID
+		public RuleCall getIDTerminalRuleCall_1() { return cIDTerminalRuleCall_1; }
+
+		//RPY_GUID
+		public RuleCall getRPY_GUIDTerminalRuleCall_2() { return cRPY_GUIDTerminalRuleCall_2; }
+
+		//INT
+		public RuleCall getINTTerminalRuleCall_3() { return cINTTerminalRuleCall_3; }
+
+		//RPY_TIME
+		public RuleCall getRPY_TIMETerminalRuleCall_4() { return cRPY_TIMETerminalRuleCall_4; }
+
+		//RPY_REAL
+		public RuleCall getRPY_REALTerminalRuleCall_5() { return cRPY_REALTerminalRuleCall_5; }
+	}
+
+	public class RpyStringMapElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.RpyStringMap");
+		private final Assignment cEntriesAssignment = (Assignment)rule.eContents().get(1);
+		private final RuleCall cEntriesRpyStringMapEntryParserRuleCall_0 = (RuleCall)cEntriesAssignment.eContents().get(0);
+		
+		//RpyStringMap:
+		//	entries+=RpyStringMapEntry+;
+		@Override public ParserRule getRule() { return rule; }
+
+		//entries+=RpyStringMapEntry+
+		public Assignment getEntriesAssignment() { return cEntriesAssignment; }
+
+		//RpyStringMapEntry
+		public RuleCall getEntriesRpyStringMapEntryParserRuleCall_0() { return cEntriesRpyStringMapEntryParserRuleCall_0; }
+	}
+
+	public class RpyStringMapEntryElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.RpyStringMapEntry");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Assignment cKeyAssignment_0 = (Assignment)cGroup.eContents().get(0);
+		private final RuleCall cKeySTRINGTerminalRuleCall_0_0 = (RuleCall)cKeyAssignment_0.eContents().get(0);
+		private final Assignment cValueAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cValueSTRINGTerminalRuleCall_1_0 = (RuleCall)cValueAssignment_1.eContents().get(0);
+		
+		//RpyStringMapEntry:
+		//	key=STRING value=STRING;
+		@Override public ParserRule getRule() { return rule; }
+
+		//key=STRING value=STRING
+		public Group getGroup() { return cGroup; }
+
+		//key=STRING
+		public Assignment getKeyAssignment_0() { return cKeyAssignment_0; }
+
+		//STRING
+		public RuleCall getKeySTRINGTerminalRuleCall_0_0() { return cKeySTRINGTerminalRuleCall_0_0; }
+
+		//value=STRING
+		public Assignment getValueAssignment_1() { return cValueAssignment_1; }
+
+		//STRING
+		public RuleCall getValueSTRINGTerminalRuleCall_1_0() { return cValueSTRINGTerminalRuleCall_1_0; }
+	}
+	
+	
+	private final RpyFileElements pRpyFile;
+	private final RpyContentElements pRpyContent;
+	private final RpyNodeElements pRpyNode;
+	private final RpyFeatureElements pRpyFeature;
+	private final RpyFeatureValueElements pRpyFeatureValue;
+	private final RpyNodeListElements pRpyNodeList;
+	private final SimpleValueListElements pSimpleValueList;
+	private final RpySimpleValueElementElements pRpySimpleValueElement;
+	private final VALUE_TERMINALElements pVALUE_TERMINAL;
+	private final RpyStringMapElements pRpyStringMap;
+	private final RpyStringMapEntryElements pRpyStringMapEntry;
+	private final TerminalRule tRPY_GUID;
+	private final TerminalRule tRPY_TIME;
+	private final TerminalRule tRPY_REAL;
+	private final TerminalRule tINT;
+	private final TerminalRule tRPY_VERSION;
+	
+	private final Grammar grammar;
+
+	private final TerminalsGrammarAccess gaTerminals;
+
+	@Inject
+	public RpySyntaxGrammarAccess(GrammarProvider grammarProvider,
+		TerminalsGrammarAccess gaTerminals) {
+		this.grammar = internalFindGrammar(grammarProvider);
+		this.gaTerminals = gaTerminals;
+		this.pRpyFile = new RpyFileElements();
+		this.pRpyContent = new RpyContentElements();
+		this.pRpyNode = new RpyNodeElements();
+		this.pRpyFeature = new RpyFeatureElements();
+		this.pRpyFeatureValue = new RpyFeatureValueElements();
+		this.pRpyNodeList = new RpyNodeListElements();
+		this.pSimpleValueList = new SimpleValueListElements();
+		this.pRpySimpleValueElement = new RpySimpleValueElementElements();
+		this.pVALUE_TERMINAL = new VALUE_TERMINALElements();
+		this.pRpyStringMap = new RpyStringMapElements();
+		this.pRpyStringMapEntry = new RpyStringMapEntryElements();
+		this.tRPY_GUID = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.RPY_GUID");
+		this.tRPY_TIME = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.RPY_TIME");
+		this.tRPY_REAL = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.RPY_REAL");
+		this.tINT = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.INT");
+		this.tRPY_VERSION = (TerminalRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax.RPY_VERSION");
+	}
+	
+	protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
+		Grammar grammar = grammarProvider.getGrammar(this);
+		while (grammar != null) {
+			if ("org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax".equals(grammar.getName())) {
+				return grammar;
+			}
+			List<Grammar> grammars = grammar.getUsedGrammars();
+			if (!grammars.isEmpty()) {
+				grammar = grammars.iterator().next();
+			} else {
+				return null;
+			}
+		}
+		return grammar;
+	}
+	
+	@Override
+	public Grammar getGrammar() {
+		return grammar;
+	}
+	
+
+	public TerminalsGrammarAccess getTerminalsGrammarAccess() {
+		return gaTerminals;
+	}
+
+	
+	//RpyFile:
+	//	'I-Logix-RPY-Archive' version=RPY_VERSION contents+=RpyContent*;
+	public RpyFileElements getRpyFileAccess() {
+		return pRpyFile;
+	}
+	
+	public ParserRule getRpyFileRule() {
+		return getRpyFileAccess().getRule();
+	}
+
+	//RpyContent:
+	//	RpyNode | RpyFeature;
+	public RpyContentElements getRpyContentAccess() {
+		return pRpyContent;
+	}
+	
+	public ParserRule getRpyContentRule() {
+		return getRpyContentAccess().getRule();
+	}
+
+	//RpyNode:
+	//	'{' name=ID contents+=RpyContent+ '}';
+	public RpyNodeElements getRpyNodeAccess() {
+		return pRpyNode;
+	}
+	
+	public ParserRule getRpyNodeRule() {
+		return getRpyNodeAccess().getRule();
+	}
+
+	//RpyFeature:
+	//	'-' name=ID '=' value=RpyFeatureValue;
+	public RpyFeatureElements getRpyFeatureAccess() {
+		return pRpyFeature;
+	}
+	
+	public ParserRule getRpyFeatureRule() {
+		return getRpyFeatureAccess().getRule();
+	}
+
+	//RpyFeatureValue:
+	//	SimpleValueList | RpyNodeList | RpyStringMap;
+	public RpyFeatureValueElements getRpyFeatureValueAccess() {
+		return pRpyFeatureValue;
+	}
+	
+	public ParserRule getRpyFeatureValueRule() {
+		return getRpyFeatureValueAccess().getRule();
+	}
+
+	//RpyNodeList:
+	//	values+=RpyNode+;
+	public RpyNodeListElements getRpyNodeListAccess() {
+		return pRpyNodeList;
+	}
+	
+	public ParserRule getRpyNodeListRule() {
+		return getRpyNodeListAccess().getRule();
+	}
+
+	//SimpleValueList:
+	//	{SimpleValueList} isOldID?='OLDID'? isGUID?='GUID'? valueElements+=RpySimpleValueElement+;
+	public SimpleValueListElements getSimpleValueListAccess() {
+		return pSimpleValueList;
+	}
+	
+	public ParserRule getSimpleValueListRule() {
+		return getSimpleValueListAccess().getRule();
+	}
+
+	//RpySimpleValueElement:
+	//	{RpySimpleValueElement} values+=VALUE_TERMINAL* ';';
+	public RpySimpleValueElementElements getRpySimpleValueElementAccess() {
+		return pRpySimpleValueElement;
+	}
+	
+	public ParserRule getRpySimpleValueElementRule() {
+		return getRpySimpleValueElementAccess().getRule();
+	}
+
+	//VALUE_TERMINAL:
+	//	STRING | ID | RPY_GUID | INT | RPY_TIME | RPY_REAL;
+	public VALUE_TERMINALElements getVALUE_TERMINALAccess() {
+		return pVALUE_TERMINAL;
+	}
+	
+	public ParserRule getVALUE_TERMINALRule() {
+		return getVALUE_TERMINALAccess().getRule();
+	}
+
+	//RpyStringMap:
+	//	entries+=RpyStringMapEntry+;
+	public RpyStringMapElements getRpyStringMapAccess() {
+		return pRpyStringMap;
+	}
+	
+	public ParserRule getRpyStringMapRule() {
+		return getRpyStringMapAccess().getRule();
+	}
+
+	//RpyStringMapEntry:
+	//	key=STRING value=STRING;
+	public RpyStringMapEntryElements getRpyStringMapEntryAccess() {
+		return pRpyStringMapEntry;
+	}
+	
+	public ParserRule getRpyStringMapEntryRule() {
+		return getRpyStringMapEntryAccess().getRule();
+	}
+
+	//terminal RPY_GUID:
+	//	('a'..'z' | 'A'..'Z' | '0'..'9')+ ('-' ('a'..'z' | 'A'..'Z' | '0'..'9')+)+;
+	public TerminalRule getRPY_GUIDRule() {
+		return tRPY_GUID;
+	} 
+
+	//terminal RPY_TIME:
+	//	'0'..'9'+ '.' '0'..'9'+ '.' '0'..'9'+ '::' '0'..'9'+ ':' '0'..'9'+ ':' '0'..'9';
+	public TerminalRule getRPY_TIMERule() {
+		return tRPY_TIME;
+	} 
+
+	//terminal RPY_REAL:
+	//	'-'? '0'..'9'+ '.' '0'..'9'+;
+	public TerminalRule getRPY_REALRule() {
+		return tRPY_REAL;
+	} 
+
+	//terminal INT returns ecore::EInt:
+	//	'-'? '0'..'9'+;
+	public TerminalRule getINTRule() {
+		return tINT;
+	} 
+
+	//terminal RPY_VERSION:
+	//	'version' !('\n' | '\r')* ('\n' | '\r');
+	public TerminalRule getRPY_VERSIONRule() {
+		return tRPY_VERSION;
+	} 
+
+	//terminal ID:
+	//	'^'? ('a'..'z' | 'A'..'Z' | '_') ('a'..'z' | 'A'..'Z' | '_' | '0'..'9')*;
+	public TerminalRule getIDRule() {
+		return gaTerminals.getIDRule();
+	} 
+
+	//terminal STRING:
+	//	'"' ('\\' . | !('\\' | '"'))* '"' | "'" ('\\' . | !('\\' | "'"))* "'";
+	public TerminalRule getSTRINGRule() {
+		return gaTerminals.getSTRINGRule();
+	} 
+
+	//terminal ML_COMMENT:
+	//	'/*'->'*/';
+	public TerminalRule getML_COMMENTRule() {
+		return gaTerminals.getML_COMMENTRule();
+	} 
+
+	//terminal SL_COMMENT:
+	//	'//' !('\n' | '\r')* ('\r'? '\n')?;
+	public TerminalRule getSL_COMMENTRule() {
+		return gaTerminals.getSL_COMMENTRule();
+	} 
+
+	//terminal WS:
+	//	' ' | '\t' | '\r' | '\n'+;
+	public TerminalRule getWSRule() {
+		return gaTerminals.getWSRule();
+	} 
+
+	//terminal ANY_OTHER:
+	//	.;
+	public TerminalRule getANY_OTHERRule() {
+		return gaTerminals.getANY_OTHERRule();
+	} 
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/validation/AbstractRpySyntaxValidator.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/validation/AbstractRpySyntaxValidator.java
new file mode 100644
index 0000000..af890e7
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src-gen/org/eclipse/papyrus/interoperability/rpy/parser/validation/AbstractRpySyntaxValidator.java
@@ -0,0 +1,27 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.parser.validation;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.emf.ecore.EPackage;
+
+public class AbstractRpySyntaxValidator extends org.eclipse.xtext.validation.AbstractDeclarativeValidator {
+
+	@Override
+	protected List<EPackage> getEPackages() {
+	    List<EPackage> result = new ArrayList<EPackage>();
+	    result.add(org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxPackage.eINSTANCE);
+		return result;
+	}
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src/org/eclipse/papyrus/interoperability/rpy/parser/GenerateRpySyntax.mwe2 b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src/org/eclipse/papyrus/interoperability/rpy/parser/GenerateRpySyntax.mwe2
new file mode 100644
index 0000000..87495be
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src/org/eclipse/papyrus/interoperability/rpy/parser/GenerateRpySyntax.mwe2
@@ -0,0 +1,151 @@
+module org.eclipse.papyrus.interoperability.rpy.parser.GenerateRpySyntax
+
+import org.eclipse.emf.mwe.utils.*
+import org.eclipse.xtext.generator.*
+import org.eclipse.xtext.ui.generator.*
+
+var grammarURI = "classpath:/org/eclipse/papyrus/interoperability/rpy/parser/RpySyntax.xtext"
+var fileExtensions = "cmp,sbs,dat,omd,msc,rpy,clb,ucd,cls,ctd,pld,std"
+var projectName = "org.eclipse.papyrus.interoperability.rpy.parser"
+var runtimeProject = "../${projectName}"
+var generateXtendStub = true
+var encoding = "UTF-8"
+var header = "/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/"
+ 
+Workflow {
+    bean = StandaloneSetup {
+    	scanClassPath = true
+    	platformUri = "${runtimeProject}/.."
+    	// The following two lines can be removed, if Xbase is not used.
+    	registerGeneratedEPackage = "org.eclipse.xtext.xbase.XbasePackage"
+    	registerGenModelFile = "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel"
+    }
+    
+    component = DirectoryCleaner {
+    	directory = "${runtimeProject}/src-gen"
+    }
+    
+    component = DirectoryCleaner {
+    	directory = "${runtimeProject}/model/generated"
+    }
+    
+    component = DirectoryCleaner {
+    	directory = "${runtimeProject}.ui/src-gen"
+    }
+    
+//    component = DirectoryCleaner {
+//    	directory = "${runtimeProject}.tests/src-gen"
+//    }
+    
+    component = Generator {
+    	fileHeader = header
+    	pathRtProject = runtimeProject
+    	pathUiProject = "${runtimeProject}.ui"
+//    	pathTestProject = "${runtimeProject}.tests"
+    	projectNameRt = projectName
+    	projectNameUi = "${projectName}.ui"
+    	encoding = encoding
+    	language = auto-inject {
+    		uri = grammarURI
+    
+    		// Java API to access grammar elements (required by several other fragments)
+    		fragment = grammarAccess.GrammarAccessFragment auto-inject {}
+    
+    		// generates Java API for the generated EPackages
+    		fragment = ecore.EMFGeneratorFragment auto-inject {}
+    
+    		// the old serialization component
+    		// fragment = parseTreeConstructor.ParseTreeConstructorFragment auto-inject {}    
+    
+    		// serializer 2.0
+    		fragment = serializer.SerializerFragment auto-inject {
+    			generateStub = false
+    		}
+    
+    		// a custom ResourceFactory for use with EMF
+    		fragment = resourceFactory.ResourceFactoryFragment auto-inject {}
+    
+    		// The antlr parser generator fragment.
+    		fragment = parser.antlr.XtextAntlrGeneratorFragment auto-inject {
+    		 options = {
+    		      backtrack = true
+    		 }
+    		}
+    
+    		// Xtend-based API for validation
+    		fragment = validation.ValidatorFragment auto-inject {
+    		//    composedCheck = "org.eclipse.xtext.validation.ImportUriValidator"
+    		//    composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
+    		}
+    
+    		// old scoping and exporting API
+    		// fragment = scoping.ImportURIScopingFragment auto-inject {}
+    		// fragment = exporting.SimpleNamesFragment auto-inject {}
+    
+    		// scoping and exporting API
+    		fragment = scoping.ImportNamespacesScopingFragment auto-inject {}
+    		fragment = exporting.QualifiedNamesFragment auto-inject {}
+    		fragment = builder.BuilderIntegrationFragment auto-inject {}
+    
+    		// generator API
+    		fragment = generator.GeneratorFragment auto-inject {}
+    
+    		// formatter API
+    		fragment = formatting.FormatterFragment auto-inject {}
+    
+    		// labeling API
+    		fragment = labeling.LabelProviderFragment auto-inject {}
+    
+    		// outline API
+    		fragment = outline.OutlineTreeProviderFragment auto-inject {}
+    		fragment = outline.QuickOutlineFragment auto-inject {}
+    
+    		// quickfix API
+    		fragment = quickfix.QuickfixProviderFragment auto-inject {}
+    
+    		// content assist API
+    		fragment = contentAssist.ContentAssistFragment auto-inject {}
+    
+    		// generates a more lightweight Antlr parser and lexer tailored for content assist
+    		fragment = parser.antlr.XtextAntlrUiGeneratorFragment auto-inject {
+    			
+    			 options = {
+    		      backtrack = true
+    		 }
+    		}
+    
+    		// generates junit test support classes into Generator#pathTestProject
+    		fragment = junit.Junit4Fragment auto-inject {}
+    
+    		// rename refactoring
+    		fragment = refactoring.RefactorElementNameFragment auto-inject {}
+    
+    		// provides the necessary bindings for java types integration
+    		fragment = types.TypesGeneratorFragment auto-inject {}
+    
+    		// generates the required bindings only if the grammar inherits from Xbase
+    		fragment = xbase.XbaseGeneratorFragment auto-inject {}
+    		
+    		// generates the required bindings only if the grammar inherits from Xtype
+    		fragment = xbase.XtypeGeneratorFragment auto-inject {}
+    
+    		// provides a preference page for template proposals
+    		fragment = templates.CodetemplatesGeneratorFragment auto-inject {}
+    
+    		// provides a compare view
+    		fragment = compare.CompareFragment auto-inject {}
+    	}
+    }
+}
+
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src/org/eclipse/papyrus/interoperability/rpy/parser/RpySyntax.xtext b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src/org/eclipse/papyrus/interoperability/rpy/parser/RpySyntax.xtext
new file mode 100644
index 0000000..ec3d7b2
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src/org/eclipse/papyrus/interoperability/rpy/parser/RpySyntax.xtext
@@ -0,0 +1,64 @@
+grammar org.eclipse.papyrus.interoperability.rpy.parser.RpySyntax with org.eclipse.xtext.common.Terminals hidden( WS)
+import "http://www.eclipse.org/emf/2002/Ecore" as ecore
+generate rpySyntax "http://www.eclipse.org/papyrus/rpy/RpySyntax"
+
+RpyFile:
+	'I-Logix-RPY-Archive'  version=RPY_VERSION (contents +=RpyContent)*;
+
+
+RpyContent :
+	RpyNode | RpyFeature
+;
+
+RpyNode:
+	'{' name=ID (contents+=RpyContent)+ '}'  
+;
+
+RpyFeature:
+	'-' name=ID '=' value=RpyFeatureValue
+;
+
+RpyFeatureValue:
+	SimpleValueList | RpyNodeList | RpyStringMap
+;
+
+RpyNodeList:
+	values +=RpyNode+
+;
+
+SimpleValueList:{SimpleValueList}
+	(isOldID?='OLDID')? (isGUID?='GUID')? valueElements+=(RpySimpleValueElement )+ 
+;
+
+RpySimpleValueElement:{RpySimpleValueElement}
+	values+=(VALUE_TERMINAL)* ';'
+;
+
+VALUE_TERMINAL:
+	(STRING | ID | RPY_GUID| INT| RPY_TIME| RPY_REAL )
+;
+	
+RpyStringMap :
+	entries+=(RpyStringMapEntry)+;
+
+RpyStringMapEntry:
+	key=STRING value=STRING 
+;
+
+
+terminal RPY_GUID:
+	('a'..'z'|'A'..'Z'|'0'..'9')+('-'('a'..'z'|'A'..'Z'|'0'..'9')+)+;
+
+terminal RPY_TIME:
+	('0'..'9')+'.'('0'..'9')+'.'('0'..'9')+'::'('0'..'9')+':'('0'..'9')+':'('0'..'9')
+;
+terminal RPY_REAL:
+	'-'?('0'..'9')+'.'('0'..'9')+
+;
+terminal INT returns ecore::EInt: '-'?('0'..'9')+;
+
+
+terminal RPY_VERSION:
+	 'version' !('\n' | '\r')* ('\n' | '\r');
+
+	
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src/org/eclipse/papyrus/interoperability/rpy/parser/RpySyntaxRuntimeModule.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src/org/eclipse/papyrus/interoperability/rpy/parser/RpySyntaxRuntimeModule.java
new file mode 100644
index 0000000..88e1319
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src/org/eclipse/papyrus/interoperability/rpy/parser/RpySyntaxRuntimeModule.java
@@ -0,0 +1,20 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.parser;
+
+/**
+ * Use this class to register components to be used at runtime / without the Equinox extension registry.
+ */
+public class RpySyntaxRuntimeModule extends org.eclipse.papyrus.interoperability.rpy.parser.AbstractRpySyntaxRuntimeModule {
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src/org/eclipse/papyrus/interoperability/rpy/parser/RpySyntaxStandaloneSetup.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src/org/eclipse/papyrus/interoperability/rpy/parser/RpySyntaxStandaloneSetup.java
new file mode 100644
index 0000000..6f13f55
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src/org/eclipse/papyrus/interoperability/rpy/parser/RpySyntaxStandaloneSetup.java
@@ -0,0 +1,27 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.parser;
+
+import org.eclipse.papyrus.interoperability.rpy.parser.RpySyntaxStandaloneSetupGenerated;
+
+/**
+ * Initialization support for running Xtext languages
+ * without equinox extension registry
+ */
+public class RpySyntaxStandaloneSetup extends RpySyntaxStandaloneSetupGenerated {
+
+	public static void doSetup() {
+		new RpySyntaxStandaloneSetup().createInjectorAndDoEMFRegistration();
+	}
+}
+
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src/org/eclipse/papyrus/interoperability/rpy/parser/formatting/RpySyntaxFormatter.xtend b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src/org/eclipse/papyrus/interoperability/rpy/parser/formatting/RpySyntaxFormatter.xtend
new file mode 100644
index 0000000..09de252
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src/org/eclipse/papyrus/interoperability/rpy/parser/formatting/RpySyntaxFormatter.xtend
@@ -0,0 +1,39 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.parser.formatting
+
+import org.eclipse.xtext.formatting.impl.AbstractDeclarativeFormatter
+import org.eclipse.xtext.formatting.impl.FormattingConfig
+// import com.google.inject.Inject;
+// import org.eclipse.papyrus.interoperability.rpy.services.RpySyntaxGrammarAccess
+
+/**
+ * This class contains custom formatting declarations.
+ * 
+ * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#formatting
+ * on how and when to use it.
+ * 
+ * Also see {@link org.eclipse.xtext.xtext.XtextFormattingTokenSerializer} as an example
+ */
+class RpySyntaxFormatter extends AbstractDeclarativeFormatter {
+
+//	@Inject extension RpySyntaxGrammarAccess
+	
+	override protected void configureFormatting(FormattingConfig c) {
+// It's usually a good idea to activate the following three statements.
+// They will add and preserve newlines around comments
+//		c.setLinewrap(0, 1, 2).before(SL_COMMENTRule)
+//		c.setLinewrap(0, 1, 2).before(ML_COMMENTRule)
+//		c.setLinewrap(0, 1, 1).after(ML_COMMENTRule)
+	}
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src/org/eclipse/papyrus/interoperability/rpy/parser/generator/RpySyntaxGenerator.xtend b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src/org/eclipse/papyrus/interoperability/rpy/parser/generator/RpySyntaxGenerator.xtend
new file mode 100644
index 0000000..0a56a7f
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src/org/eclipse/papyrus/interoperability/rpy/parser/generator/RpySyntaxGenerator.xtend
@@ -0,0 +1,33 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.parser.generator
+
+import org.eclipse.emf.ecore.resource.Resource
+import org.eclipse.xtext.generator.IGenerator
+import org.eclipse.xtext.generator.IFileSystemAccess
+
+/**
+ * Generates code from your model files on save.
+ * 
+ * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#code-generation
+ */
+class RpySyntaxGenerator implements IGenerator {
+	
+	override void doGenerate(Resource resource, IFileSystemAccess fsa) {
+//		fsa.generateFile('greetings.txt', 'People to greet: ' + 
+//			resource.allContents
+//				.filter(typeof(Greeting))
+//				.map[name]
+//				.join(', '))
+	}
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src/org/eclipse/papyrus/interoperability/rpy/parser/scoping/RpySyntaxScopeProvider.xtend b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src/org/eclipse/papyrus/interoperability/rpy/parser/scoping/RpySyntaxScopeProvider.xtend
new file mode 100644
index 0000000..5b30b1e
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src/org/eclipse/papyrus/interoperability/rpy/parser/scoping/RpySyntaxScopeProvider.xtend
@@ -0,0 +1,24 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.parser.scoping
+
+/**
+ * This class contains custom scoping description.
+ * 
+ * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#scoping
+ * on how and when to use it.
+ *
+ */
+class RpySyntaxScopeProvider extends org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider {
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src/org/eclipse/papyrus/interoperability/rpy/parser/validation/RpySyntaxValidator.xtend b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src/org/eclipse/papyrus/interoperability/rpy/parser/validation/RpySyntaxValidator.xtend
new file mode 100644
index 0000000..a07786b
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.parser/src/org/eclipse/papyrus/interoperability/rpy/parser/validation/RpySyntaxValidator.xtend
@@ -0,0 +1,34 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.parser.validation
+
+//import org.eclipse.xtext.validation.Check
+
+/**
+ * This class contains custom validation rules. 
+ *
+ * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#validation
+ */
+class RpySyntaxValidator extends AbstractRpySyntaxValidator {
+
+//  public static val INVALID_NAME = 'invalidName'
+//
+//	@Check
+//	def checkGreetingStartsWithCapital(Greeting greeting) {
+//		if (!Character.isUpperCase(greeting.name.charAt(0))) {
+//			warning('Name should start with a capital', 
+//					MyDslPackage.Literals.GREETING__NAME,
+//					INVALID_NAME)
+//		}
+//	}
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/.classpath b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/.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.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/.gitignore b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/.project b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/.project
new file mode 100644
index 0000000..f4d04ec
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery</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/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/.settings/org.eclipse.jdt.core.prefs b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..b3aa6d6
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/.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.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
+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/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/.settings/org.eclipse.jdt.ui.prefs b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..954281d
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/.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/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/.settings/org.eclipse.pde.api.tools.prefs b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..23fb95e
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,98 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Ignore
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Ignore
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Ignore
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=Enabled
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Warning
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/META-INF/MANIFEST.MF b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..4789a3c
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/META-INF/MANIFEST.MF
@@ -0,0 +1,22 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name
+Bundle-SymbolicName: org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery;singleton:=true
+Bundle-Version: 0.7.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.core.runtime;bundle-version="3.11.0",
+ org.eclipse.emf.ecore;bundle-version="2.11.1",
+ org.eclipse.uml2.uml;bundle-version="[5.2.0,6.0.0)",
+ org.apache.commons.io;bundle-version="2.2.0",
+ org.eclipse.papyrus.interoperability.rpy.metamodel;bundle-version="0.7.0",
+ org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0",
+ org.eclipse.ui.workbench,
+ org.eclipse.jface,
+ org.eclipse.core.filesystem,
+ org.eclipse.core.resources,
+ org.eclipse.ui.ide;bundle-version="3.12.0",
+ org.eclipse.papyrus.interoperability.rpy.parser;bundle-version="0.7.0",
+ org.eclipse.papyrus.interoperability.rpy;bundle-version="0.7.0"
+Bundle-Vendor: %Bundle-Vendor
+Bundle-Activator: org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery.Activator
+Bundle-ActivationPolicy: lazy
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/OSGI-INF/l10n/bundle.properties b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/OSGI-INF/l10n/bundle.properties
new file mode 100644
index 0000000..0460010
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/OSGI-INF/l10n/bundle.properties
@@ -0,0 +1,3 @@
+#Properties file for org.eclipse.papyrus.interoperability.rpy.dev.api.discovery
+Bundle-Vendor = Eclipse Modeling Project
+Bundle-Name = Papyrus Interoperability Rpy API Discovery (Incubation)
\ No newline at end of file
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/about.html b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/about.html
new file mode 100644
index 0000000..dd3c089
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>November 14, 2008</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/build.properties b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/build.properties
new file mode 100644
index 0000000..de2a6de
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               about.html,\
+               OSGI-INF/
+src.includes = about.html
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/plugin.xml b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/plugin.xml
new file mode 100644
index 0000000..ef704da
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/plugin.xml
@@ -0,0 +1,24 @@
+<?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.ui.popup.any">
+         <command
+               commandId="org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery.UpdateMetamodelCommand.id"
+               label="Update Rpy Metamodel from examples"
+               style="push">
+         </command>
+      </menuContribution>
+   </extension>
+   <extension
+         point="org.eclipse.ui.handlers">
+      <handler
+            class="org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery.ui.UpdateMetamodelHandler"
+            commandId="org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery.UpdateMetamodelCommand.id">
+      </handler>
+   </extension>
+
+</plugin>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/src/org/eclipse/papyrus/interoperability/rpy/toolsmiths/api/discovery/Activator.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/src/org/eclipse/papyrus/interoperability/rpy/toolsmiths/api/discovery/Activator.java
new file mode 100644
index 0000000..5f4a12b
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/src/org/eclipse/papyrus/interoperability/rpy/toolsmiths/api/discovery/Activator.java
@@ -0,0 +1,71 @@
+/*****************************************************************************
+ * Copyright (c) 2015 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Sebastien Revol (CEA LIST) sebastien.revol@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery;
+
+import org.eclipse.papyrus.infra.core.log.LogHelper;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+public class Activator extends AbstractUIPlugin {
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery"; //$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/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/src/org/eclipse/papyrus/interoperability/rpy/toolsmiths/api/discovery/MetamodelFactorizer.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/src/org/eclipse/papyrus/interoperability/rpy/toolsmiths/api/discovery/MetamodelFactorizer.java
new file mode 100644
index 0000000..eee521e
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/src/org/eclipse/papyrus/interoperability/rpy/toolsmiths/api/discovery/MetamodelFactorizer.java
@@ -0,0 +1,478 @@
+/*****************************************************************************
+ * Copyright (c) 2015 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Sebastien Revol (CEA LIST) sebastien.revol@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EcoreFactory;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.papyrus.interoperability.rpy.importer.utils.RpyUtil;
+
+/**
+ * @author sr246418
+ *
+ */
+public class MetamodelFactorizer {
+
+	public static void factorizeMetamodel(EPackage metamodel) {
+
+		fixStateCharts(metamodel);
+		fixIDs(metamodel);
+
+		List<EClassifier> classifiers = new ArrayList<EClassifier>(metamodel.getEClassifiers());
+		for (EClassifier eClassifier : classifiers) {
+			factorizeEClass((EClass) eClassifier);
+		}
+
+		factorizeFeaturesInSuperClass(metamodel);
+
+		fixEAttributesNotUnique(metamodel);
+		fixHyperLinks(metamodel);
+
+	}
+
+	/**
+	 * @param metamodel
+	 */
+	private static void fixEAttributesNotUnique(EPackage metamodel) {
+		for (Iterator<EObject> iterator = metamodel.eResource().getAllContents(); iterator.hasNext();) {
+			EObject obj = iterator.next();
+			if (obj instanceof EAttribute) {
+				EAttribute attr = (EAttribute) obj;
+				if (attr.isMany()) {
+					attr.setUnique(false);
+				}
+			}
+
+		}
+
+	}
+
+	/**
+	 * @param metamodel
+	 */
+	private static void fixHyperLinks(EPackage metamodel) {
+		EClass hyperLinksType = (EClass) metamodel.getEClassifier("HyperLinksType");
+		EClass hyperlinksType = (EClass) metamodel.getEClassifier("HyperlinksType");
+
+		if (hyperLinksType != null && hyperlinksType != null) {
+			for (Iterator<EObject> iterator = metamodel.eResource().getAllContents(); iterator.hasNext();) {
+				EObject obj = iterator.next();
+				if (obj instanceof EClass && ((EClass) obj).getESuperTypes().contains(hyperlinksType)) {
+					((EClass) obj).getESuperTypes().remove(hyperlinksType);
+					((EClass) obj).getESuperTypes().add(hyperLinksType);
+				} else if (obj instanceof EReference && ((EReference) obj).getEType() == hyperlinksType) {
+					((EReference) obj).setEType(hyperLinksType);
+				}
+
+			}
+
+			EcoreUtil.delete(hyperlinksType);
+
+		}
+
+
+	}
+
+	/**
+	 * @param metamodel
+	 */
+	private static void fixIDs(EPackage metamodel) {
+		for (EClassifier eClassifier : metamodel.getEClassifiers()) {
+			EClass eClass = (EClass) eClassifier;
+			for (EAttribute eAttr : eClass.getEAllAttributes()) {
+				if ("id".equals(eAttr.getName())) {
+					eAttr.setUpperBound(1);
+				}
+			}
+		}
+
+	}
+
+	/**
+	 * @param metamodel
+	 */
+	private static void fixStateCharts(EPackage metamodel) {
+		EClass iStatechart = (EClass) metamodel.getEClassifier("IStatechart");
+		EClass iStateChart = (EClass) metamodel.getEClassifier("IStateChart");
+
+		if (iStatechart != null) {
+			iStateChart.getESuperTypes().addAll(iStatechart.getESuperTypes());
+			EcoreUtil.delete(iStatechart);
+
+			EClass iStatechartDiagram = (EClass) metamodel.getEClassifier("IStatechartDiagram");
+			EClass iStateChartDiagram = (EClass) metamodel.getEClassifier("IStateChartDiagram");
+
+			iStateChartDiagram.getESuperTypes().addAll(iStatechartDiagram.getESuperTypes());
+			EcoreUtil.delete(iStatechartDiagram);
+		}
+
+	}
+
+	/**
+	 * @param metamodel
+	 */
+	private static void factorizeFeaturesInSuperClass(EPackage metamodel) {
+
+		// we create a first list of Classes that have structural features
+		List<EClass> eClassWithFeatures = new ArrayList<EClass>();
+		for (EClassifier eClassifier : metamodel.getEClassifiers()) {
+			EClass eClass = (EClass) eClassifier;
+			if (!eClass.getEStructuralFeatures().isEmpty()) {
+				eClassWithFeatures.add(eClass);
+			}
+		}
+
+
+
+		// we also create a map which provides all the classe owning a given feature, identified with Name + Type
+		while (!eClassWithFeatures.isEmpty()) {
+			// we collect all the super classes of the classes with structural features
+			Set<EClass> l1SuperTypes = collectL1SuperTypes(eClassWithFeatures);
+
+			Map<String, List<EStructuralFeature>> featureMap = new HashMap<>();
+
+			for (EClass eClass : eClassWithFeatures) {
+				for (EStructuralFeature attr : eClass.getEStructuralFeatures()) {
+					List<EStructuralFeature> attrs = featureMap.get(getKey(attr));
+					if (attrs == null) {
+						attrs = new ArrayList<EStructuralFeature>();
+						featureMap.put(getKey(attr), attrs);
+					}
+					attrs.add(attr);
+				}
+			}
+
+			Set<EClass> superClassWithFactorizedFeatures = new HashSet<EClass>();
+			// now we iterate on the super types.
+			for (EClass l1SuperType : l1SuperTypes) {
+				List<EClass> specializations = collectL1Specializations(l1SuperType);
+				if (specializations.size() > 1) {
+					for (List<EStructuralFeature> featuresList : featureMap.values()) {
+						// owning classes is the list of the classes that owns a given structural feature
+						List<EClass> owningClasses = new ArrayList<EClass>();
+						for (EStructuralFeature feature : featuresList) {
+							owningClasses.add(feature.getEContainingClass());
+						}
+
+						// if all the specialization of the current super type have a given feature
+						// we factorize this feature
+						if (owningClasses.containsAll(specializations)) {
+							List<EStructuralFeature> featuresToDelete = new ArrayList<EStructuralFeature>();
+
+							String featureName = featuresList.get(0).getName();
+							EStructuralFeature factorizedFeature = EcoreUtil.<EStructuralFeature> copy(specializations.get(0).getEStructuralFeature(featureName));
+							for (int i = 0; i < specializations.size(); i++) {
+								featuresToDelete.add(specializations.get(i).getEStructuralFeature(featureName));
+							}
+
+							for (EStructuralFeature featureToDelete : featuresToDelete) {
+								EcoreUtil.delete(featureToDelete);
+							}
+							featuresList.removeAll(featuresToDelete);
+
+							l1SuperType.getEStructuralFeatures().add(factorizedFeature);
+							superClassWithFactorizedFeatures.add(l1SuperType);
+							List<String> names = new ArrayList<>();
+							for (EClass specialization : specializations) {
+								names.add(specialization.getName());
+							}
+							System.out.println("Factorizing " + factorizedFeature.getName() + ":" + factorizedFeature.getEType().getName() + " from Classes " + names + " to Class " + l1SuperType.getName());
+
+
+						}
+					}
+				}
+			}
+
+			// we have now iterated on all the L1 superTypes. We will restart the loop at L1 +1.
+			eClassWithFeatures.clear();
+			// eClassWithFeatures.addAll(superClassWithFactorizedFeatures);
+
+
+		}
+
+
+
+	}
+
+
+	private static String capitalize(String str) {
+		String firstLetter = str.substring(0, 1);
+		return firstLetter.toUpperCase() + str.substring(1);
+	}
+
+	/**
+	 * @param features
+	 * @return
+	 */
+	private static List<EClass> collectContainingClasses(List<EStructuralFeature> features) {
+		List<EClass> ret = new ArrayList<>();
+		for (EStructuralFeature feat : features) {
+			ret.add(feat.getEContainingClass());
+		}
+		return ret;
+	}
+
+	private static List<EClass> findCommonSuperTypes(List<EClass> types) {
+		Iterator<EClass> typeIter = types.iterator();
+		EClass firstType = typeIter.next();
+		List<EClass> ret = new ArrayList<>(firstType.getEAllSuperTypes());
+		ret.add(firstType);
+
+		while (typeIter.hasNext() && !ret.isEmpty()) {
+			EClass nextType = typeIter.next();
+			ret.add(nextType);
+			ret.retainAll(nextType.getEAllSuperTypes());
+		}
+
+		// we have here the intersection of all common super types.
+		// we now remove shared "grand-super-types" (super types of super types)
+
+		Set<EClass> grandSuperTypes = new HashSet<EClass>();
+		for (EClass superType : ret) {
+			for (EClass grandSuperType : superType.getEAllSuperTypes()) {
+				if (ret.contains(grandSuperType)) {
+					grandSuperTypes.add(grandSuperType);
+				}
+			}
+		}
+
+		ret.removeAll(grandSuperTypes);
+
+		return ret;
+	}
+
+	/**
+	 * @param attr
+	 * @return
+	 */
+	private static String getKey(EStructuralFeature attr) {
+		return attr.getName() + attr.getEType() + attr.getUpperBound();
+	}
+
+	/**
+	 * @param eClassifier
+	 */
+	private static void factorizeEClass(EClass eClass) {
+		Map<String, List<EStructuralFeature>> multipleFeaturesMap = collectMultipleFeaturesLists(eClass);
+		for (List<EStructuralFeature> featList : multipleFeaturesMap.values()) {
+			if (featList.size() > 1) {
+				factorizeDuplicatedFeatures(eClass, featList);
+			}
+		}
+	}
+
+	/**
+	 * @param eClass
+	 * @param featList
+	 */
+	private static void factorizeDuplicatedFeatures(EClass eClass, List<EStructuralFeature> featList) {
+
+		List<EClass> types = new ArrayList<EClass>();
+		List<EStructuralFeature> featToRemove = new ArrayList<>();
+
+		List<EStructuralFeature> inheritedFeatures = new ArrayList<>(eClass.getEAllStructuralFeatures());
+		inheritedFeatures.retainAll(featList);
+
+
+		List<EStructuralFeature> unknownsToRemove = new ArrayList<EStructuralFeature>();
+		EStructuralFeature unknownFeature = null;
+		boolean allUnknowns = true;
+
+		for (EStructuralFeature feature : featList) {
+			if (RpyUtil.UNKNWON_CLASS_NAME.equals(feature.getEType().getName())) {
+				if (unknownFeature == null) {
+					unknownFeature = feature;
+				} else {
+					// we keep only one unknown feature
+					unknownsToRemove.add(feature);
+				}
+			} else {
+				allUnknowns = false;
+			}
+		}
+		for (EStructuralFeature unknown : unknownsToRemove) {
+			featList.remove(unknown);
+			EcoreUtil.remove(unknown);
+		}
+		// if there is another kind of feature than unknown, priority to it, we remove unknwon
+		if (!allUnknowns && unknownFeature != null) {
+			featList.remove(unknownFeature);
+			EcoreUtil.remove(unknownFeature);
+		}
+
+		// We also check if all the remaing features are EAttributes
+		// since we won't perform type factorization for EAttributes
+		boolean allEAttributes = true;
+		Iterator<EStructuralFeature> featListIterator = featList.iterator();
+		while (featListIterator.hasNext()) {
+			EStructuralFeature next = featListIterator.next();
+			if (next instanceof EReference) {
+				allEAttributes = false;
+			}
+		}
+
+
+
+		boolean isMultiple = false;
+
+		EStructuralFeature finalRef = null;
+		ListIterator<EStructuralFeature> refIter = featList.listIterator();
+		while (refIter.hasNext()) {
+			EStructuralFeature feat = refIter.next();
+			if (allEAttributes || feat instanceof EReference) {
+				if (finalRef == null && (inheritedFeatures.isEmpty() || inheritedFeatures.contains(feat))) {
+					finalRef = feat;
+				}
+				if (!allEAttributes) {
+					types.add((EClass) feat.getEType());
+				}
+
+				if (feat.getUpperBound() == -1) {
+					isMultiple = true;
+				}
+			}
+			if (finalRef != feat) {
+				featToRemove.add(feat);
+			}
+
+
+
+		}
+
+		if (isMultiple && finalRef.getUpperBound() != -1) {
+			finalRef.setUpperBound(-1);
+		}
+
+		for (EStructuralFeature refToRemove : featToRemove) {
+			EcoreUtil.delete(refToRemove);
+		}
+
+		if (!allEAttributes) {
+			EClass finalType = findOrCreateCommonFeatureType(finalRef, types);
+			finalRef.setEType(finalType);
+		}
+
+	}
+
+	/**
+	 * @param finalRef
+	 * @param types
+	 * @return
+	 */
+	private static EClass findOrCreateCommonFeatureType(EStructuralFeature finalRef, List<EClass> types) {
+
+		List<EClass> commonSuperType = findCommonSuperTypes(types);
+
+		// if there is already exactly one common superType, we use it
+		if (commonSuperType.size() == 1) {
+			return commonSuperType.get(0);
+		}
+
+		// if there are 0 common super types or more than one, we create a new type, or check if this type already exists
+		// considering that all the features with the same name have the same type... (strong hypothesis...)
+		EPackage targetEPack = finalRef.getEContainingClass().getEPackage();
+		String eClassName = capitalize(finalRef.getName()) + "Type";
+		// eClassName = finalRef.getEContainingClass().getName() + "_"+ eClassName;
+
+
+		EClass ret = (EClass) targetEPack.getEClassifier(eClassName);
+		if (ret == null) {
+			ret = EcoreFactory.eINSTANCE.createEClass();
+			ret.setName(eClassName);
+			ret.setAbstract(true);
+		}
+
+		for (EClass type : types) {
+			if (!type.getESuperTypes().contains(ret) && type != ret) {
+				type.getESuperTypes().add(ret);
+			}
+		}
+
+		targetEPack.getEClassifiers().add(ret);
+
+
+
+		return ret;
+	}
+
+
+	private static List<EClass> collectCommonL1SuperTypes(List<EClass> types) {
+
+		Iterator<EClass> typeIter = types.iterator();
+		EClass firstType = typeIter.next();
+		List<EClass> ret = new ArrayList<>(firstType.getESuperTypes());
+
+		while (typeIter.hasNext() && !ret.isEmpty()) {
+			EClass nextType = typeIter.next();
+			ret.retainAll(nextType.getESuperTypes());
+		}
+
+		return ret;
+	}
+
+	private static Set<EClass> collectL1SuperTypes(List<EClass> types) {
+		Set<EClass> ret = new HashSet<EClass>();
+		for (EClass type : types) {
+			ret.addAll(type.getESuperTypes());
+		}
+		return ret;
+	}
+
+
+	private static List<EClass> collectL1Specializations(EClass superType) {
+		List<EClass> ret = new ArrayList<>();
+		EPackage pack = superType.getEPackage();
+		for (EClassifier eClassifier : pack.getEClassifiers()) {
+			if (((EClass) eClassifier).getESuperTypes().contains(superType)) {
+				ret.add((EClass) eClassifier);
+			}
+		}
+
+		return ret;
+	}
+
+	/**
+	 * @param eClass
+	 * @return
+	 */
+	private static Map<String, List<EStructuralFeature>> collectMultipleFeaturesLists(EClass eClass) {
+		Map<String, List<EStructuralFeature>> ret = new HashMap<String, List<EStructuralFeature>>();
+		for (EStructuralFeature feat : eClass.getEAllStructuralFeatures()) {
+			List<EStructuralFeature> list = ret.get(feat.getName());
+			if (list == null) {
+				list = new ArrayList<EStructuralFeature>();
+				ret.put(feat.getName(), list);
+			}
+			list.add(feat);
+		}
+		return ret;
+	}
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/src/org/eclipse/papyrus/interoperability/rpy/toolsmiths/api/discovery/RpyMetamodelGenerator.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/src/org/eclipse/papyrus/interoperability/rpy/toolsmiths/api/discovery/RpyMetamodelGenerator.java
new file mode 100644
index 0000000..88520c1
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/src/org/eclipse/papyrus/interoperability/rpy/toolsmiths/api/discovery/RpyMetamodelGenerator.java
@@ -0,0 +1,355 @@
+/*****************************************************************************
+ * Copyright (c) 2015 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Sebastien Revol (CEA LIST) sebastien.revol@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EcoreFactory;
+import org.eclipse.emf.ecore.EcorePackage;
+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.papyrus.interoperability.rpy.importer.utils.RpyFileHandler;
+import org.eclipse.papyrus.interoperability.rpy.importer.utils.RpyProjectHandler;
+import org.eclipse.papyrus.interoperability.rpy.importer.utils.RpyUtil;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyContent;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFeature;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFeatureValue;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFile;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyNode;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyNodeList;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySimpleValueElement;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.SimpleValueList;
+
+
+/**
+ * @author sr246418
+ *
+ */
+public class RpyMetamodelGenerator {
+	private static final String ECORE_TEMPLATE_PATH = "org.eclipse.papyrus.interoperability.rpy.api.discovery/model/Rpy_template.ecore";
+
+
+
+	private EPackage rhpEPackage;
+
+	private Map<String, EClass> eClassMap = new HashMap<String, EClass>();
+
+	private List<RpyNode> visitedNode = new ArrayList<RpyNode>();
+	private RpyProjectHandler projectHandler;
+
+	private List<RpyFileHandler> transformedFileHandlers = new ArrayList<RpyFileHandler>();
+
+
+
+	/**
+	 * Constructor.
+	 *
+	 */
+	public RpyMetamodelGenerator() {
+		ResourceSet resSet = new ResourceSetImpl();
+		Resource res = resSet.getResource(URI.createPlatformPluginURI(ECORE_TEMPLATE_PATH, true), true);
+		rhpEPackage = (EPackage) res.getContents().get(0);
+
+	}
+
+	public RpyMetamodelGenerator(EPackage initialPackage) {
+		rhpEPackage = initialPackage;
+		initializeEClassMap();
+	}
+
+
+	/**
+	 * 
+	 */
+	private void initializeEClassMap() {
+		for (EClassifier eClassifier : rhpEPackage.getEClassifiers()) {
+			eClassMap.put(eClassifier.getName(), (EClass) eClassifier);
+		}
+
+	}
+
+	public void setHandler(RpyProjectHandler handler) {
+		this.projectHandler = handler;
+		handler.loadSubFiles();
+		visitedNode.clear();
+
+	}
+
+	public EPackage generateMetatmodel() {
+
+		for (RpyFileHandler rpyFileHandler : projectHandler.getFiles()) {
+			System.out.println("------Analyzing file : " + rpyFileHandler.getRpyFile().eResource().getURI().toFileString());
+			transformedFileHandlers.add(rpyFileHandler);
+
+			for (RpyContent content : rpyFileHandler.getContents()) {
+				if (content instanceof RpyNode) {
+					transform((RpyNode) content);
+				}
+			}
+		}
+		return rhpEPackage;
+	}
+
+	/**
+	 * @param content
+	 */
+	private EClass transform(RpyNode node) {
+		if (node.getName() == null || node.getName().isEmpty()) {
+			return null;
+		}
+		EClass eClass = eClassMap.get(node.getName());
+		if (eClass == null) {
+			eClass = EcoreFactory.eINSTANCE.createEClass();
+			eClass.setName(node.getName());
+			rhpEPackage.getEClassifiers().add(eClass);
+			eClassMap.put(node.getName(), eClass);
+		}
+
+		if (!visitedNode.contains(node)) {
+			visitedNode.add(node);
+			for (RpyContent content : node.getContents()) {
+				List<EStructuralFeature> features = generateFeature(eClass, content);
+				for (EStructuralFeature feature : features) {
+					addFeatureIfNotAlreadyPresent(eClass, feature);
+				}
+			}
+		}
+
+
+
+		return eClass;
+
+	}
+
+
+	/**
+	 * @param referencedNode
+	 * @param rpyFeature
+	 */
+	private void transformOwningHandlerIfDifferent(RpyNode referencedNode, RpyFeature rpyFeature) {
+		RpyFileHandler referencedNodeHandler = projectHandler.getOwningFileHandler(referencedNode);
+		if (referencedNodeHandler != null && referencedNodeHandler != projectHandler.getOwningFileHandler((RpyNode) rpyFeature.eContainer()) && !transformedFileHandlers.contains(referencedNodeHandler)) {
+			transformedFileHandlers.add(referencedNodeHandler);
+			transform(referencedNodeHandler);
+		}
+	}
+
+	private void transform(RpyFileHandler rpyFileHandler) {
+
+		RpyFile rpyFile = rpyFileHandler.getRpyFile();
+
+		List<EObject> roots = new ArrayList<EObject>();
+		for (RpyContent fileContent : rpyFile.getContents()) {
+			if (fileContent instanceof RpyNode) {
+				EObject ret = transform((RpyNode) fileContent);
+				if (ret != null) {
+					roots.add(ret);
+				}
+			}
+		}
+
+	}
+
+
+
+	/**
+	 * @param eClass
+	 * @param content
+	 */
+	private List<EStructuralFeature> generateFeature(EClass eClass, RpyContent content) {
+		List<EStructuralFeature> features = new ArrayList<EStructuralFeature>();
+		if (content instanceof RpyFeature) {
+			RpyFeature rpyFeature = (RpyFeature) content;
+			RpyFeatureValue rpyFeatureValue = RpyUtil.getFeatureValue(rpyFeature);
+			EStructuralFeature ecoreFeature = null;
+			if (rpyFeatureValue instanceof SimpleValueList) {
+				if (RpyUtil.isDirectReference(rpyFeature)) {
+					RpyNode referencedNode = projectHandler.getSimpleFeatureReferencedNode(rpyFeature);
+					transformOwningHandlerIfDifferent(referencedNode, rpyFeature);
+					ecoreFeature = generateEReference(rpyFeature, referencedNode);
+				} else {
+					ecoreFeature = generateEAttribute(rpyFeature, (SimpleValueList) rpyFeatureValue);
+				}
+				if (ecoreFeature != null) {
+					features.add(ecoreFeature);
+				}
+
+
+			} else if (rpyFeatureValue instanceof RpyNodeList) {
+				boolean isContainment = !RpyUtil.containsHandle((RpyNodeList) rpyFeatureValue);
+				List<RpyNode> nodes = projectHandler.getNodes((RpyNodeList) rpyFeatureValue);
+				boolean isMultiple = nodes.size() > 1;
+
+				for (RpyNode referencedNode : nodes) {
+					transformOwningHandlerIfDifferent(referencedNode, rpyFeature);
+				}
+
+				if (nodes.isEmpty()) {
+					ecoreFeature = generateUnknownFeature(rpyFeature.getName());
+					features.add(ecoreFeature);
+				} else {
+
+					for (RpyNode node : nodes) {
+						// first implem : we explore all the features value to identify subtypes
+						ecoreFeature = generateEReference(rpyFeature, node);
+						if (isMultiple) {
+							ecoreFeature.setUpperBound(-1);
+						}
+						if (isContainment) {
+							((EReference) ecoreFeature).setContainment(true);
+						}
+						if (ecoreFeature != null) {
+							features.add(ecoreFeature);
+						}
+					}
+				}
+			} else if (rpyFeatureValue == null) {
+				ecoreFeature = generateUnknownFeature(rpyFeature.getName());
+				features.add(ecoreFeature);
+			}
+
+
+		} else if (content instanceof RpyNode) {
+			EReference feature = EcoreFactory.eINSTANCE.createEReference();
+			feature.setName(RpyUtil.OWNED_ELEMENT_FEATURE_NAME);
+			feature.setEType(transform((RpyNode) content));
+			feature.setContainment(true);
+			feature.setUpperBound(-1);
+			features.add(feature);
+
+
+		}
+		return features;
+	}
+
+
+
+	/**
+	 * @return
+	 */
+	private EStructuralFeature generateUnknownFeature(String featureName) {
+		EClass unknownClass = eClassMap.get(RpyUtil.UNKNWON_CLASS_NAME);
+		if (unknownClass == null) {
+			unknownClass = EcoreFactory.eINSTANCE.createEClass();
+			unknownClass.setName(RpyUtil.UNKNWON_CLASS_NAME);
+			eClassMap.put(RpyUtil.UNKNWON_CLASS_NAME, unknownClass);
+			rhpEPackage.getEClassifiers().add(unknownClass);
+		}
+		EStructuralFeature ref = EcoreFactory.eINSTANCE.createEReference();
+		ref.setName(featureName.replaceFirst("^_", ""));
+		ref.setEType(unknownClass);
+		ref.setUpperBound(-1);
+		return ref;
+	}
+
+	/**
+	 * @param eClass
+	 * @param ecoreFeature
+	 */
+	private void addFeatureIfNotAlreadyPresent(EClass eClass, EStructuralFeature ecoreFeature) {
+
+		if (ecoreFeature.getEType() != null) {
+			boolean found = false;
+			for (EStructuralFeature feat : eClass.getEAllStructuralFeatures()) {
+				if (feat.getName().equals(ecoreFeature.getName()) && feat.getEType().equals(ecoreFeature.getEType())) {
+					found = true;
+
+					if (ecoreFeature.getUpperBound() == -1) {
+						feat.setUpperBound(-1);
+					}
+					continue;
+				}
+			}
+			if (found == false) {
+				eClass.getEStructuralFeatures().add(ecoreFeature);
+			}
+		}
+
+	}
+
+
+
+	/**
+	 * @param rpyFeature
+	 * @param rpyFeatureValue
+	 * @return
+	 */
+	private EStructuralFeature generateEReference(RpyFeature rpyFeature, RpyNode node) {
+		EReference ret = EcoreFactory.eINSTANCE.createEReference();
+
+		ret.setName(rpyFeature.getName().replaceFirst("^_", ""));
+		ret.setEType(transform(node));
+
+		return ret;
+	}
+
+	/**
+	 * @param rpyFeature
+	 * @param rpyFeatureValue
+	 * @return
+	 */
+	private EStructuralFeature generateEAttribute(RpyFeature rpyFeature, SimpleValueList simpleValueList) {
+		EAttribute ret = EcoreFactory.eINSTANCE.createEAttribute();
+		ret.setName(rpyFeature.getName().replaceFirst("^_", ""));
+
+
+		boolean isMultiple = false;
+		if (!simpleValueList.getValueElements().isEmpty()) {
+			if (simpleValueList.getValueElements().size() > 1) {
+				isMultiple = true;
+			} else {
+				RpySimpleValueElement element = simpleValueList.getValueElements().get(0);
+				if (element.getValues().size() > 1) {
+					isMultiple = true;
+				}
+			}
+		}
+
+		if (isMultiple) {
+			ret.setUpperBound(-1);
+		}
+		ret.setEType(EcorePackage.eINSTANCE.getEString());
+		return ret;
+	}
+
+
+
+	/**
+	 * @return
+	 */
+	public EPackage getGeneratedPackage() {
+
+		return rhpEPackage;
+	}
+
+	/**
+	 * @param visitedNodes
+	 */
+	public void setVisitedNodes(List<RpyNode> visitedNodes) {
+		this.visitedNode = visitedNodes;
+
+	}
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/src/org/eclipse/papyrus/interoperability/rpy/toolsmiths/api/discovery/RpyMetamodelUpdater.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/src/org/eclipse/papyrus/interoperability/rpy/toolsmiths/api/discovery/RpyMetamodelUpdater.java
new file mode 100644
index 0000000..b59d5c4
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/src/org/eclipse/papyrus/interoperability/rpy/toolsmiths/api/discovery/RpyMetamodelUpdater.java
@@ -0,0 +1,118 @@
+/*****************************************************************************
+ * Copyright (c) 2015 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Sebastien Revol (CEA LIST) sebastien.revol@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.io.FileUtils;
+import org.eclipse.emf.common.util.ECollections;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+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.jface.dialogs.MessageDialog;
+import org.eclipse.papyrus.interoperability.rpy.importer.utils.RpyProjectHandler;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyNode;
+import org.eclipse.ui.PlatformUI;
+
+public class RpyMetamodelUpdater {
+
+	private static List<File> rpyProjects = new ArrayList<>();
+
+	public static void updateMetamodel(URI inputMetamodelURI, URI outputMetamodelURI, File folderWithRhpProjects) throws Exception {
+
+		if (folderWithRhpProjects.exists() && folderWithRhpProjects.isDirectory()) {
+			rpyProjects.addAll(FileUtils.listFiles(folderWithRhpProjects, new String[] { "rpy" }, true));
+			if (rpyProjects.isEmpty()) {
+				IllegalArgumentException exception = new IllegalArgumentException("The folder " + folderWithRhpProjects.getAbsolutePath() + " does not contain .rpy projects");
+				Activator.log.error(exception);
+				throw exception;
+			}
+		} else {
+			IllegalArgumentException exception = new IllegalArgumentException("Error : " + folderWithRhpProjects.getAbsolutePath() + " does not exist or is not a directory");
+			Activator.log.error(exception);
+			throw exception;
+		}
+
+		ResourceSet resSet = new ResourceSetImpl();
+
+		Resource mmRes = resSet.getResource(inputMetamodelURI, true);
+		EPackage ecorePackage;
+		if (mmRes != null && !mmRes.getContents().isEmpty() && mmRes.getContents().get(0) instanceof EPackage) {
+			ecorePackage = (EPackage) mmRes.getContents().get(0);
+		} else {
+			IllegalArgumentException exception = new IllegalArgumentException("Failed to load input metamodel " + inputMetamodelURI.toFileString());
+			Activator.log.error(exception);
+			throw exception;
+		}
+
+		RpyMetamodelGenerator mmGen = new RpyMetamodelGenerator(ecorePackage);
+
+		List<RpyNode> visitedNodes = new ArrayList<RpyNode>();
+		for (File projectFile : rpyProjects) {
+			RpyProjectHandler projectHandler = new RpyProjectHandler(projectFile.getAbsolutePath());
+			mmGen.setHandler(projectHandler);
+
+			mmGen.setVisitedNodes(visitedNodes);
+			mmGen.generateMetatmodel();
+		}
+
+		EPackage mmPackage = mmGen.getGeneratedPackage();
+
+
+		if (mmPackage != null) {
+			MetamodelFactorizer.factorizeMetamodel(mmPackage);
+		}
+
+		Comparator<EClassifier> comparator = new Comparator<EClassifier>() {
+
+			@Override
+			public int compare(EClassifier arg0, EClassifier arg1) {
+				return arg0.getName().compareTo(arg1.getName());
+
+			}
+		};
+		ECollections.sort(mmPackage.getEClassifiers(), comparator);
+
+
+		Resource outputRes = resSet.createResource(outputMetamodelURI);
+		if (outputRes != null) {
+			outputRes.getContents().add(mmPackage);
+			try {
+				outputRes.save(null);
+			} catch (IOException e) {
+				Activator.log.error("Failed to save output metamodel", e);
+				throw e;
+			}
+		} else {
+			IOException outputException = new IOException("Failed to create output metamodel resource for URI " + outputMetamodelURI.toString());
+			Activator.log.error(outputException);
+			throw outputException;
+		}
+
+		MessageDialog.openInformation(PlatformUI.getWorkbench().getDisplay().getActiveShell(), "Update success", "Successfully saved updated metamodel " + outputMetamodelURI.toString());
+	}
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/src/org/eclipse/papyrus/interoperability/rpy/toolsmiths/api/discovery/ui/UpdateMetamodelHandler.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/src/org/eclipse/papyrus/interoperability/rpy/toolsmiths/api/discovery/ui/UpdateMetamodelHandler.java
new file mode 100644
index 0000000..200e4b4
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery/src/org/eclipse/papyrus/interoperability/rpy/toolsmiths/api/discovery/ui/UpdateMetamodelHandler.java
@@ -0,0 +1,116 @@
+/*****************************************************************************
+ * Copyright (c) 2015 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Sebastien Revol (CEA LIST) sebastien.revol@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery.ui;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Iterator;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.papyrus.interoperability.rpy.toolsmiths.api.discovery.RpyMetamodelUpdater;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.dialogs.ContainerSelectionDialog;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+public class UpdateMetamodelHandler extends AbstractHandler {
+
+	private static final String FILE_EXTENSION = "ecore";
+
+	@Override
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+
+		ISelection currentSelection = HandlerUtil.getCurrentSelection(event);
+		if (!(currentSelection instanceof IStructuredSelection) || currentSelection.isEmpty()) {
+			return null;
+		}
+
+		final IStructuredSelection selection = (IStructuredSelection) currentSelection;
+
+		Iterator<?> it = selection.iterator();
+
+		while (it.hasNext()) {
+			Object selectedElement = it.next();
+
+			if (selectedElement instanceof IFile) {
+				if (FILE_EXTENSION.equals(((IFile) selectedElement).getFileExtension())) {
+					IFile selectedFile = ((IFile) selectedElement);
+
+					URI inputMetamodelURI = URI.createPlatformResourceURI(selectedFile.getFullPath().toPortableString(),
+							true);
+
+					ContainerSelectionDialog dialog = new ContainerSelectionDialog(
+							Display.getCurrent().getActiveShell(), null, true, "Select a folder:");
+					dialog.setTitle("Select output folder");
+					dialog.open();
+					if (dialog.getResult() != null && dialog.getResult().length > 0
+							&& dialog.getResult()[0] instanceof IPath) {
+						URI outputMetamodelURI = URI
+								.createPlatformResourceURI(((IPath) dialog.getResult()[0]).toPortableString(), true);
+						outputMetamodelURI = outputMetamodelURI.appendSegment(inputMetamodelURI.lastSegment());
+
+						ContainerSelectionDialog targetFolderDialog = new ContainerSelectionDialog(
+								Display.getCurrent().getActiveShell(), null, true, "Select a folder:");
+						targetFolderDialog.setTitle("Select folder with Rpy projects");
+						targetFolderDialog.open();
+						if (targetFolderDialog.getResult() != null && targetFolderDialog.getResult().length > 0
+								&& targetFolderDialog.getResult()[0] instanceof IPath) {
+							IPath selectedProjectFolderPath = (IPath) targetFolderDialog.getResult()[0];
+							URI selectedProjectFolderURI = URI
+									.createPlatformResourceURI(selectedProjectFolderPath.toPortableString(), true);
+							URL projectFolderURL;
+							try {
+								projectFolderURL = FileLocator.toFileURL(new URL(selectedProjectFolderURI.toString()));
+
+								File inputProjectFile = new File(projectFolderURL.getFile());
+
+								if (inputProjectFile.exists()) {
+									try {
+										RpyMetamodelUpdater.updateMetamodel(inputMetamodelURI, outputMetamodelURI,
+												inputProjectFile.getParentFile());
+									} catch (Exception e) {
+										// TODO Auto-generated catch block
+										e.printStackTrace();
+									}
+								}
+							} catch (MalformedURLException e1) {
+								// TODO Auto-generated catch block
+								e1.printStackTrace();
+							} catch (IOException e1) {
+								// TODO Auto-generated catch block
+								e1.printStackTrace();
+							}
+
+						}
+
+					}
+
+				}
+			}
+
+		}
+		return null;
+	}
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/.classpath b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/.classpath
new file mode 100644
index 0000000..22f3064
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/.gitignore b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/.project b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/.project
new file mode 100644
index 0000000..31fe1c0
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/.project
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.interoperability.rpy</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.m2m.qvt.oml.project.QVTONature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/.settings/org.eclipse.jdt.core.prefs b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..b3aa6d6
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/.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.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
+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/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/.settings/org.eclipse.jdt.ui.prefs b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..954281d
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/.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/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/.settings/org.eclipse.pde.api.tools.prefs b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..23fb95e
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,98 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Ignore
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Ignore
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Ignore
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=Enabled
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Warning
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/META-INF/MANIFEST.MF b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..4f6243d
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/META-INF/MANIFEST.MF
@@ -0,0 +1,60 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.interoperability.rpy;singleton:=true
+Bundle-Version: 0.7.0.qualifier
+Bundle-Vendor: %providerName
+Bundle-Activator: org.eclipse.papyrus.interoperability.rpy.Activator
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.emf;bundle-version="2.2.0",
+ org.eclipse.m2m.qvt.oml;bundle-version="3.7.0",
+ org.eclipse.m2m.qvt.oml.common;bundle-version="3.6.0",
+ org.eclipse.m2m.qvt.oml.project;bundle-version="3.7.0",
+ org.eclipse.uml2.uml;bundle-version="[5.2.0,6.0.0)",
+ org.eclipse.uml2.uml.edit;bundle-version="[5.2.0,6.0.0)",
+ org.eclipse.gmf.runtime.emf.core;bundle-version="1.7.0",
+ org.eclipse.emf.ecore;bundle-version="2.10.1";visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;bundle-version="2.10.1",
+ org.eclipse.uml2.types;bundle-version="2.0.0";visibility:=reexport,
+ org.eclipse.uml2.uml.resources;bundle-version="5.2.0",
+ org.eclipse.gmf.runtime.notation;bundle-version="1.7.0",
+ org.eclipse.papyrus.uml.extensionpoints;bundle-version="1.2.0",
+ org.eclipse.swt,
+ org.eclipse.ui.workbench,
+ org.eclipse.ui.navigator;bundle-version="3.5.500",
+ com.google.guava;bundle-version="11.0.0",
+ org.eclipse.papyrus.uml.diagram.clazz;bundle-version="3.0.0",
+ org.eclipse.papyrus.uml.diagram.statemachine;bundle-version="3.0.0",
+ org.eclipse.papyrus.interoperability.rpy.metamodel;bundle-version="0.7.0",
+ org.eclipse.gmf.runtime.emf.type.core,
+ org.eclipse.gmf.runtime.diagram.core,
+ org.eclipse.papyrus.infra.gmfdiag.common;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.papyrus.infra.core;bundle-version="2.3.0",
+ org.eclipse.papyrus.infra.tools;bundle-version="2.0.100",
+ org.eclipse.papyrus.infra.widgets;bundle-version="3.0.0",
+ org.eclipse.papyrus.views.properties;bundle-version="3.0.0",
+ org.eclipse.papyrus.interoperability.common;bundle-version="0.7.0",
+ org.eclipse.m2m.qvt.oml.runtime;bundle-version="3.7.0",
+ org.eclipse.papyrus.sysml;bundle-version="1.2.0",
+ org.eclipse.papyrus.interoperability.rpy.parser;bundle-version="0.7.0",
+ org.eclipse.papyrus.sysml.diagram.blockdefinition;bundle-version="3.0.0",
+ org.eclipse.papyrus.sysml.diagram.internalblock;bundle-version="3.0.0",
+ org.eclipse.papyrus.sysml.diagram.parametric;bundle-version="2.0.0",
+ org.eclipse.papyrus.infra.internationalization;bundle-version="1.0.0",
+ org.apache.commons.io,
+ org.eclipse.papyrus.interoperability.common.blackboxes;bundle-version="0.7.0",
+ org.eclipse.papyrus.uml.internationalization;bundle-version="1.0.0",
+ org.eclipse.papyrus.interoperability.rpy.blackboxes;bundle-version="0.7.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.papyrus.interoperability.rpy,
+ org.eclipse.papyrus.interoperability.rpy.handlers,
+ org.eclipse.papyrus.interoperability.rpy.importer,
+ org.eclipse.papyrus.interoperability.rpy.importer.utils,
+ org.eclipse.papyrus.interoperability.rpy.messages,
+ org.eclipse.papyrus.interoperability.rpy.transformations,
+ org.eclipse.papyrus.interoperability.rpy.transformations.notation,
+ org.eclipse.papyrus.interoperability.rpy.xmi
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/OSGI-INF/l10n/bundle.properties b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/OSGI-INF/l10n/bundle.properties
new file mode 100644
index 0000000..8fd028e
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/OSGI-INF/l10n/bundle.properties
@@ -0,0 +1,2 @@
+pluginName = Papyrus Rpy Interoperability (Incubation)
+providerName = Eclipse Modeling Project
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/README b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/README
new file mode 100644
index 0000000..2755e2a
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/README
@@ -0,0 +1,2 @@
+This plugins depends on SysML diagrams to be able to open them after their creation
+This plugin depends on SysML profile to be able to execute the transformation
\ No newline at end of file
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/about.html b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/about.html
new file mode 100644
index 0000000..dd3c089
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>November 14, 2008</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/build.properties b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/build.properties
new file mode 100644
index 0000000..46bdf84
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/build.properties
@@ -0,0 +1,9 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               transform/,\
+               about.html,\
+               OSGI-INF/
+src.includes = about.html
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/plugin.xml b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/plugin.xml
new file mode 100644
index 0000000..7ed35dc
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/plugin.xml
@@ -0,0 +1,113 @@
+<?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.ui.navigator.ProjectExplorer#PopupMenu?after=additions">
+         <command
+               commandId="org.eclipse.papyrus.interoperability.rpy.sysml.import"
+               style="push">
+            <visibleWhen
+                  checkEnabled="false">
+               <with
+                     variable="selection">
+                  <iterate
+                        ifEmpty="false"
+                        operator="or">
+                     <adapt
+                           type="org.eclipse.core.resources.IFile">
+                        <or>
+                           <test
+                                 property="org.eclipse.core.resources.extension"
+                                 value="umlrpy">
+                           </test>
+                           <test
+                                 property="org.eclipse.core.resources.extension"
+                                 value="rpy">
+                           </test>
+                        </or>
+                     </adapt>
+                  </iterate>
+               </with>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+   <extension
+         point="org.eclipse.ui.commands">
+      <command
+            defaultHandler="org.eclipse.papyrus.interoperability.rpy.handlers.ImportRpyHandler"
+            id="org.eclipse.papyrus.interoperability.rpy.sysml.import"
+            name="Import SysML Rpy Model">
+      </command>
+   </extension>
+   <extension
+         point="org.eclipse.ui.importWizards">
+      <wizard
+            category="org.eclipse.papyrus.infra.core.importcategory"
+            class="org.eclipse.papyrus.interoperability.rpy.wizard.TransformationRpyWizard"
+            icon="platform:/plugin/org.eclipse.papyrus.interoperability.common/icons/import_wiz_16x16.gif"
+            id="org.eclipse.papyrus.interoperability.rpy.transformationWizard"
+            name="Rpy SysML Models">
+         <description>
+            Select and transform .rpy files through the wizard window.
+         </description>
+      </wizard>
+   </extension>
+   <extension
+         point="org.eclipse.m2m.qvt.oml.runtime.qvtTransformation">
+      <library
+            file="transform/RpyToPapyrusDiagamCommon.qvto"
+            id="RpyToPapyrusDiagamCommon">
+      </library>
+      <library
+            file="transform/RpyToPapyrusUtils.qvto"
+            id="RpyToPapyrusUtils">
+      </library>
+      <library
+            file="transform/RpyUtils.qvto"
+            id="RpyUtils">
+      </library>
+      <library
+            file="transform/SysMLRpyUtils.qvto"
+            id="SysMLRpyUtils">
+      </library>
+   </extension>
+   <extension
+         point="org.eclipse.m2m.qvt.oml.runtime.qvtTransformation">
+      <transformation
+            file="transform/Rpy2PapyrusNotation.qvto"
+            id="Rpy2PapyrusNotation">
+      </transformation>
+      <transformation
+            file="transform/Rpy2PapyrusSemanticElements.qvto"
+            id="Rpy2PapyrusSemanticElements">
+      </transformation>
+      <transformation
+            file="transform/SysML11BlockDefinitionDiagram.qvto"
+            id="SysML11BlockDefinitionDiagram">
+      </transformation>
+      <transformation
+            file="transform/SysML11Diagrams.qvto"
+            id="SysML11Diagrams">
+      </transformation>
+      <transformation
+            file="transform/SysML11InternalBlockDiagram.qvto"
+            id="SysML11InternalBlockDiagram">
+      </transformation>
+      <transformation
+            file="transform/SysML11ParametricDiagram.qvto"
+            id="SysML11ParametricDiagram">
+      </transformation>
+      <transformation
+            file="transform/SysML11Profile.qvto"
+            id="SysML11Profile">
+      </transformation>
+      <transformation
+            file="transform/SemanticInternationalization.qvto"
+            id="SemanticInternationalizationInternationalization">
+      </transformation>
+   </extension>
+</plugin>
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/Activator.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/Activator.java
new file mode 100644
index 0000000..fd75e4e
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/Activator.java
@@ -0,0 +1,78 @@
+/*****************************************************************************
+ * Copyright (c) 2015 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Sebastien Revol (CEA LIST) sebastien.revol@cea.fr - Initial API and implementation
+ *  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr 
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy;
+
+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.interoperability.rpy"; //$NON-NLS-1$
+
+	// The shared instance
+	private static Activator plugin;
+
+
+	public static LogHelper log;
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static Activator getDefault() {
+		return plugin;
+	}
+
+	/**
+	 * The constructor
+	 */
+	public Activator() {
+	}
+
+	/**
+	 * 
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 *
+	 * @param context
+	 * @throws Exception
+	 */
+	@Override
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+		log = new LogHelper(this);
+	}
+
+
+	/**
+	 * 
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 *
+	 * @param context
+	 * @throws Exception
+	 */
+	@Override
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/handlers/ImportRpyHandler.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/handlers/ImportRpyHandler.java
new file mode 100644
index 0000000..f1d7ee3
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/handlers/ImportRpyHandler.java
@@ -0,0 +1,53 @@
+/*****************************************************************************
+ * Copyright (c) 2015 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.handlers;
+
+import org.eclipse.papyrus.interoperability.common.MigrationParameters.ThreadConfig;
+import org.eclipse.papyrus.interoperability.common.handler.AbstractMigrationHandler;
+import org.eclipse.papyrus.interoperability.common.transformation.IImportTransformationLauncher;
+import org.eclipse.papyrus.interoperability.rpy.importer.utils.RpyFileUtils;
+import org.eclipse.papyrus.interoperability.rpy.transformations.RpyImportTransformationLauncher;
+import org.eclipse.swt.widgets.Control;
+
+import com.google.common.collect.Sets;
+
+/**
+ * 
+ * The handler to run Rpy import action when a file is selected
+ *
+ */
+public class ImportRpyHandler extends AbstractMigrationHandler {
+
+	/**
+	 * 
+	 * Constructor.
+	 *
+	 */
+	public ImportRpyHandler() {
+		super(Sets.newHashSet(RpyFileUtils.FILE_EXTENSION_RPY, RpyFileUtils.UML_RPY_FILE));
+	}
+
+	/**
+	 * 
+	 * @see org.eclipse.papyrus.interoperability.common.handler.AbstractMigrationHandler#createImportTransformationLauncher(org.eclipse.papyrus.migration.common.MigrationParameters.Config, org.eclipse.swt.widgets.Control)
+	 *
+	 * @param config
+	 * @param baseControl
+	 * @return
+	 */
+	@Override
+	protected IImportTransformationLauncher createImportTransformationLauncher(ThreadConfig config, Control baseControl) {
+		return new RpyImportTransformationLauncher(config, baseControl);
+	}
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/importer/SelectedRpyFilesImporter.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/importer/SelectedRpyFilesImporter.java
new file mode 100644
index 0000000..d907f74
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/importer/SelectedRpyFilesImporter.java
@@ -0,0 +1,122 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.importer;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.papyrus.infra.widgets.util.FileUtil;
+import org.eclipse.papyrus.interoperability.rpy.Activator;
+import org.eclipse.papyrus.interoperability.rpy.importer.utils.RpyFileUtils;
+
+/**
+ * This class allows us to convert easily the rpy file into the Papyrus EMF Rpy metamodel.
+ * 
+ * This file has been created using {@link SelectedFilesImporter}
+ *
+ */
+public class SelectedRpyFilesImporter {
+
+
+	/**
+	 * the uri initially selected by the user
+	 */
+	private Collection<URI> userSelectedFilesURI;
+
+	// TODO : warning, it is used by JUnit tests too!
+	// TODO : not common with RSA import
+	// TODO : must be removed
+	public static final String OUTPUT_FOLDER = "output"; //$NON-NLS-1$
+
+	/**
+	 * 
+	 * Constructor.
+	 *
+	 * @param userSelectedFilesURI
+	 *            the uri initially selected by the user
+	 */
+	public SelectedRpyFilesImporter(final Collection<URI> userSelectedFilesURI) {
+		this.userSelectedFilesURI = userSelectedFilesURI;
+	}
+
+	/**
+	 * 
+	 * @return
+	 * 		the list of URI to import after transforming the selected rpy files into the EMF intermediate model
+	 */
+	public List<URI> getRpyFilesToImportURI() {
+		final Iterator<URI> iter = userSelectedFilesURI.iterator();
+		Set<URI> urisToImport = new HashSet<URI>();
+		while (iter.hasNext()) {
+			final URI selectedURI = iter.next();
+			String fileExtension = selectedURI.fileExtension();
+			if (RpyFileUtils.UML_RPY_FILE.equals(fileExtension)) {
+				urisToImport.add(selectedURI);
+			} else if (RpyFileUtils.FILE_EXTENSION_RPY.equals(fileExtension)) {
+				//TODO : works only for WS file		
+				IFile res = FileUtil.getIFile(selectedURI.toPlatformString(true));
+				IProject project = res.getProject();
+				String projectinput = project.getLocation().toOSString();
+				String projectOutput = getOutputFolderPath(selectedURI);
+				UMLRpyImporter importer = new UMLRpyImporter(res.getLocation().toOSString(), projectOutput);
+				// UMLRpyImporter importer2 = new UMLRpyImporter(selectedURI, projectOutput);
+				importer.getRootProject();
+				importer.save();
+				try {
+					project.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());
+				} catch (CoreException e) {
+					Activator.log.error(e);
+				}
+				final URI rpyEMFFileURI = getResultingUMLRpyFileURI(selectedURI);
+				urisToImport.add(rpyEMFFileURI);
+			}
+		}
+		return new ArrayList<URI>(urisToImport);
+	}
+
+	// TODO : should return a URI;
+	public String getOutputFolderPath(final URI inputURI) {
+		IFile res = FileUtil.getIFile(inputURI.toPlatformString(true));
+		IProject project = res.getProject();
+		URI projectURI = URI.createPlatformResourceURI(project.getLocation().toPortableString(), true);
+		String lastSegment = inputURI.trimFileExtension().lastSegment();
+		return projectURI.appendSegment(OUTPUT_FOLDER).appendSegment(lastSegment).toPlatformString(true);
+	}
+
+	/**
+	 * 
+	 * @param inputURI
+	 *            the initial URI, it should be a rpy file
+	 * @return
+	 * 		the URI of the EMF version of the rpy file, with the extension RpyFileUtils.UML_RPY_FILE
+	 */
+	public URI getResultingUMLRpyFileURI(final URI inputURI) {
+		final String str = getOutputFolderPath(inputURI);
+		final IFile file = FileUtil.getIFile(str);
+		final URI projectURI = URI.createPlatformResourceURI(file.getFullPath().toString(), true);
+		final String fileName = inputURI.lastSegment();
+		return projectURI.appendSegment(fileName).trimFileExtension().appendFileExtension(RpyFileUtils.UML_RPY_FILE);
+	}
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/importer/UMLRpyImporter.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/importer/UMLRpyImporter.java
new file mode 100644
index 0000000..b795c72
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/importer/UMLRpyImporter.java
@@ -0,0 +1,359 @@
+/*****************************************************************************
+ * Copyright (c) 2015 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Sebastien Revol (CEA LIST) sebastien.revol@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.importer;
+
+import java.io.IOException;
+import java.net.URL;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EAnnotation;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EModelElement;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EcoreFactory;
+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.osgi.util.NLS;
+import org.eclipse.papyrus.interoperability.rpy.Activator;
+import org.eclipse.papyrus.interoperability.rpy.importer.utils.Messages;
+import org.eclipse.papyrus.interoperability.rpy.importer.utils.RpyFileHandler;
+import org.eclipse.papyrus.interoperability.rpy.importer.utils.RpyFileUtils;
+import org.eclipse.papyrus.interoperability.rpy.importer.utils.RpyProjectHandler;
+import org.eclipse.papyrus.interoperability.rpy.importer.utils.RpyUtil;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyContent;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFeature;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFeatureValue;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFile;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyNode;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyNodeList;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySimpleValueElement;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.SimpleValueList;
+import org.eclipse.papyrus.interoperability.rpy.rpymetamodel.IProject;
+import org.eclipse.papyrus.interoperability.rpy.rpymetamodel.UMLRpyFactory;
+import org.eclipse.papyrus.interoperability.rpy.rpymetamodel.UMLRpyPackage;
+
+
+/**
+ * @author sr246418
+ *
+ */
+public class UMLRpyImporter {
+
+	private RpyProjectHandler projectHandler;
+	private ResourceSet resSet = new ResourceSetImpl();
+	private IProject rootProject = null;
+	private String targetPath;
+
+	Map<EObject, EObject> transformedObjectMap = new HashMap<EObject, EObject>();
+	Map<RpyFileHandler, Resource> fileToResourceMap = new HashMap<RpyFileHandler, Resource>();
+
+	// TODO : would be better with URI instead of string
+	public UMLRpyImporter(String rpyPath, String targetPath) {
+		projectHandler = new RpyProjectHandler(rpyPath);
+		this.targetPath = targetPath;
+	}
+
+	// public UMLRpyImporter(URI rpyPath, String targetPath){
+	// projectHandler = new RpyProjectHandler(rpyPath);
+	// this.targetPath = targetPath;
+	// }
+
+
+	public IProject getRootProject() {
+		if (rootProject == null) {
+			doTransformation();
+		}
+		return (rootProject);
+	}
+
+	public void save() {
+		Map<Object, Object> options = new HashMap<Object, Object>();
+		options.put(XMLResource.OPTION_ESCAPE_USING_CDATA, true);
+		options.put(XMLResource.OPTION_XML_VERSION, "1.1");
+
+		for (Resource res : resSet.getResources()) {
+			try {
+				res.save(options);
+			} catch (IOException e) {
+				Activator.log.error(e);
+			}
+		}
+	}
+
+	/**
+	 * 
+	 */
+	private void doTransformation() {
+		RpyFileHandler projectFileHandler = projectHandler.getProjectFile();
+		EObject rootTransformedObject = transform(projectFileHandler);
+
+		// post transformation cleaning
+		if (rootTransformedObject instanceof IProject) {
+			rootProject = (IProject) rootTransformedObject;
+			if (projectFileHandler.getRpyFile() != null && projectFileHandler.getRpyFile().getVersion() != null) {
+				// set the RPY version to the project
+				rootProject.setVersion(projectFileHandler.getRpyFile().getVersion());
+			}
+
+			// embedd the transformed proxies in the root resource (proxies are placeholder for not found references)
+			for (RpyNode proxyNode : projectHandler.getAllProxies()) {
+				EObject transformedProxy = transformedObjectMap.get(proxyNode);
+				if (transformedProxy != null) {
+					rootProject.eResource().getContents().add(transformedProxy);
+				}
+			}
+
+		}
+	}
+
+	/**
+	 * @param projectFileHandler
+	 * @return
+	 */
+	private EObject transform(RpyFileHandler rpyFileHandler) {
+		Resource outputRes = getResource(rpyFileHandler);
+		if (outputRes.getContents().isEmpty() || outputRes.getContents().get(0) instanceof EAnnotation) {
+			RpyFile rpyFile = rpyFileHandler.getRpyFile();
+
+			List<EObject> roots = new ArrayList<EObject>();
+			for (RpyContent fileContent : rpyFile.getContents()) {
+				if (fileContent instanceof RpyNode) {
+					EObject ret = transformNode((RpyNode) fileContent);
+					if (ret != null) {
+						roots.add(ret);
+					}
+				}
+			}
+			outputRes.getContents().addAll(0, roots);
+		}
+		if (outputRes.getContents().isEmpty()) {
+			return null;
+		} else {
+			return outputRes.getContents().get(0);
+		}
+	}
+
+
+
+	/**
+	 * @param fileContent
+	 * @param rpyFileHandler
+	 */
+	private EObject transformNode(RpyNode node) {
+		EObject ret = transformedObjectMap.get(node);
+		if (ret == null) {
+			String nodeName = node.getName();
+			EClass targetEClass = (EClass) UMLRpyPackage.eINSTANCE.getEClassifier(nodeName);
+			if (targetEClass != null) {
+				ret = UMLRpyFactory.eINSTANCE.create(targetEClass);
+				transformedObjectMap.put(node, ret);
+				List<EObject> subNodes = new ArrayList<EObject>();
+				for (RpyContent nodeContent : node.getContents()) {
+					if (nodeContent instanceof RpyFeature) {
+						transformFeature(ret, (RpyFeature) nodeContent);
+					} else if (nodeContent instanceof RpyNode) {
+						EObject transformedNode = transformNode((RpyNode) nodeContent);
+						if (transformedNode != null) {
+							subNodes.add(transformedNode);
+						}
+					}
+				}
+				if (!subNodes.isEmpty()) {
+					EStructuralFeature graphicalElementsFeature = targetEClass.getEStructuralFeature(RpyUtil.OWNED_ELEMENT_FEATURE_NAME);
+					if (graphicalElementsFeature != null) {
+						setEReferenceValue(ret, graphicalElementsFeature, subNodes);
+					}
+				}
+			}
+
+
+		}
+
+		return ret;
+
+
+	}
+
+	/**
+	 * @param ret
+	 * @param nodeContent
+	 * @param rpyFileHandler
+	 */
+	private void transformFeature(EObject receiver, RpyFeature rpyFeature) {
+
+		EStructuralFeature targetFeature = receiver.eClass().getEStructuralFeature(rpyFeature.getName().replaceAll("^_", ""));
+		if (targetFeature != null) {
+			RpyFeatureValue rpyFeatureValue = RpyUtil.getFeatureValue(rpyFeature);
+
+			if (rpyFeatureValue instanceof SimpleValueList) {
+				if (RpyUtil.isDirectReference(rpyFeature)) {
+					RpyNode referencedNode = projectHandler.getSimpleFeatureReferencedNode(rpyFeature);
+
+					transformOwningHandlerIfDifferent(referencedNode, rpyFeature);
+					EObject value = transformNode(referencedNode);
+
+					if (value != null && targetFeature instanceof EReference && isCompatibleType((EReference) targetFeature, value)) {
+						setEReferenceValue(receiver, targetFeature, value);
+					}
+				} else if (targetFeature instanceof EAttribute) {
+					if (targetFeature.isMany()) {
+						List featValueList = (List) receiver.eGet(targetFeature);
+						for (RpySimpleValueElement valueElement : ((SimpleValueList) rpyFeatureValue).getValueElements()) {
+							for (String value : valueElement.getValues()) {
+								featValueList.add(value.replaceAll("^\"", "").replaceAll("\"$", ""));
+							}
+						}
+					} else {
+						receiver.eSet(targetFeature, RpyUtil.getStringValue((SimpleValueList) rpyFeatureValue).replaceAll("^\"", "").replaceAll("\"$", ""));
+					}
+
+				}
+
+			} else if (rpyFeatureValue instanceof RpyNodeList) {
+				RpyNodeList nodeList = (RpyNodeList) rpyFeatureValue;
+				List<EObject> transformedObjects = new ArrayList<EObject>();
+				for (RpyNode rpyNode : projectHandler.getNodes(nodeList)) {
+					transformOwningHandlerIfDifferent(rpyNode, rpyFeature);
+					EObject targetObject = transformNode(rpyNode);
+					if (targetObject != null) {
+						transformedObjects.add(targetObject);
+					}
+				}
+				if (targetFeature instanceof EReference
+						&& isCompatibleType((EReference) targetFeature, transformedObjects)) {
+					setEReferenceValue(receiver, targetFeature, transformedObjects);
+				}
+
+			}
+		} else {
+			RpyNode sourceNode = (RpyNode) rpyFeature.eContainer();
+			if (RpyUtil.HANDLE_FILE_NAME_REF.equals(rpyFeature.getName())) {
+				EAnnotation eannotation = EcoreFactory.eINSTANCE.createEAnnotation();
+				String fileName = ((SimpleValueList) rpyFeature.getValue()).getValueElements().get(0).getValues().get(0);
+				// we remove the quote around the file name
+				if (fileName.startsWith("\"")) {
+					fileName = fileName.substring(1);
+				}
+				if (fileName.endsWith("\"")) {
+					fileName = fileName.substring(0, fileName.length() - 1);
+				}
+				eannotation.getDetails().put(RpyUtil.ELEMENT_FILE_NAME_REF, fileName);
+				eannotation.setSource(RpyUtil.EANNOTATION_SOURCE__RPY_FILENAME);
+				if (receiver instanceof EModelElement) {
+					((EModelElement) receiver).getEAnnotations().add(eannotation);
+				}
+			} else {
+				Activator.log.error(NLS.bind(Messages.FeatureNotFound, new String[] { rpyFeature.getName(), receiver.eClass().getName(), RpyUtil.getNodeIndexInFile(sourceNode), projectHandler.getOwningFileHandler(sourceNode).getURI().toFileString() }), null);
+			}
+		}
+
+	}
+
+	/**
+	 * @param referencedNode
+	 * @param rpyFeature
+	 */
+	private void transformOwningHandlerIfDifferent(RpyNode referencedNode, RpyFeature rpyFeature) {
+		RpyFileHandler referencedNodeHandler = projectHandler.getOwningFileHandler(referencedNode);
+		if (referencedNodeHandler != null && referencedNodeHandler != projectHandler.getOwningFileHandler((RpyNode) rpyFeature.eContainer())) {
+			transform(referencedNodeHandler);
+		}
+	}
+
+	/**
+	 * @param receiver
+	 * @param targetFeature
+	 * @param value
+	 */
+	private void setEReferenceValue(EObject receiver, EStructuralFeature targetFeature, Object value) {
+		if (targetFeature.isMany()) {
+			List receiverList = (List) receiver.eGet(targetFeature);
+			if (value instanceof List) {
+				receiverList.addAll((List) value);
+			} else {
+				receiverList.add(value);
+			}
+		} else {
+			if (value instanceof List) {
+				if (!((List) value).isEmpty()) {
+					receiver.eSet(targetFeature, ((List) value).get(0));
+				}
+
+			} else {
+				receiver.eSet(targetFeature, value);
+			}
+		}
+
+	}
+
+	private boolean isCompatibleType(EReference targetReference, Object value) {
+		boolean result = true;
+		EClass containingEClass = targetReference.getEContainingClass();
+		EClass eType = targetReference.getEReferenceType();
+		if (value instanceof Collection) {
+			for (Object valueElement : (Collection) value) {
+				if (!eType.isInstance(valueElement)) {
+					result = false;
+					value = valueElement;
+
+					break;
+				}
+			}
+
+		} else {
+			result = eType.isInstance(value);
+		}
+		if (!result) {
+			Activator.log.warn("Object " + value + " has an incompatible type with " + eType.getName() + " of feature "
+					+ targetReference.getName() + " of EClass " + containingEClass.getName()
+					+ ".\n This element won't be imported. RpyMetamodel implementation in Papyrus should be updated");
+
+		}
+
+		return result;
+	}
+
+	/**
+	 * @param rpyFileHandler
+	 * @return
+	 */
+	private Resource getResource(RpyFileHandler rpyFileHandler) {
+		Resource ret = fileToResourceMap.get(rpyFileHandler);
+		if (ret == null) {
+			URI inURI = rpyFileHandler.getURI();
+			if (inURI != null) {
+				URI outURI = URI.createFileURI(targetPath).appendSegment(inURI.trimFileExtension().lastSegment()).appendFileExtension(RpyFileUtils.UML_RPY_FILE);
+				ret = resSet.createResource(outURI);
+				fileToResourceMap.put(rpyFileHandler, ret);
+			}
+		}
+		return ret;
+	}
+
+
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/importer/utils/Messages.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/importer/utils/Messages.java
new file mode 100644
index 0000000..6a0793f
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/importer/utils/Messages.java
@@ -0,0 +1,54 @@
+/*****************************************************************************
+ * Copyright (c) 2015 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Sebastien Revol (CEA LIST) sebastien.revol@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.importer.utils;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+
+	static {
+		NLS.initializeMessages("org.eclipse.papyrus.interoperability.rpy.importer.utils.messages", Messages.class); //$NON-NLS-1$
+	}
+
+	private Messages() {
+	}
+
+
+	public static String IgnoredSubFile;
+//
+//	public static String FailedToLoadProject;
+//	public static String FailedToLoadTable;
+//	public static String FailedToLoadResource;
+//
+//	public static String RpyNotFound;
+//
+//	public static String RpyHome;
+//	public static String ResourceLoading;
+//
+//	public static String GenericFileNotFound;
+	public static String FileNotFoundHandleReference;
+//
+	public static String NotFoundIDReference;
+//
+	public static String FileNotFoundElementReference;
+//
+//	public static String FileAliasNotResolved;
+//
+	public static String UnknownExtension;
+//
+//	public static String IDNotFoundInHandleRefAndInFileTable;
+	public static String FeatureNotFound;
+
+}
\ No newline at end of file
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/importer/utils/RpyFileHandler.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/importer/utils/RpyFileHandler.java
new file mode 100644
index 0000000..9ae60df
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/importer/utils/RpyFileHandler.java
@@ -0,0 +1,87 @@
+/*****************************************************************************
+ * Copyright (c) 2015 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Sebastien Revol (CEA LIST) sebastien.revol@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.importer.utils;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyContent;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFile;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyNode;
+
+
+/**
+ * @author sr246418
+ *
+ */
+public class RpyFileHandler {
+
+	private Map<String, RpyNode> idToNodeMap = new HashMap<String, RpyNode>();
+	private RpyFile rpyFile;
+	private RpyProjectHandler project;
+
+	public URI getURI() {
+		if (rpyFile != null && rpyFile.eResource() != null) {
+			return rpyFile.eResource().getURI();
+		}
+		return null;
+	}
+
+	public RpyFile getRpyFile() {
+		return rpyFile;
+	}
+
+	public RpyFileHandler(Resource resource, RpyProjectHandler project) {
+		this.project = project;
+		if (resource != null && !resource.getContents().isEmpty() && resource.getContents().get(0) instanceof RpyFile) {
+			rpyFile = (RpyFile) resource.getContents().get(0);
+		}
+
+
+		// initialize ID to Node Map
+		Iterator<EObject> iterator = rpyFile.eAllContents();
+		while (iterator.hasNext()) {
+			EObject obj = iterator.next();
+			if (obj instanceof RpyNode) {
+				RpyNode node = (RpyNode) obj;
+				String id = RpyUtil.getID(node);
+				if (id != null) {
+					idToNodeMap.put(id, node);
+				}
+			}
+
+		}
+	}
+
+	/**
+	 * 
+	 * @return
+	 */
+	public List<RpyContent> getContents() {
+		return rpyFile.getContents();
+	}
+
+	/**
+	 * @param id
+	 * @return
+	 */
+	public RpyNode getNodeById(String id) {
+		return idToNodeMap.get(id);
+	}
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/importer/utils/RpyFileUtils.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/importer/utils/RpyFileUtils.java
new file mode 100644
index 0000000..19c6b7a
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/importer/utils/RpyFileUtils.java
@@ -0,0 +1,60 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.importer.utils;
+
+/**
+ * 
+ * @author VL222926 Utils class for Rpy files
+ */
+public class RpyFileUtils {
+
+	private RpyFileUtils() {
+		// to prevent instanciation
+	}
+
+	/**
+	 * the extensions of the Rpy files
+	 */
+	public static final String FILE_EXTENSION_EHL = "ehl"; //$NON-NLS-1$
+
+	public static final String FILE_EXTENSION_RPW = "rpw"; //$NON-NLS-1$
+
+	public static final String FILE_EXTENSION_RPY = "rpy"; //$NON-NLS-1$
+
+	public static final String ALL_RPY_FILES = "*.rpy"; //$NON-NLS-1$
+
+	public static final String FILE_EXTENSION_SAVE = "save"; //$NON-NLS-1$
+
+	public static final String FOLDER_SUFFIX = "_rpy";//$NON-NLS-1$
+
+	/**
+	 * default files for Rpy model
+	 */
+	public static final String FILE__FILES_TABLES_DAT = "filesTable.dat"; //$NON-NLS-1$
+
+	public static final String FILE__DEFAULT_SBS = "Default.sbs"; //$NON-NLS-1$
+
+	public static final String FILE__DEFAULT_COMPONENT_CMP = "DefaultComponent.cmp"; //$NON-NLS-1$
+
+	/**
+	 * the extension of the file after the conversion from rpy to UMl file
+	 */
+	public static final String UML_RPY_FILE = "umlrpy"; //$NON-NLS-1$
+
+	// TODO externalize me
+	public static final String STRING_ALL = "All";
+
+	public static final String STRING_STAR = "*";//$NON-NLS-1$
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/importer/utils/RpyProjectHandler.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/importer/utils/RpyProjectHandler.java
new file mode 100644
index 0000000..4be4cb8
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/importer/utils/RpyProjectHandler.java
@@ -0,0 +1,558 @@
+/*****************************************************************************
+ * Copyright (c) 2015 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Sebastien Revol (CEA LIST) sebastien.revol@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.importer.utils;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.io.FileUtils;
+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.resource.impl.ResourceSetImpl;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.papyrus.interoperability.rpy.Activator;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFeature;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFeatureValue;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFile;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyNode;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyNodeList;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyStringMap;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyStringMapEntry;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.SimpleValueList;
+
+import com.google.common.io.Files;
+
+/**
+ * @author sr246418
+ *         Class allowing to easily parse Rpy projects.
+ *         It can return a CST or an AST instance of the parsed files.
+ */
+// TODO decide which techno use for file:
+// emf URI is ok, but we should should between java.nio, java, io, apache and google
+public class RpyProjectHandler {
+
+	private RpyFileHandler projectFile;
+
+	public RpyFileHandler getProjectFile() {
+		return projectFile;
+	}
+
+	private RpyFileHandler fileTable = null;
+	private Map<String, RpyFileHandler> uriToHandler = new HashMap<String, RpyFileHandler>();
+	private Map<Resource, RpyFileHandler> resourceToHandlerMap = new HashMap<Resource, RpyFileHandler>();
+	private Map<String, String> aliasToPathMap = new HashMap<String, String>();
+
+	private Map<String, RpyNode> idToProxyNode = new HashMap<String, RpyNode>();
+
+	private URI projectURI = null;
+	private ResourceSet resSet;
+	private URI rpyProjectFolderURI = null;
+
+
+
+	private static final String RPY_SUFFIX = "_rpy";
+	private static final String FILE_TABLE_NAME = "filesTable.dat";
+	private static final String FILE_TABLE_FEATURE_NAME = "filesTable";
+	private static final String OM_ROOT = "$OMROOT";
+
+
+	/**
+	 * 
+	 * Constructor.
+	 *
+	 * @param rpyFileURi
+	 *            the URI of the file selected by the user (should be a uri like this : file:C:/...)
+	 */
+	// TODO : not yet used , not working yet
+	public RpyProjectHandler(final URI rpyFileURi) {
+		initializeExtensions();
+		this.resSet = new ResourceSetImpl();
+		this.projectURI = rpyFileURi;
+		projectFile = getRpyFileHandler(projectURI.toFileString());
+
+		String rpyFolder = projectURI.trimFileExtension().lastSegment() + RPY_SUFFIX;
+		rpyProjectFolderURI = projectURI.trimSegments(1).appendSegment(rpyFolder).appendSegment("");
+		loadFileTable();
+
+	}
+
+	// TODO : replaced by an other constructor with URI
+	public RpyProjectHandler(String rpyPath) {
+		initializeExtensions();
+		resSet = new ResourceSetImpl();
+		projectURI = getNormalizedURI(rpyPath);
+
+		projectFile = getRpyFileHandler(projectURI.toFileString());
+
+		String rpyFolder = projectURI.trimFileExtension().lastSegment() + RPY_SUFFIX;
+		rpyProjectFolderURI = projectURI.trimSegments(1).appendSegment(rpyFolder).appendSegment("");
+		loadFileTable();
+
+	}
+
+	/**
+	 * 
+	 */
+	private void initializeExtensions() {
+
+
+	}
+
+
+	/**
+	 * 
+	 */
+	private void loadFileTable() {
+		URI fileTableURI = rpyProjectFolderURI.appendSegment(FILE_TABLE_NAME);
+		Resource fileTableRes = getResource(fileTableURI);
+		if (fileTableRes != null && !fileTableRes.getContents().isEmpty()) {
+			fileTable = new RpyFileHandler(fileTableRes, this);
+			RpyFile rpyTableFile = fileTable.getRpyFile();
+
+			if (rpyTableFile != null && !rpyTableFile.getContents().isEmpty() && rpyTableFile.getContents().get(0) instanceof RpyFeature) {
+				RpyFeature rootFeature = (RpyFeature) rpyTableFile.getContents().get(0);
+
+				if (FILE_TABLE_FEATURE_NAME.equals(rootFeature.getName()) && rootFeature.getValue() instanceof RpyNodeList) {
+					RpyFeatureValue value = RpyUtil.getFeatureValue(rootFeature);
+
+					if (value instanceof RpyStringMap) {
+
+						for (RpyStringMapEntry entry : ((RpyStringMap) value).getEntries()) {
+							if (!entry.getValue().isEmpty()) {
+								// remark key and value are switched compared to what has been defined in the RpySyntax
+								String entryValue = entry.getValue();
+								aliasToPathMap.put(entryValue, entry.getKey());
+								if (entryValue.contains(" ")) {
+									aliasToPathMap.put(entryValue.replaceAll(" ", "_"), entry.getKey());
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+
+
+
+	private Resource getResource(URI uri) {
+		// Activator.log.info(NLS.bind(Messages.ResourceLoading, uri.toFileString()));
+
+		File resourceFile = new File(uri.toFileString());
+		if (resourceFile.exists()) {
+			return resSet.getResource(uri, true);
+		} else {
+			// Activator.log.info(NLS.bind(Messages.GenericFileNotFound, uri.toFileString()));
+			return null;
+		}
+	}
+
+
+
+
+	/**
+	 * @param rpyPath
+	 */
+	public void loadSubFiles() {
+
+
+		File rpyProjectFolder = new File(rpyProjectFolderURI.toFileString());
+
+		if (rpyProjectFolder.exists() && rpyProjectFolder.isDirectory()) {
+
+			for (File subFile : FileUtils.listFiles(rpyProjectFolder, null, true)) {
+				URI subFileURI = getNormalizedURI(subFile.getAbsolutePath());
+
+				if (RpyUtil.SUPPORTED_EXTENSIONS.contains(subFileURI.fileExtension())) {
+
+					if (!FILE_TABLE_NAME.equals(subFileURI.lastSegment())) {
+						uriToHandler.put(subFileURI.toFileString(), getRpyFileHandler(subFileURI.toFileString()));
+					}
+				} else {
+					Activator.log.info(NLS.bind(Messages.IgnoredSubFile, subFileURI.toFileString()));
+				}
+			}
+		}
+	}
+
+	/**
+	 * This method copy the current rpy project in a new folder given as argument.
+	 * This method doesn't change the URI on which work this class after the copy
+	 * 
+	 * @param newPath
+	 *            the new path for the rpy project
+	 * @return
+	 * 		the URi of the *.rpy file of the project
+	 */
+	public URI copyRpyProjectToNewFolder(final URI newPath) {
+		URI uri = projectURI.trimSegments(1);// to get the parent folder
+		File rpyProjectFolder = new File(uri.toFileString());
+		List<File> duplicatedFile = new ArrayList<File>();
+		if (rpyProjectFolder.exists() && rpyProjectFolder.isDirectory()) {
+			for (File subFile : rpyProjectFolder.listFiles()) {
+				duplicatedFile.addAll(copyFile(subFile, newPath));
+			}
+		}
+		for (File current : duplicatedFile) {
+			URI newURI = URI.createFileURI(current.getPath());
+			if (RpyFileUtils.FILE_EXTENSION_RPY.equals(newURI.fileExtension())) {
+				return newURI;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * This method copy a file to a given path. The File can be a directory. In this case, we create it in the new path with its contents
+	 * 
+	 * @param src
+	 *            the source file (can be a directory
+	 * @param target
+	 *            the target path for the copied file
+	 * @return
+	 * 		the file of copied file (useful in case of folder
+	 */
+	public List<File> copyFile(final File src, final URI target) {
+		List<File> duplicatedFile = new ArrayList<File>();
+		URI copiedFileURI = URI.createFileURI(target.devicePath());
+		copiedFileURI = copiedFileURI.appendSegment(src.getName());
+		if (src.isDirectory()) {
+			File folder = new File(copiedFileURI.devicePath());
+			folder.mkdir();
+			for (File f : src.listFiles()) {
+				duplicatedFile.addAll(copyFile(f, copiedFileURI));
+			}
+		} else {
+			File newFile = new File(copiedFileURI.devicePath());
+			try {
+				Files.copy(src, newFile);
+				duplicatedFile.add(newFile);
+			} catch (IOException e) {
+				Activator.log.error(e);
+			}
+		}
+		return duplicatedFile;
+
+	}
+
+	private URI getNormalizedURI(String fileString) {
+		// TODO : improve me
+		if (fileString.startsWith(OM_ROOT)) {
+				return null;
+		}
+
+		fileString = fileString.replaceAll("\\\\\\\\", "\\\\");
+		fileString = fileString.replaceAll("//", "/");
+		URI uri = URI.createFileURI(fileString);
+		if (uri.isRelative()) {
+			uri = uri.resolve(rpyProjectFolderURI);
+		}
+
+
+		return resSet.getURIConverter().normalize(uri);
+
+	}
+
+	public List<RpyFileHandler> getFiles() {
+		List<RpyFileHandler> ret = new ArrayList<RpyFileHandler>();
+		ret.add(projectFile);
+		ret.addAll(uriToHandler.values());
+		return ret;
+	}
+
+
+	public RpyFileHandler getOwningFileHandler(RpyNode node) {
+		Resource nodeResource = node.eResource();
+		return resourceToHandlerMap.get(nodeResource);
+	}
+
+	public RpyNode getSimpleFeatureReferencedNode(RpyFeature feature) {
+		if (RpyUtil.isDirectReference(feature)) {
+			String id = RpyUtil.getStringValue((SimpleValueList) feature.getValue());
+			RpyNode owningNode = (RpyNode) feature.eContainer();
+			if (owningNode != null) {
+				RpyFileHandler owningHandler = getOwningFileHandler(owningNode);
+				if (owningHandler != null) {
+					return owningHandler.getNodeById(id);
+				}
+			}
+		}
+		return null;
+	}
+
+	public List<RpyNode> getNodes(RpyNodeList nodeList) {
+		List<RpyNode> ret = new ArrayList<RpyNode>();
+		for (RpyNode node : nodeList.getValues()) {
+			if (RpyUtil.RAW_CONTAINER_NAME.equals(node.getName())) {
+				RpyFeatureValue value = RpyUtil.getNodeFeatureValue(node, RpyUtil.RAW_CONTAINER_VALUE_FEATURE_NAME);
+				if (value instanceof RpyNodeList) {
+					ret.addAll(getNodes((RpyNodeList) value));
+				}
+
+			} else if (RpyUtil.isRpyIHandle(node)) {
+				RpyNode referencedNode = getReferencedNodeFromIHandle(node);
+				if (referencedNode != null) {
+					ret.add(referencedNode);
+				}
+			} else if (RpyUtil.isElementRef(node)) {
+				RpyNode referencedNode = getReferencedNodeFromElementRef(node);
+				if (referencedNode != null) {
+					ret.add(referencedNode);
+				}
+			} else {
+				ret.add(node);
+			}
+		}
+
+		return ret;
+	}
+
+
+	/**
+	 * @param node
+	 * @return
+	 */
+	private RpyNode getReferencedNodeFromElementRef(RpyNode node) {
+		String referencedFileName = RpyUtil.getElementFileRef(node);
+		if (referencedFileName != null) {
+			if (referencedFileName.isEmpty()) {
+				// the "fileName" attribute is an empty string, it is a reference in the current file
+				return getReferencedNodeInFileHandler(node, resourceToHandlerMap.get(node.eResource()), true);
+			} else {
+
+				String persistAt = RpyUtil.getElementPersistAt(node);
+				if (persistAt != null) {
+					referencedFileName = persistAt + "/" + referencedFileName;
+					if (!persistAt.startsWith(OM_ROOT)) {
+						URI currentNodeURI;
+						// if the reference is in the rpy file, the path is relative to the rpy_folder
+						if (node.eResource() == projectFile.getRpyFile().eResource()) {
+							currentNodeURI = rpyProjectFolderURI;
+						} else {
+							// else the pas is relative to the current file
+							currentNodeURI = node.eResource().getURI();
+						}
+						currentNodeURI = currentNodeURI.trimSegments(1);
+						referencedFileName = currentNodeURI.toFileString() + "/" + referencedFileName;
+					}
+				} else {
+					URI currentNodeURI = node.eResource().getURI();
+					String resourceURIString = currentNodeURI.toFileString();
+					if (!resourceURIString.startsWith(projectFile.getRpyFile().eResource().getURI().trimSegments(1).toFileString())) {
+						referencedFileName = currentNodeURI.trimSegments(1).toFileString() + File.separator + referencedFileName;
+					}
+				}
+				RpyFileHandler handler = getRpyFileHandler(referencedFileName);
+				if (handler == null) {
+					String filePathWithWrongRef = node.eResource().getURI().toFileString();
+					Activator.log.error(NLS.bind(Messages.FileNotFoundElementReference, new String[] { referencedFileName, RpyUtil.getNodeIndexInFile(node), filePathWithWrongRef }), null);
+				} else {
+					return getReferencedNodeInFileHandler(node, handler, true);
+				}
+
+
+			}
+		}
+		return null;
+	}
+
+
+
+
+	/**
+	 * @param handlerNode
+	 * @return
+	 */
+	private RpyNode getReferencedNodeFromIHandle(RpyNode handlerNode) {
+
+		String id = RpyUtil.getReferencedID(handlerNode);
+
+		// we first check is the referenced element is not a local proxy to previously not found element
+		RpyNode proxy = idToProxyNode.get(id);
+		if (proxy != null) {
+			return proxy;
+		}
+
+		// we first look at the _filename attribute
+		String filePath = RpyUtil.getIHandleFileRef(handlerNode);
+
+		if (filePath == null) {
+			filePath = "";
+		}
+
+		if (filePath.isEmpty()) {
+			// if the _filename feature is an empty string, it can be either in the current file, or in the root project RpyFile
+			RpyNode localNode = getReferencedNodeInFileHandler(handlerNode, resourceToHandlerMap.get(handlerNode.eResource()), false);
+			if (localNode != null) {
+				return localNode;
+			} else {
+				localNode = getReferencedNodeInFileHandler(handlerNode, projectFile, false);
+				if (localNode != null) {
+					return localNode;
+				}
+			}
+		} else {
+
+			RpyFileHandler fileHandler = getRpyFileHandler(filePath);
+
+			if (fileHandler != null) {
+				RpyNode referencedNode = getReferencedNodeInFileHandler(handlerNode, fileHandler, false);
+				if (referencedNode != null) {
+					// ok we got it!
+					return referencedNode;
+				}
+			}
+		}
+
+
+		// here either fileHandler is null (didn't find the referenced filename), either we didn't find
+		// the searched node in the referenced file.
+		// First case can occur for files located in subfolders for instance, and the real path to file should be
+		// found in the fileTable.dat
+		// Second case occurs when the node is indeed in a "subfile" of the root referenced file. The fileTable.dat
+		// should help here as well...
+
+		String referencedSubsystem = RpyUtil.getReferencedSubsystemFromHandle(handlerNode);
+		String referencedClass = RpyUtil.getReferencedClassFromHandle(handlerNode);
+		String referencedName = RpyUtil.getReferencedNameFromHandle(handlerNode);
+		List<String> namesToTry = new ArrayList<String>();
+		String referencedQN = "";
+		if (referencedSubsystem != null) {
+			namesToTry.add(referencedSubsystem);
+			referencedQN += referencedSubsystem;
+		}
+		if (referencedClass != null) {
+			if (referencedSubsystem == null) {
+				namesToTry.add(referencedClass);
+			} else {
+				referencedQN += "::" + referencedClass;
+				namesToTry.add(referencedQN);
+			}
+		}
+		if (referencedName != null) {
+			if (referencedQN.isEmpty()) {
+				namesToTry.add(referencedName);
+			} else {
+				referencedQN += "::" + referencedName;
+				namesToTry.add(referencedQN);
+			}
+		}
+
+		for (String nameToTry : namesToTry) {
+			filePath = aliasToPathMap.get(nameToTry);
+			if (filePath != null) {
+				filePath = "../" + filePath;
+				RpyFileHandler fileHandler = getRpyFileHandler(filePath);
+				if (fileHandler != null) {
+					RpyNode result = getReferencedNodeInFileHandler(handlerNode, fileHandler, false);
+					if (result != null) {
+						return result;
+					}
+				} else {
+					logFileNodeFound(handlerNode, filePath);
+				}
+			}
+		}
+		// if we arrive here, we have not found the node with the fileTable.dat
+		// we give-up
+
+
+		proxy = RpyUtil.createProxyNodeFromHandler(handlerNode);
+		if (proxy != null) {
+			idToProxyNode.put(id, proxy);
+		}
+		return proxy;
+
+	}
+
+
+
+	/**
+	 * @param node
+	 * @param filePath
+	 */
+	private void logFileNodeFound(RpyNode node, String filePath) {
+		String filePathWithWrongRef = node.eResource().getURI().toFileString();
+		Activator.log.error(NLS.bind(Messages.FileNotFoundHandleReference, new String[] { filePath, RpyUtil.getNodeIndexInFile(node), filePathWithWrongRef }), null);
+	}
+
+	/**
+	 * @param referencedURI
+	 * @return
+	 */
+	private RpyFileHandler getRpyFileHandler(String uriString) {
+		boolean isExternal = uriString.startsWith(OM_ROOT);
+		URI referencedURI = getNormalizedURI(uriString);
+		if (referencedURI != null) {
+			RpyFileHandler result = uriToHandler.get(referencedURI.toFileString());
+			if (result == null) {
+				Resource resource = getResource(referencedURI);
+				if (resource != null) {
+					result = new RpyFileHandler(resource, this);
+					uriToHandler.put(referencedURI.toFileString(), result);
+					resourceToHandlerMap.put(resource, result);
+				}
+			}
+			return result;
+		}
+		return null;
+
+	}
+
+	/**
+	 * @param node
+	 * @param handler
+	 * @return
+	 */
+	private RpyNode getReferencedNodeInFileHandler(RpyNode node, RpyFileHandler handler, boolean log) {
+		String id = RpyUtil.getReferencedID(node);
+		RpyNode referencedNode = null;
+		if (id != null) {
+			referencedNode = handler.getNodeById(id);
+		}
+		if (referencedNode != null && RpyUtil.isElementRef(referencedNode)) {
+			return getReferencedNodeFromElementRef(referencedNode);
+		}
+		if (referencedNode == null && log) {
+			logIDNotFound(handler, node);
+		}
+		return referencedNode;
+	}
+
+	/**
+	 * @param id
+	 * @param handler
+	 * @param node
+	 */
+	private void logIDNotFound(RpyFileHandler handler, RpyNode node) {
+		String id = RpyUtil.getReferencedID(node);
+		String filePathWithWrongRef = node.eResource().getURI().toFileString();
+		Activator.log.error(NLS.bind(Messages.NotFoundIDReference, new String[] { id, handler.getRpyFile().eResource().getURI().toFileString(), RpyUtil.getNodeIndexInFile(node), filePathWithWrongRef }), null);
+	}
+
+	public Collection<RpyNode> getAllProxies() {
+		return idToProxyNode.values();
+	}
+
+}
+
+
+
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/importer/utils/RpyUtil.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/importer/utils/RpyUtil.java
new file mode 100644
index 0000000..f4a0f21
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/importer/utils/RpyUtil.java
@@ -0,0 +1,361 @@
+/*****************************************************************************
+ * Copyright (c) 2015 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Sebastien Revol (CEA LIST) sebastien.revol@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.importer.utils;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.papyrus.interoperability.rpy.Activator;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyContent;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFeature;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFeatureValue;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyNode;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyNodeList;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySimpleValueElement;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpySyntaxFactory;
+import org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.SimpleValueList;
+import org.eclipse.xtext.nodemodel.ICompositeNode;
+import org.eclipse.xtext.nodemodel.util.NodeModelUtils;
+
+/**
+ * Provides convenient functions to read {@link org.eclipse.papyrus.interoperability.rpy.parser.rpySyntax.RpyFile} abstract tree
+ * 
+ * @author sr246418
+ *
+ */
+public class RpyUtil {
+
+	public static final String GUID_STRING = "GUID"; //$NON-NLS-1$
+
+	public static final String OLDID_STRING = "OLDID"; //$NON-NLS-1$
+
+	public static final String ID_SEPARATOR = "-"; //$NON-NLS-1$
+
+	public static final String EANNOTATION_SOURCE__RPY_FILENAME = "Rpy Filename"; //$NON-NLS-1$
+
+
+	public static final Object RAW_CONTAINER_NAME = "IRPYRawContainer"; //$NON-NLS-1$
+	public static final String RAW_CONTAINER_VALUE_FEATURE_NAME = "value"; //$NON-NLS-1$
+
+	private static final String ID_FEATURE_NAME = "_id"; //$NON-NLS-1$
+	private static final String IHANDLE_NAME = "IHandle"; //$NON-NLS-1$
+	private static final String ISUBSYSTEM_HANDLE_NAME = "ISubsystemHandle"; //$NON-NLS-1$
+	private static final String INOBJECT_HANDLE_NAME = "INObjectHandle"; //$NON-NLS-1$
+	private static final String ICLASSIFIER_HANDLE_NAME = "IClassifierHandle"; //$NON-NLS-1$
+
+	public static final String HANDLE_FILE_NAME_REF = "_filename"; //$NON-NLS-1$
+	public static final String ELEMENT_FILE_NAME_REF = "fileName"; //$NON-NLS-1$
+	private static final String ELEMENT_PERSIST_AT = "_persistAs"; //$NON-NLS-1$
+//	private static final String OWNER_HANDLE_FEATURE_NAME = "_ownerHandle"; //$NON-NLS-1$
+	private static final String NAME_FEATURE_NAME = "_name"; //$NON-NLS-1$
+	private static final String SUBSYSTEM_FEATURE_NAME = "_subsystem"; //$NON-NLS-1$
+//	private static final String ISUBSYSTEM_NODE_NAME = "ISubsystem"; //$NON-NLS-1$
+	private static final String CLASS_FEATURE_NAME = "_class"; //$NON-NLS-1$
+	private static final String M2_CLASS_FEATURE_NAME = "_m2Class"; //$NON-NLS-1$
+
+	public static List<String> SUPPORTED_EXTENSIONS = new ArrayList<String>();
+	public static Map<String, String> nodeTypeToExtensionMap = new HashMap<String, String>();
+	private static final String FILE_EXTENSION_PROPERTIES = "fileextension.properties"; //$NON-NLS-1$
+	private static final String NULL_STRING = "NULL"; //$NON-NLS-1$
+
+	public static final String OWNED_ELEMENT_FEATURE_NAME = "graphElements"; //$NON-NLS-1$
+	public static final String UNKNWON_CLASS_NAME = "UnknownType"; //$NON-NLS-1$
+
+	static {
+		Properties prop = new Properties();
+		InputStream input = null;
+		try {
+			input = RpyUtil.class.getResourceAsStream(FILE_EXTENSION_PROPERTIES);
+
+			prop.load(input);
+			for (Map.Entry<Object, Object> entry : prop.entrySet()) {
+				SUPPORTED_EXTENSIONS.add((String) entry.getKey());
+				String valueString = (String) entry.getValue();
+				String[] valueTable = valueString.split(","); //$NON-NLS-1$
+				for (String value : valueTable) {
+					nodeTypeToExtensionMap.put(value, (String) entry.getKey());
+				}
+			}
+
+		} catch (IOException ex) {
+			ex.printStackTrace();
+		} finally {
+			if (input != null) {
+				try {
+					input.close();
+				} catch (IOException e) {
+					e.printStackTrace();
+				}
+			}
+		}
+	}
+
+
+	public static List<RpyFeature> getNodeFeatures(RpyNode context) {
+		List<RpyFeature> ret = new ArrayList<RpyFeature>();
+		for (RpyContent content : context.getContents()) {
+			if (content instanceof RpyFeature) {
+				ret.add((RpyFeature) content);
+			}
+		}
+		return ret;
+	}
+
+	/**
+	 * Returns the value of a given feature, simplifying the case when the value
+	 * is an IRPYRawContainer. In that case if directly return the "value" subfeature
+	 * 
+	 * @param feature
+	 *            the feature owning the desired value
+	 * @return the feature value of the <code>IRPYRawContainer.value</code> subfeature
+	 */
+	public static RpyFeatureValue getFeatureValue(RpyFeature feature) {
+		RpyFeatureValue value = feature.getValue();
+		if (value instanceof RpyNodeList && ((RpyNodeList) value).getValues().size() == 1) {
+			RpyNode node = ((RpyNodeList) value).getValues().get(0);
+			if (RAW_CONTAINER_NAME.equals(node.getName())) {
+				return getNodeFeatureValue(node, RAW_CONTAINER_VALUE_FEATURE_NAME);
+			}
+		}
+		return value;
+	}
+
+	public static RpyFeatureValue getNodeFeatureValue(RpyNode context, String featureName) {
+		for (RpyFeature feature : getNodeFeatures(context)) {
+			if (featureName.equals(feature.getName())) {
+				return getFeatureValue(feature);
+			}
+		}
+		return null;
+	}
+
+	public static String getID(RpyNode node) {
+		if (!isRpyIHandle(node)) {
+			return getNodeFeatureValueAsString(node, ID_FEATURE_NAME);
+		}
+		return null;
+
+	}
+
+	public static String getNodeFeatureValueAsString(RpyNode context, String featureName) {
+		RpyFeatureValue value = getNodeFeatureValue(context, featureName);
+		if (value instanceof SimpleValueList) {
+			return getStringValue((SimpleValueList) value);
+		}
+		return null;
+	}
+
+
+	/**
+	 * @param value
+	 * @return
+	 */
+	public static String getStringValue(SimpleValueList value) {
+		if (!value.getValueElements().isEmpty()) {
+			final StringBuilder builder = new StringBuilder();
+			if (value.isIsGUID()) {
+				builder.append(GUID_STRING);
+				builder.append(ID_SEPARATOR);
+			}
+			if (value.isIsOldID()) {
+				builder.append(OLDID_STRING);
+				builder.append(ID_SEPARATOR);
+			}
+			for (RpySimpleValueElement simpleValueElem : value.getValueElements()) {
+				for (String val : simpleValueElem.getValues()) {
+					builder.append(val);
+				}
+			}
+			return builder.toString();
+		}
+		return null;
+	}
+
+
+	public static boolean containsHandle(RpyNodeList nodeList) {
+		for (RpyNode node : nodeList.getValues()) {
+			if (isRpyIHandle(node)) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * @param node
+	 * @return
+	 */
+	public static boolean isRpyIHandle(RpyNode node) {
+		return IHANDLE_NAME.equals(node.getName()) || ISUBSYSTEM_HANDLE_NAME.equals(node.getName()) || INOBJECT_HANDLE_NAME.equals(node.getName()) || ICLASSIFIER_HANDLE_NAME.equals(node.getName());
+	}
+
+	public static String getIHandleFileRef(RpyNode node) {
+		return getPathStringInFeature(node, HANDLE_FILE_NAME_REF);
+	}
+
+	public static String getElementFileRef(RpyNode node) {
+		// we are looking for the "fileName" feature
+		String fileName = getPathStringInFeature(node, ELEMENT_FILE_NAME_REF);
+		if (fileName != null) {
+
+			String nodeType = node.getName();
+			String extension = nodeTypeToExtensionMap.get(nodeType);
+			if (extension != null) {
+				fileName += "." + extension; //$NON-NLS-1$
+				return fileName;
+			} else {
+				Activator.log.error(NLS.bind(Messages.UnknownExtension, new String[] { nodeType, fileName, getNodeIndexInFile(node), node.eResource().getURI().toFileString() }), null);
+			}
+
+
+
+		}
+		return null;
+	}
+
+
+	public static String getElementPersistAt(RpyNode node) {
+		return getPathStringInFeature(node, ELEMENT_PERSIST_AT);
+	}
+
+
+
+	private static String getPathStringInFeature(RpyNode node, String featurePath) {
+		String stringValue = getNodeFeatureValueAsString(node, featurePath);
+		if (stringValue != null && stringValue.startsWith("\"")) { //$NON-NLS-1$
+			stringValue = stringValue.replaceAll("\"", ""); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+		return stringValue;
+	}
+
+
+	public static boolean isDirectReference(RpyFeature feature) {
+		if (feature.getValue() instanceof SimpleValueList) {
+			SimpleValueList simpleValueList = (SimpleValueList) feature.getValue();
+			return (simpleValueList.isIsGUID() || simpleValueList.isIsOldID()) && !feature.getName().equals(ID_FEATURE_NAME);
+		}
+		return false;
+	}
+
+	public static String getReferencedID(RpyNode handleOrReference) {
+		if (isElementRef(handleOrReference) || isRpyIHandle(handleOrReference)) {
+			return getNodeFeatureValueAsString(handleOrReference, ID_FEATURE_NAME);
+		}
+		return null;
+	}
+
+	public static boolean isElementRef(RpyNode node) {
+		return getElementFileRef(node) != null;
+	}
+
+
+	/**
+	 * @param node
+	 * @return
+	 */
+	public static String getNodeIndexInFile(RpyNode node) {
+		ICompositeNode xtextNode = NodeModelUtils.getNode(node);
+		String index = "-"; //$NON-NLS-1$
+		if (xtextNode != null) {
+			index = Integer.toString(xtextNode.getStartLine());
+		}
+		return index;
+	}
+
+
+	/**
+	 * @param node
+	 * @return
+	 */
+	public static String getReferencedSubsystemFromHandle(RpyNode node) {
+		String subSystemName = getPathStringInFeature(node, SUBSYSTEM_FEATURE_NAME);
+		if (subSystemName != null && !subSystemName.isEmpty()) {
+			return subSystemName;
+		}
+
+		else {
+			return null;
+		}
+
+	}
+
+	public static String getReferencedClassFromHandle(RpyNode node) {
+		String className = getPathStringInFeature(node, CLASS_FEATURE_NAME);
+		if (className != null && !className.isEmpty()) {
+			return className;
+		}
+
+		else {
+			return null;
+		}
+
+	}
+
+
+	/**
+	 * @param node
+	 * @return
+	 */
+	public static String getReferencedNameFromHandle(RpyNode node) {
+		String name = getPathStringInFeature(node, NAME_FEATURE_NAME);
+		if (name != null && !name.isEmpty()) {
+			return name;
+		} else {
+			return null;
+		}
+	}
+
+
+	/**
+	 * @param rpyFeatureValue
+	 * @return
+	 */
+	public static boolean isNull(SimpleValueList rpyFeatureValue) {
+		return NULL_STRING.equals(getStringValue(rpyFeatureValue));
+	}
+
+
+	/**
+	 * This method is called when a handler can't be resolved (element coming from Rpy Tool licensed file)
+	 * 
+	 * @param handlerNode
+	 *            an handler node
+	 * @return
+	 * 		the node creating representing this handler
+	 */
+	public static RpyNode createProxyNodeFromHandler(RpyNode handlerNode) {
+		String m2Class = getNodeFeatureValueAsString(handlerNode, M2_CLASS_FEATURE_NAME);
+		if (m2Class != null) {
+			RpyNode ret = RpySyntaxFactory.eINSTANCE.createRpyNode();
+			ret.setName(m2Class.replaceAll("\"", "")); //$NON-NLS-1$ //$NON-NLS-2$
+			for (RpyFeature feature : getNodeFeatures(handlerNode)) {
+				if (ID_FEATURE_NAME.equals(feature.getName()) || NAME_FEATURE_NAME.equals(feature.getName()) || HANDLE_FILE_NAME_REF.equals(feature.getName())) {
+					ret.getContents().add(EcoreUtil.copy(feature));
+				}
+			}
+			return ret;
+		}
+		return null;
+	}
+
+
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/importer/utils/fileextension.properties b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/importer/utils/fileextension.properties
new file mode 100644
index 0000000..3e95b41
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/importer/utils/fileextension.properties
@@ -0,0 +1,12 @@
+ctd=IComponentDiagram
+sbs=ISubsystem,IProfile
+cmp=IComponent
+omd=IDiagram
+ucd=IUCDiagram
+clb=ICollaborationDiagram
+pld=IPanelDiagram
+rpy=IProject
+cls=IClass,IUseCase
+msc=IMSC
+std=IStructureDiagram
+dat=fileTable
\ No newline at end of file
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/importer/utils/messages.properties b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/importer/utils/messages.properties
new file mode 100644
index 0000000..cb764b6
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/importer/utils/messages.properties
@@ -0,0 +1,13 @@
+FailedToLoadTable = Could not load Rpy fileTable {0}.
+FailedToLoadResource =  Could not load Rpy resource {0}. It doesn't seem to be a Rpy resource.
+IgnoredSubFile = Rpy unsupported extension: {0}, this file is not loaded
+ResourceLoading = Loading resource {0}
+GenericFileNotFound =Failed to load resource {0}
+FileNotFoundHandleReference = Could not find the file {0} referenced by an IHandle at line {1} of file {2}
+FileNotFoundElementReference = Could not find the file {0} referenced by an Element at line {1} of file {2}
+NotFoundIDReference = Could not find the element with ID {0} in file {1} referenced by an Object at line {2} of file {3}
+FileAliasNotResolved = Could not resolve alias {0} referenced by an Element at line {1} of file {2}
+UnknownExtension = Unknown extension for NodeType {0}, while looking for referenced file  {1} at line {2} of file {3}
+IDNotFoundInHandleRefAndInFileTable = Element with ID {0} not found in file {1} and could not find any corresponding alias for {2} in fileTable.dat, referenced by an IHandle at line {3} of file {4}. Creating a proxy node for it.
+
+FeatureNotFound = Could not find feature {0} in EClass {1}, coming from line {2} in file  {3}  
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/messages/Messages.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/messages/Messages.java
new file mode 100644
index 0000000..cc9cbde
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/messages/Messages.java
@@ -0,0 +1,34 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.messages;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * @author VL222926
+ *
+ */
+public class Messages extends NLS {
+	private static final String BUNDLE_NAME = "org.eclipse.papyrus.interoperability.rpy.messages.messages"; //$NON-NLS-1$
+
+	public static String TransformationRpyWizard_WizardTitle;
+	static {
+		// initialize resource bundle
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+	}
+
+	private Messages() {
+	}
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/messages/messages.properties b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/messages/messages.properties
new file mode 100644
index 0000000..98cc309
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/messages/messages.properties
@@ -0,0 +1 @@
+TransformationRpyWizard_WizardTitle=Rpy Transformation Wizard
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/transformations/ImportTransformations.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/transformations/ImportTransformations.java
new file mode 100644
index 0000000..e6e0632
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/transformations/ImportTransformations.java
@@ -0,0 +1,547 @@
+/*****************************************************************************
+ * Copyright (c) 2013, 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:
+ *  Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Initial API and implementation
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.transformations;
+
+import java.io.OutputStreamWriter;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.MultiStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+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.common.util.WrappedException;
+import org.eclipse.emf.ecore.EAnnotation;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+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.ExtendedMetaData;
+import org.eclipse.emf.ecore.xmi.XMIResource;
+import org.eclipse.emf.ecore.xmi.XMLResource;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl;
+import org.eclipse.gmf.runtime.emf.core.resources.GMFResource;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.m2m.qvt.oml.BasicModelExtent;
+import org.eclipse.m2m.qvt.oml.ExecutionContext;
+import org.eclipse.m2m.qvt.oml.ExecutionContextImpl;
+import org.eclipse.m2m.qvt.oml.ExecutionDiagnostic;
+import org.eclipse.m2m.qvt.oml.ModelExtent;
+import org.eclipse.m2m.qvt.oml.TransformationExecutor;
+import org.eclipse.m2m.qvt.oml.util.Trace;
+import org.eclipse.m2m.qvt.oml.util.WriterLog;
+import org.eclipse.papyrus.infra.emf.utils.EMFHelper;
+import org.eclipse.papyrus.infra.tools.util.ListHelper;
+import org.eclipse.papyrus.interoperability.common.concurrent.ExecutorsPool;
+import org.eclipse.papyrus.interoperability.common.concurrent.ResourceAccessHelper;
+import org.eclipse.papyrus.interoperability.rpy.Activator;
+import org.eclipse.uml2.uml.resource.UMLResource;
+import org.eclipse.uml2.uml.util.UMLUtil;
+
+/**
+ * Executes a single RpyTool-to-Papyrus transformation
+ *
+ * 
+ */
+public class ImportTransformations {
+
+	ResourceSetImpl resourceSet;
+
+	// SourceURI is the input
+	protected final URI sourceURI;
+
+	// targetURI is computed during the transformation
+	protected URI targetURI;
+
+	protected ModelExtent outUML, outNotation, outSashModel, primitivesCTypesModel, inPapyrusProfiles, inRpyModel,
+			inPapyrusLibraries, umlPrimitivesTypes, ansiCLibrary, sysML11Profile;
+
+	protected Trace executionTrace;
+
+	protected Job job;
+
+	protected Resource umlResource;
+
+	protected boolean complete = false;
+
+	protected List<Diagram> diagramsToDelete = new LinkedList<Diagram>();
+
+	protected static final ExecutorsPool executorsPool = new ExecutorsPool(2);
+
+	/**
+	 * EPackages corresponding to source native profiles with specific support
+	 * in the transformation
+	 */
+	protected static final Set<EPackage> sourceEPackages = new HashSet<EPackage>();
+
+	protected static final Set<String> supportedDiagramIds = new HashSet<String>();
+
+	public ImportTransformations(URI sourceURI) {
+		Assert.isNotNull(sourceURI);
+		this.sourceURI = sourceURI;
+	}
+
+	// MemoryLeak: Don't rely on BasicDiagnostic.toIStatus
+	// The source Diagnostic contains references to the QVTo ModelExtents,
+	// referencing the Model elements (used in #extractPapyrusProfiles())
+	// When using the standard conversion, these references are not discarded
+	protected static IStatus createStatusFromDiagnostic(Diagnostic diagnostic) {
+		return new Status(diagnostic.getSeverity(), diagnostic.getSource(), diagnostic.getMessage(),
+				diagnostic.getException());
+	}
+
+	/**
+	 * Actually runs the transformation
+	 *
+	 * @param monitor
+	 * @return The transformation IStatus
+	 * 
+	 * 
+	 */
+	public IStatus run() {
+
+		//
+		// INITIALIZATION / LOADING
+		//
+
+		initResourceSet();
+
+		List<ModelExtent> extents = getModelExtents();
+
+		String statusMessage = String.format("Import %s", getModelName());
+		MultiStatus generationStatus = new MultiStatus(Activator.PLUGIN_ID, IStatus.OK, statusMessage, null);
+
+		ExecutionContext context = createExecutionContext(generationStatus);
+
+		IStatus result; // Result of an individual transformation (Will be
+						// aggregated to the complete GenerationStatus)
+
+		// Diagrams
+		Collection<URI> transformations = getDiagramTransformationURIs();
+
+		// Semantic
+		// Collection<URI> transformations = getSemanticTransformationURI();
+
+		for (URI transformationURI : transformations) {
+
+			// TransformationExecutor.BlackboxRegistry.INSTANCE.registerModules(Rpy2PapyrusNotationBlackboxes.class);
+
+			TransformationExecutor executor = new TransformationExecutor(transformationURI);
+			ExecutionDiagnostic resultTransdo = executor.execute(context, extents.toArray(new ModelExtent[0]));
+			result = createStatusFromDiagnostic(resultTransdo);
+			System.out.print(resultTransdo.getMessage());
+			generationStatus.add(result);
+		}
+
+		if (generationStatus.getSeverity() <= Diagnostic.WARNING) {
+
+			URI notationModelURI = null;
+			URI sashModelURI = null;
+
+			targetURI = convertToPapyrus(sourceURI, "uml");
+			notationModelURI = convertToPapyrus(sourceURI, "notation");
+			sashModelURI = convertToPapyrus(sourceURI, "di");
+
+			umlResource = createUMLResource(resourceSet, sourceURI, targetURI);
+
+			// this resource contains the result of the qvto transfo
+			List<EObject> outUMLObjects = getInOutUMLModel().getContents();
+			umlResource.getContents().addAll(outUMLObjects);
+
+			GMFResource notationResource = new GMFResource(notationModelURI); // GMF
+																				// Resource
+																				// content
+																				// type?
+			resourceSet.getResources().add(notationResource);
+			List<EObject> outNotationObjects = getInoutNotationModel().getContents();
+			notationResource.getContents().addAll(outNotationObjects);
+
+			XMIResource sashResource = new XMIResourceImpl(sashModelURI);
+			resourceSet.getResources().add(sashResource);
+			List<EObject> sashModelObjects = getOutSashModel().getContents();
+			sashResource.getContents().addAll(sashModelObjects);
+
+			configureResource(sashResource);
+			configureResource(notationResource);
+			configureResource((XMIResource) umlResource);
+
+			Collection<Resource> resourcesToSave = new HashSet<Resource>();
+			resourcesToSave.add(umlResource);
+			resourcesToSave.add(notationResource);
+			resourcesToSave.add(sashResource);
+
+			for (Resource resource : resourcesToSave) {
+				try {
+					cleanMetadataAnnotations(resource);
+					ResourceAccessHelper.INSTANCE.saveResource(resource, null);
+				} catch (Exception ex) {
+					Activator.log.error(ex);
+					generationStatus.add(
+							new Status(IStatus.ERROR, Activator.PLUGIN_ID, "An exception occurred during save", ex));
+				}
+			}
+		} else {
+			System.out.print("can not execute transfo");
+		}
+
+		unloadResourceSet(this.resourceSet);
+
+		this.resourceSet = null;
+		this.umlResource = null;
+		this.outNotation = this.outSashModel = this.outUML = this.primitivesCTypesModel = null;
+
+		return generationStatus;
+	}
+
+	protected void configureResource(XMIResource resource) {
+		Map<Object, Object> saveOptions = new HashMap<Object, Object>();
+
+		// default save options.
+		saveOptions.put(XMLResource.OPTION_DECLARE_XML, Boolean.TRUE);
+		saveOptions.put(XMLResource.OPTION_PROCESS_DANGLING_HREF, XMLResource.OPTION_PROCESS_DANGLING_HREF_DISCARD);
+		saveOptions.put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE);
+		saveOptions.put(XMIResource.OPTION_USE_XMI_TYPE, Boolean.TRUE);
+		saveOptions.put(XMLResource.OPTION_SAVE_TYPE_INFORMATION, Boolean.TRUE);
+		saveOptions.put(XMLResource.OPTION_SKIP_ESCAPE_URI, Boolean.FALSE);
+		saveOptions.put(XMLResource.OPTION_ENCODING, "UTF-8");
+
+		// see bug 397987: [Core][Save] The referenced plugin models are saved
+		// using relative path
+		saveOptions.put(XMLResource.OPTION_URI_HANDLER,
+				new org.eclipse.emf.ecore.xmi.impl.URIHandlerImpl.PlatformSchemeAware());
+
+		resource.setEncoding("UTF-8");
+		resource.getDefaultSaveOptions().putAll(saveOptions);
+	}
+
+	/**
+	 * Executes the transformation (Asynchronous)
+	 *
+	 * @param urisToImport
+	 */
+
+	public URI getTargetURI() {
+		return targetURI;
+	}
+
+	/**
+	 * Initializes the resource set, and resolve all dependencies
+	 */
+	protected void initResourceSet() {
+		resourceSet = new ResourceSetImpl();
+		synchronized (UMLUtil.class) {
+			UMLUtil.init(resourceSet);
+		}
+		resourceSet.getLoadOptions().put(XMLResource.OPTION_DEFER_ATTACHMENT, true);
+		resourceSet.getLoadOptions().put(XMLResource.OPTION_DEFER_IDREF_RESOLUTION, true);
+		resourceSet.getLoadOptions().put(XMLResource.OPTION_RECORD_UNKNOWN_FEATURE, Boolean.TRUE);
+		resourceSet.getLoadOptions().put(XMLResource.OPTION_USE_PACKAGE_NS_URI_AS_LOCATION, Boolean.FALSE);
+
+		try {
+			resourceSet.getResource(sourceURI, true);
+
+		} catch (Exception ex) {
+			Activator.log.error("An error occurred while loading " + getModelName(), ex);
+		}
+	}
+
+	// protected ModelExtent getInPapyrusProfiles() {
+	// if (inPapyrusProfiles == null) {
+	// loadInPapyrusProfiles();
+	// }
+	//
+	// return inPapyrusProfiles;
+	// }
+
+	// protected ModelExtent getInPapyrusLibraries() {
+	// if (inPapyrusLibraries == null) {
+	// loadInPapyrusLibraries();
+	// }
+	//
+	// return inPapyrusLibraries;
+	// }
+
+	protected Diagnostic loadInPapyrusProfiles() {
+		if (inPapyrusProfiles != null) {
+			return Diagnostic.OK_INSTANCE;
+		}
+
+		List<String> missingProfiles = new LinkedList<String>();
+
+		List<EObject> allContents = new LinkedList<EObject>();
+		// try {
+		// URI fcmProfile1 =
+		// URI.createURI("pathmap://FCM_PROFILES/FCM.profile.uml");
+		// Resource fcmProfile = resourceSet.getResource(fcmProfile1, true);
+		// checkResource(fcmProfile);
+		// allContents.addAll(fcmProfile.getContents());
+		// } catch (WrappedException ex) {
+		// missingProfiles.add("FCM Profile");
+		// }
+
+		inPapyrusProfiles = new BasicModelExtent(allContents);
+
+		String message;
+		int code;
+		if (missingProfiles.isEmpty()) {
+			message = "OK";
+			code = Diagnostic.OK;
+		} else {
+			message = "The following Papyrus profiles cannot be found: "
+					+ ListHelper.deepToString(missingProfiles, ", ");
+			code = Diagnostic.ERROR;
+		}
+
+		Diagnostic diagnostic = new BasicDiagnostic(code, Activator.PLUGIN_ID, code, message, null);
+
+		return diagnostic;
+	}
+
+	protected Diagnostic loadInPapyrusLibraries() {
+		if (inPapyrusLibraries != null) {
+			return Diagnostic.OK_INSTANCE;
+		}
+
+		List<String> missingLibraries = new LinkedList<String>();
+
+		List<EObject> allContents = new LinkedList<EObject>();
+		try {
+			URI ancyLib = URI.createURI("pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml");
+			Resource ancyLibRes = resourceSet.getResource(ancyLib, true);
+			checkResource(ancyLibRes);
+			allContents.addAll(ancyLibRes.getContents());
+		} catch (WrappedException ex) {
+			missingLibraries.add("Ancy C Library");
+		}
+
+		inPapyrusLibraries = new BasicModelExtent(allContents);
+
+		String message;
+		int code;
+		if (missingLibraries.isEmpty()) {
+			message = "OK";
+			code = Diagnostic.OK;
+		} else {
+			message = "The following Papyrus libraries cannot be found: "
+					+ ListHelper.deepToString(missingLibraries, ", ");
+			code = Diagnostic.ERROR;
+		}
+
+		Diagnostic diagnostic = new BasicDiagnostic(code, Activator.PLUGIN_ID, code, message, null);
+
+		return diagnostic;
+	}
+
+	protected void checkResource(Resource resource) {
+		Assert.isNotNull(resource);
+		Assert.isTrue(!resource.getContents().isEmpty(), "The resource " + resource.getURI() + " is empty");
+		for (EObject rootElement : resource.getContents()) {
+			Assert.isTrue(!rootElement.eIsProxy());
+		}
+	}
+
+	protected Resource createUMLResource(ResourceSet resourceSet, URI sourceResourceURI, URI targetResourceURI) {
+		Resource resource = resourceSet.createResource(targetResourceURI,
+				UMLResource.UML_5_0_0_CONTENT_TYPE_IDENTIFIER);
+
+		return resource;
+	}
+
+	protected URI convertToPapyrus(URI rhpURI, String extension) {
+
+		return rhpURI.trimFileExtension().appendFileExtension(extension);
+	}
+
+	// the transfo parameters :
+	protected List<ModelExtent> getModelExtents() {
+		List<ModelExtent> allExtents = new LinkedList<ModelExtent>();
+		allExtents.add(getInRpyModel());
+		allExtents.add(getInoutNotationModel());
+		allExtents.add(getInOutUMLModel());
+		allExtents.add(getPrimitivesCUMLModel());
+		allExtents.add(getSysML1_1Profile());
+		allExtents.add(getInUMLPrimitivesTypes());
+		return allExtents;
+	}
+
+	public ModelExtent getInUMLPrimitivesTypes() {
+		URI umlPrimitivesTypesURI = URI.createURI("pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml");
+		Resource umlPrimitivesTypesResource = resourceSet.getResource(umlPrimitivesTypesURI, true);
+		umlPrimitivesTypes = new BasicModelExtent(umlPrimitivesTypesResource.getContents());
+		return umlPrimitivesTypes;
+	}
+
+	// public ModelExtent getANSICLibrary() {
+	// URI umlPrimitivesTypesURI = URI.createURI("pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml");
+	// Resource umlPrimitivesTypesResource = resourceSet.getResource(umlPrimitivesTypesURI, true);
+	// ansiCLibrary = new BasicModelExtent(umlPrimitivesTypesResource.getContents());
+	// return ansiCLibrary;
+	// }
+
+	public ModelExtent getInRpyModel() {
+		if (inRpyModel == null) {
+			Resource resource = resourceSet.getResource(sourceURI, true);
+			inRpyModel = new BasicModelExtent(resource.getContents());
+		}
+		return inRpyModel;
+	}
+
+	public ModelExtent getSysML1_1Profile() {
+		URI sysMLProfile = URI.createURI("pathmap://SysML_PROFILES/SysML.profile.uml");
+		Resource sysProfile = resourceSet.getResource(sysMLProfile, true);
+		sysML11Profile = new BasicModelExtent(sysProfile.getContents());
+		return sysML11Profile;
+	}
+
+	public ModelExtent getPrimitivesCUMLModel() {
+
+		URI primitiveTypesURI = URI.createURI("pathmap://PapyrusC_Cpp_LIBRARIES/AnsiCLibrary.uml");
+
+		Resource primitiveTypes = resourceSet.getResource(primitiveTypesURI, true);
+
+		primitivesCTypesModel = new BasicModelExtent(primitiveTypes.getContents());
+
+		return primitivesCTypesModel;
+	}
+
+	public ModelExtent getInOutUMLModel() {
+		if (outUML == null)
+
+			outUML = new BasicModelExtent();
+
+		return outUML;
+	}
+
+	/*
+	 * Notation model is initially empty, but will be filled successively by
+	 * each transformation
+	 */
+	public ModelExtent getInoutNotationModel() {
+		if (outNotation == null) {
+			outNotation = new BasicModelExtent();
+		}
+
+		return outNotation;
+	}
+
+	protected ModelExtent getOutSashModel() {
+		if (outSashModel == null) {
+			outSashModel = new BasicModelExtent();
+		}
+
+		return outSashModel;
+	}
+
+	static {
+		supportedDiagramIds.addAll(Arrays.asList(new String[] { "Class", // Includes
+																			// Profiles
+				"Statechart", }));
+	}
+
+	// TODO never call, called from the Rpy2PapyrusNotation transform to make the link between uml created elements and their representation
+	protected Collection<URI> getSemanticTransformationURI() {
+		return ListHelper.asList(new URI[] { getTransformationURI("Rpy2PapyrusSemanticElements"),
+
+		});
+
+	}
+
+	protected Collection<URI> getDiagramTransformationURIs() {
+		return ListHelper.asList(new URI[] { getTransformationURI("Rpy2PapyrusNotation"),
+
+		});
+	}
+
+	protected URI getTransformationURI(String transformationName) {
+		return URI.createPlatformPluginURI(
+				String.format("%s/transform/%s.qvto", Activator.PLUGIN_ID, transformationName), true); //$NON-NLS-1$
+	}
+
+	public String getModelName() {
+		return URI.decode(sourceURI.lastSegment());
+	}
+
+	protected ExecutionContext createExecutionContext(final MultiStatus generationStatus) {
+		ExecutionContextImpl context = new ExecutionContextImpl();
+		context.setConfigProperty("keepModeling", true); //$NON-NLS-1$
+		// TODO : exist in RSA, isn't it ?
+		// context.setConfigProperty(TransformationUI.MONITOR);
+
+		context.setLog(new WriterLog(new OutputStreamWriter(System.out)) {
+
+			@Override
+			public void log(String message) {
+				super.log(message);
+			}
+
+			@Override
+			public void log(String message, Object param) {
+				super.log(message, param);
+			}
+
+			@Override
+			public void log(int level, String message) {
+				super.log(level, message);
+				if (level >= 1) {
+					generationStatus.merge(new Status(level, Activator.PLUGIN_ID, message));
+				}
+
+			}
+
+			@Override
+			public void log(int level, String message, Object param) {
+				super.log(level, message, param);
+				if (level >= 1) {
+					generationStatus.merge(new Status(level, Activator.PLUGIN_ID, message + ", data:" + param));
+				}
+			}
+		});
+
+		return context;
+	}
+
+	protected void unloadResourceSet(ResourceSet resourceSet) {
+		EMFHelper.unload(resourceSet);
+	}
+
+	/**
+	 * @param resource
+	 */
+	private void cleanMetadataAnnotations(Resource resource) {
+		// Bug 471684: UML2.x to UML2.5 creates (invalid) Ecore Metadata
+		// EAnnotations, which then cause OCL validation to fail
+		// Remove these EAnnotations from the model to avoid side effects
+		Iterator<EObject> rootElementsIterator = resource.getContents().iterator();
+		while (rootElementsIterator.hasNext()) {
+			EObject root = rootElementsIterator.next();
+			if (root instanceof EAnnotation) {
+				EAnnotation annotation = (EAnnotation) root;
+				if (ExtendedMetaData.ANNOTATION_URI.equals(annotation.getSource())) {
+					rootElementsIterator.remove();
+				}
+			}
+		}
+	}
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/transformations/RpyDependencyAnalysisHelper.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/transformations/RpyDependencyAnalysisHelper.java
new file mode 100644
index 0000000..197af8b
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/transformations/RpyDependencyAnalysisHelper.java
@@ -0,0 +1,63 @@
+/*****************************************************************************
+ * Copyright (c) 2015 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.transformations;
+
+import java.util.Set;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.xml.type.AnyType;
+import org.eclipse.papyrus.interoperability.common.MigrationParameters.ThreadConfig;
+import org.eclipse.papyrus.interoperability.common.transformation.AbstractDependencyAnalysisHelper;
+import org.eclipse.papyrus.interoperability.rpy.importer.utils.RpyFileUtils;
+import org.eclipse.uml2.uml.Element;
+
+import com.google.common.collect.Sets;
+
+/**
+ * 
+ * @author Vincent Lorenzo
+ *
+ */
+public class RpyDependencyAnalysisHelper extends AbstractDependencyAnalysisHelper {
+
+	protected final static Set<String> rpyExtensions = Sets.newHashSet(RpyFileUtils.UML_RPY_FILE, RpyFileUtils.FILE_EXTENSION_RPY);
+
+	protected final static String rpyProfileExtension = RpyFileUtils.UML_RPY_FILE;
+
+	public RpyDependencyAnalysisHelper(final ThreadConfig config) {
+		super(config, rpyExtensions, rpyProfileExtension);
+	}
+
+	// TODO : not really sure of this part...
+	@Override
+	protected boolean isInvalidStereotypeApplication(EObject eObject) {
+		if (eObject instanceof Element) {
+			return false;
+		}
+
+		// The package is not resolved: probably a missing profile
+		if (eObject instanceof AnyType) {
+			return true;
+		}
+
+		// If the package is resolved but is contained in an EPX resource, it
+		// needs to be mapped to the Papyrus equivalent
+		EPackage ePackage = eObject.eClass().getEPackage();
+		if (RpyFileUtils.UML_RPY_FILE.equals(ePackage.eResource().getURI().fileExtension())) {
+			return true;
+		}
+
+		return false;
+	}
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/transformations/RpyImportTransformation.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/transformations/RpyImportTransformation.java
new file mode 100644
index 0000000..4ca82ee
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/transformations/RpyImportTransformation.java
@@ -0,0 +1,545 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *   
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.transformations;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.MultiStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EAnnotation;
+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.xmi.XMIResource;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl;
+import org.eclipse.gmf.runtime.emf.core.resources.GMFResource;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.Style;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.m2m.internal.qvt.oml.library.Context;
+import org.eclipse.m2m.qvt.oml.BasicModelExtent;
+import org.eclipse.m2m.qvt.oml.ExecutionContextImpl;
+import org.eclipse.m2m.qvt.oml.ModelExtent;
+import org.eclipse.papyrus.infra.internationalization.resource.InternationalizationResource;
+import org.eclipse.papyrus.infra.internationalization.utils.InternationalizationResourceOptionsConstants;
+import org.eclipse.papyrus.infra.internationalization.utils.PropertiesFilesUtils;
+import org.eclipse.papyrus.infra.tools.util.ListHelper;
+import org.eclipse.papyrus.interoperability.common.MigrationParameters.ThreadConfig;
+import org.eclipse.papyrus.interoperability.common.concurrent.ResourceAccessHelper;
+import org.eclipse.papyrus.interoperability.common.transformation.AbstractImportTransformation;
+import org.eclipse.papyrus.interoperability.common.transformation.IDependencyAnalysisHelper;
+import org.eclipse.papyrus.interoperability.rpy.Activator;
+import org.eclipse.papyrus.interoperability.rpy.xmi.PreserveRpySemanticIDHelper;
+import org.eclipse.papyrus.uml.internationalization.utils.UMLInternationalizationKeyResolver;
+import org.eclipse.uml2.uml.resource.UMLResource;
+
+/**
+ * @author Vincent Lorenzo
+ *
+ */
+public class RpyImportTransformation extends AbstractImportTransformation {
+
+	/**
+	 * The file used to store the labels defined in the Rhaposdy Model
+	 */
+	private InternationalizationResource propertiesResource;
+
+	public RpyImportTransformation(URI sourceURI, ThreadConfig config, IDependencyAnalysisHelper analysisHelper) {
+		super(sourceURI, config, analysisHelper);
+		DEBUG = true;
+	}
+
+	public RpyImportTransformation(URI sourceURI) {
+		super(sourceURI);
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.interoperability.rpy..transformations.NEW_AbstractImportTransformation_NEW#run(org.eclipse.core.runtime.IProgressMonitor)
+	 *
+	 * @param monitor
+	 * @return
+	 */
+	@Override
+	protected IStatus run(IProgressMonitor monitor) {
+		//
+		// INITIALIZATION / LOADING
+		//
+
+		monitor.subTask("Loading source model " + getModelName());
+
+		long startLoad = System.nanoTime();
+		initResourceSet(monitor);
+
+		int numberOfElements = countSupportedElements();
+
+		monitor.beginTask("Importing " + getModelName(), numberOfElements);
+
+		monitor.subTask("Loading transformations (This may take a few seconds for the first import)...");
+
+		loadTransformations(monitor);
+
+		List<ModelExtent> extents = getModelExtents();
+
+		String statusMessage = String.format("Import %s", getModelName());
+		MultiStatus generationStatus = new MultiStatus(Activator.PLUGIN_ID, IStatus.OK, statusMessage, null);
+
+		context = createExecutionContext(monitor, generationStatus);
+
+		try {
+			getInPapyrusProfiles(); // Preload profiles
+
+			long endLoad = System.nanoTime();
+			loadingTime = endLoad - startLoad;
+
+			//
+			// TRANSFORMATIONS
+			//
+
+			IStatus result; // Result of an individual transformation (Will be aggregated to the complete GenerationStatus)
+
+			prepareExtensions();
+
+			// TODO useful for the Rpy import ?
+			long startExtensions = System.nanoTime();
+			result = importExtensions(context, monitor, ExtensionFunction::executeBefore);
+			long endExtensions = System.nanoTime();
+
+			this.importExtensionsTime = endExtensions - startExtensions;
+			generationStatus.add(result);
+
+			// TODO : warning, this step is not in RSA
+			monitor.subTask("Importing semantic model...");
+			URI semanticTransformationURI = getSemanticTransformationURI();
+			if (null != semanticTransformationURI) {
+				result = runTransformation(semanticTransformationURI, extents, monitor);
+				generationStatus.add(result);
+			}
+			// Diagrams
+			Collection<URI> transformations = getDiagramTransformationURIs();
+
+			monitor.subTask("Importing diagrams...");
+			for (URI transformationURI : transformations) {
+				result = runTransformation(transformationURI, extents, monitor);
+				generationStatus.add(result);
+			}
+
+			// TODO : it seems to be an additional transfo for RSA import
+			// // Semantic model changes (Default language for OpaqueExpressions...)
+			// monitor.subTask("Importing semantic model...");
+			// result = runTransformation(getSemanticTransformationURI(), extents, monitor);
+			// generationStatus.add(result);
+
+			// TODO : remove me, not required for Rpy import
+			// if (!monitor.isCanceled()) {
+			// monitor.subTask("Handle additional profiles...");
+			// // Default.epx and ProfileBase.epx
+			// result = importRSAProfiles(context, monitor);
+			// generationStatus.add(result);
+			// }
+
+			Collection<URI> additional = getAdditionalTransformationURIs();
+			if (!additional.isEmpty()) {
+				monitor.subTask("Additional transformations...");
+				for (URI transformationURI : additional) {
+					result = runTransformation(transformationURI, extents, monitor);
+					generationStatus.add(result);
+				}
+			}
+
+			long startExtensionsAfter = System.nanoTime();
+			result = importExtensions(context, monitor, ExtensionFunction::executeAfter);
+			long endExtensionsAfter = System.nanoTime();
+			this.importExtensionsTime += endExtensionsAfter - startExtensionsAfter;
+		} finally {
+			// context = null;
+		}
+
+		//
+		// FRAGMENTS & SAVE
+		//
+
+		if (generationStatus.getSeverity() <= Diagnostic.WARNING) {
+
+			monitor.subTask("Cleaning-up target model...");
+			URI notationModelURI = null;
+			URI sashModelURI = null;
+
+			targetURI = convertToPapyrus(sourceURI, UMLResource.FILE_EXTENSION);
+			notationModelURI = convertToPapyrus(sourceURI, "notation"); // TODO use constant
+			sashModelURI = convertToPapyrus(sourceURI, "di"); // TODO use constant
+
+			// TODO : remove epx here!
+			if ("epx".equals(sourceURI.fileExtension())) {
+				profileURIMappings.put(sourceURI, targetURI);
+			}
+			// Profile mappings are also library mappings
+			uriMappings.put(sourceURI, targetURI);
+
+			umlResource = createUMLResource(resourceSet, sourceURI, targetURI);
+
+			// This list contains all the objects from the initial ModelExtent, plus all the ones
+			// which were created during the QVTo transformations.
+			List<EObject> outUMLObjects = getInOutUMLModel().getContents();
+			umlResource.getContents().addAll(outUMLObjects);
+
+			PreserveRpySemanticIDHelper helper = new PreserveRpySemanticIDHelper(new Context(context));
+			helper.keepIdForUMLResource((XMIResource) this.umlResource);
+
+			context = null;
+
+			GMFResource notationResource = new GMFResource(notationModelURI); // GMF Resource content type?
+			resourceSet.getResources().add(notationResource);
+			List<EObject> outNotationObjects = getInoutNotationModel().getContents();
+			notationResource.getContents().addAll(outNotationObjects);
+
+			// Cleanup empty diagrams (FIXME: They should not be generated)
+			List<EObject> contentsCopy = new LinkedList<>(notationResource.getContents());
+			for (EObject next : contentsCopy) {
+				if (next instanceof Diagram) {
+					Diagram diagram = (Diagram) next;
+					if (diagram.getType() == null || "".equals(diagram.getType())) {
+						delete(diagram);
+					}
+				}
+			}
+
+			final URI propertyURI = convertToPapyrus(sourceURI, PropertiesFilesUtils.PROPERTIES_FILE_EXTENSION);
+			propertiesResource = createAndConfigureInternationalizationResource(propertyURI);
+			resourceSet.getResources().add(propertiesResource);
+			propertiesResource.getContents().addAll(getInOutInternationalizationModel().getContents());
+
+			XMIResource sashResource = new XMIResourceImpl(sashModelURI);
+			resourceSet.getResources().add(sashResource);
+			List<EObject> sashModelObjects = getOutSashModel().getContents();
+			sashResource.getContents().addAll(sashModelObjects);
+
+			configureResource(sashResource);
+			configureResource(notationResource);
+			configureResource((XMIResource) umlResource);
+			// configureResource((XMIResource)propertiesResource); //not required
+
+			// Handle orphaned elements: remove them and log a warning (Log temporarily disabled to avoid spamming the console)
+			List<EObject> notationRootElements = new LinkedList<>(notationResource.getContents());
+			for (EObject rootElement : notationRootElements) {
+				if (rootElement instanceof View) {
+					View rootView = (View) rootElement;
+					if (!(rootView instanceof Diagram)) {
+						if (DEBUG) {
+							String objectType = rootView.getElement() == null ? "None" : rootView.getElement().eClass().getName();
+							String viewType = rootView.getType() == null ? "None" : rootView.getType();
+							generationStatus.add(new Status(IStatus.WARNING, Activator.PLUGIN_ID, "An orphaned view has been found after the migration. It will be removed. View Type: " + viewType + ", semantic type: " + objectType));
+						}
+
+						delete(rootElement);
+					}
+				} else if (rootElement instanceof Style) {
+
+					if (DEBUG) {
+						String styleType = rootElement.eClass().getName();
+						generationStatus.add(new Status(IStatus.WARNING, Activator.PLUGIN_ID, "An orphaned style has been found after the migration. It will be removed. Style Type: " + styleType));
+					}
+
+					delete(rootElement);
+				}
+			}
+
+
+			monitor.subTask("Handling fragments...");
+
+
+			Collection<Resource> resourcesToSave = handleFragments(umlResource, notationResource, sashResource);
+			resourcesToSave.add(propertiesResource);
+			// TODO : commented because it probably concerns only RSa
+			// for (Resource resource : resourcesToSave) {
+			// List<EObject> rootElements = new LinkedList<>(resource.getContents());
+			// for (EObject rootElement : rootElements) {
+			// EPackage ePackage = rootElement.eClass().getEPackage();
+			// if (ePackage == ProfileBasePackage.eINSTANCE || ePackage == DefaultPackage.eINSTANCE) {
+			// delete(rootElement);
+			// }
+			// }
+			// }
+
+			monitor.subTask("Deleting source diagrams...");
+
+			for (Diagram diagram : diagramsToDelete) {
+				EObject container = diagram.eContainer();
+				delete(diagram);
+				if (container instanceof EAnnotation) {
+					EAnnotation annotation = (EAnnotation) container;
+					if (annotation.getContents().isEmpty()) {
+						delete(annotation);
+					}
+				}
+			}
+
+			diagramsToDelete.clear();
+
+			monitor.subTask("Analyzing dangling references...");
+
+			long startDangling = System.nanoTime();
+			handleDanglingURIs(resourcesToSave);
+			long endDangling = System.nanoTime();
+			this.danglingRefTime = endDangling - startDangling;
+
+			monitor.subTask("Saving models...");
+
+			for (Resource resource : resourcesToSave) {
+				try {
+					cleanMetadataAnnotations(resource);
+					ResourceAccessHelper.INSTANCE.saveResource(resource, null);
+				} catch (Exception ex) {
+					Activator.log.error(ex);
+					generationStatus.add(new Status(IStatus.ERROR, Activator.PLUGIN_ID, "An exception occurred during save", ex));
+				}
+			}
+		}
+
+		monitor.subTask("Releasing memory...");
+
+		unloadResourceSet(this.resourceSet);
+
+		this.resourceSet = null;
+		this.umlResource = null;
+		// TODO : we ùust clean all ModelExtends and all resource (a method will help us!)
+		this.outNotation = this.inParameters = this.outSashModel = this.outUML = null;
+
+		monitor.done();
+		return generationStatus;
+	}
+
+	/**
+	 * 
+	 * @param propertyURI
+	 *            the uri of the property file
+	 * @return
+	 * 		the Resource to use for internationlization
+	 */
+	protected InternationalizationResource createAndConfigureInternationalizationResource(final URI propertyURI) {
+		if (null == this.propertiesResource) {
+			this.propertiesResource = new InternationalizationResource(propertyURI);
+			this.propertiesResource.getDefaultSaveOptions().put(InternationalizationResourceOptionsConstants.SAVE_OPTION_SORT, Boolean.TRUE);
+			this.propertiesResource.getDefaultSaveOptions().put(InternationalizationResourceOptionsConstants.LOAD_SAVE_OPTION_KEY_RESOLVER, UMLInternationalizationKeyResolver.getInstance());
+		}
+		return this.propertiesResource;
+	}
+
+
+	/**
+	 * @see org.eclipse.papyrus.interoperability.rpy..transformations.NEW_AbstractImportTransformation_NEW#loadInPapyrusProfiles()
+	 *
+	 * @return
+	 */
+	@Override
+	protected Diagnostic loadInPapyrusProfiles() {
+
+
+		// currently there is nothing to do for Rpy import
+		return null;
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.interoperability.rpy..transformations.NEW_AbstractImportTransformation_NEW#countSupportedElements()
+	 *
+	 * @return
+	 */
+	@Override
+	protected int countSupportedElements() {
+		// TODO Auto-generated method stub
+		return 1000;
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.interoperability.rpy..transformations.NEW_AbstractImportTransformation_NEW#getDiagramTransformationURIs()
+	 *
+	 * @return
+	 */
+	@Override
+	protected Collection<URI> getDiagramTransformationURIs() {
+		return ListHelper.asList(new URI[] { getTransformationURI("Rpy2PapyrusNotation", Activator.PLUGIN_ID),
+
+		});
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.interoperability.rpy..transformations.NEW_AbstractImportTransformation_NEW#getSemanticTransformationURI()
+	 *
+	 * @return
+	 */
+	@Override
+	protected URI getSemanticTransformationURI() {
+		// TODO never call, called from the Rpy2PapyrusNotation transform to make the link between uml created elements and their representation
+		// return ListHelper.asList(new URI[] { getTransformationURI("Rpy2PapyrusSemanticElements"),
+		//
+		// });
+
+		return null;
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.interoperability.rpy..transformations.NEW_AbstractImportTransformation_NEW#getProfilesTransformationURI()
+	 *
+	 * @return
+	 */
+	@Override
+	protected Collection<URI> getProfilesTransformationURI() {
+		return Collections.emptyList();
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.interoperability.common.transformation.AbstractImportTransformation#getAllTransformationURIs()
+	 *
+	 * @return
+	 */
+	@Override
+	protected Collection<URI> getAllTransformationURIs() {
+		final Collection<URI> allTransformations = new ArrayList<URI>();
+		final URI semanticTransformationURI = getSemanticTransformationURI();
+		if (null != semanticTransformationURI) {
+			allTransformations.add(semanticTransformationURI);
+		}
+		final Collection<URI> diagramTransformationURI = getDiagramTransformationURIs();
+		if (null != diagramTransformationURI) {
+			allTransformations.addAll(diagramTransformationURI);
+		}
+		final Collection<URI> profilesTransformationURI = getProfilesTransformationURI();
+		if (null != profilesTransformationURI) {
+			allTransformations.addAll(profilesTransformationURI);
+		}
+		final Collection<URI> additionalTransformationURIs = getAdditionalTransformationURIs();
+		if (null != additionalTransformationURIs) {
+			allTransformations.addAll(additionalTransformationURIs);
+		}
+		return allTransformations;
+
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.interoperability.rpy..transformations.NEW_AbstractImportTransformation_NEW#getModelExtents()
+	 *
+	 * @return
+	 */
+	@Override
+	protected List<ModelExtent> getModelExtents() {
+		List<ModelExtent> allExtents = new LinkedList<ModelExtent>();
+		allExtents.add(getInRpyModel());
+		allExtents.add(getInoutNotationModel());
+		allExtents.add(getInOutUMLModel());
+		allExtents.add(getSysML1_1Profile());
+		allExtents.add(getInUMLPrimitivesTypes());
+		allExtents.add(getInOutInternationalizationModel());
+		return allExtents;
+	}
+
+
+	public ModelExtent getInUMLPrimitivesTypes() {
+		URI umlPrimitivesTypesURI = URI.createURI("pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml");
+		Resource umlPrimitivesTypesResource = resourceSet.getResource(umlPrimitivesTypesURI, true);
+		umlPrimitivesTypes = new BasicModelExtent(umlPrimitivesTypesResource.getContents());
+		return umlPrimitivesTypes;
+	}
+
+	private ModelExtent inRpyModel, umlPrimitivesTypes, labels;
+
+	public ModelExtent getInRpyModel() {
+		if (inRpyModel == null) {
+			Resource resource = resourceSet.getResource(sourceURI, true);
+			inRpyModel = new BasicModelExtent(resource.getContents());
+		}
+		return inRpyModel;
+	}
+
+	public ModelExtent getSysML1_1Profile() {
+		URI sysMLProfile = URI.createURI("pathmap://SysML_PROFILES/SysML.profile.uml");
+		Resource fCMProfile = resourceSet.getResource(sysMLProfile, true);
+		sysML11Profile = new BasicModelExtent(fCMProfile.getContents());
+		return sysML11Profile;
+	}
+
+
+	/**
+	 * 
+	 * @return
+	 * 		the model extends to use to create the required file .property
+	 */
+	public ModelExtent getInOutInternationalizationModel() {
+		if (this.labels == null) {
+			this.labels = new BasicModelExtent();
+		}
+		return this.labels;
+	}
+
+
+	/**
+	 * @see org.eclipse.papyrus.interoperability.rpy..transformations.NEW_AbstractImportTransformation_NEW#initTransformationProperties(org.eclipse.m2m.qvt.oml.ExecutionContextImpl)
+	 *
+	 * @param context
+	 */
+	@Override
+	protected void initTransformationProperties(ExecutionContextImpl context) {
+		// TODO Auto-generated method stub
+
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.interoperability.rpy..transformations.NEW_AbstractImportTransformation_NEW#convertToPapyrus(org.eclipse.emf.common.util.URI, java.lang.String)
+	 *
+	 * @param initialModelURI
+	 * @param extension
+	 * @return
+	 */
+	@Override
+	protected URI convertToPapyrus(URI initialModelURI, String extension) {
+		return initialModelURI.trimFileExtension().appendFileExtension(extension);
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.interoperability.rpy..transformations.NEW_AbstractImportTransformation_NEW#createUMLResource(org.eclipse.emf.ecore.resource.ResourceSet, org.eclipse.emf.common.util.URI, org.eclipse.emf.common.util.URI)
+	 *
+	 * @param resourceSet
+	 * @param sourceResourceURI
+	 * @param targetResourceURI
+	 * @return
+	 */
+	@Override
+	protected Resource createUMLResource(ResourceSet resourceSet, URI sourceResourceURI, URI targetResourceURI) {
+		Resource resource = resourceSet.createResource(targetResourceURI, UMLResource.UML_5_0_0_CONTENT_TYPE_IDENTIFIER);
+		return resource;
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.interoperability.rpy..transformations.NEW_AbstractImportTransformation_NEW#getInOutUMLModel()
+	 *
+	 * @return
+	 */
+	@Override
+	public ModelExtent getInOutUMLModel() {
+		if (outUML == null) {
+			outUML = new BasicModelExtent();
+		}
+		return outUML;
+	}
+
+
+
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/transformations/RpyImportTransformationLauncher.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/transformations/RpyImportTransformationLauncher.java
new file mode 100644
index 0000000..204561b
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/transformations/RpyImportTransformationLauncher.java
@@ -0,0 +1,78 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.transformations;
+
+import java.util.List;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.papyrus.interoperability.common.MigrationParameters.ThreadConfig;
+import org.eclipse.papyrus.interoperability.common.transformation.AbstractImportTransformationLauncher;
+import org.eclipse.papyrus.interoperability.common.transformation.IDependencyAnalysisHelper;
+import org.eclipse.papyrus.interoperability.common.transformation.IImportTransformation;
+import org.eclipse.papyrus.interoperability.rpy.importer.SelectedRpyFilesImporter;
+import org.eclipse.swt.widgets.Control;
+
+/**
+ * @author Vincent Lorenzo
+ *
+ */
+public class RpyImportTransformationLauncher extends AbstractImportTransformationLauncher {
+
+	private SelectedRpyFilesImporter importer;
+
+	public RpyImportTransformationLauncher(ThreadConfig config) {
+		super(config, null);
+	}
+
+	public RpyImportTransformationLauncher(ThreadConfig config, Control baseControl) {
+		super(config, baseControl);
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.interoperability.common.transformation.IImportTransformationLauncher#run(java.util.List)
+	 *
+	 * @param urisToImport
+	 */
+	@Override
+	public void run(List<URI> urisToImport) {
+		importer = new SelectedRpyFilesImporter(urisToImport);
+		super.run(importer.getRpyFilesToImportURI());
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.interoperability.rpy..transformations.NEW_AbstractImportTransformationLauncher__NEW#createDependencyAnalysisHelper(org.eclipse.papyrus.migration.common.MigrationParameters.Config)
+	 *
+	 * @param config
+	 * @return
+	 */
+	@Override
+	protected IDependencyAnalysisHelper createDependencyAnalysisHelper(ThreadConfig config) {
+		return new RpyDependencyAnalysisHelper(config);
+	}
+
+	/**
+	 * @see org.eclipse.papyrus.interoperability.rpy..transformations.NEW_AbstractImportTransformationLauncher__NEW#createTransformation(org.eclipse.emf.common.util.URI, org.eclipse.papyrus.migration.common.MigrationParameters.Config,
+	 *      org.eclipse.papyrus.migration.common.transformation.IDependencyAnalysisHelper)
+	 *
+	 * @param transformationURI
+	 * @param config
+	 * @param analysisHelper
+	 * @return
+	 */
+	@Override
+	protected IImportTransformation createTransformation(URI transformationURI, ThreadConfig config, IDependencyAnalysisHelper analysisHelper) {
+		return new RpyImportTransformation(transformationURI, config, analysisHelper);
+	}
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/transformations/notation/DiagramCreateUtils.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/transformations/notation/DiagramCreateUtils.java
new file mode 100644
index 0000000..fb688b6
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/transformations/notation/DiagramCreateUtils.java
@@ -0,0 +1,97 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are the property of the CEA. 
+ * Any use is subject to specific agreement with the CEA.
+ *
+ * Contributors:
+ * 
+ * 		CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.transformations.notation;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint;
+import org.eclipse.gmf.runtime.diagram.core.services.ViewService;
+import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;
+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;
+import org.eclipse.gmf.runtime.emf.type.core.IElementType;
+import org.eclipse.gmf.runtime.notation.Diagram;
+import org.eclipse.gmf.runtime.notation.Edge;
+import org.eclipse.gmf.runtime.notation.Node;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.infra.gmfdiag.common.commands.SemanticElementAdapter;
+import org.eclipse.papyrus.uml.diagram.statemachine.part.UMLVisualIDRegistry;
+import org.eclipse.papyrus.uml.diagram.statemachine.providers.UMLElementTypes;
+
+
+public class DiagramCreateUtils {
+
+
+
+	public static View createGraphicalNode(EObject eObject, String graphicalType, View containerView) {
+		return ViewService.getInstance().createView(Node.class, new EObjectAdapter(eObject), containerView, graphicalType, ViewUtil.APPEND, true, getPreferenceHint(containerView.getDiagram()));
+	}
+
+	public static View createStateMachingGraphicalNode(EObject semanticElement, View container) {
+		String graphicalType = UMLVisualIDRegistry.getNodeVisualID(container, semanticElement);
+		View view = ViewService.getInstance().createView(Node.class, new SemanticElementAdapter(semanticElement, org.eclipse.papyrus.uml.diagram.statemachine.providers.UMLElementTypes.getElementType(graphicalType)), container, graphicalType, ViewUtil.APPEND,
+				true, new PreferencesHint(IDiagramConstants.STATEMACHINE_PLUGIN_ID));
+		return view;
+	}
+
+	public static View createClassDiagramGraphicalEdge(EObject semanticElement, View sourceView, View targetView, Diagram diagram) {
+
+		String graphicalType = UMLVisualIDRegistry.getLinkWithClassVisualID(semanticElement);
+		Edge edge = (Edge) ViewService.getInstance().createView(Edge.class, new SemanticElementAdapter(semanticElement, UMLElementTypes.getElementType(graphicalType)), diagram, graphicalType, ViewUtil.APPEND, true,
+				new PreferencesHint(IDiagramConstants.CLASS_DIAGRAM_ID));
+		if (edge != null) {
+			edge.setSource(sourceView);
+			edge.setTarget(targetView);
+		}
+
+		return edge;
+	}
+
+
+	private static PreferencesHint getPreferenceHint(Diagram diagram) {
+		PreferencesHint preferenceHint = null;
+		if (IDiagramConstants.STATEMACHINE_DIAGRAM_ID.equals(diagram.getType())) {
+			preferenceHint = new PreferencesHint(IDiagramConstants.STATEMACHINE_PLUGIN_ID);
+		} else {
+			// TODO add unimplemented exception here
+		}
+		return preferenceHint;
+	}
+
+
+
+
+	protected IElementType getClassDiagElementType(String graphicalType) {
+		return UMLElementTypes.getElementType(graphicalType);
+	}
+
+	/**
+	 * @param transition
+	 * @param sourceView
+	 * @param targetView
+	 * @param transform
+	 * @return
+	 */
+	public static View createStateMachineDiagramGraphicalEdge(EObject semanticElement, View sourceView, View targetView, Diagram diagram) {
+		String graphicalType = UMLVisualIDRegistry.getLinkWithClassVisualID(semanticElement);
+		Edge edge = (Edge) ViewService.getInstance().createView(Edge.class, new SemanticElementAdapter(semanticElement, UMLElementTypes.getElementType(graphicalType)), diagram, graphicalType, ViewUtil.APPEND, true,
+				new PreferencesHint(IDiagramConstants.STATEMACHINE_PLUGIN_ID));
+		if (edge != null) {
+			edge.setSource(sourceView);
+			edge.setTarget(targetView);
+		}
+
+		return edge;
+	}
+
+
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/transformations/notation/IDiagramConstants.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/transformations/notation/IDiagramConstants.java
new file mode 100644
index 0000000..26aa39f
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/transformations/notation/IDiagramConstants.java
@@ -0,0 +1,76 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are the property of the CEA. 
+ * Any use is subject to specific agreement with the CEA.
+ *
+ * Contributors:
+ * 
+ * 		CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.transformations.notation;
+
+public interface IDiagramConstants {
+
+	public static final int STATEMACHINE_DEFAULT_MARGIN = 30;
+	public static final int STATEMACHINE_DEFAULT_WIDTH = 1000;
+	public static final int STATEMACHINE_DEFAULT_HEIGHT = 1000;
+	public static final int STATEMACHINE_DEFAULT_HEADER = 13;
+	public static final String STATEMACHINE_DIAGRAM_ID = "PapyrusUMLStateMachineDiagram"; //$NON-NLS-1$
+	public static final String STATEMACHINE_PLUGIN_ID = "org.eclipse.papyrus.uml.diagram.statemachine"; //$NON-NLS-1$
+
+	public static final int SEQUENCE_DEFAULT_MARGIN = 30;
+	public static final int SEQUENCE_LIFELINE_WIDTH = 200;
+	public static final int SEQUENCE_LIFELINE_HEIGHT = 600;
+	public static final String SEQUENCE_DIAGRAM_ID = "PapyrusUMLSequenceDiagram"; //$NON-NLS-1$
+	public static final String SEQUENCE_PLUGIN_ID = "org.eclipse.papyrus.uml.diagram.sequence"; //$NON-NLS-1$
+
+	public static final int INTERNALBLOCK_DEFAULT_MARGIN = 30;
+	public static final int INTERNALBLOCK_DEFAULT_HEIGHT = 400;
+	public static final int INTERNALBLOCK_DEFAULT_WIDTH = 1000;
+	public static final String INTERNALBLOCK_DIAGRAM_ID = "InternalBlock"; //$NON-NLS-1$
+	public static final String INTERNALBLOCK_PLUGIN_ID = "org.eclipse.papyrus.sysml.diagram.internalblock"; //$NON-NLS-1$
+
+
+
+	public static final String CLASS_DIAGRAM_ID = "PapyrusUMLClassDiagram";
+	public static final String CLASS_DIAGRAM_PLUGIN_ID = "org.eclipse.papyrus.uml.diagram.clazz";
+
+	// Sequence Diagram graphical IDs
+	public static final String INTERACTION_VIEW_ID = "2001";
+	public static final String INTERACTION_CPT_VIEW_ID = "7001";
+	public static final String LIFELINE_VIEW_ID = "3001";
+
+	// State Machine graphical IDs
+	public static final String STATEMACHINE_VIEW_ID = "2000";
+	public static final String STATEMACHINE_CPT_VIEW_ID = "2002";
+	public static final String REGION_VIEW_ID = "3000";
+	public static final String REGION_CPT_VIEW_ID = "3002";
+	public static final String FINAL_STATE_VIEW_ID = "5000";
+	public static final String FINAL_STATE_LABEL_ID = "5001";
+	public static final String STATE_VIEW_ID = "6000";
+	public static final String STATE_CPT_VIEW_ID = "6002";
+	public static final String STATE_ENTRY_VIEW_ID = "690";
+	public static final String STATE_DO_VIEW_ID = "691";
+	public static final String STATE_EXIT_VIEW_ID = "692";
+
+	// Pseudo states
+	public static final String INITIAL_STATE_VIEW_ID = "8000";
+	public static final String INITIAL_STATE_LABEL_ID = "8001";
+	public static final String JOIN_STATE_VIEW_ID = "9000";
+	public static final String FORK_STATE_VIEW_ID = "10000";
+	public static final String CHOICE_STATE_VIEW_ID = "11000";
+	public static final String CHOICE_STATE_LABEL_ID = "11001";
+	public static final String JUNCTION_STATE_VIEW_ID = "12000";
+	public static final String JUNCTION_STATE_LABEL_ID = "12001";
+	public static final String SHALLOW_HISTORY_STATE_VIEW_ID = "13000";
+	public static final String DEEP_HISTORY_STATE_VIEW_ID = "14000";
+	public static final String TERMINATE_STATE_VIEW_ID = "15000";
+	public static final String ENTRY_POINT_STATE_VIEW_ID = "16000";
+	public static final String EXIT_POINT_STATE_VIEW_ID = "17000";
+	public static final String TRANSITION_VIEW_ID = "7000";
+	public static final String TRANSITION_NAME_LABEL_ID = "7001";
+	public static final String CONNECTION_POINT_REFERENCE_VIEW_ID = "18000";
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/transformations/notation/RpyNode.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/transformations/notation/RpyNode.java
new file mode 100644
index 0000000..25f6b0b
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/transformations/notation/RpyNode.java
@@ -0,0 +1,122 @@
+/*****************************************************************************
+ * Copyright (c) 2015 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Sebastien Revol (CEA LIST) sebastien.revol@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.transformations.notation;
+
+import java.util.List;
+
+import org.eclipse.gmf.runtime.notation.Anchor;
+import org.eclipse.gmf.runtime.notation.IdentityAnchor;
+import org.eclipse.gmf.runtime.notation.NotationFactory;
+
+/**
+ * @author sr246418
+ *
+ */
+public class RpyNode {
+
+	/**
+	 * Constructor.
+	 *
+	 */
+
+	int topLeft[];
+	int topRight[];
+	int bottomRight[];
+	int bottomLeft[];
+
+	float xPos;
+	float yPos;
+
+	float xRatio;
+	float yRatio;
+
+
+
+	public RpyNode(List<String> polygon, List<String> transform) {
+
+		topLeft = new int[] { Integer.parseInt(polygon.get(1)), Integer.parseInt(polygon.get(2)) };
+		topRight = new int[] { Integer.parseInt(polygon.get(3)), Integer.parseInt(polygon.get(4)) };
+		bottomRight = new int[] { Integer.parseInt(polygon.get(5)), Integer.parseInt(polygon.get(6)) };
+		bottomLeft = new int[] { Integer.parseInt(polygon.get(7)), Integer.parseInt(polygon.get(8)) };
+
+		xPos = Float.parseFloat(transform.get(4));
+		yPos = Float.parseFloat(transform.get(5));
+
+		xRatio = Float.parseFloat(transform.get(0));
+		yRatio = Float.parseFloat(transform.get(3));
+
+	}
+
+
+	public int getX() {
+		return Math.round(xPos);
+	}
+
+	public int getY() {
+		return Math.round(yPos);
+	}
+
+	public int getHeight() {
+		return Math.round(yRatio * (bottomLeft[1] - topLeft[1]));
+	}
+
+	public int getWidth() {
+		return Math.round(xRatio * (topRight[0] - topLeft[0]));
+	}
+
+	public int getRelativeHeight() {
+		return (bottomLeft[1] - topLeft[1]);
+	}
+
+	public int getRelativeWidth() {
+		return (topRight[0] - topLeft[0]);
+	}
+
+
+	public Anchor getAnchor(List<String> port) {
+		IdentityAnchor anchor = NotationFactory.eINSTANCE.createIdentityAnchor();
+		int xPort = Integer.parseInt(port.get(0));
+		if (xPort < topLeft[0]) {
+			xPort = topLeft[0];
+		}
+		if (xPort > topRight[0]) {
+			xPort = topRight[0];
+		}
+
+		int yPort = Integer.parseInt(port.get(1));
+		if (yPort < topLeft[1]) {
+			yPort = topLeft[1];
+		}
+		if (yPort > bottomLeft[1]) {
+			yPort = bottomLeft[1];
+		}
+
+		float xRatio = new Float(xPort) / new Float(getRelativeWidth());
+		float yRatio = new Float(yPort) / new Float(getRelativeHeight());
+
+		if (xRatio > 1) {
+			xRatio = 1;
+		}
+		if (yRatio > 1) {
+			yRatio = 1;
+		}
+
+		String id = "(" + xRatio + "," + yRatio + ")";
+		anchor.setId(id);
+		return anchor;
+
+	}
+
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/wizard/RpyDialogData.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/wizard/RpyDialogData.java
new file mode 100644
index 0000000..1f6d401
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/wizard/RpyDialogData.java
@@ -0,0 +1,49 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *   
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.wizard;
+
+import org.eclipse.papyrus.interoperability.common.wizard.pages.AbstractDialogData;
+import org.eclipse.papyrus.interoperability.rpy.importer.utils.RpyFileUtils;
+
+/**
+ * 
+ * @author Vincent Lorenzo
+ *
+ */
+public class RpyDialogData extends AbstractDialogData {
+
+	/**
+	 * 
+	 * @see org.eclipse.papyrus.interoperability.common.wizard.pages.AbstractDialogData#getExtensions()
+	 *
+	 * @return
+	 */
+	@Override
+	public String[] getExtensions() {
+		return new String[] { RpyFileUtils.ALL_RPY_FILES, RpyFileUtils.STRING_STAR };
+
+	}
+
+	/**
+	 * 
+	 * @see org.eclipse.papyrus.interoperability.common.wizard.pages.AbstractDialogData#getExtensionsNames()
+	 *
+	 * @return
+	 */
+	@Override
+	public String[] getExtensionsNames() {
+		return new String[] { RpyFileUtils.ALL_RPY_FILES, RpyFileUtils.STRING_ALL };
+	}
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/wizard/TransformationRpyWizard.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/wizard/TransformationRpyWizard.java
new file mode 100644
index 0000000..c54a6d4
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/wizard/TransformationRpyWizard.java
@@ -0,0 +1,47 @@
+/*****************************************************************************
+ * Copyright (c) 2016 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:
+ *   Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *   
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.wizard;
+
+import org.eclipse.papyrus.interoperability.common.MigrationParameters.ThreadConfig;
+import org.eclipse.papyrus.interoperability.common.transformation.AbstractImportTransformationLauncher;
+import org.eclipse.papyrus.interoperability.common.wizard.AbstractTransformationWizard;
+import org.eclipse.papyrus.interoperability.rpy.messages.Messages;
+import org.eclipse.papyrus.interoperability.rpy.transformations.RpyImportTransformationLauncher;
+import org.eclipse.swt.widgets.Control;
+
+/**
+ * 
+ * @author Vincent Lorenzo
+ *
+ */
+public class TransformationRpyWizard extends AbstractTransformationWizard {
+
+	public TransformationRpyWizard() {
+		super(Messages.TransformationRpyWizard_WizardTitle, new RpyDialogData());
+	}
+
+	/**
+	 * 
+	 * @see org.eclipse.papyrus.interoperability.common.wizard.AbstractTransformationWizard#createTransformationLauncher(org.eclipse.papyrus.migration.common.MigrationParameters.Config, org.eclipse.swt.widgets.Control)
+	 *
+	 * @param config
+	 * @param baseControl
+	 * @return
+	 */
+	@Override
+	protected AbstractImportTransformationLauncher createTransformationLauncher(ThreadConfig config, Control baseControl) {
+		return new RpyImportTransformationLauncher(config, baseControl);
+	}
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/xmi/EMF_XMI_ID_Helper.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/xmi/EMF_XMI_ID_Helper.java
new file mode 100644
index 0000000..c26597c
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/xmi/EMF_XMI_ID_Helper.java
@@ -0,0 +1,92 @@
+/*****************************************************************************
+ * Copyright (c) 2017 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.xmi;
+
+import org.eclipse.emf.ecore.EAnnotation;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.impl.EStringToStringMapEntryImpl;
+import org.eclipse.papyrus.interoperability.rpy.importer.utils.RpyUtil;
+
+/**
+ * @author VL222926
+ *         This helper allows to build XMI_ID for EMF objects
+ */
+public class EMF_XMI_ID_Helper {
+
+
+	/**
+	 * 
+	 * @param eobject
+	 *            an element
+	 * @return
+	 * 		the calculated XMI_ID for the given element, value can be <code>null</code>
+	 */
+	public static final String calculateIdForEMF(final EObject eobject) {
+		String result = null;
+		if (eobject instanceof EAnnotation) {
+			result = calculateId((EAnnotation) eobject);
+		} else if (eobject instanceof EStringToStringMapEntryImpl) {
+			result = calculateId((EStringToStringMapEntryImpl) eobject);
+		}
+		return result;
+	}
+
+	/**
+	 * 
+	 * @param eannotation
+	 *            an eannotation
+	 * @return
+	 * 		the ID calculated for it
+	 */
+	public static final String calculateId(final EAnnotation eannotation) {
+		final EObject parent = eannotation.eContainer();
+		StringBuilder builder = new StringBuilder();
+		if (null != parent) {
+			final String parentID = XMI_ID_Helper.getXMI_ID(parent);
+			builder.append(parentID);
+			builder.append(RpyUtil.ID_SEPARATOR);
+			builder.append(eannotation.eClass().getName());
+			builder.append(RpyUtil.ID_SEPARATOR);
+			builder.append(eannotation.getSource().hashCode());
+		} else {
+			builder = new StringBuilder();
+		}
+		return builder.toString();
+	}
+
+	/**
+	 * 
+	 * @param map
+	 *            a map
+	 * @return
+	 * 		the ID calculated for it
+	 */
+	public static final String calculateId(final EStringToStringMapEntryImpl map) {
+		final EObject parent = map.eContainer();
+		StringBuilder builder = new StringBuilder();
+		if (null != parent) {
+			final String parentID = XMI_ID_Helper.getXMI_ID(parent);
+			builder.append(parentID);
+			builder.append(RpyUtil.ID_SEPARATOR);
+			builder.append(map.eClass().getName());
+			builder.append(RpyUtil.ID_SEPARATOR);
+			builder.append(map.getKey().hashCode());
+			builder.append(RpyUtil.ID_SEPARATOR);
+			builder.append(map.getValue().hashCode());
+		} else {
+			builder = new StringBuilder();
+		}
+		return builder.toString();
+	}
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/xmi/PreserveRpySemanticIDHelper.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/xmi/PreserveRpySemanticIDHelper.java
new file mode 100644
index 0000000..70240a5
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/xmi/PreserveRpySemanticIDHelper.java
@@ -0,0 +1,177 @@
+/*****************************************************************************
+ * Copyright (c) 2017 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.xmi;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.xmi.XMIResource;
+import org.eclipse.m2m.internal.qvt.oml.library.Context;
+import org.eclipse.papyrus.interoperability.common.utils.TraceHelper;
+import org.eclipse.papyrus.interoperability.rpy.importer.utils.RpyUtil;
+import org.eclipse.uml2.uml.ConnectorEnd;
+import org.eclipse.uml2.uml.util.UMLUtil;
+
+/**
+ * @author VL222926
+ * 
+ *         This class allows to reuse Rpy id when possible end and calls helper to generate "standard" XMI_ID when we can't reuse Rpy ones.
+ *
+ */
+public class PreserveRpySemanticIDHelper {
+
+	/**
+	 * The context of the QVTo transformation
+	 */
+	@SuppressWarnings("restriction")
+	private Context context;
+
+	/**
+	 * the name of the feature representing the Rpy ID
+	 */
+	private static final String ID_FEATURE_NAME = "id"; //$NON-NLS-1$
+	/**
+	 * The helper to use to manipulate QVTo trace
+	 */
+	private TraceHelper helper = new TraceHelper();
+
+	/**
+	 * 
+	 * Constructor.
+	 *
+	 * @param context
+	 *            the context of the QVTo transformation
+	 */
+	public PreserveRpySemanticIDHelper(@SuppressWarnings("restriction") final Context context) {
+		this.context = context;
+	}
+
+	public void keepIdForUMLResource(final XMIResource res) {
+
+		// a set owning the known id to avoid duplicate
+		final Set<String> knownIds = new HashSet<String>();
+
+		// the object to manage in the second run
+		final List<EObject> eobjectForSecondRun = new ArrayList<>();
+
+		// we mainly set the stereotype application in this list
+		final List<EObject> eobjectForThirdRun = new ArrayList<>();
+
+		// we iterate on all elements of the UML model
+		final TreeIterator<EObject> iter = res.getAllContents();
+		while (iter.hasNext()) {
+			final EObject current = iter.next();
+			if (isStereotypeApplication(current)) {
+				eobjectForThirdRun.add(current);
+				continue;
+			}
+			if (requiredToBeManagedInASecondRun(current)) {
+				eobjectForSecondRun.add(current);
+				continue;
+			}
+
+
+			// looking for the Rpy object in the QVto trace
+			final Object result = helper.traceFrom(context, current, null);
+			String rpyId = getRpyId(result);
+
+			if (isValidId(rpyId) && false == knownIds.contains(rpyId)) {
+				knownIds.add(rpyId);
+				res.setID(current, rpyId);
+			} else {
+				eobjectForSecondRun.add(current);
+			}
+		}
+
+		// second run (duplicated and null id in the first run)
+		for (final EObject current : eobjectForSecondRun) {
+			final String value = XMI_ID_Helper.calculateXMI_ID(current);
+			if (isValidId(value) && false == knownIds.contains(value)) {
+				knownIds.add(value);
+				res.setID(current, value);
+			} else {
+				System.out.println("It is not possible to found an id for " + current.toString()); //$NON-NLS-1$
+			}
+		}
+
+		// third run (stereotype)
+		for (final EObject current : eobjectForThirdRun) {
+			final String value = XMI_ID_Helper.calculateXMI_ID(current);
+			if (isValidId(value) && false == knownIds.contains(value)) {
+				knownIds.add(value);
+				res.setID(current, value);
+			} else {
+				System.out.println("It is not possible to found an id for " + current.toString()); //$NON-NLS-1$
+			}
+		}
+	}
+
+	/**
+	 * 
+	 * @param eobject
+	 *            an eobject
+	 * @return
+	 * 		<code>true</code> if the object must be manage during the second run
+	 */
+	protected boolean requiredToBeManagedInASecondRun(final EObject eobject) {
+		return eobject instanceof ConnectorEnd;
+	}
+
+	/**
+	 * 
+	 * @param object
+	 *            a rpy object
+	 * @return
+	 * 		the id of this object or <code>null</code> if not found
+	 */
+	protected String getRpyId(final Object object) {
+		if (object instanceof EObject) {
+			final EObject eobject = (EObject) object;
+			final EStructuralFeature idFeature = eobject.eClass().getEStructuralFeature(ID_FEATURE_NAME);
+			if (null != idFeature) {
+				final String value = (String) eobject.eGet(idFeature);
+				return value;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * 
+	 * @param eobject
+	 *            an eobject
+	 * @return
+	 * 		<code>true</code> when the element represents a stereotype application
+	 */
+	protected boolean isStereotypeApplication(final EObject eobject) {
+		return null != UMLUtil.getBaseElement(eobject);
+	}
+
+	/**
+	 * 
+	 * @param id
+	 *            an id
+	 * @return
+	 * 		<code>true</code> when the string represents a valid id : so it must contains GUID or OLDID
+	 */
+	public static final boolean isValidId(final String id) {
+		return null != id && (id.contains(RpyUtil.GUID_STRING) || id.contains(RpyUtil.OLDID_STRING));
+	}
+
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/xmi/UML_XMI_ID_Helper.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/xmi/UML_XMI_ID_Helper.java
new file mode 100644
index 0000000..ebacf5f
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/xmi/UML_XMI_ID_Helper.java
@@ -0,0 +1,381 @@
+/*****************************************************************************
+ * Copyright (c) 2017 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.xmi;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.interoperability.rpy.importer.utils.RpyUtil;
+import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.ConnectorEnd;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.InstanceValue;
+import org.eclipse.uml2.uml.OpaqueExpression;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.PackageImport;
+import org.eclipse.uml2.uml.ProfileApplication;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.TemplateBinding;
+import org.eclipse.uml2.uml.TemplateParameterSubstitution;
+import org.eclipse.uml2.uml.TemplateableElement;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.ValueSpecification;
+import org.eclipse.uml2.uml.util.UMLUtil;
+
+/**
+ * @author VL222926
+ *         This class allows to generate XMI_ID to use for UML element
+ */
+public class UML_XMI_ID_Helper {
+
+	private static final String PROPERTY_OF_ASSOCIATION__OTHER_END = "-other-end"; //$NON-NLS-1$
+
+	private static final String ASSOCIATION = "-association"; //$NON-NLS-1$
+
+	private static final String CONNECTOR_END = "end"; //$NON-NLS-1$
+
+	public static final String VALUE_SPECIFICATION__LOWER_VALUE = "multiplicity-lower-value"; //$NON-NLS-1$
+
+	public static final String VALUE_SPECIFICATION__UPPER_VALUE = "multiplicity-upper-value"; //$NON-NLS-1$
+
+	public static final String MODEL_ELEMENT_OWNED_COMMENT = "modelElement-ownedComment"; //$NON-NLS-1$
+
+	public static final String OF = "of"; //$NON-NLS-1$
+
+	/**
+	 * 
+	 * @param element
+	 *            an element
+	 * @return
+	 * 		the calculated XMI_ID for the given element, value can be <code>null</code>
+	 */
+	public static final String calculateIdForUML(EObject element) {
+		String result = null;
+		if (element instanceof Element) {
+			// it is a UML Element
+			result = calculateIdForUML((Element) element);
+		} else if (element instanceof EObject) {
+			// we check if it is a Stereotype Application
+			Element baseElement = UMLUtil.getBaseElement(element);
+			if (null != baseElement) {
+				result = calculateIDForStereotypeApplication(element, baseElement);
+			} else {
+				result = EMF_XMI_ID_Helper.calculateIdForEMF(element);
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * 
+	 * @param element
+	 *            an element
+	 * @return
+	 * 		the ID calculated for this element
+	 */
+	private static final String calculateIdForUML(final Element element) {
+		String returnedValue = null;
+		if (element instanceof OpaqueExpression) {
+			returnedValue = calculateId((OpaqueExpression) element);
+		} else if (element instanceof InstanceValue) {
+			returnedValue = calculateId((InstanceValue) element);
+		} else if (element instanceof Comment) {
+			returnedValue = calculateId((Comment) element);
+		} else if (element instanceof Package) {
+			returnedValue = calculateId((Package) element);
+		} else if (element instanceof Property) {
+			returnedValue = calculateId((Property) element);
+		} else if (element instanceof Association) {
+			returnedValue = calculateId((Association) element);
+		} else if (element instanceof TemplateBinding) {
+			returnedValue = calculateId((TemplateBinding) element);
+		} else if (element instanceof TemplateParameterSubstitution) {
+			returnedValue = calculateId((TemplateParameterSubstitution) element);
+		} else if (element instanceof ConnectorEnd) {
+			returnedValue = calculateId((ConnectorEnd) element);
+		} else if (element instanceof ValueSpecification) {
+			returnedValue = calculateId((ValueSpecification) element);
+		} else if (element instanceof PackageImport) {
+			returnedValue = calculateId((PackageImport) element);
+		} else if (element instanceof ProfileApplication) {
+			returnedValue = calculateId((ProfileApplication) element);
+		} else {
+			// Activator.log.warn(NLS.bind("The element of type {0} has no ID and is not yet managed", element.eClass())); //$NON-NLS-1$
+		}
+		return returnedValue;
+	}
+
+	/**
+	 * 
+	 * @param comment
+	 *            a comment
+	 * @return
+	 * 		the ID calculated for it
+	 */
+	public static final String calculateId(Comment comment) {
+		final Element owner = comment.getOwner();
+		final String parentId = XMI_ID_Helper.getXMI_ID(owner);
+		final StringBuilder builder = new StringBuilder(parentId);
+		builder.append(RpyUtil.ID_SEPARATOR);
+		builder.append(MODEL_ELEMENT_OWNED_COMMENT);
+		builder.append(RpyUtil.ID_SEPARATOR);
+		builder.append(getIndexToUseToBuildXMI_ID(owner.getOwnedComments(), comment));
+		return builder.toString();
+	}
+
+	/**
+	 * 
+	 * @param pack
+	 *            a package
+	 * @return
+	 * 		the ID calculated for it
+	 */
+	public static final String calculateId(final Package pack) { // use for the package created by the transformation (like this one for user type declaration)
+		final Element parent = pack.getOwner();
+		final String parentID = XMI_ID_Helper.getXMI_ID(parent);
+		final StringBuilder builder = new StringBuilder(parentID);
+		builder.append(RpyUtil.ID_SEPARATOR);
+		builder.append(pack.eClass().getName());
+		builder.append(RpyUtil.ID_SEPARATOR);
+		builder.append(pack.getQualifiedName());
+		return builder.toString();
+	}
+
+	/**
+	 * 
+	 * @param property
+	 *            a property
+	 * @return
+	 * 		the ID calculated for it
+	 */
+	public static final String calculateId(final Property property) {
+		final Association association = property.getAssociation();
+		final List<Property> ends = association.getMemberEnds();
+		final StringBuilder builder = new StringBuilder();
+		for (final Property current : ends) {
+			if (current != property) {
+				builder.append(XMI_ID_Helper.getXMI_ID(current));
+				builder.append(PROPERTY_OF_ASSOCIATION__OTHER_END);
+				if (ends.size() > 2) {
+					builder.append(RpyUtil.ID_SEPARATOR);
+					builder.append(getIndexToUseToBuildXMI_ID(ends, current));
+				}
+				break;
+			}
+		}
+
+		return builder.toString();
+	}
+
+	/**
+	 * 
+	 * @param association
+	 *            an association
+	 * @return
+	 * 		the ID calculated for it
+	 */
+	public static final String calculateId(final Association association) {
+		final List<Property> ends = association.getMemberEnds();
+		final StringBuilder builder = new StringBuilder();
+		for (final Property current : ends) {
+			if (current.eContainer() != association) {
+				builder.append(XMI_ID_Helper.getXMI_ID(current));
+				builder.append(ASSOCIATION);
+				if (ends.size() > 2) {
+					builder.append(RpyUtil.ID_SEPARATOR);
+					builder.append(getIndexToUseToBuildXMI_ID(ends, current));
+				}
+				break;
+			}
+		}
+		return builder.toString();
+	}
+
+	/**
+	 * 
+	 * @param templateBinding
+	 *            a templateBinding
+	 * @return
+	 * 		the ID calculated for it
+	 */
+	public static final String calculateId(final TemplateBinding templateBinding) {
+		final TemplateableElement parent = (TemplateableElement) templateBinding.getOwner();
+		final String parentID = XMI_ID_Helper.getXMI_ID(parent);
+		final StringBuilder builder = new StringBuilder(parentID);
+		builder.append(RpyUtil.ID_SEPARATOR);
+		builder.append(templateBinding.eClass().getName());
+		builder.append(RpyUtil.ID_SEPARATOR);
+		builder.append(getIndexToUseToBuildXMI_ID(parent.getTemplateBindings(), templateBinding));
+		return builder.toString();
+	}
+
+	/**
+	 * 
+	 * @param templateBindingSubsitution
+	 *            a templateBindingSubsitution
+	 * @return
+	 * 		the ID calculated for it
+	 */
+	public static final String calculateId(final TemplateParameterSubstitution templateBindingSubsitution) {
+		final TemplateBinding parent = templateBindingSubsitution.getTemplateBinding();
+		final String parentID = XMI_ID_Helper.getXMI_ID(parent);
+		final StringBuilder builder = new StringBuilder(parentID);
+		builder.append(RpyUtil.ID_SEPARATOR);
+		builder.append(templateBindingSubsitution.eClass().getName());
+		builder.append(RpyUtil.ID_SEPARATOR);
+		builder.append(getIndexToUseToBuildXMI_ID(parent.getParameterSubstitutions(), templateBindingSubsitution));
+		return builder.toString();
+	}
+
+	/**
+	 * 
+	 * @param connectorEnd
+	 *            a connectorEnd
+	 * @return
+	 * 		the ID calculated for it
+	 */
+	public static final String calculateId(ConnectorEnd connectorEnd) {
+		final Connector owner = (Connector) connectorEnd.getOwner();
+		final String parentId = XMI_ID_Helper.getXMI_ID(owner);
+		final StringBuilder builder = new StringBuilder(parentId);
+		builder.append(RpyUtil.ID_SEPARATOR);
+		builder.append(CONNECTOR_END);
+		builder.append(RpyUtil.ID_SEPARATOR);
+		builder.append(getIndexToUseToBuildXMI_ID(owner.getEnds(), connectorEnd));
+		return builder.toString();
+	}
+
+	/**
+	 * 
+	 * @param list
+	 *            a list
+	 * @param anEObject
+	 *            an eobejct
+	 * @return
+	 * 		the index of the object to use to build the XMI_ID
+	 */
+	protected static final int getIndexToUseToBuildXMI_ID(final List<? extends EObject> list, final EObject anEObject) {
+		return list.indexOf(anEObject) + 1; // +1 to match with an import previously existing at our initial partner and to ease model comparison
+	}
+
+	/**
+	 * 
+	 * @param valueSpec
+	 *            a valueSpec
+	 * @return
+	 * 		the ID calculated for it
+	 */
+	public static final String calculateId(final ValueSpecification valueSpec) {
+		StringBuilder builder = new StringBuilder(XMI_ID_Helper.getXMI_ID(valueSpec.eContainer()));
+		builder.append(RpyUtil.ID_SEPARATOR);
+		if (valueSpec instanceof ValueSpecification && valueSpec.eContainingFeature() == UMLPackage.eINSTANCE.getMultiplicityElement_LowerValue()) {
+			builder.append(VALUE_SPECIFICATION__LOWER_VALUE);
+		} else if (valueSpec instanceof ValueSpecification && valueSpec.eContainingFeature() == UMLPackage.eINSTANCE.getMultiplicityElement_UpperValue()) {
+			builder.append(VALUE_SPECIFICATION__UPPER_VALUE);
+		} else {
+			builder = new StringBuilder(); // no idea ?
+		}
+		return builder.toString();
+	}
+
+	/**
+	 * 
+	 * @param packageImport
+	 *            a packageImport
+	 * @return
+	 * 		the ID calculated for it
+	 */
+	public static final String calculateId(final PackageImport packageImport) {
+		final EObject parent = packageImport.eContainer();
+		final String parentID = XMI_ID_Helper.getXMI_ID(parent);
+		final StringBuilder builder = new StringBuilder(parentID);
+		builder.append(RpyUtil.ID_SEPARATOR);
+		builder.append(packageImport.eClass().getName());
+		builder.append(RpyUtil.ID_SEPARATOR);
+		builder.append(((PackageImport) packageImport).getImportedPackage().getQualifiedName());
+		return builder.toString();
+	}
+
+	/**
+	 * 
+	 * @param profileApplication
+	 *            a profileApplication
+	 * @return
+	 * 		the ID calculated for it
+	 */
+	public static final String calculateId(final ProfileApplication profileApplication) {
+		final EObject parent = profileApplication.eContainer();
+		final String parentID = XMI_ID_Helper.getXMI_ID(parent);
+		final StringBuilder builder = new StringBuilder(parentID);
+		builder.append(RpyUtil.ID_SEPARATOR);
+		builder.append(profileApplication.eClass().getName());
+		builder.append(RpyUtil.ID_SEPARATOR);
+		builder.append(((ProfileApplication) profileApplication).getAppliedProfile().getQualifiedName());
+		return builder.toString();
+	}
+
+
+	/**
+	 * 
+	 * @param eobject
+	 *            an eobject representing a stereotype application
+	 * @return
+	 * 		the calculated XMI_ID for the given element
+	 */
+	private static final String calculateIDForStereotypeApplication(final EObject stereotypeApplication, final Element baseElement) {
+		final StringBuilder builder = new StringBuilder();
+		String baseElementId = XMI_ID_Helper.getXMI_ID(baseElement);
+		String eClassName = stereotypeApplication.eClass().getName();
+		builder.append(eClassName);
+		builder.append(RpyUtil.ID_SEPARATOR);
+		builder.append(OF);
+		builder.append(RpyUtil.ID_SEPARATOR);
+		builder.append(baseElementId);
+		return builder.toString();
+	}
+
+	/**
+	 * 
+	 * @param eobject
+	 *            an eobject representing a stereotype application
+	 * @return
+	 * 		the calculated XMI_ID for the given element
+	 */
+	private static final String calculateId(final OpaqueExpression opaqueExpression) {
+		final EObject parent = opaqueExpression.eContainer();
+		final String parentID = XMI_ID_Helper.getXMI_ID(parent);
+		final StringBuilder builder = new StringBuilder(parentID);
+		builder.append(RpyUtil.ID_SEPARATOR);
+		builder.append(opaqueExpression.eClass().getName());
+		return builder.toString();
+	}
+
+	/**
+	 * 
+	 * @param eobject
+	 *            an eobject representing a stereotype application
+	 * @return
+	 * 		the calculated XMI_ID for the given element
+	 */
+	private static final String calculateId(final InstanceValue instanceValue) {
+		final EObject parent = instanceValue.eContainer();
+		final String parentID = XMI_ID_Helper.getXMI_ID(parent);
+		final StringBuilder builder = new StringBuilder(parentID);
+		builder.append(RpyUtil.ID_SEPARATOR);
+		builder.append(instanceValue.eClass().getName());
+		return builder.toString();
+	}
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/xmi/XMI_ID_Helper.java b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/xmi/XMI_ID_Helper.java
new file mode 100644
index 0000000..65a21d1
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/src/org/eclipse/papyrus/interoperability/rpy/xmi/XMI_ID_Helper.java
@@ -0,0 +1,59 @@
+/*****************************************************************************
+ * Copyright (c) 2017 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:
+ *   CEA LIST - Initial API and implementation
+ *   
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.xmi;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.xmi.XMIResource;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.papyrus.interoperability.rpy.Activator;
+
+/**
+ * This class is used to calculate XMI_ID
+ *
+ */
+public class XMI_ID_Helper {
+
+	/**
+	 * This method calculate an XMI ID for element. The goal of this method is to generate unique XMI_ID for element which doesn't exist in Rpy Legacy Tool and there is not
+	 * 
+	 * @param element
+	 *            an element
+	 * @return
+	 * 		the XMI_ID to use for the element
+	 */
+	public static final String calculateXMI_ID(final EObject element) {
+		String result = UML_XMI_ID_Helper.calculateIdForUML(element);
+		// if (result!=null && !result.contains(RpyUtil.GUID_STRING) && !result.contains(RpyUtil.OLDID_STRING)) {
+		// Activator.log.warn(NLS.bind("The ID built for an element of type {0} doesn't contains \"GUID\" neither \"OLDID\" strings.", element.eClass())); //$NON-NLS-1$
+		// }
+		return result;
+	}
+
+	/**
+	 * 
+	 * @param eobject
+	 *            an eobject
+	 * @return
+	 * 		the current XMI_ID for this object
+	 */
+	public static final String getXMI_ID(final EObject eobject) {
+		final Resource res = eobject.eResource();
+		if (res instanceof XMIResource) {
+			return ((XMIResource) res).getID(eobject);
+		}
+		Activator.log.error(NLS.bind("The resource of {0} is not a XMIResource", eobject), null); //$NON-NLS-1$
+		return null;
+	}
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/MarteProfile.qvto b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/MarteProfile.qvto
new file mode 100644
index 0000000..ea96fa9
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/MarteProfile.qvto
@@ -0,0 +1,161 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *****************************************************************************/
+ 
+import org.eclipse.papyrus.interoperability.rpy.blackboxes.sysml11.NestedConnectorEndBlackboxes;
+import org.eclipse.papyrus.interoperability.rpy.blackboxes.Rpy2PapyrusNotationBlackboxes;
+import Rpy2PapyrusSemanticElements;
+import RpyToPapyrus;
+import RpyUtils;
+import SysMLRpyUtils;
+
+modeltype umlrpy "strict" uses 'http://www.eclipse.org/Papyrus/UMLRpy/1.0.0';
+modeltype uml "strict" uses 'http://www.eclipse.org/uml2/5.0.0/UML';
+modeltype marte "strict" uses 'http://www.eclipse.org/papyrus/MARTE/1';
+modeltype ecore "strict" uses 'http://www.eclipse.org/emf/2002/Ecore';
+modeltype UMLPrimitivesTypes "strict" uses 'http://www.eclipse.org/uml2/5.0.0/Types' ;
+
+
+/**
+*
+* This transfo apply the Marte profile and required stereotype to the model
+*
+*/
+/**TODO : the dependency on Marte was refused at this time, that's why the plugin doesn't have dependency on it, and this transformation doesn't compile. 
+*
+* Nevertheless, to avoid to lose this work, I keep this file in the plugin
+*/
+transformation MarteProfile(in inModel:umlrpy, out outModel:uml, in marteProfile:marte, in primitives:UMLPrimitivesTypes)
+extends Rpy2PapyrusSemanticElements(in inModel:umlrpy, out outModel:uml, in primitives:UMLPrimitivesTypes)
+
+{
+//TODO : remove this field
+	property retunitStero =  marteProfile.objectsOfType(Profile)![name = "HLAM"].ownedStereotype![name = "RtUnit"];
+	
+	main() {
+			if (isRpyMarteAppliedProfile() and marteProfile<>null ) {
+				//if yes apply it to the output model
+				var model: Model := outModel.rootObjects()[uml::Model]->any(true);
+				
+				// apply marte profile with all sub profiles
+				var marteProfiles : Set(Profile) := marteProfile.objectsOfType(Profile);
+	
+				marteProfiles->forEach(profile){
+					model.applyProfile(profile);
+				};
+	
+	
+				//transform the Rpy MARTE applied sterotype to Papyrus MARTE applied sterotype
+				inModel.rootObjects()[IProject].Subsystems.map toMartePapyrusProfile();
+		
+				// change one sterotype tagged value
+				//var sterotypedClass:uml::Class=outModel.objectsOfType(uml::Class)->select(c|not (c.getAppliedStereotypes()->isEmpty()))->any(true);
+				//sterotypedClass.setValue(sterotypedClass.getAppliedStereotypes()![Stereotype], "isMain", true);
+	
+			};
+	};
+}
+
+
+mapping DefaultSubsystemType::toMartePapyrusProfile(){
+
+self.allSubobjectsOfKind(IClass)->forEach(classe)
+{
+	if ( not(classe[IClass].Stereotypes.oclIsUndefined()->any(true)))
+	{
+		var stereotypes:Set(IUnit):=classe[IClass].Stereotypes->asSet();
+		stereotypes->forEach(stereotype)
+		{
+		if (stereotype.oclIsTypeOf(IStereotype))
+		{
+			// map it to the papyrus marte profile
+			var papyMarteSter:uml::Stereotype := stereotype[IStereotype].map toPapyrusMarteStereotype()->any(true);
+			var umlClass:uml::Class:=classe.resolveIn(IClass::toClasses, Class)![Class];
+			if(not(papyMarteSter.oclIsUndefined())){
+		    	umlClass.applyStereotype(papyMarteSter);
+		    
+		    //
+		    	umlClass.setValue(umlClass.getAppliedStereotypes()![Stereotype], "isMain", true);
+			}
+		}
+        }
+    }
+	
+};
+}
+
+
+/**
+*
+* Return the UML Stereotype to apply for the Rahspdoy stereotype or null when not found
+*/
+//TODO : remove me
+mapping umlrpy::IStereotype::iStereotypeToUMLStereotype():uml::Stereotype disjuncts 
+//	 umlrpy::IStereotype::toPapyrusSysML11Stereotype,
+	 umlrpy::IStereotype::toPapyrusMarteStereotype
+{}
+
+
+/**
+*
+* Map a Rpy MARTE Stereotype on a (Papyrus) MARTE Stereotype when this one exists
+*/
+mapping IStereotype::toPapyrusMarteStereotype() :uml::Stereotype when {self.name<>null and self.isARpyMARTEStereotype() and getMarteStereotype(self.name)<>null}{
+	init{
+		result :=getMarteStereotype(self.name);
+	}
+}
+
+/**
+* Return the MARTE Stereotype for the given string or null if not found
+*
+*/
+query getMarteStereotype(s:String ) :uml::Stereotype {
+	var stereotype: uml::Stereotype = null;
+	stereotype:= switch  {
+		case (s="RtUnit") marteProfile.objectsOfType(Stereotype)![name = "RtUnit"];
+		case (s="PpUnit") marteProfile.objectsOfType(Stereotype)![name = "PpUnit"];
+	};
+	return stereotype;
+	
+}
+
+
+/**
+* Return true if the Rpy Marte Profile is applied on the Rpy model
+*
+*/
+query isRpyMarteAppliedProfile() :Boolean {
+	var ret:Boolean = false;
+	var isProfiledModel:Boolean:=inModel.objectsOfType(IStereotype)->size()>0;
+	if (isProfiledModel) {
+		inModel.objectsOfType(IStereotype)->forEach(stereotype){
+			if(stereotype.isARpyMARTEStereotype()){	
+				ret:= true;
+				break;
+			}
+		}
+	};
+	return ret;
+}
+
+/**
+* Return true if the IStereotype comes from the MARTE Rpy profile
+*
+*/
+query umlrpy::IStereotype::isARpyMARTEStereotype():Boolean{
+	var ret:Boolean:=false;
+	var profileresource:EResource:=self[EObject].eResource()![EResource];
+	if(profileresource<>null){
+		ret:=profileresource.toString().endsWith("MARTE.umlrpy'")
+	};
+	return ret;	
+}
\ No newline at end of file
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/Rpy2PapyrusNotation.qvto b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/Rpy2PapyrusNotation.qvto
new file mode 100644
index 0000000..ee15f5f
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/Rpy2PapyrusNotation.qvto
@@ -0,0 +1,937 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *****************************************************************************/
+ 
+import Rpy2PapyrusSemanticElements;
+import SemanticInternationalization;
+import RpyToPapyrus;
+import SysML11Diagrams;
+import SysML11Profile;
+import RpyToPapyrusDiagamCommon;
+
+import org.eclipse.papyrus.interoperability.rpy.blackboxes.Rpy2PapyrusNotationBlackboxes;
+
+modeltype umlrpy "strict" uses 'http://www.eclipse.org/Papyrus/UMLRpy/1.0.0';
+modeltype notation "strict" uses 'http://www.eclipse.org/gmf/runtime/1.0.2/notation';
+modeltype uml "strict" uses 'http://www.eclipse.org/uml2/5.0.0/UML';
+
+modeltype sysml11 "strict" uses 'http://www.eclipse.org/papyrus/0.7.0/SysML';
+modeltype ecore "strict" uses 'http://www.eclipse.org/emf/2002/Ecore';
+
+//TODO : required to access to Float object, should probably be fixed and removed
+modeltype sash "strict" uses 'http://www.eclipse.org/papyrus/0.7.0/sashdi';
+
+modeltype vpstyle "strict" uses 'http://www.eclipse.org/papyrus/infra/viewpoints/policy/style';
+modeltype UMLPrimitivesTypes "strict" uses 'http://www.eclipse.org/uml2/5.0.0/Types' ;
+modeltype properties "strict" uses 'http://www.eclipse.org/papyrus/internationalization/model';
+
+
+transformation Rpy2PapyrusNotation(in semantics : umlrpy, out graphics : notation, inout model:uml, in Sysml11Profile:sysml11, in primitives:UMLPrimitivesTypes, inout labels:properties)
+extends Rpy2PapyrusSemanticElements(in inModel:umlrpy, out outModel:uml,  in primitives:UMLPrimitivesTypes)
+access transformation Rpy2PapyrusSemanticElements(in inModel:umlrpy, out outModel:uml, in primitives:UMLPrimitivesTypes),
+SysML11Diagrams(in semantics : umlrpy, out graphics : notation, inout model:uml, in Sysml11Profile:sysml11, in primitives:UMLPrimitivesTypes,inout labels:properties),
+SysML11Profile(in inModel:umlrpy, out outModel:uml, in Sysml11Profile:sysml11, in primitives:UMLPrimitivesTypes),
+SemanticInternationalization(in inModel:umlrpy, out outModel:uml, in primitives:UMLPrimitivesTypes, inout labels:properties)
+
+
+	
+{
+	main() {
+		//we do the semantic transformation for UML
+		var rhap2uml := new Rpy2PapyrusSemanticElements(semantics, model, primitives);
+		rhap2uml.transform();
+		
+		var internationalization:= new SemanticInternationalization(semantics, model, primitives, labels);
+		internationalization.transform();
+		
+		//we apply the sysml transformation when required
+		if(sysml11<>null){
+			var sysmlProfile:=new SysML11Profile(semantics,  model, Sysml11Profile, primitives);
+			sysmlProfile.transform();
+		};
+		
+		
+		//the import for UML Diagram is commented, because they are not yet finished neither tested
+		//We do the diagram transformation for UML2
+//		var diagrams:Set(IDiagram):= semantics.objects()[IDiagram];
+//		diagrams->map iDiagramToPapyrusDiagram();
+//		graphics.objectsOfType(Shape)->select(type = '6000').map fixLayout();
+		
+		//We do the SysML transformation to get SysML 1.1 diagram
+		var iDiagramToSysML11 := new SysML11Diagrams(semantics, graphics, model, Sysml11Profile, primitives, labels);
+		iDiagramToSysML11.transform();
+		
+		
+	}
+}
+
+mapping rpymetamodel::IDiagram::iDiagramToPapyrusDiagram():Diagram disjuncts
+	rpymetamodel::IDiagram::iDiagramToUMLClassDiagram,
+	rpymetamodel::IDiagram::iDiagramToStateMachineDiagram
+{}
+
+
+mapping rpymetamodel::IDiagram::iDiagramToUMLClassDiagram():Diagram when{self.isUserModelDiagram() and self.isUMLPureClassDiagram()}{
+	name:=self.name;
+	measurementUnit:= MeasurementUnit::Pixel;
+	
+	//TODO : we must cross all possible SubSystem an dnot only the default one!
+	//TODO : don't call default subsystem but semantics.rootObjects()[IProject].Subsystems'
+	var Subsystem: ISubsystem:= semantics.rootObjects()[IProject].defaultSubsystem![ISubsystem]; //TODO : could probably be replaced by the owner of the IDiagram (like done for StateMachine)
+	
+	type:= 'PapyrusUMLClassDiagram';
+	children:= self[IDiagram].graphicChart.graphElements[CGIClass].map toPapyrusNode();
+	element:= Subsystem.oclAsType(DefaultSubsystemType).resolveIn (umlrpy::DefaultSubsystemType::iDefaultSubsystemTypeToPackage, uml::Package)![EObject];
+	children:= self[IDiagram].graphicChart.graphElements[CGIClass].map toPapyrusNode();
+	edges:= self[IDiagram].graphicChart.graphElements[CGIInheritance].map toPapyrusGeneralizationLink();
+	edges+= self[IDiagram].graphicChart.graphElements[CGIAssociationEnd].map toPapyrusAssociation();
+	result.map toInnerClassDiagram();
+}
+
+mapping rpymetamodel::IDiagram::iDiagramToStateMachineDiagram():Diagram when{self.isUserModelDiagram() and self.isUMLPureStateMachineDiagram()}{
+	name:=self.name;
+	measurementUnit:= MeasurementUnit::Pixel;
+	
+	var stateChart:CGIStateChart:= self[IDiagram].graphicChart![GraphicChartType].oclAsType(CGIStateChart);
+	type:= 'PapyrusUMLStateMachineDiagram';
+	element:= self[EObject].eContainer().resolveIn ( umlrpy::IStateChart::toStateMachine, uml::StateMachine)![EObject];
+	
+		// build the state machine shape with its region and its pseudo state
+	children:= stateChart.map toPapyrusStateMachine();
+	edges:= stateChart.graphElements[CGITrans]->select(t|t.m_type![String].equalsIgnoreCase("29")).map toPapyrusInitialTransition(stateChart);
+	edges+= stateChart.graphElements[CGITrans]->select(t|t.m_type![String].equalsIgnoreCase("28")).map toPapyrusTransition(stateChart);
+	result.map toInnerStateMachineDiagram();
+}
+
+
+
+
+mapping inout Shape::fixLayout() 
+{
+
+var bounds := if self.layoutConstraint.oclIsUndefined() then object Bounds{} else self.layoutConstraint.oclAsType(Bounds) endif;
+	self.layoutConstraint := bounds;
+	
+	
+}
+
+
+
+
+
+mapping umlrpy::CGIStateChart::toPapyrusStateMachine(): Shape
+{
+	result.element:=self.m_pModelObject.resolveIn ( umlrpy::IStateChart::toStateMachine, uml::StateMachine)![EObject];
+	result.type := self.getNodesType();
+	
+	// name deocration Node
+	result.children:= object notation::DecorationNode {
+
+		type:= "2001"; // name decoration Node
+		layoutConstraint:= object Bounds {
+		width:=800; // default 
+		height:=20;
+	}
+	};
+	// structure decoration Node that contains Region
+	result.children+= object notation::BasicCompartment {
+
+		type:= "2002"; // name decoration Node
+		children:= self.map getRegionShape();
+		layoutConstraint:= object Bounds {
+		y:=20;
+		width:=800; // default 
+		height:=400;
+	}
+	};
+	result.layoutConstraint:= object Bounds {
+		x:=30;
+		y:=30;
+		width:=800;
+		height:=400;
+	}
+}
+
+mapping umlrpy::CGIStateChart::getRegionShape(): Shape
+{
+init {
+var statemachine:StateMachine:= self.m_pModelObject.resolveIn ( umlrpy::IStateChart::toStateMachine, uml::StateMachine)![StateMachine];
+result:= object Shape
+{
+element:= statemachine[StateMachine].region![EObject];
+type:= "3000";
+eAnnotations := object EAnnotation {
+			source := "RegionAnnotationKey";
+			details := object EStringToStringMapEntry{
+				key := "RegionZoneKey";
+				value := 'B';
+			}
+		};
+children+= object notation::BasicCompartment {
+
+		type:= "3002"; // name decoration Node
+		children:= self[CGIStateChart].graphElements[CGIState].map toPapyrusPseudoStateNode(self);
+		children+= self[CGIStateChart].graphElements[CGIState]->select(s|s.m_pParent=self.m_pRoot).map toPapyrusFirstInnerStateNode(self);
+		layoutConstraint:= object Bounds {};
+	};
+layoutConstraint:= object Bounds {
+		width:=800; 
+		height:=380;
+		};
+};
+}
+}
+
+
+mapping umlrpy::CGIState::getSateRegionShape(statechart:CGIStateChart): Shape
+{
+init {
+var state:State:= self.m_pModelObject.resolveIn ( umlrpy::IState::toCompositeStates, uml::State)![State];
+result:= object Shape
+{
+element:= state.region![EObject];
+type:= "3000";
+eAnnotations := object EAnnotation {
+			source := "RegionAnnotationKey";
+			details := object EStringToStringMapEntry{
+				key := "RegionZoneKey";
+				value := 'B';
+			}
+		};
+children+= object notation::BasicCompartment {
+
+		type:= "3002"; // name decoration Node
+		children:= self.map toPapyrusInnerPseudoStateNode();
+		var allsubStates:Set(CGIState):=statechart[CGIStateChart].graphElements[CGIState]->select(s|s.m_pParent=self)->asSet();
+		//log ("all sub states"+allsubStates->size().toString());
+		children+= allsubStates.map toPapyrusFirstInnerStateNode(statechart);
+		layoutConstraint:= object Bounds {};
+	};
+layoutConstraint:= object Bounds {
+		width:=800; 
+		height:=380;
+		};
+};
+}
+}
+mapping umlrpy::CGIState::toPapyrusPseudoStateNode(statechart:CGIStateChart) : Shape  when { self=statechart.m_pRoot}
+{
+	
+	var pseudostate:EObject :=statechart.m_pModelObject.resolveIn(umlrpy::IStateChart::toStateMachine, uml::StateMachine)![StateMachine].region.subvertex->select(s|s.oclIsKindOf(Pseudostate))![EObject]; 
+	
+	
+	result.element := pseudostate; 
+	result.type := self.getNodeType();
+	result.children:= self.map toDecorationNode();
+	result.children+= object DecorationNode
+	{
+		type:="8002";
+		layoutConstraint:= object Location { x:=25; y:=-10;
+		};
+	};
+	
+	result.layoutConstraint:= self.map toLayoutConstraint();
+	
+	
+}
+
+mapping umlrpy::CGIState::toPapyrusInnerPseudoStateNode() : Shape  //when { self=statechart.m_pRoot}
+{
+	var region:Region :=self.m_pModelObject.resolveIn ( umlrpy::IState::toCompositeStates, uml::State)![State].region->any(true);
+	
+	var pseudostate:EObject :=region.subvertex->select (s|s[Vertex].oclIsKindOf(Pseudostate)->any(true))![EObject]; 
+	
+	
+	result.element := pseudostate; 
+	result.type := '8000';
+	result.children:= object DecorationNode
+	{
+		type:="8001";
+		layoutConstraint:= object Location { };
+	};
+	result.children+= object DecorationNode
+	{
+		type:="8002";
+		layoutConstraint:= object Location { };
+	};
+	
+	result.layoutConstraint:= object Bounds { };
+	
+	
+}
+ mapping umlrpy::CGIState::toPapyrusFirstInnerStateNode(statechart:CGIStateChart) : Shape // when { not (self.m_name.oclIsUndefined()) and self.m_pParent.m_name.toString().equalsIgnoreCase(statechart.m_pRoot.m_name.toString());}
+ when { not (self.m_name.oclIsUndefined()) and not (self.m_pParent.oclIsUndefined());}{
+	
+	var state:EObject :=self.m_pModelObject.resolveIn(umlrpy::IState::toStates, uml::State)![EObject]; 
+	
+	// create region for composite states
+	if (state.oclIsUndefined() or state=null)
+	{
+	state :=self.m_pModelObject.resolveIn(umlrpy::IState::toCompositeStates, uml::State)![EObject]; 
+	result.element := state; 
+	result.type := self.getNodeType();
+	result.children:= self.map toDecorationNode();
+	result.children+= object BasicCompartment
+	{
+		type:="6002";
+		layoutConstraint:= object Bounds {};
+		eAnnotations := object EAnnotation {
+			source := "PapyrusCSSForceValue";
+			details := object EStringToStringMapEntry{
+				key := "visible";
+				value := 'true';
+			}
+		};
+		children+= self.map getSateRegionShape(statechart);
+	};
+	
+	
+	result.children+= object DecorationNode
+	{
+		type:="19003";
+		layoutConstraint:= object Bounds {};
+	};
+	if not (self.m_transform->oclIsUndefined()) then
+	{
+	result.layoutConstraint:= self.map toLayoutConstraint();
+	}endif;
+	
+	}
+	
+	else
+	{
+	
+	result.element := state; 
+	result.type := self.getNodeType();
+	result.children:= self.map toDecorationNode();
+	result.children+= object BasicCompartment
+	{
+		type:="6002";
+		layoutConstraint:= object Bounds {};
+	};
+	
+	
+	result.children+= object DecorationNode
+	{
+		type:="19003";
+		layoutConstraint:= object Bounds {};
+	};
+	if not (self.m_transform->oclIsUndefined()) then
+	{
+	result.layoutConstraint:= self.map toLayoutConstraint();
+	}endif;
+	}
+}
+
+mapping umlrpy::CGIAssociationEnd::toPapyrusAssociation() : Connector 
+{
+
+	var sourceNode:CGIClass:=self.m_pSource![CGIClass];
+	var targetNode:CGIClass:=self.m_pTarget![CGIClass];
+	
+	var source_mtransform:List(String):= sourceNode.m_transform->asList();
+	var source_mpolygon:List(String):= sourceNode.m_polygon->asList();
+	var target_mtransform:List(String):= targetNode.m_transform->asList();
+	var target_mpolygon:List(String):= targetNode.m_polygon->asList();
+	var source_Port:List(String):= self.m_SourcePort->asList();
+	var target_Port:List(String):= self.m_TargetPort->asList();
+	var sourceAnchorId: String:= getAnchorId(source_mpolygon, source_mtransform,source_Port);
+	var targetAnchorId: String:= getAnchorId(target_mpolygon, target_mtransform,target_Port);
+	
+	result.element:=self.m_pModelObject.resolveIn(umlrpy::IAssociationEnd::iAssociationEndToUMLAssociation, uml::Association)![EObject];
+	
+	result.type := self.getEdgeType();
+	result.source:= sourceNode.resolveIn(umlrpy::CGIClass::toPapyrusNode, Shape)![View];
+	result.target:= targetNode.resolveIn(umlrpy::CGIClass::toPapyrusNode, Shape)![View];
+	result.children->forEach(element){
+		element.type:='6007'
+	};
+	result.sourceAnchor := object IdentityAnchor{
+	id:=sourceAnchorId;
+	};
+	result.targetAnchor := object IdentityAnchor{
+	id := targetAnchorId;
+	};
+	result.bendpoints:= object RelativeBendpoints{
+		
+	};
+	// add DecorationNode
+	result.children := self.getDecorationNodes();
+	
+}
+
+
+mapping umlrpy::CGIInheritance::toPapyrusGeneralizationLink() : Connector 
+{
+
+	var sourceNode:CGIClass:=self.m_pSource![CGIClass];
+	var targetNode:CGIClass:=self.m_pTarget![CGIClass];
+	var ielement:IModelElement:=self.m_pModelObject;
+	var source_mtransform:List(String):= sourceNode.m_transform->asList();
+	var source_mpolygon:List(String):= sourceNode.m_polygon->asList();
+	var target_mtransform:List(String):= targetNode.m_transform->asList();
+	var target_mpolygon:List(String):= targetNode.m_polygon->asList();
+	var source_Port:List(String):= self.m_SourcePort->asList();
+	var target_Port:List(String):= self.m_TargetPort->asList();
+	var sourceAnchorId: String:= getAnchorId(source_mpolygon, source_mtransform,source_Port);
+	var targetAnchorId: String:= getAnchorId(target_mpolygon, target_mtransform,target_Port);
+	
+	
+	result.element := self.m_pModelObject.resolveIn(umlrpy::IGeneralization::toPapyrusGeneralization, uml::Generalization)![EObject]; 
+	result.type := self.getEdgeType();
+	result.source:= sourceNode.resolveIn(umlrpy::CGIClass::toPapyrusNode, Shape)![View];
+	result.target:= targetNode.resolveIn(umlrpy::CGIClass::toPapyrusNode, Shape)![View];
+	result.children->forEach(element){
+		element.type:='6007'
+	};
+	result.sourceAnchor := object IdentityAnchor{
+	id:=sourceAnchorId;
+	};
+	result.targetAnchor := object IdentityAnchor{
+	id := targetAnchorId;
+	};
+	result.bendpoints:= object RelativeBendpoints{
+		
+	};
+	
+	
+}
+
+query umlrpy::CGITrans::InnerTransition(): Boolean
+{
+	var sourceNode:CGIState:=self.m_pSource![CGIState];
+	var targetNode:CGIState:=self.m_pTarget![CGIState];
+	var sourcedefined:Boolean:=sourceNode.resolveIn(umlrpy::CGIState::toPapyrusFirstInnerStateNode, Shape)![View].oclIsUndefined();
+	var targetdefined:Boolean:=targetNode.resolveIn(umlrpy::CGIState::toPapyrusFirstInnerStateNode, Shape)![View].oclIsUndefined();
+	
+	return sourcedefined and targetdefined ;
+}
+
+
+mapping umlrpy::CGITrans::toPapyrusTransition(statechart :CGIStateChart) : Connector  
+{
+
+	var sourceNode:CGIState:=self.m_pSource![CGIState];
+	var targetNode:CGIState:=self.m_pTarget![CGIState];
+	var source_mtransform:List(String):= sourceNode.m_transform->asList();
+	var source_mpolygon:List(String):= sourceNode.m_polygon->asList();
+	var target_mtransform:List(String):= targetNode.m_transform->asList();
+	var target_mpolygon:List(String):= targetNode.m_polygon->asList();
+	var source_Port:List(String):= self.m_SourcePort->asList();
+	var target_Port:List(String):= self.m_TargetPort->asList();
+	var sourceAnchorId: String:= getAnchorId(source_mpolygon, source_mtransform,source_Port);
+	var targetAnchorId: String:= getAnchorId(target_mpolygon, target_mtransform,target_Port);
+	
+	
+	result.element := self.m_pModelObject.resolveIn(umlrpy::ITransition::toTransitions, uml::Transition)![EObject]; 
+	result.type := self.getEdgeType();
+	result.source:= sourceNode.resolveIn(umlrpy::CGIState::toPapyrusFirstInnerStateNode, Shape)![View];
+	result.target:= targetNode.resolveIn(umlrpy::CGIState::toPapyrusFirstInnerStateNode, Shape)![View];
+	
+	result.styles:= object FontStyle {};
+	result.routing:= Routing::Rectilinear;
+	result.avoidObstructions := true;
+	result.closestDistance := true;
+	result.jumpLinkType := JumpLinkType::Semicircle;
+	result.sourceAnchor := object IdentityAnchor{
+	id:=sourceAnchorId;
+	};
+	result.targetAnchor := object IdentityAnchor{
+	id := targetAnchorId;
+	};
+	result.bendpoints:= object RelativeBendpoints{
+		
+	};
+	
+	// add DecorationNode
+	result.children := self.getDecorationTransNodes();
+}
+
+mapping umlrpy::CGITrans::toPapyrusInitialTransition(statechart :CGIStateChart) : Connector // when { self.m_pSource=statechart.m_pRoot}
+{
+
+	var sourceNode:CGIState:=self.m_pSource![CGIState];
+	var targetNode:CGIState:=self.m_pTarget![CGIState];
+	var source_mtransform:List(String):= List{"1","1","1","1","1","1"}; // root has no transform attribute
+	var source_mpolygon:List(String):= sourceNode.m_polygon->asList();
+	var target_mtransform:List(String):= targetNode.m_transform->asList();
+	var target_mpolygon:List(String):= targetNode.m_polygon->asList();
+	var source_Port:List(String):= self.m_SourcePort->asList();
+	var target_Port:List(String):= self.m_TargetPort->asList();
+	var sourceAnchorId: String:= getAnchorId(source_mpolygon, source_mtransform,source_Port);
+	var targetAnchorId: String:= getAnchorId(target_mpolygon, target_mtransform,target_Port);
+	
+	
+	result.element := self.m_pModelObject.resolveIn(umlrpy::IDefaultDrvdTrans::toInitialTransition,uml::Transition)![EObject]; 
+	result.type := self.getEdgeType();
+	var source:View := sourceNode.resolveIn(umlrpy::CGIState::toPapyrusPseudoStateNode, Shape)![View];
+	if (source.oclIsUndefined() or source=null)
+	{
+		source := sourceNode.resolveIn(umlrpy::CGIState::toPapyrusInnerPseudoStateNode, Shape)![View];
+	}endif;
+	result.source:= source;
+	
+	result.target:= targetNode.resolveIn(umlrpy::CGIState::toPapyrusFirstInnerStateNode, Shape)![View];
+	
+	
+	result.styles:= object FontStyle {};
+	result.routing:= Routing::Rectilinear;
+	//result.avoidObstructions := true;
+	result.closestDistance := true;
+	result.jumpLinkType := JumpLinkType::Semicircle;
+	result.sourceAnchor := object IdentityAnchor{
+	id:=sourceAnchorId;
+	};
+	result.targetAnchor := object IdentityAnchor{
+	id := targetAnchorId;
+	};
+	result.bendpoints:= object RelativeBendpoints{
+		
+	};
+	// add DecorationNode
+	result.children := self.getDecorationTransNodes();
+	
+}
+
+query umlrpy::CGITrans::getDecorationTransNodes(): Set(DecorationNode)
+{
+	var decorationNodes:Set(DecorationNode);
+	
+
+		
+	//if (not (self.m_type![String].equalsIgnoreCase("29"))) // do not display the name of initial transition
+	//{
+		decorationNodes+= object DecorationNode{
+		type:= "7001";
+		layoutConstraint:= object Location{
+			//y:= -20; // default papyrus value, can not find Rpy value
+		};
+		};
+	//};
+		
+		decorationNodes+= object DecorationNode{
+		type:= "7002";
+		layoutConstraint:= object Location{
+			//y:= 20; // default papyrus value, can not find Rpy value
+		};
+		};
+		
+		decorationNodes+= object DecorationNode{
+		type:= "7003";
+		layoutConstraint:= object Location{
+			//y:= 20; // default papyrus value, can not find Rpy value
+		};
+		};
+		
+	
+		
+		
+		
+	
+	return decorationNodes;
+}
+
+query umlrpy::CGIAssociationEnd::getDecorationNodes(): Set(DecorationNode)
+{
+	var decorationNodes:Set(DecorationNode);
+	
+	if (self[CGIAssociationEnd].m_bShowLinkName![String].equalsIgnoreCase("1"))
+	{
+		decorationNodes+= object DecorationNode{
+		type:= "6001";
+		layoutConstraint:= object Location{
+			y:= -20; // default papyrus value, can not find Rpy value
+		};
+		};
+		
+		decorationNodes+= object DecorationNode{
+		type:= "6002";
+		layoutConstraint:= object Location{
+			y:= 20; // default papyrus value, can not find Rpy value
+		};
+		};
+		
+		
+	};
+	if (self[CGIAssociationEnd].m_bShowTargetMultiplicity![String].equalsIgnoreCase("1"))
+	{
+		decorationNodes+= object DecorationNode{
+		type:= "6034";
+		layoutConstraint:= object Location{
+		//y:=-20;
+			y:= self.m_targetMultiplicity.m_nVerticalSpacing.asInteger();
+			x:= self.m_targetMultiplicity.m_nHorizontalSpacing.asInteger();
+		};
+		};
+	};
+	if (self[CGIAssociationEnd].m_bShowSourceMultiplicity![String].equalsIgnoreCase("1"))
+	{
+		decorationNodes+= object DecorationNode{
+		type:= "6033";
+		layoutConstraint:= object Location{
+		//y:=20;
+			x:= self.m_sourceMultiplicity.m_nHorizontalSpacing.asInteger();
+			y:= self.m_sourceMultiplicity.m_nVerticalSpacing.asInteger();
+		};
+		};
+	};
+	
+	if (self[CGIAssociationEnd].m_bShowTargetRole![String].equalsIgnoreCase("1"))
+	{
+		decorationNodes+= object DecorationNode{
+		type:= "6005";
+		layoutConstraint:= object Location{
+		//y:=-20;
+			x:= self.m_targetRole.m_nHorizontalSpacing.asInteger();
+			y:= self.m_targetRole.m_nVerticalSpacing.asInteger();
+		};
+		};
+	};
+	if (self[CGIAssociationEnd].m_bShowSourceRole![String].equalsIgnoreCase("1"))
+	{
+		decorationNodes+= object DecorationNode{
+		type:= "6003";
+		layoutConstraint:= object Location{
+		//y:=20;
+			x:= self.m_sourceRole.m_nHorizontalSpacing.asInteger();
+			y:= self.m_sourceRole.m_nVerticalSpacing.asInteger();
+		};
+		};
+	};
+	return decorationNodes;
+}
+ mapping umlrpy::CGIClass::toPapyrusNode() : Shape  when { not (self.m_pParent.oclIsUndefined())}
+{
+	
+	result.element := self.m_pModelObject.resolveIn(ecore::EObject::generalMappingToUMLElement, uml::Class)![EObject]; 
+	result.type := self.getNodeType();
+	result.children:= self.map toDecorationNode();
+	result.children+= self.Compartments[CGICompartment].map toBasicCompartment();
+	if not (self.m_transform->oclIsUndefined()) then
+	{
+	//result.layoutConstraint:= self.m_transform->asSequence()->map toLayoutConstraints();
+	result.layoutConstraint:= self.map toLayoutConstraint();
+	}endif;
+	
+}
+
+mapping Sequence(String)::toLayoutConstraints() : Bounds
+{
+if (self->size()>5)
+{
+	var num:String :=self->at(4);
+	var num2:String :=self->at(1);
+	result.x:=self->at(5).asInteger();
+	result.y:=self->at(6).asInteger();
+	
+	var h:Real:=num.asFloat()*1233;
+	var w:Real:=num2.asFloat()*1058;
+	result.height:=h.round().oclAsType(Integer);
+	result.width:=w.round().oclAsType(Integer);
+}
+
+}
+
+mapping GraphElementsType::toLayoutConstraint() : Bounds
+{
+
+if (self.oclIsTypeOf(CGIState) )
+{
+if (not (self[CGIState].m_transform.oclIsUndefined()->any(true)) and self[CGIState].m_transform->size()>5)
+{
+	var x:String :=self![CGIState].m_transform->at(5);
+	var y:String :=self![CGIState].m_transform->at(6);
+
+if (x.asInteger().oclIsUndefined() or x.asInteger().oclIsInvalid())
+{
+	result.x:=x.asFloat().round();
+
+}
+else 
+{	
+	result.x:=x.asInteger();
+	
+};
+if (y.asInteger().oclIsUndefined() or y.asInteger().oclIsInvalid())
+{
+	
+	result.y:=y.asFloat().round();
+}
+else 
+{	
+	
+	result.y:=y.asInteger();
+};
+	var mtransform:List(String):= self![CGIState].m_transform->asList();
+	var mpolygon:List(String):= self![CGIState].m_polygon->asList();
+	result.height:=getStateHeight(mpolygon, mtransform).oclAsType(Integer);
+	result.width:=getStateWidth(mpolygon, mtransform).oclAsType(Integer);
+
+if ( not (self[CGIState].m_pParent.oclIsUndefined()->any(true)))
+{
+if (not (self[CGIState].m_pParent![CGIState].m_transform.oclIsUndefined()->any(true)) and self[CGIState].m_pParent![CGIState].m_transform->size()>5)
+{
+var xratio:String :=self[CGIState].m_pParent![CGIState].m_transform->at(1);
+var yratio:String :=self![CGIState].m_transform->at(4);
+var xration:Float :=xratio.asFloat();
+var yration:Float :=yratio.asFloat();
+result.x:=(result.x * xration).round();
+result.y:=(result.y * yration).round();
+result.width:=(result.width * xration).round();
+result.height:=(result.height *yration).round();
+}
+}
+}
+elif (self[CGIState].m_type![String].equalsIgnoreCase("5"))
+{
+// do not specify the location for pseudo state
+	//result.x:=18;
+	//result.y:=9;
+}
+}
+else if ( self.oclIsTypeOf(CGIClass))
+{
+if ( (not (self[CGIClass].m_transform.oclIsUndefined()->any(true)) and self[CGIClass].m_transform->size()>5))
+{
+var x:String :=self![CGIClass].m_transform->at(5);
+var y:String :=self![CGIClass].m_transform->at(6);
+var astypeX:Integer := x.oclAsType(Integer);
+var astypeY:Integer := y.oclAsType(Integer);
+if (x.asInteger().oclIsUndefined() or x.asInteger().oclIsInvalid())
+{
+	result.x:=x.asFloat().round();
+
+}
+else 
+{	
+	result.x:=x.asInteger();
+	
+};
+if (y.asInteger().oclIsUndefined() or y.asInteger().oclIsInvalid())
+{
+	
+	result.y:=y.asFloat().round();
+}
+else 
+{	
+	
+	result.y:=y.asInteger();
+};
+	var mtransform:List(String):= self![CGIClass].m_transform->asList();
+	var mpolygon:List(String):= self![CGIClass].m_polygon->asList();
+	result.height:=getStateHeight(mpolygon, mtransform).oclAsType(Integer);
+	result.width:=getStateWidth(mpolygon, mtransform).oclAsType(Integer);
+}
+	
+}
+}
+
+mapping umlrpy::GraphElementsType::toDecorationNode(): notation::DecorationNode {
+
+
+type:= 
+		if self.oclIsTypeOf(CGIClass) then '5029' 
+		elif (self.oclIsTypeOf(CGIState) and self[CGIState].m_type![String].equalsIgnoreCase("8")) then '6001' 
+		elif (self.oclIsTypeOf(CGIState) and self[CGIState].m_type![String].equalsIgnoreCase("5")) then '8001'
+		endif;
+		if  (self.oclIsTypeOf(CGIState) )
+		{
+			if  (self[CGIState].m_type![String].equalsIgnoreCase("8"))
+			
+				layoutConstraint:= object Bounds
+				{
+					//	width:=63;
+				}
+			elif (self[CGIState].m_type![String].equalsIgnoreCase("5"))
+			{
+			// for the pseudo state
+				layoutConstraint:= object Location
+				{
+						//x:=25;
+						//y:=3;
+				}
+			}
+		}
+}
+
+
+
+mapping umlrpy::CGICompartment::toBasicCompartment(): notation::BasicCompartment  {
+	type:= self.getDecorationType();
+	result.styles := object TitleStyle{};
+	result.styles += object SortingStyle{};
+	result.styles += object FilteringStyle{};
+	
+	result.layoutConstraint :=self.map toLayoutConstraints();
+}
+
+mapping umlrpy::CGICompartment::toLayoutConstraints(): Bounds {
+	
+}
+mapping inout Diagram::toInnerClassDiagram() : PapyrusViewStyle{
+	
+	self.styles += object  StringValueStyle {name:="diagram_compatibility_version"; stringValue:="1.1.0";};
+	self.styles += object  DiagramStyle {};
+	result.owner := self.element;
+//	result._configuration := getInnerClassDiagramView();
+	self.styles += result;
+  
+}
+
+mapping inout Diagram::toInnerStateMachineDiagram() : PapyrusViewStyle{
+	
+	self.styles += object  StringValueStyle {
+	name:="diagram_compatibility_version"; stringValue:="1.1.0";
+	};
+	self.styles += object  DiagramStyle {};
+	result.owner := self.element.eContainer();
+//	result._configuration := getInnerStateMachineDiagramView();
+	self.styles += result;
+	
+	
+  
+}
+
+//query getInnerClassDiagramView() : PapyrusDiagram {
+	//return getEObjectProperty('InnerClassDiagramView').oclAsType(PapyrusDiagram);
+//}
+
+//query getInnerStateMachineDiagramView() : PapyrusDiagram {
+//	return getEObjectProperty('InnerStateMachineDiagramView').oclAsType(PapyrusDiagram);
+//}
+
+query CGICompartment::getDecorationType() : String{
+	var res := self.doGetDecorationType();
+	
+	return res;	
+}
+
+query CGICompartment::doGetDecorationType() : String{
+return switch {
+				
+	case (self.m_name = 'Attribute') '7017';
+	case (self.m_name = 'Operation') '7018';
+				
+}
+}
+
+query GraphElementsType::getEdgeType() : String {
+	return  switch {
+		case (self.oclIsTypeOf(CGIAssociationEnd))  '4001';
+		case (self.oclIsTypeOf(CGIInheritance))  '4002';
+		case (self.oclIsTypeOf(CGITrans))  '7000';
+		
+	}
+}
+
+
+
+
+
+
+/**
+* Returns the width for the element
+*/
+
+query umlrpy::CGIDiagramFrame::get_Width():Integer{
+	var mpolygon:List(String):= self![CGIDiagramFrame].m_polygon->asList();
+	var mtransform:List(String):= self![CGIDiagramFrame].m_transform->asList();
+	return getWidth(mpolygon,mtransform);
+}
+
+/**
+* Returns the heigth for the element
+*/
+query umlrpy::CGIDiagramFrame::get_Height():Integer{
+	var mpolygon:List(String):= self![CGIDiagramFrame].m_polygon->asList();
+	var mtransform:List(String):= self![CGIDiagramFrame].m_transform->asList();
+	return getHeight(mpolygon,mtransform);
+}
+
+
+/**
+* returns the X position
+*/
+query umlrpy::CGIDiagramFrame::get_X_Position():Integer{
+	return self![CGIDiagramFrame].m_transform->at(5).get_int_from_String();
+}
+
+/**
+* returns the Y position
+*/
+query umlrpy::CGIDiagramFrame::get_Y_Position():Integer{
+		return self![CGIDiagramFrame].m_transform->at(6).get_int_from_String();
+}
+
+
+/**
+* Returns the width for the element
+*/
+
+query umlrpy::CGIPortConnector::get_Width():Integer{
+	var mpolygon:List(String):= self![CGIPortConnector].m_position->asList();//m_position instead of Polygon ? 
+	var mtransform:List(String):= self![CGIPortConnector].m_transform->asList();
+	return getWidth(mpolygon,mtransform);
+}
+
+/**
+* Returns the heigth for the element
+*/
+query umlrpy::CGIPortConnector::get_Height():Integer{
+	var mpolygon:List(String):= self![CGIPortConnector].m_position->asList();//m_position instead of Polygon ? 
+	var mtransform:List(String):= self![CGIPortConnector].m_transform->asList();
+	return getHeight(mpolygon,mtransform);
+}
+
+
+/**
+* returns the X position
+*/
+query umlrpy::CGIPortConnector::get_X_Position(inout parentRootShape:Shape):Integer{
+//	var tutu:=getPortX(self);
+//	return self![CGIPortConnector].m_transform->at(7).get_int_from_String();
+//	var parent:GraphElementsType := self.m_pParent.oclAsType(GraphElementsType);
+//	if(parent.oclIsKindOf(CGIDiagramFrame)){
+//		return getPortX(self,parentRootShape);
+//	};
+//	if(parent.oclIsKindOf(GraphElementsType)){
+//		var mappingRes:Shape := parent.map graphElementsTypeToIBDShape(parentRootShape);
+//		if(not (mappingRes.oclIsInvalid())){
+//			return getPortX(self, mappingRes);
+//		}
+//		else{
+//			log("no parent shape found for " + self.toString());
+//		}
+//	};
+	return -10;
+}
+
+/**
+* returns the Y position
+*/
+query umlrpy::CGIPortConnector::get_Y_Position(inout parentRootShape:Shape):Integer{
+		//return self![CGIPortConnector].m_transform->at(8).get_int_from_String();
+//	return getPortY(self);
+//	var parent:GraphElementsType := self.m_pParent.oclAsType(GraphElementsType);
+//	if(parent.oclIsKindOf(CGIDiagramFrame)){
+//		return getPortY(self,parentRootShape);
+//	};
+//	if(parent.oclIsKindOf(GraphElementsType)){
+//		var mappingRes:Shape := parent.map graphElementsTypeToIBDShape(parentRootShape);
+//		if(not (mappingRes.oclIsInvalid())){
+//			return getPortY(self, mappingRes);
+//		}else{
+//			log("no parent shape found for " + self.toString());
+//		}
+//	};
+	return -10;
+}
+
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/Rpy2PapyrusSemanticElements.qvto b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/Rpy2PapyrusSemanticElements.qvto
new file mode 100644
index 0000000..29283ce
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/Rpy2PapyrusSemanticElements.qvto
@@ -0,0 +1,1404 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *****************************************************************************/
+ 
+import org.eclipse.papyrus.interoperability.rpy.blackboxes.uml.AssociationOwnerHelper;
+import org.eclipse.papyrus.interoperability.common.blackboxes.uml.UMLHelper;
+import RpyToPapyrusUtils;
+import SysMLRpyUtils;
+import RpyUtils;
+
+modeltype uml "strict" uses 'http://www.eclipse.org/uml2/5.0.0/UML';
+modeltype ecore "strict" uses 'http://www.eclipse.org/emf/2002/Ecore';
+modeltype umlrpy "strict" uses 'http://www.eclipse.org/Papyrus/UMLRpy/1.0.0';
+modeltype notation "strict" uses 'http://www.eclipse.org/gmf/runtime/1.0.2/notation';
+modeltype UMLPrimitivesTypes "strict" uses 'http://www.eclipse.org/uml2/5.0.0/Types' ;
+//add syml profile
+modeltype sysml11 "strict" uses 'http://www.eclipse.org/papyrus/0.7.0/SysML';
+	
+/**
+*	Transformation rules for importing a Rpy Semantic model into a UML model 
+*/
+transformation Rpy2PapyrusSemanticElements(in inModel:umlrpy, out outModel:uml, in primitives:UMLPrimitivesTypes);
+
+property events : Set(IEvent) = null;
+
+/**This variable is used to reference the types created outside of all contexts. (bug 510869)*/
+property userTypeDeclaration: Set(Type);
+
+/**The UML Package representing the Rpy libraries and user custom types*/
+property typesLibraries:Sequence(uml::Package);
+
+/**
+* Maunch the semantic transformation
+*/
+main() {
+	log('Start UML Semantic QVTo Transfo');
+		inModel.rootObjects()[IProject]->map iProjectToPapyrusModel();
+		setAssociationOwnerAndClear();
+	log('Finish UML Semantic QVTO Transfo');
+};
+
+/**
+*
+* Create a Model from the IProject
+*/
+mapping umlrpy::IProject::iProjectToPapyrusModel() : uml::Model {
+	name:=self.name.replaceAll("\"","");
+	eAnnotations+=inModel.rootObjects()->selectByType(IProject)![IProject].createEAnnotationForVersioning();
+	
+	var localComment:Comment:=self.description.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(uml::Comment);
+	localComment.annotatedElement:=result;
+	ownedComment+=localComment;
+	
+	//we map the packaged elements
+	packagedElement+=self.Subsystems.map iDefaultSubsystemTypeToPackage();
+
+	//import uml basic primitives Types by default
+	var importedPackages: Set(PackageImport);
+	var models : Set(Model) := primitives.objectsOfType(Model);
+	models->forEach(package){
+		var packageImport:=object PackageImport{
+			importedPackage:=package;
+		};
+		importedPackages+=packageImport;
+	};
+
+	packageImport+=importedPackages;
+	
+	
+	
+	if(userTypeDeclaration->notEmpty()){
+		typesLibraries+= object Package{
+			name:="UserTypesDeclaration";
+			packagedElement+=userTypeDeclaration;
+		}
+	};
+	
+	//we sort the library by alphabetical order 
+	var sortedLibrary:Sequence(uml::Package):=sortNamedElement(typesLibraries)->selectByKind(uml::Package);
+	sortedLibrary->forEach(pack){
+		//we sort the contents of the library by alphabetical order
+		var packageableElements:Sequence(PackageableElement):=pack.packagedElement->selectByKind(uml::PackageableElement)->asSequence();
+		pack.packagedElement:=null;
+		sortNamedElement(packageableElements)->forEach(n){
+			//we don't found an other way than this forEach to maintain the sort'
+			if(n.oclIsKindOf(uml::PackageableElement)){
+				pack.packagedElement+=n.oclAsType(uml::PackageableElement);					
+			};
+		};
+	};
+	
+	//we add them to the final model
+	packagedElement+=sortedLibrary;
+	
+}
+
+/**
+* Create packages from DefaultSubsystemType
+*/
+mapping umlrpy::DefaultSubsystemType::iDefaultSubsystemTypeToPackage():uml::Package when{self.oclIsKindOf(ISubsystem)}{
+	var iSubSystem:ISubsystem:=self.oclAsType(ISubsystem);
+	name:=iSubSystem.name;
+	
+	//no idea about this code coming from the initial prototype
+	if(iSubSystem.SignalEvents()[IEvent].oclAsSet()->notEmpty()){
+		var SignalsPackage := object Package{
+			name:= "Signals";
+			packagedElement:= iSubSystem.SignalEvents()->selectByKind(EObject).map generalMappingToUMLElement().oclAsType(PackageableElement);
+		};
+		nestedPackage+=SignalsPackage;
+	};
+	
+	//no idea about this code coming from the initial prototype
+	if(iSubSystem.SignalEvents()[IEvent].oclAsSet()->notEmpty()){
+		var SignalEventPackage := object Package{
+			name:= "Signal Events";
+			packagedElement:= iSubSystem.SignalEvents()[IEvent].map toSignalEvents();
+		};
+		nestedPackage+=SignalEventPackage;
+	};
+	
+	packagedElement+=iSubSystem.Events->selectByType(IEvent)->selectByKind(EObject).map generalMappingToUMLElement().oclAsType(PackageableElement);
+	
+	packagedElement+= iSubSystem.Classes->selectByType(IClass)->any(name="TopLevel").Attrs->selectByKind(IAttribute).oclAsType(EObject).map generalMappingToUMLElement().oclAsType(PackageableElement);
+	//TODO probably more check are required to remove TopLevel without problems (check with MARTE...)
+	packagedElement+= iSubSystem.Classes->selectByType(IClass)->select(curr | curr.name<>"TopLevel")->selectByKind(EObject).map generalMappingToUMLElement().oclAsType(uml::PackageableElement);
+
+	//managing rpy objects IAssociationClass
+	packagedElement+=iSubSystem.AssociationElements->selectByType(IAssociationClass)->selectByKind(EObject).map generalMappingToUMLElement().oclAsType(uml::PackageableElement);
+
+	packagedElement += iSubSystem.Types->selectByType(IType)->selectByKind(EObject).map generalMappingToUMLElement().oclAsType(uml::PackageableElement);
+	
+	packagedElement += iSubSystem.Actors->selectByKind(IActor)->oclAsType(EObject).map generalMappingToUMLElement().oclAsType(uml::PackageableElement);
+	packagedElement +=iSubSystem.Declaratives[DefaultSubsystemType].oclAsSet().map iDefaultSubsystemTypeToPackage();
+	ownedComment += iSubSystem.Annotations->select(a | (a.oclIsTypeOf(IAnnotation) or a.oclIsTypeOf(IComment)))->oclAsType(EObject).map generalMappingToUMLElement().oclAsType(uml::Comment);
+	var localComment:Comment:=iSubSystem.description.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(uml::Comment);
+	localComment.annotatedElement:=result;
+	ownedComment+=localComment;
+}
+
+/**
+*
+* This method has been created to be the common entry point for all the semantic transformations from the Rpy Model to the UML Model
+* TODO : rewrite all transformations in order to use me everywhere  
+*/
+mapping ecore::EObject::generalMappingToUMLElement():uml::Element disjuncts
+	ecore::EObject::iActorToUMLActor,
+	ecore::EObject::iCommentToUMLComment,
+	ecore::EObject::iDescriptionToUMLComment,
+	ecore::EObject::iAttributeToUMLInstanceSpecification,
+	ecore::EObject::iClassToUMLInterface, 
+ 	ecore::EObject::iClassToUMLClass,
+ 	ecore::EObject::iEventToUMLSignal,
+ 	ecore::EObject::iTypeToUMLDatatype,
+ 	ecore::EObject::iTypeToUMLInstanceSpecification, 
+ 	ecore::EObject::iTypeToUMLEnumeration,
+ 	ecore::EObject::iTypeToUMLClass, //TODO : merge me with the existing other way to create a class
+ 	ecore::EObject::iTypeToDefault,
+ 	ecore::EObject::iAssociationClassToUMLAssociation
+{}
+
+/**
+* This mapping convert an IActor into a UML Actor
+*/
+mapping EObject::iActorToUMLActor():uml::Actor when {self.oclIsTypeOf(umlrpy::IActor)}{
+	var actor:IActor:=self.oclAsType(IActor);
+	name:=actor.name;
+	ownedComment += actor.Annotations->selectByType(IComment).oclAsType(EObject).map generalMappingToUMLElement().oclAsType(uml::Comment);
+	
+	var localComment:Comment:=actor.description.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(uml::Comment);
+	localComment.annotatedElement:=result;
+	ownedComment+=localComment;
+}
+
+/**
+*
+* This mapping convert a IComment into a UML Comment
+*/
+mapping EObject::iCommentToUMLComment(): uml::Comment when {self.oclIsTypeOf(IComment)}{
+	var comment:IComment:=self.oclAsType(IComment);
+	body:=comment.body;
+	if(body=null or body.size()=0){
+		body:=comment.description.text;
+		if(body=null or body.size()=0){
+			body:=comment.description.textRTF.getTextWithoutMarkers();
+		}
+	};
+	comment.Anchors->forEach(anchor){
+		var rpyAnnotatedElement:EObject:=anchor.dependsOn.oclAsType(EObject);
+		//this is the generic method to call to create/find mapped element
+		var resolvedContext:Element:=rpyAnnotatedElement.map generalMappingToUMLElement();
+		
+		//TODO : the code of the transformation should be refactored to use the previous one, nevertheless, waiting for this refactoring, we use this code
+		if(resolvedContext=null){
+			var metaClassName:String:= rpyAnnotatedElement.metaClassName();
+			annotatedElement+=switch{
+				case (metaClassName="IPart") rpyAnnotatedElement.oclAsType(umlrpy::IPart).map iPartToUMLElement().oclAsType(uml::Element);
+				case (metaClassName="IAttribute") rpyAnnotatedElement.oclAsType(umlrpy::IAttribute).map iVariableToUMLElement().oclAsType(uml::Element);
+			};
+		}else{
+			annotatedElement+=resolvedContext;
+		}
+	}
+}
+
+/**
+*
+* This mapping convert a IDescription into a UML Comment
+*/
+mapping EObject::iDescriptionToUMLComment(): uml::Comment when {self.oclIsTypeOf(IDescription)}{
+	var description:IDescription:=self.oclAsType(IDescription);
+	body:=description.text;
+	if(body=null or body.size()=0){
+		body:=description.textRTF.getTextWithoutMarkers();
+	};
+	if(self.eContainer().oclIsKindOf(Element)){
+		annotatedElement+=self.eContainer().oclAsType(Element);
+	}
+}
+
+/**
+* This method remove all markers in the string
+*/ 
+helper String::getTextWithoutMarkers():String{
+	//this code seems me quite specific to my examples, but I don't have better idea
+	//	var res:String:=self.replaceAll("\\\\[a-zA-Z0-9]*", ""); //to remove all formatting information
+
+	//this regex works fine (for php, tested on https://regex101.com/r/9FfA4S/4))
+	//	{\\\\[a-zA-Z0-9\\\\\s]*(;\}+)?|\\\\[a-zA-Z0-9]*
+	//a nicer regex
+	var res:String:=self.replaceAll("\\\\ldblquote\\s", "“"); //replace left quote followed by a space
+	res:=res.replaceAll("\\\\rdblquote\\s?","”"); //replace right quote maybe followed by a space
+	res:=res.replaceAll("\\\\pard",""); //remove explicitely the tag \\pard
+	res:=res.replaceAll("\\\\par","\n"); //replace all new paragraph by new line
+	res:=res.replaceAll("\\\\line","\n"); //replace all new paragraph by new line
+	res:=res.replaceAll("\\{\\\\[a-zA-Z0-9\\\\\\s]*(;\\}+)?|\\\\[a-zA-Z0-9]*\\s?", ""); //to remove all others formatting informations
+
+	res:=res.replaceAll("'\\w+(;})?",""); //in some case we get this kind of string after the first regex : 'cb'ce'cc'e5;}myText
+	
+	res:=res.replaceAll("\r\n","\n");
+
+	var a:="}\n";
+	var lastIndex:=res.lastIndexOf(a);
+	if(lastIndex<>-1 and lastIndex=res.length()-(a.size()-1)){
+		res:=res.substring(1,lastIndex-1);
+	};
+
+	while(res.startsWith("\n") or res.startsWith("}") or res.startsWith(";")  or res.startsWith("{")){
+		res:=res.substring(2,res.length());
+	};
+	
+	while(res.endsWith("\n") or res.endsWith("}") or res.endsWith(";") or res.endsWith("{")){
+		res:=res.substring(1,res.length()-1);
+	};
+	
+	return res;
+}
+
+/**
+*
+* return true if the IClass is representing an interface
+*/
+mapping ecore::EObject::iClassToUMLInterface() : uml::Interface when {self.oclIsTypeOf(umlrpy::IClass) and self.oclAsType(umlrpy::IClass).isInterface() /*self.isSysMLFlowSpecification()*/}{
+	var localIClass:umlrpy::IClass:=self.oclAsType(umlrpy::IClass);
+	name:= localIClass.name.replaceAll("\"","");
+	ownedAttribute+= localIClass.Attrs[IAttribute].map iVariableToUMLElement();
+//	ownedAttribute+= self.Associations[IAssociationEnd].map toAssociationsEnd();
+//	ownedOperation := self.Operations [IPrimitiveOperation].map toOperations();
+//	ownedReception:= self.Operations[IReception].map toReceptions();
+//	generalization:= self.Inheritances [IGeneralization].map toPapyrusGeneralization();
+
+	var localComment:Comment:=localIClass.description.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(uml::Comment);
+	localComment.annotatedElement:=result;
+	ownedComment+=localComment;
+}
+
+
+
+/**
+*
+* When we match any condition, we create a uml::DataType or a uml::Enumeration. 
+* We can be here in case of bug, when an existing type has not been resolved
+* or when the user use the C type declaration in Rpy (declaring a type with a string, see bug 510869)
+*/
+mapping ecore::EObject::iTypeToDefault():uml::DataType when{self.oclIsTypeOf(IType)}{
+	init{
+		var localIType:IType:=self.oclAsType(IType);
+		var nameToUse:String:="";
+		if(localIType.name=null or localIType.name.oclIsInvalid()){
+		if(localIType.declaration<>null){
+			nameToUse:=localIType.declaration;
+		}
+		}else{
+			nameToUse:=localIType.name.replaceAll("\"","");
+		};
+		if(nameToUse.indexOf("Enum")=0){
+			result:=object DataType{};
+		}else{
+			result:=object Enumeration{};
+		}
+	}
+	name:=nameToUse;
+	
+	var fileName:String:=localIType.oclAsType(EModelElement).getFileNameWithoutExtension();
+	var package:uml::Package:=fileName.map createPackageLibrary();
+	if(not package.oclIsUndefined()){
+		package.packagedElement+=result;
+	}
+}
+
+/**
+* This mapping allows to create a package from a string
+*/
+mapping String::createPackageLibrary():uml::Package when {not self.oclIsUndefined()}{
+	name:=self;
+	typesLibraries+=result;
+}
+
+
+/**
+* This method allows to map a RpyType on an other type
+*/
+query umlrpy::IType::mapToBasicType(inout templateableElement:TemplateableElement){
+	//we assurme here that the UML PrimitiveTypes are already imported
+	var baseType:IUnit := self.typedefBaseType;
+	if(not(baseType.oclIsUndefined()) and baseType.oclIsTypeOf(IType)){
+//			var name:String:=baseType.metaClassName();
+			var umlType:uml::Type :=baseType.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(Type);
+			if(not(umlType.oclIsUndefined())){//should never appends
+						var templateBinding := object uml::TemplateBinding{
+					
+						};
+//						var redefinableTemplateSignature:=object uml::RedefinableTemplateSignature {
+//					
+//						};
+						var templateParameterSubstitution:= object TemplateParameterSubstitution{
+					
+						};
+//						var classifierTemplateParameter:= object ClassifierTemplateParameter{
+//					
+//						};
+	
+						templateableElement.templateBinding+=templateBinding;
+						templateBinding.boundElement:=templateableElement;
+//						//templateBinding.source:=templatableElement; //read only
+//						//templateBinding.target:=templateParameterSubstitution; //read only
+//						templateBinding.signature:=redefinableTemplateSignature;
+						templateBinding.parameterSubstitution+=templateParameterSubstitution;		
+						templateParameterSubstitution.actual:=umlType;	
+			};
+	};
+//	return templateableElement;
+}
+
+
+/**
+* Return true if the object must be converted into a UML DataType
+*
+* For JUnit SysML test1: 
+* 		must be converted into UML Datatype : 
+*    MyBool : kind = Typedef and stereotype = DataType
+*    MyArrayOfInt : kind = Typedef and stereotype DataType
+*    MyPrimitivesTypes : kind = Language and stereotype = DataType
+*    MySpeed : kind = kind = Typedef and ValueType 
+*    IType defined in Rpy Library (like PredefinedTypes) must be imported as DatType
+*/
+query umlrpy::IType::isUMLDataType(): Boolean {
+	var res:=self.isSysMLValueType() and not self.isKindEnumeration();
+	if(not res){
+		res:=(self.isRpyDataType() or self.isRpyLibraryType()) and  (self.isKindLanguage() or self.isKindTypedef());
+    };
+	return res;
+}
+
+
+/**
+* Return true if the IType is kind Typedef
+*/
+query umlrpy::IType::isKindTypedef(): Boolean{
+	return self.kind="Typedef";
+}
+
+/**
+* Return true if the IType is kind Enumeration
+*/
+query umlrpy::IType::isKindEnumeration(): Boolean{
+	return self.kind="Enumeration";
+}
+
+/**
+* Return true if the IType is kind Enumeration
+*/
+query umlrpy::IType::isKindStructure(): Boolean{
+	return self.kind="Structure";
+}
+
+/**
+* Return true if the IType has kind Language
+*/
+query umlrpy::IType::isKindLanguage(): Boolean {
+	return self.kind="Language";
+}
+
+query umlrpy::IType::isUMLClass(): Boolean{
+	return self.isKindStructure() and (self.isRpyDataType() or self.isSysMLValueType());
+}
+
+query umlrpy::IType::isUMLEnumeration():Boolean{
+	return self.isKindEnumeration() and ((self.isRpyDataType() or self.isSysMLValueType()) //TODO to check : is it required to check isDatatYpe and isSysmlValueType ? 
+	or self.isRpyLibraryType()); //to create Enumeration for Type defined ni RpyLibrary
+}
+
+query umlrpy::IType::isUMLInstanceSpecification(): Boolean {
+	return self.isKindLanguage() and (self.isSysMLDimension() or self.isSysMLUnit());
+}
+
+//--------association code--------------
+
+/**
+* This mapping creates a UML association with its 2 members ends and owned ends when required, according to the navigability value
+*/
+mapping ecore::EObject::iAssociationClassToUMLAssociation(): uml::Association when{self.oclIsKindOf(IAssociationClass)}{
+	var localIAssociationClass:IAssociationClass:=self.oclAsType(IAssociationClass);
+	name:= localIAssociationClass.name.replaceAll("\"","");
+	var end1:IAssociationEnd:=localIAssociationClass.m_end1;
+	var end2:IAssociationEnd:=localIAssociationClass.m_end2;
+	
+	var mapping1:Property:=end1.map toAssociationsEnd().oclAsType(Property);
+	var mapping2:Property:=end2.map toAssociationsEnd().oclAsType(Property);
+	
+	//if navigable: owned by class
+	//if non navigable, owned by the association 
+	 
+	memberEnd+=mapping1;
+	memberEnd+=mapping2;
+	
+	if(not end1.isNavigable()){
+		ownedEnd+=mapping1;
+	};
+	if(not end2.isNavigable()){
+		ownedEnd+=mapping2;
+	}
+}
+
+/**
+* Return true if the association end is navigable. In this case, the property will be owned by the class, 
+* otherwse, by the association
+*/
+helper umlrpy::IAssociationEnd::isNavigable():Boolean{
+	return self.navigability.equalsIgnoreCase("Navigable");
+}
+
+/**
+* Common method to create association from an IAssociationEnd
+*/
+mapping umlrpy::IAssociationEnd::iAssociationEndToUMLAssociation(): uml::Association disjuncts 
+	umlrpy::IAssociationEnd::iAssociationEndToUMLAssociation_case1,
+	umlrpy::IAssociationEnd::iAssociationEndToUMLAssociation_case2
+{}
+
+mapping umlrpy::IAssociationEnd::iAssociationEndToUMLAssociation_case1(): uml::Association when {self.isNavigable() and self.inverse.oclIsUndefined()}{	
+	//please keep this order (O source and 1 target) -> if we change this property we broke the BDD of test2
+	
+	//when isNavigable() returns true, the property is owned by the classifier
+	//when isNavigable() returns false, the property is owned by the association
+		//here, in the Rpy model, we have only one end, so here this end will be owned by the classifier and the other one by the association
+	var localMemberEnd:=self.map toAssociationsEnd();
+	memberEnd+= localMemberEnd; 
+	var localOwnedEnd:= object Property{
+		type:= self.container().oclAsType(EObject).map generalMappingToUMLElement().oclAsType(Type);
+	};
+	ownedEnd+= localOwnedEnd;
+	name:=localOwnedEnd.type.name  + " refers to " + localMemberEnd.type.name + " as " + localMemberEnd.name;
+			
+}
+
+mapping umlrpy::IAssociationEnd::iAssociationEndToUMLAssociation_case2():uml::Association when{
+	self.isNavigable() and 
+	(not self.inverse.oclIsUndefined())
+	and self.inverse.oclIsTypeOf(IAssociationEnd)
+	and self.inverse.oclAsType(IAssociationEnd).isNavigable()
+	and self.m_associationClass.oclIsUndefined()}{ //in this case, the association is created by the mapping for IAssociationClass
+	//when isNavigable() returns true, the property is owned by the classifier
+	//when isNavigable() returns false, the property is owned by the association
+	//-> here the 2 properties are owned by the classifier
+	init{
+		//this resolve is not a mistake. We call resolve to avoid to create several time the same association
+		result:=self.inverse.resolveoneIn(umlrpy::IAssociationEnd::iAssociationEndToUMLAssociation_case2);
+	}
+	if(result.memberEnd->size()=0){//the result has been created goint out of the init, because the resolve doesn't allow to find an existing association
+		result.memberEnd+=self.map toAssociationsEnd();
+		result.memberEnd+=self.inverse.oclAsType(IAssociationEnd).map toAssociationsEnd();
+		//order of member can't be determined in this case
+	}
+}
+
+mapping umlrpy::IAssociationEnd::toAssociationsEnd(): uml::Property when{self.oclIsTypeOf(IAssociationEnd)}{
+	name:=self.name.replaceAll("\"","");
+	type:= self.otherClass.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(Type);
+	aggregation:=AggregationKind::none;
+}
+
+/**
+*
+* This mapping convert a IPart into a uml Element
+*/
+mapping umlrpy::IPart::iPartToUMLElement():uml::Element disjuncts
+	umlrpy::IPart::iPartToUMLProperty
+{}
+
+/**
+* This method convert an IPart into a uml Property
+*
+*/ 
+mapping umlrpy::IPart::iPartToUMLProperty():uml::Property when {self.oclIsTypeOf(IPart)}{
+	name:= self.name.replaceAll("\"","");
+	//TODO : manage aggregation kind
+	aggregation:=AggregationKind::composite;
+	type:=self.otherClass.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(uml::Type);
+	if((not self.multiplicity.oclIsUndefined()) and self.multiplicity<>"1"){
+		lowerValue:=createLowerMultiplicity(self.multiplicity);
+		upperValue:=createUpperMultiplicity(self.multiplicity);
+	};
+	var localComment:Comment:=self.description.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(uml::Comment);
+	localComment.annotatedElement:=result;
+	ownedComment+=localComment;
+}
+
+mapping umlrpy::IPart::iPartToUMLAssociation():uml::Association when {true}{
+	var part:uml::Property:=self.resolveoneIn(umlrpy::IPart::iPartToUMLProperty); //TODO : replace me with a mapping
+	var propOwner:uml::NamedElement:=part.owner.oclAsType(NamedElement);
+	var propType:=part.type;
+	var initialVal:=propType.invresolveone();//TODO is it a good idea to use unresolve ? 
+	var res:Boolean:=false;
+	if(initialVal.oclIsTypeOf(umlrpy::IClass)){
+		//TODO : make a util for this stereotype application
+		res:=initialVal.oclAsType(umlrpy::IClass).Stereotypes[IStereotype]->select(ste | ste.name="ConstraintBlock")->notEmpty();
+	};
+	if(res){
+		name:=propOwner.name + " has constraint " + propType.name + " applied as " + part.name;
+	}elif(part.aggregation.toString()=AggregationKind::composite.toString()){
+		name:=propOwner.name + " owns a " + propType.name + " as " + part.name;
+	};
+	
+	
+	var ownedEnd2:uml::Property:= object Property{};
+	
+	ownedEnd2.name:=propOwner.name.toLowerCase();
+	ownedEnd2.type:=propOwner.oclAsType(uml::Type);
+	memberEnd+=ownedEnd;
+	memberEnd+=part;
+	ownedEnd+=ownedEnd2;
+}
+
+//------end of association code----------------------
+
+mapping ecore::EObject::iTypeToUMLDatatype() : uml::DataType when {self.oclIsTypeOf(IType) and self.oclAsType(IType).isUMLDataType()}{
+	var localIType:IType:=self.oclAsType(IType);		
+	name:= localIType.name.replaceAll("\"","");
+	ownedAttribute+=localIType.Attrs[IAttribute].map iVariableToUMLElement();
+	localIType.mapToBasicType(result.oclAsType(uml::TemplateableElement));
+
+	if(not localIType.isRpyLibraryType()){
+		var localComment:Comment:=localIType.description.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(uml::Comment);
+		localComment.annotatedElement:=result;
+		ownedComment+=localComment;
+	};
+}
+
+mapping ecore::EObject::iTypeToUMLEnumeration() : uml::Enumeration when {self.oclIsTypeOf(IType) and self.oclAsType(IType).isUMLEnumeration()}{
+	var localIType:IType:=self.oclAsType(IType);
+	name:= localIType.name.replaceAll("\"","");
+	ownedLiteral+=localIType.Literals[IEnumerationLiteral].map toUMLEnumerationLiteral();
+	localIType.mapToBasicType(result.oclAsType(uml::TemplateableElement));
+	
+	if(not localIType.isRpyLibraryType()){
+		var localComment:Comment:=localIType.description.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(uml::Comment);
+		localComment.annotatedElement:=result;
+		ownedComment+=localComment;
+	};
+}
+
+mapping umlrpy::IEnumerationLiteral::toUMLEnumerationLiteral() : uml::EnumerationLiteral {
+	name:= self.name.replaceAll("\"","");
+	
+	if(not self.oclAsType(EObject).isRpyLibraryType()){
+		var localComment:Comment:=self.description.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(uml::Comment);
+		localComment.annotatedElement:=result;
+		ownedComment+=localComment;
+	};
+}
+
+mapping ecore::EObject::iTypeToUMLInstanceSpecification() : uml::InstanceSpecification when {self.oclIsTypeOf(IType) and self.oclAsType(IType).isUMLInstanceSpecification()}{
+	var localIType:IType:=self.oclAsType(IType);	
+	name:= localIType.name.replaceAll("\"","");
+	
+	var localComment:Comment:=localIType.description.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(uml::Comment);
+	localComment.annotatedElement:=result;
+	ownedComment+=localComment;
+}
+
+//TODO : refactore me, there is at least 2 method to create a class, on efrom an IType and an other one from a IClass
+mapping ecore::EObject::iTypeToUMLClass() : uml::Class when {self.oclIsTypeOf(IType) and self.oclAsType(IType).isUMLClass()}{//stereotype Block is added later in the process
+	var localIType:IType:=self.oclAsType(IType);
+	name:= localIType.name.replaceAll("\"","");
+	ownedAttribute+=localIType.Attrs[IAttribute].map iVariableToUMLElement();
+	localIType.mapToBasicType(result.oclAsType(uml::TemplateableElement));
+	
+	var localComment:Comment:=localIType.description.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(uml::Comment);
+	localComment.annotatedElement:=result;
+	ownedComment+=localComment;
+}
+
+
+mapping ecore::EObject::iClassToUMLClass(): uml::Class when {self.oclIsTypeOf(umlrpy::IClass) and not (self.oclAsType(umlrpy::IClass).isInterface())}{
+	var localIClass:umlrpy::IClass:=self.oclAsType(umlrpy::IClass);	
+
+	name:= localIClass.name.replaceAll("\"","");
+	ownedAttribute+= localIClass.Attrs[IAttribute].map iVariableToUMLElement();
+	ownedAttribute+= localIClass.Associations[IPart].map iPartToUMLElement().oclAsType(uml::Property);
+	
+	var associationsToAdd:=localIClass.Associations[IPart].map iPartToUMLAssociation();
+	
+	nestedClassifier+= localIClass.Associations[IPart]->select(current | current.implicitClass<>null).implicitClass.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(uml::Classifier);
+	nestedClassifier+=localIClass.Declaratives->selectByType(IClass)->selectByKind(EObject).map generalMappingToUMLElement().oclAsType(uml::Classifier);
+	
+	ownedAttribute+= localIClass.Associations->selectByType(IAssociationEnd)->select(a | a.isNavigable()).map toAssociationsEnd();
+	associationsToAdd+=localIClass.Associations[IAssociationEnd].map iAssociationEndToUMLAssociation();	
+	
+	ownedOperation += localIClass.Operations [IPrimitiveOperation].map toOperations();
+	ownedReception += localIClass.Operations[IReception].map toReceptions();
+	generalization += localIClass.Inheritances [IGeneralization].map toPapyrusGeneralization();
+	ownedBehavior += localIClass.StateCharts[IStateChart].map toStateMachine();
+
+	ownedAttribute+=localIClass.Ports.map iRelationToUMLElement().oclAsType(uml::Property);
+	ownedConnector+=localIClass.ObjectLinks[IObjectLink].map iObjectLinkToUMLElement().oclAsType(uml::Connector);
+	ownedConnector+=localIClass.Declaratives[IInformationFlow].map iInformationFlowToUMLElement().oclAsType(uml::Connector);
+	
+	ownedComment+=localIClass.Annotations.oclAsType(IComment).oclAsType(EObject).map generalMappingToUMLElement().oclAsType(uml::Comment);
+	
+	registerAssociationToStore(result, associationsToAdd);
+	
+	var localComment:Comment:=localIClass.description.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(uml::Comment);
+	localComment.annotatedElement:=result;
+	ownedComment+=localComment;
+}
+
+
+/**
+* This method map a IObjectLink with a UML Element
+*
+*/
+mapping umlrpy::IInformationFlow::iInformationFlowToUMLElement():uml::Element disjuncts 
+	umlrpy::IInformationFlow::iInformationFlowToUMLConnector
+{}
+
+/**
+* This method map a IInformationFlow with a UML Connector
+*
+*/
+mapping umlrpy::IInformationFlow::iInformationFlowToUMLConnector():uml::Connector when{self.isUMLConnector() }{
+	name:= self.name.replaceAll("\"","");	
+	_end+=self.map iInformationFlowSourceToUMLConnectorEnd();
+	_end+=self.map iInformationFlowTargetToUMLConnectorEnd();
+}
+
+/**
+* This method map a IInformationFlow with a UML Connector End used as source
+*
+*/
+mapping umlrpy::IInformationFlow::iInformationFlowSourceToUMLConnectorEnd():uml::ConnectorEnd{
+	var end1:umlrpy::End1_Type:=self.end1_;
+	var end1ObjectPort:umlrpy::IInstance:=self.end1ObjectPort_;
+	
+	var mappingEnd1:uml::Element; 	
+	var mappingEnd1ObjectPort:uml::Element;
+	//1. we manage the end1 property
+	if(end1<>null){
+		if(end1.oclIsTypeOf(umlrpy::IPart)){
+			mappingEnd1:=end1.oclAsType(umlrpy::IPart).map iPartToUMLElement().oclAsType(uml::Property);
+		}elif(end1.oclIsTypeOf(umlrpy::IAttribute)){
+			mappingEnd1:=end1.oclAsType(IAttribute).map iVariableToUMLElement();
+		}elif(end1.oclIsKindOf(umlrpy::IRelation)){
+			mappingEnd1:=end1.oclAsType(IRelation).map iRelationToUMLElement();
+		};
+	};
+	
+	//2. we manage the end1ObjectPort_ property when required
+	if(end1ObjectPort<>null and end1ObjectPort.oclIsKindOf(umlrpy::IRelation)){
+			mappingEnd1ObjectPort:=end1ObjectPort.oclAsType(umlrpy::IRelation).map iRelationToUMLElement().oclAsType(uml::Element);
+	};
+		
+	if(mappingEnd1ObjectPort=null){
+		if(mappingEnd1.oclIsTypeOf(uml::Property)){
+			role:=mappingEnd1.oclAsType(uml::Property);
+		}
+	}else{
+		if(mappingEnd1ObjectPort.oclIsTypeOf(uml::Property)){
+			role:=mappingEnd1ObjectPort.oclAsType(uml::Property);
+		}elif(mappingEnd1ObjectPort.oclIsTypeOf(uml::Port) and mappingEnd1.oclIsTypeOf(uml::Property)){
+			//not sure, not example for this usecase
+			role:=mappingEnd1ObjectPort.oclAsType(uml::Property);
+			partWithPort:=mappingEnd1.oclAsType(uml::Property);
+		};
+	
+	};
+}
+
+/**
+* This method map a IInformationFlow with a UML Connector End used as target
+*
+*/
+mapping umlrpy::IInformationFlow::iInformationFlowTargetToUMLConnectorEnd():uml::ConnectorEnd{
+	var end2:umlrpy::End1_Type:=self.end2_;
+	var end2ObjectPort:umlrpy::IInstance:=self.end2ObjectPort_;
+	
+	var mappingEnd2:uml::Element; 	
+	var mappingEnd2ObjectPort:uml::Element;
+	//1. we manage the end2 property
+	if(end2<>null){
+		if(end2.oclIsTypeOf(umlrpy::IPart)){
+			mappingEnd2:=end2.oclAsType(umlrpy::IPart).map iPartToUMLElement().oclAsType(uml::Property);
+		}elif(end2.oclIsTypeOf(umlrpy::IAttribute)){
+			mappingEnd2:=end2.oclAsType(IAttribute).map iVariableToUMLElement();
+		}elif(end2.oclIsKindOf(umlrpy::IRelation)){
+			mappingEnd2:=end2.oclAsType(IRelation).map iRelationToUMLElement();
+		};
+	};
+	
+	//2. we manage the end2ObjectPort_ property when required
+	if(end2ObjectPort<>null and end2ObjectPort.oclIsKindOf(umlrpy::IRelation)){
+			mappingEnd2ObjectPort:=end2ObjectPort.oclAsType(umlrpy::IRelation).map iRelationToUMLElement().oclAsType(uml::Element);
+	};
+	
+	if(mappingEnd2ObjectPort=null){
+		if(mappingEnd2.oclIsTypeOf(uml::Property)){
+			role:=mappingEnd2.oclAsType(uml::Property);
+		}
+	}else{
+		if(mappingEnd2ObjectPort.oclIsTypeOf(uml::Property)){
+			role:=mappingEnd2ObjectPort.oclAsType(uml::Property);
+		}elif(mappingEnd2ObjectPort.oclIsTypeOf(uml::Port) and mappingEnd2.oclIsTypeOf(uml::Property)){
+			//not sure, not example for this usecase 
+			role:=mappingEnd2ObjectPort.oclAsType(uml::Property);
+			partWithPort:=mappingEnd2.oclAsType(uml::Property);
+		};
+	};
+}
+
+/**
+*
+* Returns true of the object is a UML Connector
+*/
+query umlrpy::IInformationFlow::isUMLConnector(): Boolean{
+	return self.Stereotypes[IStereotype]->select(ste | ste.name="BindingConnector").oclAsSet()->notEmpty()
+}
+
+
+
+/**
+* This method map a IObjectLink with a UML Element
+*
+*/
+mapping umlrpy::IObjectLink::iObjectLinkToUMLElement():uml::Element disjuncts 
+	umlrpy::IObjectLink::iObjectLinkToUMLConnector
+{}
+
+/**
+* This method map a IObjectLink with a UML Connector
+*
+*/
+mapping umlrpy::IObjectLink::iObjectLinkToUMLConnector():uml::Connector when{self.isUMLConnector() }{ 
+	name:= self.name.replaceAll("\"","");	
+	_end+=self.map iObjectLinkSourceToUMLConnectorEnd();
+	_end+=self.map iObjectLinkTargetToUMLConnectorEnd();
+	
+	var localComment:Comment:=self.description.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(uml::Comment);
+	localComment.annotatedElement:=result;
+	ownedComment+=localComment;
+}
+
+/**
+* This method map a IObjectLink with a UML Connector End used as source
+*
+*/
+mapping umlrpy::IObjectLink::iObjectLinkSourceToUMLConnectorEnd():uml::ConnectorEnd{
+	var fromLink:umlrpy::FromLinkType:=self.fromLink;
+	var fromPort:umlrpy::IRelation:=self.fromPort;
+	//1. we manage the from link property
+	if(fromLink<>null){
+		if(fromLink.oclIsTypeOf(umlrpy::IPart)){
+			partWithPort:=fromLink.oclAsType(umlrpy::IPart).map iPartToUMLElement().oclAsType(uml::Property);
+		}elif(fromLink.oclIsTypeOf(umlrpy::IAssociationEnd)){
+			partWithPort:=fromLink.oclAsType(IAssociationEnd).map toAssociationsEnd();
+		}elif(fromLink.oclIsKindOf(umlrpy::IRelation)){
+			role:=fromLink.oclAsType(umlrpy::IRelation).map iRelationToUMLElement().oclAsType(uml::Port);
+		};
+	};
+	
+	//2. we manage the fromPort property when required
+	if(fromPort<>null and fromPort.oclIsKindOf(umlrpy::IRelation)){
+		if(role=null){
+			role:=fromPort.oclAsType(umlrpy::IRelation).map iRelationToUMLElement().oclAsType(uml::Port);
+		}
+		//I don't know what to do in other case!
+	};	
+	
+	if(partWithPort.oclIsTypeOf(Property) and role=null){
+		role:=partWithPort;
+		partWithPort:=null;
+	}
+}
+
+/**
+* This method map a IObjectLink with a UML Connector End used as target
+*
+*/
+mapping umlrpy::IObjectLink::iObjectLinkTargetToUMLConnectorEnd():uml::ConnectorEnd{
+	var toLink:umlrpy::FromLinkType:=self.toLink;
+	var toPort:umlrpy::IRelation:=self.toPort;
+	//1. we manage the from link property
+	if(toLink<>null){
+		if(toLink.oclIsTypeOf(umlrpy::IPart)){
+			partWithPort:=toLink.oclAsType(umlrpy::IPart).map iPartToUMLElement().oclAsType(uml::Property);
+		}elif(toLink.oclIsTypeOf(umlrpy::IAssociationEnd)){
+			partWithPort:=toLink.oclAsType(IAssociationEnd).map toAssociationsEnd();
+		}elif(toLink.oclIsKindOf(umlrpy::IRelation)){
+			role:=toLink.oclAsType(umlrpy::IRelation).map iRelationToUMLElement().oclAsType(uml::Port);
+		};
+	};
+	
+	//2. we manage the fromPort property when required
+	if(toPort<>null and toPort.oclIsKindOf(umlrpy::IRelation)){
+		if(role=null){
+			role:=toPort.oclAsType(umlrpy::IRelation).map iRelationToUMLElement().oclAsType(uml::Port);
+		}
+		//I don't know what to do in other case!
+	};
+	
+	if(partWithPort.oclIsTypeOf(Property) and role=null){
+		role:=partWithPort;
+		partWithPort:=null;
+	}
+}
+
+/**
+*
+* Returns true of the object is a UML Connector
+*/
+query umlrpy::IObjectLink::isUMLConnector(): Boolean{
+	return self.isStereotypedWith("connector");
+}
+
+mapping umlrpy::IRelation::iRelationToUMLElement():uml::Element disjuncts 
+	umlrpy::IRelation::iRelationToSysMLPort,
+	umlrpy::IRelation::iRelationToUMLProperty
+{}
+
+
+/**
+* This mapping convert a IRelation instanceof ISysMLPort into a uml Property
+*
+*/
+mapping umlrpy::IRelation::iRelationToUMLProperty(): uml::Property when {self.isRpySysMLPortRepresentingUMLProperty()}{
+		var sysPort:umlrpy::ISysMLPort:=self.oclAsType(ISysMLPort);
+		name:= sysPort.name.replaceAll("\"","");
+		aggregation:=AggregationKind::composite;
+//		if (not sysPort.otherClass.oclIsUndefined()){
+//			type := sysPort.otherClass.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(Type);
+//		}elif(sysPort.otherClass.oclIsKindOf(IClass)){
+//				type := sysPort.otherClass.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(Type);
+//		};
+		
+		//at this time we don't generate implicite type
+		if(sysPort.implicitClass<>sysPort.otherClass){
+			type := sysPort.otherClass.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(Type);
+		};
+			//a multiplicity has been defined
+		if(not sysPort.multiplicity.oclIsUndefined()){
+			lowerValue:= createLowerMultiplicity(sysPort.multiplicity);
+			upperValue:= createUpperMultiplicity(sysPort.multiplicity);
+		}else{
+			lowerValue:= createLowerMultiplicity("1");
+			upperValue:= createUpperMultiplicity("1");
+		};
+	var localComment:Comment:=sysPort.description.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(uml::Comment);
+	localComment.annotatedElement:=result;
+	ownedComment+=localComment;
+}
+
+/**
+* This mapping convert a IRelation instanceof ISysMLPort into a uml Port
+*
+*/
+mapping umlrpy::IRelation::iRelationToSysMLPort(): uml::Port when {self.isRpySysMLPortRepresentingUMLPort()}{
+		var sysPort:umlrpy::ISysMLPort:=self.oclAsType(ISysMLPort);
+		name:= sysPort.name.replaceAll("\"","");
+//		if (not sysPort.otherClass.oclIsUndefined()){
+//			if(sysPort.otherClass.oclIsKindOf(IType)){ 
+//				type := sysPort.otherClass.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(Type);
+//			}elif(sysPort.otherClass.oclIsKindOf(IClass)){
+//				type := sysPort.otherClass.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(Type);
+//			}
+//		};
+		if(sysPort.implicitClass<>sysPort.otherClass){
+			type := sysPort.otherClass.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(Type);
+		};
+		aggregation:=AggregationKind::composite;
+		
+		//to my mind, the Rpy field isConjugated manage the SysML FlowPort property and the UML one.
+		//isConjugated:=sysPort.isConjugated();
+		
+			//a multiplicity has been defined
+		if(not sysPort.multiplicity.oclIsUndefined()){
+			lowerValue:= createLowerMultiplicity(sysPort.multiplicity);
+			upperValue:= createUpperMultiplicity(sysPort.multiplicity);
+		}else{
+			lowerValue:= createLowerMultiplicity("1");
+			upperValue:= createUpperMultiplicity("1");
+		};
+		
+	var localComment:Comment:=sysPort.description.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(uml::Comment);
+	localComment.annotatedElement:=result;
+	ownedComment+=localComment;
+}
+
+
+query umlrpy::IRelation::isRpySysMLPortRepresentingUMLPort(): Boolean{
+	if(self.isRpyPort()){
+		return self.oclAsType(ISysMLPort).Stereotypes[IStereotype]->select(ste | ste.name="flowPort")->notEmpty();
+		//we could do an additional check, checking that owner is stereotyped by Block?
+	};
+	return false;
+}
+
+
+query umlrpy::IRelation::isRpySysMLPortRepresentingUMLProperty(): Boolean{
+	if(self.isRpyPort()){
+		return self.oclAsType(ISysMLPort).Stereotypes[IStereotype]->select(ste | ste.name="ConstraintParameter")->notEmpty();
+		//we could do an additional check, checking that owner is stereotyped by ConstraintParamater?
+	};
+	return false;
+}
+
+//TODO : merge me with previous one
+query umlrpy::IRelation::isRpySysMLPortContraintParameter(): Boolean{
+	if(self.isRpyPort()){
+		return self.oclAsType(ISysMLPort).Stereotypes[IStereotype]->select(ste | ste.name="ConstraintParameter")->notEmpty();
+		//we could do an additional check, checking that owner is stereotyped by ConstraintParamater?
+	};
+	return false;
+}
+
+
+mapping umlrpy::IStateChart::toStateMachine(): uml::StateMachine
+{
+	//get hierarchic states
+	var parentStates:Set(IState) :=self.getCompositeStates();
+	var allsubStates:Set(IState):= self.getallSubStates();
+	name:=self.name.replaceAll("\"","");
+	
+	// create the default region : for the default ROOT region concept did not exist in rhap
+	 region := object Region
+   {
+   
+      name:="Region1";
+   	  subvertex += self.States[IState]->select(s|allsubStates->excludes(s) and parentStates->excludes(s)).map toStates();
+   	 
+   	 var pseudo := object Pseudostate {
+		name :="initial";
+		kind:= PseudostateKind::initial;	
+	};
+	
+	subvertex+=pseudo;
+	
+	 //only the first default transition
+   	 transition += self.Transitions[IDefaultDrvdTrans]->select(t|parentStates->excludes(t.ofState)).map toInitialTransition(pseudo);
+   	 subvertex+= self.States[IState]->select(s|parentStates->includes(s)).map toCompositeStates(self);
+   	  // only transitions that its states are in the firest regions
+	 transition+=self.Transitions[ITransition]->select(t|((allsubStates->excludes(t.itsTarget.oclAsType(IState))) and (allsubStates->excludes(t.itsSource.oclAsType(IState))))).map toTransitions();	  
+   	 // other mix transition (source and target not in the same region)
+   	  transition+=self.getMixTransitions(parentStates, allsubStates).map toTransitions();	  
+   };
+    
+   
+}
+
+query umlrpy::IStateChart::getMixTransitions(parentStates:Set(umlrpy::IState), allsubStates:Set(umlrpy::IState)): Set(umlrpy::ITransition)
+{
+var mixTrnasitions:Set(umlrpy::ITransition);
+var outTransitions :=self.Transitions[ITransition]->select(t|((allsubStates->excludes(t.itsTarget.oclAsType(IState))) and (allsubStates->excludes(t.itsSource.oclAsType(IState)))));
+var innerTransitions := self.Transitions[ITransition]->select(t|allsubStates->includes(t.itsSource.oclAsType(IState)) and allsubStates->includes(t.itsTarget.oclAsType(IState)));
+	mixTrnasitions := self.Transitions[ITransition]->select(t| (innerTransitions->excludes(t) and outTransitions->excludes(t)));
+return mixTrnasitions;
+} 
+
+query umlrpy::IStateChart::getSubStates(parentstate: umlrpy::IState ): Set(umlrpy::IState)
+{
+var subStates:Set(umlrpy::IState);
+	self.States->forEach(state)
+	{
+		if (state.parent.oclAsType(IState)=parentstate)
+		{
+			subStates+=state.oclAsType(IState);
+		}
+	};
+	return subStates;
+} 
+query umlrpy::IStateChart::getCompositeStates(): Set(umlrpy::IState)
+{
+var parentStates:Set(umlrpy::IState);
+	self.States->forEach(state)
+	{
+	
+		if (not(state.parent.oclAsType(IState).name.replaceAll("\"","")="ROOT"))
+		{
+			parentStates+=state.parent.oclAsType(IState);
+		}
+	};
+	
+	return parentStates;
+} 
+
+query umlrpy::IStateChart::getallSubStates(): Set(umlrpy::IState)
+{
+var allSubStates:Set(umlrpy::IState);
+	self.States->forEach(state)
+	{
+		if (not(state.parent.oclAsType(IState).name.replaceAll("\"","")="ROOT"))
+		{
+			allSubStates+=state.oclAsType(IState);
+		}
+	};
+	return allSubStates;
+} 
+
+mapping umlrpy::IDefaultDrvdTrans::toInitialTransition(pseudo:uml::Vertex): uml::Transition
+{
+	
+	name:=self.name;
+	target:= self.itsTarget[IState].resolveone(State);
+	source:=pseudo;
+	
+	
+}
+
+mapping umlrpy::IState::toCompositeStates(statechart:umlrpy::IStateChart): uml::State
+{
+
+var allsubStates:Set(IState):= statechart.getSubStates(self);
+		
+
+			name:=self.name.replaceAll("\"","");
+			result.oclAsType(State).region:=  object Region
+			{
+				name:="Region1";
+   	  			subvertex += allsubStates.map toStates();
+   	  			 var pseudo := object Pseudostate {
+   	  
+   
+					name :="initial";
+					kind:= PseudostateKind::initial;
+		
+		
+				};
+	
+				subvertex+=pseudo;
+   	  			transition += statechart.Transitions[IDefaultDrvdTrans]->select(t|t.ofState=self).map toInitialTransition(pseudo);
+   	  			transition += statechart.Transitions[ITransition]->select(t|allsubStates->includes(t.itsSource.oclAsType(IState)) and allsubStates->includes(t.itsTarget.oclAsType(IState))).map toTransitions();
+   	  				
+			}		
+}
+
+mapping umlrpy::IState::toStates(): uml::State
+when {not(self.name.replaceAll("\"","")="ROOT")}
+	
+{
+				name:=self.name.replaceAll("\"","");	
+}
+
+
+mapping umlrpy::ITransition::toTransitions(): uml::Transition
+{
+	
+	name:=self.name;
+	target:= self.itsTarget[IState].resolveone(State);
+	source:=self.itsSource[IState].resolveone(State);
+	trigger:=self.itsLabel[ILabel].itsTrigger [IInterfaceItemTrigger].map toTrigger();
+	//take the first guard
+	guard:=self.itsLabel[ILabel].itsGuard[IGuard]->any(true).map toGuard();
+	effect:= self.itsLabel[ILabel].itsAction[IAction]->any(true).map toBehavior();
+}
+
+
+mapping umlrpy::IAction::toBehavior(): uml::OpaqueBehavior
+{
+	
+	body:=self.body.trim();
+	language:= "C++";
+	
+	
+}
+
+mapping umlrpy::IGuard::toGuard(): uml::Constraint
+{
+	
+	result.specification := object  OpaqueExpression
+	{
+	body:=self.body.trim();
+	language:= "C++";
+	}
+	
+}
+
+mapping umlrpy::IInterfaceItemTrigger::toTrigger(): uml::Trigger
+{
+	
+	event:= self.itsInterfaceItem.resolveone(SignalEvent);
+	
+	
+}
+
+
+
+
+mapping umlrpy::IGeneralization::toPapyrusGeneralization(): uml::Generalization
+{
+	general:= self.oclAsType(IGeneralization).dependsOn.oclAsType(IClass).oclAsType(EObject).map iClassToUMLClass();
+	
+}
+
+mapping umlrpy::IReception::toReceptions(): uml::Reception
+{
+	name:= self.event.name.replaceAll("\"","");
+	signal := self.event[IEvent].resolveone(Signal);
+	
+	
+}
+
+mapping umlrpy::IPrimitiveOperation::toOperations(): uml::Operation
+{
+	name:= self.name.replaceAll("\"","");
+	// with the return type inside
+    ownedParameter:= self.Args[IArgument]->map toArguments();
+    if (not self.returnType.oclIsUndefined()){
+    	var return_param:= object uml::Parameter {
+    		direction:= ParameterDirectionKind::_return;
+    		type:= self.returnType.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(Type);
+    	};
+    	ownedParameter+=return_param;
+    };
+  	var desiredVisibility := getVisibility(self.protection); 
+	if (desiredVisibility != VisibilityKind::public) { //to avoid green + in UML editor
+		visibility:= desiredVisibility
+	};  
+
+   	
+}
+
+mapping umlrpy::IVariable::iVariableToUMLElement():uml::Property disjuncts
+	umlrpy::IArgument::iArgumentToUMLElement,
+	umlrpy::IAttribute::iAttributeToUMLElement
+{}
+
+
+
+mapping umlrpy::IArgument::iArgumentToUMLElement(): uml::Property when {self.oclIsTypeOf(umlrpy::IArgument)}{
+ 	name:= self.oclAsType(IArgument).name.replaceAll("\"","");
+	// should add the PtR Stereotpe if the type is a C++ Declaration : i,e: Class *;
+	if (self.typeOf.oclIsUndefined()){
+		type := self.myTypeOf.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(Type);
+		userTypeDeclaration+=type;
+	}else{
+		type := self.typeOf.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(Type);
+	};
+	
+	var localComment:Comment:=self.description.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(uml::Comment);
+	localComment.annotatedElement:=result;
+	ownedComment+=localComment;
+}
+
+/**
+* We map IAttribute declared in the TopLevel class as instance specifications
+*/
+helper umlrpy::IAttribute::isInstanceSpecification():Boolean{
+	var owner:EObject:=self.oclAsType(EObject).eContainer();
+	return owner.oclIsKindOf(IClass) and owner.oclAsType(IClass).name="TopLevel";
+}
+
+/**
+* This mapping creates InstanceSpecification from IAttribute
+*/ 
+mapping ecore::EObject::iAttributeToUMLInstanceSpecification(): uml::InstanceSpecification when {self.oclIsKindOf(IAttribute) and self.oclAsType(IAttribute).isInstanceSpecification()}{
+	var iAttribute:IAttribute:=self.oclAsType(IAttribute);
+	name:=iAttribute.name;
+	classifier+=iAttribute.typeOf.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(uml::Classifier);
+	var tmp:String:="";
+	if(not iAttribute.ValueSpecifications.oclIsUndefined()){
+		tmp:=iAttribute.ValueSpecifications.value;
+	};
+	if(classifier->any(true).oclIsTypeOf(Enumeration)){
+		specification:=object InstanceValue{
+			name:="InstanceValue1";
+			instance:=classifier.oclAsType(Enumeration).member->any(name=tmp).oclAsType(InstanceSpecification);
+		}
+	}else{
+		specification:=object OpaqueExpression{
+			body:=tmp;
+		}
+	};
+	
+	var desiredVisibility := getVisibility(iAttribute.protection); 
+	if (desiredVisibility != VisibilityKind::public) { //to avoid green + in UML editor
+		visibility:= desiredVisibility
+	}; 
+	
+	var localComment:Comment:=iAttribute.description.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(uml::Comment);
+	localComment.annotatedElement:=result;
+	ownedComment+=localComment;
+}
+
+mapping umlrpy::IAttribute::iAttributeToUMLElement(): uml::Property when {self.oclIsTypeOf(umlrpy::IAttribute)}{
+	name:= self.name.replaceAll("\"","");
+	// should add the PtR Stereotpe if the type is a C++ Declaration : i,e: Class *;
+	
+
+	if (self.typeOf.oclIsUndefined()) {
+		type := self.myTypeOf.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(Type);
+		userTypeDeclaration+=type;
+	}else{
+		type := self.typeOf.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(Type);
+	};
+	var desiredVisibility := getVisibility(self.protection); 
+	if (desiredVisibility != VisibilityKind::public) { //to avoid green + in UML editor
+		visibility:= desiredVisibility
+	};  
+
+	//a multiplicity has been defined
+	if(not self.multiplicity.oclIsUndefined()){
+		lowerValue:= createLowerMultiplicity(self.multiplicity);
+		upperValue:= createUpperMultiplicity(self.multiplicity);
+	};
+	
+	aggregation:=AggregationKind::composite;
+	
+	var localComment:Comment:=self.description.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(uml::Comment);
+	localComment.annotatedElement:=result;
+	ownedComment+=localComment;
+}
+
+
+/**
+* Create LiteralInteger to represent the lower multiplicity
+*/
+helper createLowerMultiplicity(multiplicity:String):LiteralInteger{
+	if(multiplicity.oclIsUndefined() or multiplicity.size()=0){
+		return null;
+	};
+	var lower:String;	
+	if(multiplicity.indexOf("..")<>0){
+		lower:=multiplicity.substringBefore("..");
+	}elif(multiplicity.indexOf(",")<>0){
+		lower:=multiplicity.substringBefore(",");
+	}else{
+		lower:=multiplicity;
+	};
+	var lit:LiteralInteger:= object LiteralInteger{};
+	lit.value:=lower.toInteger();
+	return lit;
+	
+	
+}
+
+/**
+* Create LiteralUnlimitedNatural to represent the upper multiplicity
+*/
+helper createUpperMultiplicity(multiplicity:String):LiteralUnlimitedNatural{
+	if(multiplicity.oclIsUndefined() or multiplicity.size()=0){
+		return null;
+	};
+	var upper:String;
+	
+	if(multiplicity.indexOf("..")<>0){
+		upper:=multiplicity.substringAfter("..");
+	}elif(multiplicity.indexOf(",")<>0){
+		upper:=multiplicity.substringAfter(",");
+	}else{
+		upper:=multiplicity;
+	};
+	
+	var lit:LiteralUnlimitedNatural:= object LiteralUnlimitedNatural{};
+	if(upper.equalsIgnoreCase("*")){
+		lit.value:=-1;
+	}else{
+		lit.value:=upper.toInteger();
+	};
+	return lit;	
+}
+
+
+/**
+* Return the visibility kind for an IAttribtue or an operation
+*/
+helper getVisibility(protection:String):uml::VisibilityKind{
+	if(protection="iPublic"){
+		return VisibilityKind::public;
+	}elif(protection="iProtected"){
+		return VisibilityKind::protected;
+	}elif(protection="iPrivate"){
+		return VisibilityKind::private;
+	};
+	//seems not possible in Rpy
+	//	elif(self.protection="iPackage"){
+	//		return VisibilityKind::package;
+	//	};
+	return VisibilityKind::public;
+}
+
+
+mapping umlrpy::IArgument::toArguments(): uml::Parameter
+{
+	name:= self.name.replaceAll("\"","");
+	direction:=  getDirectionKind(self.argumentDirection);
+	// should add the PtR Stereotpe if the type is a C++ Declaration : i,e: Class *;
+	if (self.typeOf.oclIsUndefined())
+	{
+		type := self.myTypeOf.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(Type);
+		userTypeDeclaration+=type;
+	}else
+	{
+	type := self.typeOf.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(Type);
+	}
+	
+	
+}
+
+
+query getDirectionKind(s:String): uml::ParameterDirectionKind{
+var direction: uml::ParameterDirectionKind;
+	direction:= switch  {
+		case (s="in") ParameterDirectionKind::_in;
+		case (s="out") ParameterDirectionKind::_out;
+		case (s="inout") ParameterDirectionKind::_inout;
+		// there is no return direction in Rpy there is a returnType attribute instead, 
+	};
+	return direction;
+}
+
+
+mapping umlrpy::IEvent::toSignalEvents(): uml::SignalEvent
+{
+	name:= self.name.replaceAll("\"","");
+	
+	signal:= self[IEvent].resolveone(Signal); //TODO replace me with a mapping
+	
+}
+
+mapping ecore::EObject::iEventToUMLSignal(): uml::Signal when {self.oclIsTypeOf(IEvent)}{
+	var localEvent:IEvent:=self.oclAsType(IEvent);
+	name:= localEvent.name.replaceAll("\"","");
+	ownedAttribute += localEvent.Args[IVariable]->map iVariableToUMLElement();
+	
+	var localComment:Comment:=localEvent.description.oclAsType(EObject).map generalMappingToUMLElement().oclAsType(uml::Comment);
+	localComment.annotatedElement:=result;
+	ownedComment+=localComment;
+}
+
+//collect the call events from the umlrpy file
+
+query umlrpy::ISubsystem::callEvents() : Set(umlrpy::IEvent)
+{
+	return self.Events.oclAsType(Set(IEvent))->asSet();
+	}
+	
+//collect the signal events from the umlrpy file
+
+query umlrpy::ISubsystem::SignalEvents() : Set(umlrpy::IEvent)
+{
+var allSignalEvents : Set(umlrpy::IEvent);
+var classes : Set(umlrpy::IClass) :=inModel.rootObjects()[IProject].defaultSubsystem[ISubsystem].Classes[IClass]->asSet();
+classes->forEach(classe)
+{
+	if (not(classe.Operations[IReception]->isEmpty()))
+	{
+	
+	classe.Operations[IReception]->forEach(reception)
+	{
+	if (not(reception.oclAsType(IReception).event.oclIsUndefined()))
+		allSignalEvents+= reception.oclAsType(IReception).event;
+	}
+		
+	}endif;
+};
+	return allSignalEvents;
+	
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/RpyToPapyrus.qvto b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/RpyToPapyrus.qvto
new file mode 100644
index 0000000..82b465a
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/RpyToPapyrus.qvto
@@ -0,0 +1,349 @@
+/*****************************************************************************
+ * Copyright (c) 2013, 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:
+ *  Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Initial API and implementation
+ *****************************************************************************/
+
+modeltype notation "strict" uses 'http://www.eclipse.org/gmf/runtime/1.0.2/notation';
+modeltype uml "strict" uses 'http://www.eclipse.org/uml2/5.0.0/UML';
+modeltype ecore "strict" uses 'http://www.eclipse.org/emf/2002/Ecore';
+modeltype umlrpy "strict" uses 'http://www.eclipse.org/Papyrus/UMLRpy/1.0.0';
+
+/**
+*	Abstract transformation rules for importing notation diagrams into Papyrus
+*/
+transformation RpyToPapyrus(in semantics : umlrpy, out graphics : notation);
+
+
+main() {
+	semantics.rootObjects()[IDiagram]->map toOwnedDiagrams();
+}
+
+abstract mapping IDiagram::toOwnedDiagrams() : notation::Diagram{
+
+}
+	
+
+
+/** Abstract mappings. Never called directly, inherited only */
+
+
+abstract mapping notation::View::toPapyrusView() : notation::View {
+	result.element := self.element; /* UML Model is in-out. No mapping required. */
+	result.visible := self.visible;
+	
+	result.children := self.children.map toNode();
+	result.type := self.getType();
+}
+
+//abstract mapping Edge::toPapyrusEdge() : Edge inherits View::toPapyrusView {
+//	result.bendpoints := self.bendpoints.map toBendpoint(self.diagram);
+//	result.sourceAnchor := self.sourceAnchor.map toAnchor();
+//	result.targetAnchor := self.targetAnchor.map toAnchor();
+	
+//	result.source := self.source.map toView();
+//	result.target := self.target.map toView();
+//}
+
+//abstract mapping Connector::toPapyrusConnector() : Connector inherits Edge::toPapyrusEdge, RoutingStyle::toRoutingstyle, LineStyle::toLineStyle {};
+
+//abstract mapping Connector::toCommentLink() : Connector inherits Connector::toPapyrusConnector{};
+
+abstract mapping umlrpy::CGIClass::toPapyrusNode() : Node ;
+
+abstract mapping inout Shape::addCommentDecoration(){};
+
+abstract mapping Node::toPapyrusConnectorLabel() : Node {
+	result.visible := self.visible;
+	result.type := self.getType();
+	
+	var initX := self.layoutConstraint.oclAsType(Location).x;
+	var initY := self.layoutConstraint.oclAsType(Location).y;
+	
+	if self.diagram.isHimetric() then {
+		initX := initX.toPixels();
+		initY := initY.toPixels();
+	} endif;
+	
+	result.layoutConstraint := object Location {
+		x := initX;
+		y := initY;
+	};
+	
+	//Do not set element
+	//Do not set children
+}
+
+
+
+//abstract mapping IDiagram::toPapyrusDiagram() : notation::Diagram  {
+
+	//population {
+		//result.name := self.name;
+		
+		/* Papyrus uses Pixel, whereas RSA uses Himetric. Forcing the conversion to Pixel is a bad idea */
+		//result.measurementUnit := MeasurementUnit::Pixel; 
+		//result.styles := createDiagramStyle();
+		
+	
+//	}
+	
+	//end {
+	//	worked(1);
+	//}
+//}
+
+query Diagram::getName() : String{
+	return if self.name.oclIsUndefined() or self.name = '' then {
+		var element := self.findElement();
+		return if element.oclIsKindOf(NamedElement) then
+			element.oclAsType(NamedElement).getDiagramName()
+		else
+			''
+		endif;
+	} else
+		self.name
+	endif;	
+}
+
+query NamedElement::getDiagramName() : String {
+	return if self.oclIsKindOf(Behavior) then
+		self.owner.oclAsType(NamedElement).getDiagramName()
+	else
+		self.name
+	endif;
+}
+
+
+abstract mapping Element::toCompartmentEntry(node : Node) : Shape {
+	result.element := self.oclAsType(EObject);
+	//result.type := self.findType(node);
+}
+
+helper createDiagramStyle() : DiagramStyle {
+	return object DiagramStyle {
+		
+	};
+}
+
+
+/** Common mappings: Copy (Call or Inherit) */
+
+mapping FontStyle::toFontStyle() : FontStyle {
+	result.fontColor := self.fontColor;
+	result.fontName := self.fontName;
+	result.fontHeight := self.fontHeight;
+	result.bold := self.bold;
+	result.italic := self.italic;
+	result.underline := self.underline;
+	result.strikeThrough := self.strikeThrough;
+}
+
+
+
+
+abstract mapping Node::toPapyrusNode() : Node inherits View::toPapyrusView{};
+
+mapping FillStyle::toFillStyle() : FillStyle {
+	result.fillColor := self.fillColor;
+	
+	/* Workaround for Bug 456933: use default transparency so that CSS can override the value if necessary */
+	result.transparency := if self.transparency = 0 then -1 else self.transparency endif; 
+	
+	//TODO: Gradient
+}
+
+mapping LineStyle::toLineStyle() : LineStyle {
+	result.lineColor := self.lineColor;
+	result.lineWidth := self.lineWidth;
+}
+
+mapping RoutingStyle::toRoutingstyle() : RoutingStyle {
+	result.roundedBendpointsRadius := self.roundedBendpointsRadius;
+	result.routing := self.routing;
+	result.smoothness := self.smoothness;
+	result.avoidObstructions := self.avoidObstructions;
+	result.closestDistance := self.closestDistance;
+	result.jumpLinkStatus := self.jumpLinkStatus;
+	result.jumpLinkType := self.jumpLinkType;
+	result.jumpLinksReverse := self.jumpLinksReverse;
+}
+
+//abstract mapping Bendpoints::toBendpoint(diagram: Diagram) : Bendpoints disjuncts 
+//	RelativeBendpoints::toBendpoint
+//;
+
+//mapping RelativeBendpoints::toBendpoint(diagram: Diagram) : Bendpoints {
+//	init {
+//		result := object RelativeBendpoints {}
+//	}
+	
+//	var convertToPixels := diagram.isHimetric();
+//	self.copyBendpoints(result.oclAsType(RelativeBendpoints), convertToPixels);
+//}
+
+mapping LayoutConstraint::toLayout(diagram : Diagram) : LayoutConstraint disjuncts 
+	Bounds::toLayout{
+}
+
+mapping Bounds::toLayout(diagram : Diagram) : LayoutConstraint {
+	init {
+		result := object Bounds{}
+	}
+	
+	var bounds : Bounds := result.oclAsType(Bounds);
+	
+	if diagram.isHimetric() then {
+		bounds.x := self.x.toPixels();
+		bounds.y := self.y.toPixels();
+		if self.width > 0 then bounds.width := self.width.toPixels() endif;
+		if self.height > 0 then bounds.height := self.height.toPixels() endif;
+	} else{
+		bounds.x := self.x;
+		bounds.y := self.y;
+		if self.width > 0 then bounds.width := self.width endif;
+		if self.height > 0 then bounds.height := self.height endif;
+	} endif;
+}
+
+query View::isHimetric() : Boolean {
+	return self.diagram.measurementUnit = MeasurementUnit::Himetric
+}
+
+query Integer::toPixels() : Integer{
+	return self.div(25); //FIXME: Approx.
+}
+
+mapping Anchor::toAnchor() : Anchor disjuncts
+	IdentityAnchor::toAnchor{
+	
+}
+
+mapping IdentityAnchor::toAnchor() : Anchor {
+	init {
+		result := object IdentityAnchor {
+		}
+	}
+
+	var id := if self.oclAsType(EObject).isHimetric() then {
+		var id := self.id;
+		var part1 := id.substringBefore(':').asInteger();
+		var part2 := id.substringAfter(':').asInteger();
+		var newId := if part1.oclIsInvalid() or part2.oclIsInvalid() then 
+			self.id 
+		else
+			(part1.toPixels().toString())+':'+(part2.toPixels().toString())
+		endif;
+		newId;
+	} else {
+		self.id;
+	} endif;
+	
+	result.oclAsType(IdentityAnchor).id := id;
+}
+
+query EObject::isHimetric() : Boolean {
+	return if self.oclIsKindOf(Diagram) then
+		self.oclAsType(Diagram).isHimetric()
+	else
+		self.eContainer().isHimetric()
+	endif;
+}
+
+helper View::fail() : String {
+	var type := self.type;
+	var isProxy := self.element != null and self.element.oclIsUndefined();
+	var semanticEClassName := if isProxy then 'Unresolved (proxy) reference' elif self.element = null then 'No semantic element' else self.element.eClass().name endif;
+	//warning('Unknown or unsupported element type. Graphical Type = "'+self.type+'", Semantic Type = "'+semanticEClassName+'". Diagram Type: "'+self.diagram.type+'". The element will be ignored.');
+	return '';
+}
+
+
+/** Generic mapping logic */
+
+query View::getType(): String{
+	var element : Element := self.findElement();
+	
+	return
+	
+		if self.oclIsKindOf(Diagram) then
+			self.getDiagramType()
+		elif self.oclIsKindOf(BasicDecorationNode) then
+			self.getDecorationType(element)
+		elif self.oclIsKindOf(Node) then  
+			self.getNodeType(element)
+		else self.fail()
+	
+	endif;
+}
+
+query View::findElement() : Element {
+	return self.findAssociatedElement().oclAsType(Element);
+}
+
+query View::findAssociatedElement() : EObject {
+	return if self.element.oclIsUndefined() then
+		self.container().oclAsType(View).findAssociatedElement()
+	else
+		self.element
+	endif;
+}
+
+query Sequence(Node)::safeUnion(unionWith: Sequence(Node)) : Sequence(Node) {
+	var res := if self->oclIsUndefined() and unionWith->oclIsUndefined() then 
+		object Sequence(Object){}
+	elif self->oclIsUndefined() then
+		unionWith
+	elif unionWith->oclIsUndefined() then
+		self
+	else
+		self->union(unionWith)
+	endif;
+	
+	return res;
+}
+
+mapping View::toView() : View disjuncts Node::toNode, Edge::toEdge;
+
+/** Generic mapping logic */
+
+query GraphElementsType::getNodeType() : String {
+	return
+		if self.oclIsTypeOf(CGIClass) then '2008' 
+		elif (self.oclIsTypeOf(CGIState) and self[CGIState].m_type![String].equalsIgnoreCase("8")) then '6000'
+		elif (self.oclIsTypeOf(CGIState) and self[CGIState].m_type![String].equalsIgnoreCase("5")) then '8000'
+		
+	endif;
+}
+
+query GraphicChartType::getNodesType() : String {
+	return
+		if self.oclIsTypeOf(CGIStateChart) then '2000' 
+		
+	endif;
+}
+
+/** Diagram-specific transformations (Implement only) */
+
+abstract mapping Node::toNode() : Node;
+
+abstract mapping Edge::toEdge() : Edge;
+
+abstract query View::getDiagramType() : String;
+
+//Distinction between TopNode and ChildNode is not important in the Notation model.
+//Simply use the TopNode Type.
+abstract query View::getNodeType(element : Element) : String;
+
+abstract query View::getEdgeType(element : Element) : String;
+
+abstract query View::getDecorationType(element : Element) : String;
+
+/** Main diagram mapping */
+abstract mapping IDiagram::generateDiagram() : notation::Diagram;
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/RpyToPapyrusDiagamCommon.qvto b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/RpyToPapyrusDiagamCommon.qvto
new file mode 100644
index 0000000..274e4ba
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/RpyToPapyrusDiagamCommon.qvto
@@ -0,0 +1,204 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *****************************************************************************/
+ 
+import RpyUtils;
+import RpyToPapyrusUtils;
+
+
+modeltype umlrpy "strict" uses 'http://www.eclipse.org/Papyrus/UMLRpy/1.0.0';
+modeltype notation "strict" uses 'http://www.eclipse.org/gmf/runtime/1.0.2/notation';
+modeltype ecore "strict" uses 'http://www.eclipse.org/emf/2002/Ecore';
+
+/**
+*
+* This file provides useful method to manage SysML Rpy Model
+*/
+library RpyToPapyrusDiagamCommon;
+
+/**
+* Create and initialize the diagram. These fields are initialized: 
+* <ul>
+*<li>name</li>
+*<li>type</li>
+*<li>measurementUnit</li>
+*</ul>
+* These styles are added to the diagrams: 
+*<li>diagram style</li>
+*<li>papyrus view style</li>
+*<li>diagram_compatibility_version</li>
+*In additional we add a EAnnotation (the same that for the UMl Model) indicating that the diagram has been imported from a Rpy Model
+*</ul>
+*
+* In addition we add a named style to know that the diagram has been imported from Rpy. It will be useful if we need to create specific DiagramReconciler to fix bugs due to the import from Rpy model
+*/
+mapping rpymetamodel::IDiagram::createAndInitDiagram(rpyProject:IProject,newDiagramType:String, diagramElement:EObject, diagramOwner:EObject):Diagram{
+	name:=self.name;
+	measurementUnit:= MeasurementUnit::Pixel;
+	type:= newDiagramType;
+	element:=diagramElement;
+	eAnnotations+=rpyProject.createEAnnotationForVersioning();
+	styles+= object DiagramStyle{};
+//	styles+= object PapyrusViewStyle {owner:=diagramOwner};
+	styles+= object StringValueStyle {name:=getDiagramCompatibilityVersionKey(); stringValue:=getDiagramCompatibilityVersion()};
+	
+}
+
+/**
+*
+* Map a CGI Annotation to a UML Comment Shape CN
+* @param
+*		cgiClassChart : the class chart of the diagram, it is useful to find child to create for the created element
+* @param
+* 		rpyAllowedParent : the list of the allowed Rpy parent to manage the object.
+*		if the Rpy parent is not in this list, the object won't be mapped
+*					
+*/
+mapping rpymetamodel::CGIAnnotation::CGIAnnotationToCommentCN(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)):Shape when {self.m_pModelObject.oclIsTypeOf(IComment) and self.m_pParent.oclIsKindOf(GraphElementsType) and rpyAllowedParent->includes(self.m_pParent.oclAsType(GraphElementsType))}{
+	type:="Comment_Shape_CN";
+	children+= object DecorationNode{
+		type:="Comment_BodyLabel_CN";
+	};
+	layoutConstraint:= object Bounds{ x:=getX(self); y:=getY(self); width :=getRectangleWidth(self); height := getRectangleHeight(self)};
+	element:=self.m_pModelObject.resolveone().oclAsType(EObject);
+}
+
+/**
+* Create a list compartment with the given name, hide it if the rpy compartment doesn't have name and force the compartment title to hidden if required 
+* 
+* if comparmtent are visible when they mustn't be visible, the problem comes from the arg rpyCompartmentName which is probably wrong
+*
+*/
+mapping umlrpy::CGIGenericElement::toListCompartment(papyrusCompartmentName:String, rpyCompartmentName:String) : notation::ListCompartment{
+	type:=papyrusCompartmentName;
+	styles := object DrawerStyle{};
+	styles += object TitleStyle{};
+	styles += object SortingStyle{};
+	styles += object FilteringStyle{};
+	
+	//we hide the compartment by default. We show it only if it the equivalent compartment is shown in Rpy
+	visible:=false;
+	var cptList:Set(umlrpy::IProperty) :=self[CGIGenericElement].properties.Subjects->select(subject | subject.Name="ObjectModelGe").Metaclasses->select(metaclass | metaclass.Name="DataType").Properties->select(p | p.Name="Compartments")->asSet();
+	cptList->forEach(curr){
+			var isContaining:Boolean:=contains(curr.Value,rpyCompartmentName);
+			if(isContaining){
+				visible:=isContaining;
+				break;
+			};
+	};	
+	if(visible){
+		var showCompartmentTitleProperty:umlrpy::IProperty :=self[CGIGenericElement].properties.Subjects->select(subject | subject.Name="General").Metaclasses->select(metaclass | metaclass.Name="Graphics").Properties->select(p | p.Name="ShowCompartmentsTitle")->any(true);
+		if((not showCompartmentTitleProperty.oclIsUndefined()) and showCompartmentTitleProperty.Value="False"){
+			eAnnotations+= object EAnnotation { source:="PapyrusCSSForceValue" ; details+=object EStringToStringMapEntry { key:="showTitle"; value:="false"}};	
+		};
+	};
+	//force value to avoid impact of CSS and get the same display between Rpy and Papyrus
+	eAnnotations+=createCSSForceValue("visible");
+}
+
+/**
+* Create a list compartment with the given name, hide it if the rpy compartment doesn't have name and force the compartment title to hidden if required 
+* 
+* if comparmtent are visible when they mustn't be visible, the problem comes from the arg rpyCompartmentName which is probably wrong
+*
+*/
+//TODO : merge me with previous one
+mapping umlrpy::CGIClass::toListCompartment(papyrusCompartmentName:String, rpyCompartmentName:String) : notation::ListCompartment{
+	type:=papyrusCompartmentName;
+	styles := object DrawerStyle{};
+	styles += object TitleStyle{};
+	styles += object SortingStyle{};
+	styles += object FilteringStyle{};
+	//we hide the compartment by default. We show it only if it the equivalent compartment is shown in Rpy
+	visible:=false;
+	
+//	var cptList:Set(umlrpy::IProperty) :=self[CGIClass].properties.Subjects->select(subject | subject.Name="ObjectModelGe").Metaclasses->select(metaclass | metaclass.Name="Block").Properties->select(p | p.Name="Compartments")->asSet();
+//	cptList->forEach(curr){
+//			log("currValue=" + curr.Value.toString());
+//			var isContaining:Boolean:=contains(curr.Value,rpyCompartmentName);
+//			if(isContaining){
+//				visible:=isContaining;
+//				break;
+//			};
+//	};
+	if(rpyCompartmentName<>null){
+		visible:=self.Compartments->selectByKind(CGICompartment)->select(cpt | cpt.m_name=rpyCompartmentName)->notEmpty();
+	};
+	if(visible){
+		var showCompartmentTitleProperty:umlrpy::IProperty :=self[CGIClass].properties.Subjects->select(subject | subject.Name="General").Metaclasses->select(metaclass | metaclass.Name="Graphics").Properties->select(p | p.Name="ShowCompartmentsTitle")->any(true);
+		if((not showCompartmentTitleProperty.oclIsUndefined()) and showCompartmentTitleProperty.Value="False"){
+			eAnnotations+= object EAnnotation { source:="PapyrusCSSForceValue" ; details+=object EStringToStringMapEntry { key:="showTitle"; value:="false"}};	
+		};
+	};
+	
+	//force value to avoid impact of CSS and get the same display between Rpy and Papyrus
+	eAnnotations+=createCSSForceValue("visible");
+}
+
+//TODO : merge me with previous one
+mapping umlrpy::CGIBasicClass::toListCompartment(papyrusCompartmentName:String, rpyCompartmentName:String) : notation::ListCompartment{
+	type:=papyrusCompartmentName;
+	styles := object DrawerStyle{};
+	styles += object TitleStyle{};
+	styles += object SortingStyle{};
+	styles += object FilteringStyle{};
+	//we hide the compartment by default. We show it only if it the equivalent compartment is shown in Rpy
+	visible:=false;
+	
+	if(rpyCompartmentName<>null){
+		visible:=self.Compartments->selectByKind(CGICompartment)->select(cpt | cpt.m_name=rpyCompartmentName)->notEmpty();
+	};
+	if(visible){
+		var showCompartmentTitleProperty:umlrpy::IProperty :=self[CGIBasicClass].properties.Subjects->select(subject | subject.Name="General").Metaclasses->select(metaclass | metaclass.Name="Graphics").Properties->select(p | p.Name="ShowCompartmentsTitle")->any(true);
+		if((not showCompartmentTitleProperty.oclIsUndefined()) and showCompartmentTitleProperty.Value="False"){
+			eAnnotations+= object EAnnotation { source:="PapyrusCSSForceValue" ; details+=object EStringToStringMapEntry { key:="showTitle"; value:="false"}};	
+		};
+	};
+	
+	//force value to avoid impact of CSS and get the same display between Rpy and Papyrus
+	eAnnotations+=createCSSForceValue("visible");
+}
+
+/**
+* Helper to create an EAnnotation to force a value and ignore CSS. It is used to get the same diaply between Rpy model and Papyrus model, ignoring CSS applied on the model
+*/
+helper createCSSForceValue(detailKey:String):EAnnotation{
+	var eAnnotation:EAnnotation:= object EAnnotation { source:="PapyrusCSSForceValue" ; details+=object EStringToStringMapEntry { key:=detailKey; value:="true"}};
+	return eAnnotation;
+}
+
+/**
+* Return the routing to use for the given connector. 
+* The current implementations returns always Manual routing to avoid problems with anchors, bendopints and snapToGrid
+*/
+query umlrpy::GraphElementsType::getConnectorRouting():notation::Routing{
+	var routing:Routing:=Routing::Manual;
+	var rpyValue:String;
+	if(self.oclIsKindOf(CGIObjectLink)){
+		rpyValue:=self.oclAsType(CGIObjectLink).m_line_style;
+	}elif(self.oclIsTypeOf(CGIAnchor)){
+		rpyValue:=self.oclAsType(CGIAnchor).m_line_style;
+	}elif(self.oclIsTypeOf(CGIAssociationEnd)){
+		rpyValue:=self.oclAsType(CGIAssociationEnd).m_line_style;
+	}else{
+		log("The object " + self.toString() + " is not yet managed to get its routing")
+	};
+	
+	routing:=switch{
+		case (rpyValue="0") Routing::Manual;
+		case (rpyValue="1") Routing::Manual; //spline in Rpy
+		case (rpyValue="2") Routing::Rectilinear;
+	};
+	
+	//as we currently get trouble with anchos, bendpoints and snap to grid, we always return Manual
+	routing:=Routing::Manual;
+	return routing;
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/RpyToPapyrusUtils.qvto b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/RpyToPapyrusUtils.qvto
new file mode 100644
index 0000000..32b0b1a
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/RpyToPapyrusUtils.qvto
@@ -0,0 +1,50 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *****************************************************************************/
+ 
+import org.eclipse.papyrus.interoperability.rpy.blackboxes.VersioningBlackboxes;
+
+modeltype umlrpy "strict" uses 'http://www.eclipse.org/Papyrus/UMLRpy/1.0.0';
+modeltype ecore "strict" uses 'http://www.eclipse.org/emf/2002/Ecore';
+
+/**
+* This file provides useful method for Rpy elements
+*/
+library RpyToPapyrusUtils;
+
+/**
+*
+* This helper create an EAnnotation from the IProject to know that it comes from a Rpy Model, and save as details these informations:
+* <ul>
+* <li>Rpy project name</li>
+* <li>Rpy version</li>
+* <li>Papyrus Rpy import bundle version</li>
+* </ul>
+*/
+helper rpymetamodel::IProject::createEAnnotationForVersioning():ecore::EAnnotation{
+	var versionning:EAnnotation:=object EAnnotation{
+		source:=getEAnnotationSourceNameForVersioning();
+		details+= object EStringToStringMapEntry{
+			key:=getKeyForRpyModelName();
+			value:=self.name;
+		};
+		details+= object EStringToStringMapEntry{
+			key:=getKeyForRpyVersion();
+			value:=self.version;
+		};
+		details+= object EStringToStringMapEntry{
+			key:=getKeyForPapyrusImportBundleVersion();
+			value:=getImportBundleRpyVersion();
+		};
+	};
+	return versionning;
+}
+
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/RpyUtils.qvto b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/RpyUtils.qvto
new file mode 100644
index 0000000..59892ac
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/RpyUtils.qvto
@@ -0,0 +1,372 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *****************************************************************************/
+
+import org.eclipse.papyrus.interoperability.rpy.blackboxes.ConstantsBlackboxes; 
+import org.eclipse.papyrus.interoperability.rpy.blackboxes.Rpy2PapyrusNotationBlackboxes;
+
+
+modeltype umlrpy "strict" uses 'http://www.eclipse.org/Papyrus/UMLRpy/1.0.0';
+modeltype ecore "strict" uses 'http://www.eclipse.org/emf/2002/Ecore';
+
+/**
+* This file provides useful method for Rpy elements
+*/
+library RpyUtils;
+
+// here, this is method to help to find diagram kind
+
+/**
+* Return true if the Rpy IDiagram is a CGIClassChart
+*/
+query rpymetamodel::IDiagram::isRpyClassChart():Boolean{
+	return self.graphicChart![GraphicChartType].oclIsTypeOf(CGIClassChart);
+}
+
+/**
+* Return true if the IDiagram represents a UML Class Diagram without applied stereotypes
+*/
+query rpymetamodel::IDiagram::isUMLPureClassDiagram():Boolean{
+	return self.isRpyClassChart() and self.Stereotypes->isEmpty();
+}
+
+/**
+* Return true if the IDiagram is a CGIStateChart
+*/
+query rpymetamodel::IDiagram::isRpyStateChart():Boolean{
+	return self.graphicChart![GraphicChartType].oclIsTypeOf(CGIStateChart);
+}
+
+/**
+* Return true if the IDiagram represents a UML State Machine Diagram without applied stereotypes
+*/
+query rpymetamodel::IDiagram::isUMLPureStateMachineDiagram():Boolean{
+	return self.isRpyStateChart() and self.Stereotypes->isEmpty();
+}
+
+
+//here, this is the method to know if the elements comes from the user model or from a Rpy Tool file
+/**
+*
+* This query returns true if the diagram is a User diagram
+*/
+query rpymetamodel::IDiagram::isUserModelDiagram():Boolean{
+//never write the next code, because if the user rename the default Package, it didn't work yet
+//	var res:EResource:= self.getResource();
+//	return res.toString().endsWith("Default.umlrpy'");
+
+	return not (
+		self.isRpyPredefinedC_LibraryDiagram() or 
+		self.isRpyPredefinedCPP_LibraryDiagram() or
+		self.isRpySysMLLibraryDiagram() or
+		self.isRpyPredefinedTypeLibraryDiagram() 
+//		or
+//		self.isRpyMarteLibraryDiagram()
+	);
+}
+
+/**
+* Return true if the diagram comes from the Rpy C library
+*/
+helper umlrpy::IDiagram::isRpyPredefinedC_LibraryDiagram():Boolean {
+	return self.oclAsType(EModelElement).isComingFromRpy_PredefinedTypesC_Library();
+}
+
+/**
+* Return true if the diagram comes from the Rpy CPP library
+*/
+helper umlrpy::IDiagram::isRpyPredefinedCPP_LibraryDiagram():Boolean {
+	return self.oclAsType(EModelElement).isComingFromRpy_PredefinedTypesCpp_Library();
+} 
+
+/**
+* Return true if the diagram comes from the Rpy SysML library
+*/
+helper umlrpy::IDiagram::isRpySysMLLibraryDiagram():Boolean {
+	return self.oclAsType(EModelElement).isComingFromRpy_SysML_Profile();
+}
+
+/**
+* Return true if the diagram comes from the Rpy Predefined Type library
+*/
+helper umlrpy::IDiagram::isRpyPredefinedTypeLibraryDiagram():Boolean {
+	return self.oclAsType(EModelElement).isComingFromRpy_PredefinedTypesC_Library();
+}
+
+///**
+//* Return true if the diagram comes from the Rpy Marte library
+//*/
+//helper umlrpy::IDiagram::isRpyMarteLibraryDiagram():Boolean {
+//	var resourceName:String:=self[EObject].eResource()![EResource].toString();
+////	return resourceName.endsWith("MARTE.umlrpy'");
+//return false;
+//}
+
+/**
+* Returns true if the type come from a Rpy Library
+*/
+helper umlrpy::IType::isRpyLibraryType():Boolean{
+	return self.oclAsType(ecore::EModelElement).isComingFromARpyLibraryResource();
+}
+
+/**
+* Returns true if the eobject come from a Rpy Library
+*/
+helper ecore::EObject::isRpyLibraryType():Boolean{
+	return self.oclAsType(ecore::EModelElement).isComingFromARpyLibraryResource();
+}
+
+/**
+* Returns true if the eobject come from a Rpy Library
+*/
+helper ecore::EModelElement::isComingFromARpyLibraryResource():Boolean{
+	var eannotation:ecore::EAnnotation:=self.getEAnnotation(getEAnnotationFileNameSourceKey());
+	if(eannotation<>null){
+		var key1:EStringToStringMapEntry:=eannotation.details->select(a|a.key= getEAnnotationFileNameDetailKey())![EStringToStringMapEntry];
+		return not eannotation.details->any(key=getEAnnotationFileNameDetailKey()).value.oclIsUndefined();
+	};
+	return false;
+}
+
+/**
+* Return true if the type is a Rpy C type
+*/
+helper umlrpy::IType::isRpyPredefinedC_Type():Boolean {
+	return self.oclAsType(EModelElement).isComingFromRpy_PredefinedTypesC_Library();
+}
+
+/**
+* Return true if the type is a Rpy C++ type
+*/
+helper umlrpy::IType::isRpyPredefinedCPP_Type():Boolean {
+	return self.oclAsType(EModelElement).isComingFromRpy_PredefinedTypesCpp_Library();
+} 
+
+/**
+* Return true if the type is a Rpy SysML type
+*/
+helper umlrpy::IType::isRpySysMLType():Boolean {
+	return self.oclAsType(EModelElement).isComingFromRpy_SysML_Profile();
+}
+
+/**
+* Return true if the type is a Rpy Predefined Type
+*/
+helper umlrpy::IType::isRpyPredefinedType():Boolean {
+	return self.oclAsType(EModelElement).isComingFromRpy_PredefinedTypes_Library();
+}
+
+
+helper ecore::EModelElement::isComingFromRpy_PredefinedTypes_Library():Boolean{
+ 	return self.isComingFromExpectedRpyFile("PredefinedTypes.sbs"); //TODO move in a const file	
+}
+
+helper ecore::EModelElement::isComingFromRpy_PredefinedTypesC_Library():Boolean{
+	return self.isComingFromExpectedRpyFile("PredefinedTypesC.sbs");	//TODO move in a const file
+}
+
+helper ecore::EModelElement::isComingFromRpy_PredefinedTypesCpp_Library():Boolean{
+	return self.isComingFromExpectedRpyFile("PredefinedTypesC++.sbs");	//TODO move in a const file  //TODO : check it work with c++
+}
+
+
+helper ecore::EModelElement::isComingFromRpy_SysML_Profile():Boolean{
+	return false;	
+}
+
+/**
+* Return true if the object comes from the file defined as argument of the method
+*/
+helper ecore::EModelElement::isComingFromExpectedRpyFile(filename:String):Boolean{
+	return self.getFileName()=filename;
+}
+
+/**
+* Returns the resource of the Rpy element
+*/
+query rpymetamodel::IModelElement::getResource():EResource{//TODO : probably useless now
+	return self![EObject].eResource()![EResource];
+}
+
+/**
+* Returns the width for the element
+*/
+
+query umlrpy::CGIDiagramFrame::get_Width():Integer{
+	var mpolygon:List(String):= self![CGIDiagramFrame].m_polygon->asList();
+	var mtransform:List(String):= self![CGIDiagramFrame].m_transform->asList();
+	return getWidth(mpolygon,mtransform);
+}
+
+/**
+* Returns the heigth for the element
+*/
+query umlrpy::CGIDiagramFrame::get_Height():Integer{
+	var mpolygon:List(String):= self![CGIDiagramFrame].m_polygon->asList();
+	var mtransform:List(String):= self![CGIDiagramFrame].m_transform->asList();
+	return getHeight(mpolygon,mtransform);
+}
+
+
+/**
+* returns the X position
+*/
+query umlrpy::CGIDiagramFrame::get_X_Position():Integer{
+	return self![CGIDiagramFrame].m_transform->at(5).get_int_from_String();
+}
+
+/**
+* returns the Y position
+*/
+query umlrpy::CGIDiagramFrame::get_Y_Position():Integer{
+		return self![CGIDiagramFrame].m_transform->at(6).get_int_from_String();
+}
+
+
+//TODO : we should check inheritance in a test of isStereotypedBy!
+/**
+* Returns true if the diagram is stereotyped by a stereotype with the name stereotypeName
+*/ 
+query rpymetamodel::IDiagram::isStereotypedWith(stereotypeName:String):Boolean{
+	return self.Stereotypes->selectByKind(IStereotype)->select( ste | ste.name=stereotypeName)->one(true);
+}
+
+/**
+* Returns true if the IClass is stereotyped by a stereotype with the name stereotypeName
+*/ 
+query rpymetamodel::IClass::isStereotypedWith(stereotypeName:String):Boolean{
+	self.Stereotypes->selectByType(IStereotype)->forEach(ste){
+		if(ste.name=stereotypeName){
+			return true;
+		};
+		//probably useless, because we doesn't yet have access to the real rpy library, so we can't know the supertype of the rpy stereotype	
+		if(ste.getAllSuperStereotype()->select(s | s.name=stereotypeName)->one(true)){
+			return true;
+		}
+	};
+	return false;
+}
+
+/**
+* Returns true if the IPart is stereotyped by a stereotype with the name stereotypeName
+*/ 
+query rpymetamodel::IPart::isStereotypedWith(stereotypeName:String):Boolean{
+	return self.Stereotypes->selectByKind(IStereotype)->select( ste | ste.name=stereotypeName)->one(true);
+}
+
+/**
+* Returns true if the IType is stereotyped by a stereotype with the name stereotypeName
+*/ 
+query rpymetamodel::IType::isStereotypedWith(stereotypeName:String):Boolean{
+	return self.Stereotypes->selectByKind(IStereotype)->select( ste | ste.name=stereotypeName)->one(true);
+}
+
+/**
+* Returns true if the IType is stereotyped by a stereotype with the name stereotypeName
+*/ 
+query rpymetamodel::IObjectLink::isStereotypedWith(stereotypeName:String):Boolean{
+	return self.Stereotypes->selectByKind(IStereotype)->select( ste | ste.name=stereotypeName)->one(true);
+}
+/**
+* Convert a string to int
+*/
+query String::get_int_from_String():Integer{
+	var intValue:Integer;
+	if (self.asInteger().oclIsUndefined() or self.asInteger().oclIsInvalid()){
+		intValue:=self.asFloat().round();
+	}else{	
+		intValue:=self.asInteger();
+	};
+	return intValue;
+} 
+
+/**
+*
+* Returns all super stereotypes of itself without itself
+*/
+query rpymetamodel::IStereotype::getAllSuperStereotype():Set(IStereotype){
+	var res:Set(IStereotype);
+	self.Inheritances->forEach(i){
+		if(i.dependsOn.oclIsTypeOf(IStereotype)){
+			var ste:IStereotype:=i.dependsOn.oclAsType(IStereotype);
+			res+=ste;
+			res+=ste.getAllSuperStereotype();
+		}
+	};
+	return res;
+}
+
+/**
+*
+* Return true if the IClass is a Rpy Interface
+*/
+query rpymetamodel::IClass::isInterface():Boolean{
+	return self.isStereotypedWith("Interface") or self.isStereotypedWith("flowSpecification");
+}
+
+/**
+*
+* return true if the IRelation is a Rpy SysML Port (WARNING ISysMLPort comes from the Rpy metamodel, not from a Rpy profile!), 
+* so this place is here and not in the SysML qvto file!
+*/
+query umlrpy::IRelation::isRpyPort(): Boolean{
+		return self.oclIsTypeOf(umlrpy::ISysMLPort);
+}
+
+
+/**
+* Return true if the ISysMLPort is conjugated
+*/
+helper umlrpy::ISysMLPort::isConjugated(): Boolean{
+	if(self.reversed="1"){
+		return true;
+	};
+	return false;
+}
+
+/**
+*
+* Return true if the ISysML port is stereotyped by a stereoptype named stereotypeName 
+*/
+query umlrpy::ISysMLPort::isStereotypedWith(stereotypeName:String):Boolean{
+	self.Stereotypes->selectByType(IStereotype)->forEach(ste){
+		if(ste.name=stereotypeName){
+			return true;
+		};
+		if(ste.getAllSuperStereotype()->select(s | s.name=stereotypeName)->one(true)){
+			return true;
+		}
+	};
+	return false;
+}
+
+
+/**
+* Return the name of the file stored in an EAnnotation, when available
+*/ 
+query ecore::EModelElement::getFileName():String{
+	var eannotation:ecore::EAnnotation:=self.getEAnnotation(getEAnnotationFileNameSourceKey());
+	if(eannotation<>null){
+		var key1:EStringToStringMapEntry:=eannotation.details->select(a|a.key= getEAnnotationFileNameDetailKey())![EStringToStringMapEntry];
+		return eannotation.details->any(key=getEAnnotationFileNameDetailKey()).value;
+	};
+	return "";
+}
+
+/**
+* Return the name of the file stored in an EAnnotation, when available, without its extension 
+*/
+query ecore::EModelElement::getFileNameWithoutExtension():String{
+	var fileName:String:=self.getFileName();
+	return fileName.substring(1,fileName.lastIndexOf(".")-1);
+}
+
+
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/SemanticInternationalization.qvto b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/SemanticInternationalization.qvto
new file mode 100644
index 0000000..c4938ca
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/SemanticInternationalization.qvto
@@ -0,0 +1,361 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *****************************************************************************/
+
+import Rpy2PapyrusSemanticElements;
+import org.eclipse.papyrus.interoperability.rpy.blackboxes.ecore.EcoreHelper;
+import org.eclipse.papyrus.interoperability.rpy.blackboxes.uml.UMLRpySemanticHelper;
+modeltype umlrpy "strict" uses 'http://www.eclipse.org/Papyrus/UMLRpy/1.0.0';
+modeltype uml "strict" uses 'http://www.eclipse.org/uml2/5.0.0/UML';
+modeltype sysml11 "strict" uses 'http://www.eclipse.org/papyrus/0.7.0/SysML';
+modeltype ecore "strict" uses 'http://www.eclipse.org/emf/2002/Ecore';
+modeltype UMLPrimitivesTypes "strict" uses 'http://www.eclipse.org/uml2/5.0.0/Types' ;
+modeltype properties "strict" uses 'http://www.eclipse.org/papyrus/internationalization/model';
+
+/**
+*
+* This transformation allows to import the label of elements defined in Rpy models
+*/
+
+transformation SemanticInternationalization(in inModel:umlrpy, in outModel:uml, in primitives:UMLPrimitivesTypes, out labels:properties)
+extends Rpy2PapyrusSemanticElements(in inModel:umlrpy, out outModel:uml,  in primitives:UMLPrimitivesTypes)
+{
+	
+	main() {
+		log("Start Semantic Internationalization Transformation");
+		outModel.rootObjects()[Element]->any(true).map	fillPropertyFile();
+		log("End Semantic Internationalization Transformation");	
+	};
+}
+
+/**
+*
+* Create the InternationalizationLibrary
+*/
+mapping Element::fillPropertyFile():properties::InternationalizationLibrary@labels{
+		init{
+			//required in the case where this transformation is not the first to work on the property file
+			result:=labels.rootObjects()->selectByKind(InternationalizationLibrary)->any(true);
+		}
+		var roots:Sequence(EObject):=outModel.rootObjects()[EObject]->asSequence();
+		var elements:Collection(EObject):=roots;
+		roots->forEach(current){
+			elements+=eAllContents(current.oclAsType(EObject));
+		};
+		result.entries+=elements.map manageLabel();
+}
+
+/**
+* Create the InternationalizationEntry for the given element when possible
+*/
+mapping ecore::EObject::manageLabel():properties::InternationalizationEntry disjuncts
+	EObject::manageLabelForNamedElement
+{}
+
+/**
+* Create the InternationalizationEntry for the given element when possible
+*/
+mapping ecore::EObject::manageLabelForNamedElement():properties::InternationalizationEntry 
+	when{self.oclIsKindOf(NamedElement) 
+	and self.oclAsType(NamedElement).getRhaposdyLabel()<>null
+	and self.oclAsType(NamedElement).getRhaposdyLabel().size()<>0}{
+		key:=self;
+		value:=self.oclAsType(NamedElement).getRhaposdyLabel();
+}
+
+/**
+* Returns the label of the Rpy elements when we found it, and returns null otherwiser
+*/
+helper NamedElement::getRhaposdyLabel():String{
+	var rpyElement:IModelElement:=null;
+
+	
+	//mapping umlrpy::IProject::iProjectToPapyrusModel() : uml::Model {	
+	rpyElement:=self.invresolveoneIn(IProject::iProjectToPapyrusModel);
+	
+	//mapping umlrpy::DefaultSubsystemType::iDefaultSubsystemTypeToPackage():uml::Package when{self.oclIsKindOf(ISubsystem)}{	
+	if(rpyElement=null){
+		rpyElement:=self.invresolveoneIn(DefaultSubsystemType::iDefaultSubsystemTypeToPackage);
+	};
+	
+	//mapping EObject::generalMappingToUMLElement():uml::Element disjuncts
+	if(rpyElement=null){
+		rpyElement:=self.invresolveoneIn(EObject::generalMappingToUMLElement)->selectByKind(IModelElement)->any(true);
+		//manage IActor, IComment and iDescription
+	};
+
+	//mapping EObject::iActorToUMLActor():uml::Actor when {self.oclIsTypeOf(umlrpy::IActor)}{
+	//already managed by generalMappingToUMLElement	
+	//	if(rpyElement=null){
+	//		rpyElement:=self.invresolveoneIn(EObject::iActorToUMLActor)->selectByKind(IModelElement)->any(true);
+	//	};
+	
+	//mapping EObject::iCommentToUMLComment(): uml::Comment when {self.oclIsTypeOf(IComment)}{
+	//already managed by generalMappingToUMLElement	
+	//	if(rpyElement=null){
+	//		rpyElement:=self.invresolveoneIn(EObject::iCommentToUMLComment)->selectByKind(IModelElement)->any(true);
+	//	};
+
+	//mapping EObject::iDescriptionToUMLComment(): uml::Comment when {self.oclIsTypeOf(IDescription)}{
+	//already managed by generalMappingToUMLElement
+	//	if(rpyElement=null){
+	//		rpyElement:=self.invresolveoneIn(EObject::iDescriptionToUMLComment)->selectByKind(IModelElement)->any(true);
+	//	};
+	
+	
+	//mapping umlrpy::IClass::toUMLElement() : uml::Element 
+//	if(rpyElement=null){
+//		rpyElement:=self.invresolveoneIn(EObject::toUMLElement)->selectByKind(IModelElement)->any(true);
+//	};
+	
+	//mapping umlrpy::IClass::toUMLInterface() : uml::Interface when {self.oclIsTypeOf(IClass) and self.isInterface() /*self.isSysMLFlowSpecification()*/}{	
+	//already managed by toUMLElement
+	//	if(rpyElement=null){
+	//		rpyElement:=self.invresolveoneIn(IClass::toUMLInterface)->selectByKind(IModelElement)->any(true);
+	//	};
+	
+	//mapping umlrpy::IType::iTypeToDefault():uml::Class{
+	//already managed by IType::iTypeToUMLElement
+	//	if(rpyElement=null){
+	//		rpyElement:=self.invresolveoneIn(IType::iTypeToDefault)->selectByKind(IModelElement)->any(true);
+	//	};
+	
+	
+	//mapping umlrpy::IType::iTypeToUMLElement() : uml::Element 
+//	if(rpyElement=null){
+//		rpyElement:=self.invresolveoneIn(IType::iTypeToUMLElement)->selectByKind(IModelElement)->any(true);
+//	};
+	
+	//mapping umlrpy::IAssociationEnd::iAssociationEndToUMLAssociation(): uml::Association {			
+	if(rpyElement=null){
+		rpyElement:=self.invresolveoneIn(IAssociationEnd::iAssociationEndToUMLAssociation)->selectByKind(IModelElement)->any(true);
+	};
+	
+	//mapping umlrpy::IType::toUMLDatatype() : uml::DataType when {self.isUMLDataType()}{
+	//already managed by IType::iTypeToUMLElement
+	//	if(rpyElement=null){
+	//		rpyElement:=self.invresolveoneIn(IType::toUMLDatatypet)->selectByKind(IModelElement)->any(true);
+	//	};
+	
+	
+	//mapping umlrpy::IType::toUMLEnumeration() : uml::Enumeration when {self.isUMLEnumeration()}{
+	//already managed by IType::iTypeToUMLElement	
+	//if(rpyElement=null){
+	//	rpyElement:=self.invresolveoneIn(IType::toUMLEnumeration)->selectByKind(IModelElement)->any(true);
+	//};
+	
+	
+	//mapping umlrpy::IEnumerationLiteral::toUMLEnumerationLiteral() : uml::EnumerationLiteral {
+	if(rpyElement=null){
+		rpyElement:=self.invresolveoneIn(IEnumerationLiteral::toUMLEnumerationLiteral)->selectByKind(IModelElement)->any(true);
+	};
+	
+	//mapping umlrpy::IType::toUMLInstanceSpecification() : uml::InstanceSpecification when {self.isUMLInstanceSpecification()}{
+//	if(rpyElement=null){
+//		rpyElement:=self.invresolveoneIn(IType::toUMLInstanceSpecification)->selectByKind(IModelElement)->any(true);
+//	};
+
+	//mapping umlrpy::IType::iTypeToUMLClass() : uml::Class when {self.isUMLClass()}{//stereotype Block is added later in the process
+	//already managed by IType::iTypeToUMLElement	
+	//if(rpyElement=null){
+	//	rpyElement:=self.invresolveoneIn(IType::iTypeToUMLClass)->selectByKind(IModelElement)->any(true);
+	//};
+	
+	//mapping umlrpy::IClass::toClasses(): uml::Class when {self.oclIsTypeOf(IClass) and not (self.isInterface())}{
+	//already managed by IClass::toUMLElement
+	//	if(rpyElement=null){
+	//		rpyElement:=self.invresolveoneIn(IClass::toClasses)->selectByKind(IModelElement)->any(true);
+	//	};
+
+
+	//mapping umlrpy::IInformationFlow::iInformationFlowToUMLElement():uml::Element disjuncts 
+	if(rpyElement=null){
+		rpyElement:=self.invresolveoneIn(IInformationFlow::iInformationFlowToUMLElement)->selectByKind(IModelElement)->any(true);
+	};
+	
+	
+	//mapping umlrpy::IInformationFlow::iInformationFlowToUMLConnector():uml::Connector when{self.isUMLConnector() }
+	//already managed by IInformationFlow::iInformationFlowToUMLElement
+	//	if(rpyElement=null){
+	//		rpyElement:=self.invresolveoneIn(IInformationFlow::iInformationFlowToUMLConnector)->selectByKind(IModelElement)->any(true);
+	//	};
+
+
+	//mapping umlrpy::IInformationFlow::iInformationFlowSourceToUMLConnectorEnd():uml::ConnectorEnd
+	//useless
+	//	if(rpyElement=null){
+	//		rpyElement:=self.invresolveoneIn(EObject::generalMappingToUMLElement)->selectByKind(IModelElement)->any(true);
+	//	};
+	
+	//mapping umlrpy::IInformationFlow::iInformationFlowTargetToUMLConnectorEnd():uml::ConnectorEnd
+	//useless
+	//	if(rpyElement=null){
+	//		rpyElement:=self.invresolveoneIn(EObject::generalMappingToUMLElement)->selectByKind(IModelElement)->any(true);
+	//	};
+	
+	
+	//mapping umlrpy::IObjectLink::iObjectLinkToUMLElement():uml::Element disjuncts
+	if(rpyElement=null){
+		rpyElement:=self.invresolveoneIn(IObjectLink::iObjectLinkToUMLElement)->selectByKind(IModelElement)->any(true);
+	};
+	
+	//mapping umlrpy::IObjectLink::iObjectLinkToUMLConnector():uml::Connector when{self.isUMLConnector() } 
+	//already managed by  IObjectLink::iObjectLinkToUMLElement
+	//	if(rpyElement=null){
+	//		rpyElement:=self.invresolveoneIn(IObjectLink::iObjectLinkToUMLConnector)->selectByKind(IModelElement)->any(true);
+	//	};
+	
+	//mapping umlrpy::IObjectLink::iObjectLinkSourceToUMLConnectorEnd():uml::ConnectorEnd
+	//useless
+	//	if(rpyElement=null){
+	//		rpyElement:=self.invresolveoneIn(IObjectLink::iObjectLinkSourceToUMLConnectorEnd)->selectByKind(IModelElement)->any(true);
+	//	};
+	
+	//mapping umlrpy::IObjectLink::iObjectLinkTargetToUMLConnectorEnd():uml::ConnectorEnd
+	//useless
+	//	if(rpyElement=null){
+	//		rpyElement:=self.invresolveoneIn(IObjectLink::iObjectLinkTargetToUMLConnectorEnd)->selectByKind(IModelElement)->any(true);
+	//	};
+	
+	//mapping umlrpy::IRelation::iRelationToUMLElement():uml::Element disjuncts 
+	if(rpyElement=null){
+		rpyElement:=self.invresolveoneIn(IRelation::iRelationToUMLElement)->selectByKind(IModelElement)->any(true);
+	};
+	
+	
+	//mapping umlrpy::IPart::iPartToUMLElement():uml::Element disjuncts
+	if(rpyElement=null){
+		rpyElement:=self.invresolveoneIn(IPart::iPartToUMLElement)->selectByKind(IModelElement)->any(true);
+	};
+
+	//mapping umlrpy::IPart::iPartToUMLProperty():uml::Property when {self.oclIsTypeOf(IPart)}
+	//already managed by IPart::iPartToUMLElement
+	//if(rpyElement=null){
+	//		rpyElement:=self.invresolveoneIn(EObject::generalMappingToUMLElement)->selectByKind(IModelElement)->any(true);
+	//};
+
+	//mapping umlrpy::IPart::iPartToUMLAssociation():uml::Association when {true}
+	//not required
+	//if(rpyElement=null){
+	//	rpyElement:=self.invresolveoneIn(IPart::iPartToUMLAssociation)->selectByKind(IModelElement)->any(true);
+	//};
+	
+	//mapping umlrpy::IRelation::iRelationToUMLProperty(): uml::Property when {self.isRpySysMLPortRepresentingUMLProperty()}
+	//already managed by IRelation::iRelationToUMLElement
+	//if(rpyElement=null){
+	//	rpyElement:=self.invresolveoneIn(IRelation::iRelationToUMLProperty)->selectByKind(IModelElement)->any(true);
+	//};
+
+	//mapping umlrpy::IRelation::iRelationToSysMLPort(): uml::Port when {self.isRpySysMLPortRepresentingUMLPort()}
+	//already managed by IRelation::iRelationToUMLElement
+	//if(rpyElement=null){
+	//	rpyElement:=self.invresolveoneIn(IRelation::iRelationToSysMLPort)->selectByKind(IModelElement)->any(true);
+	//};
+
+
+	//mapping umlrpy::IStateChart::toStateMachine(): uml::StateMachine
+	if(rpyElement=null){
+		rpyElement:=self.invresolveoneIn(IStateChart::toStateMachine)->selectByKind(IModelElement)->any(true);
+	};
+	
+	//mapping umlrpy::IDefaultDrvdTrans::toInitialTransition(pseudo:uml::Vertex): uml::Transition
+	if(rpyElement=null){
+		rpyElement:=self.invresolveoneIn(IDefaultDrvdTrans::toInitialTransition)->selectByKind(IModelElement)->any(true);
+	};
+
+	//mapping umlrpy::IState::toCompositeStates(statechart:umlrpy::IStateChart): uml::State
+	if(rpyElement=null){
+		rpyElement:=self.invresolveoneIn(IState::toCompositeStates)->selectByKind(IModelElement)->any(true);
+	};
+
+	//mapping umlrpy::IState::toStates(): uml::State
+	if(rpyElement=null){
+		rpyElement:=self.invresolveoneIn(IState::toStates)->selectByKind(IModelElement)->any(true);
+	};
+
+	//mapping umlrpy::ITransition::toTransitions(): uml::Transition
+	if(rpyElement=null){
+		rpyElement:=self.invresolveoneIn(ITransition::toTransitions)->selectByKind(IModelElement)->any(true);
+	};
+	
+	//mapping umlrpy::IAction::toBehavior(): uml::OpaqueBehavior
+	if(rpyElement=null){
+		rpyElement:=self.invresolveoneIn(IAction::toBehavior)->selectByKind(IModelElement)->any(true);
+	};
+	
+	//mapping umlrpy::IGuard::toGuard(): uml::Constraint
+	if(rpyElement=null){
+		rpyElement:=self.invresolveoneIn(IGuard::toGuard)->selectByKind(IModelElement)->any(true);
+	};
+	
+	//mapping umlrpy::IInterfaceItemTrigger::toTrigger(): uml::Trigger
+	if(rpyElement=null){
+		rpyElement:=self.invresolveoneIn(IInterfaceItemTrigger::toTrigger)->selectByKind(IModelElement)->any(true);
+	};
+	
+	//mapping umlrpy::IAssociationEnd::toAssociationsEnd(): uml::Property when{self.oclIsTypeOf(IAssociationEnd)}{
+	if(rpyElement=null){
+		rpyElement:=self.invresolveoneIn(IAssociationEnd::toAssociationsEnd)->selectByKind(IModelElement)->any(true);
+	};
+
+	//mapping umlrpy::IGeneralization::toPapyrusGeneralization(): uml::Generalization
+	if(rpyElement=null){
+		rpyElement:=self.invresolveoneIn(IGeneralization::toPapyrusGeneralization)->selectByKind(IModelElement)->any(true);
+	};
+	
+	//mapping umlrpy::IReception::toReceptions(): uml::Reception
+	if(rpyElement=null){
+		rpyElement:=self.invresolveoneIn(IReception::toReceptions)->selectByKind(IModelElement)->any(true);
+	};
+
+	//mapping umlrpy::IPrimitiveOperation::toOperations(): uml::Operation
+	if(rpyElement=null){
+		rpyElement:=self.invresolveoneIn(IPrimitiveOperation::toOperations)->selectByKind(IModelElement)->any(true);
+	};
+
+	//mapping umlrpy::IVariable::iVariableToUMLElement():uml::Property disjuncts
+	if(rpyElement=null){
+		rpyElement:=self.invresolveoneIn(IVariable::iVariableToUMLElement)->selectByKind(IModelElement)->any(true);
+	};
+	
+	//mapping umlrpy::IArgument::iArgumentToUMLElement(): uml::Property when {self.oclIsTypeOf(umlrpy::IArgument)}{
+	if(rpyElement=null){
+		rpyElement:=self.invresolveoneIn(IArgument::iArgumentToUMLElement)->selectByKind(IModelElement)->any(true);
+	};
+	
+	//mapping umlrpy::IAttribute::iAttributeToUMLElement(): uml::Property when {self.oclIsTypeOf(umlrpy::IAttribute)}{
+	if(rpyElement=null){
+		rpyElement:=self.invresolveoneIn(IAttribute::iAttributeToUMLElement)->selectByKind(IModelElement)->any(true);
+	};
+	
+	//mapping umlrpy::IType::iTypeFromRpyToUML_ANSI_C_CPPType():uml::PrimitiveType when {self.isAManagedRpyPredefinedTypes()}{
+	//already managed by IType::iTypeToUMLElement
+	//	if(rpyElement=null){
+	//		rpyElement:=self.invresolveoneIn(IType::iTypeFromRpyToUML_ANSI_C_CPPType)->selectByKind(IModelElement)->any(true);
+	//	};
+
+	//mapping umlrpy::IEvent::toSignals(): uml::Signal
+//	if(rpyElement=null){
+//		rpyElement:=self.invresolveoneIn(IEvent::toSignals)->selectByKind(IModelElement)->any(true);
+//	};
+
+	//mapping umlrpy::IEvent::toSignalEvents(): uml::SignalEvent
+	if(rpyElement=null){
+		rpyElement:=self.invresolveoneIn(IEvent::toSignalEvents)->selectByKind(IModelElement)->any(true);
+	};
+
+	if(rpyElement<>null and not rpyElement.displayName.oclIsUndefined()){
+		return rpyElement.displayName;
+	};
+	
+	return null;
+	
+}
\ No newline at end of file
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/SysML11BlockDefinitionDiagram.qvto b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/SysML11BlockDefinitionDiagram.qvto
new file mode 100644
index 0000000..c982bd9
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/SysML11BlockDefinitionDiagram.qvto
@@ -0,0 +1,821 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *****************************************************************************/
+ 
+import Rpy2PapyrusSemanticElements;
+import RpyUtils;
+import SysMLRpyUtils;
+import RpyToPapyrusDiagamCommon;
+import org.eclipse.papyrus.interoperability.rpy.blackboxes.Rpy2PapyrusNotationBlackboxes;
+
+modeltype umlrpy "strict" uses 'http://www.eclipse.org/Papyrus/UMLRpy/1.0.0';
+modeltype notation "strict" uses 'http://www.eclipse.org/gmf/runtime/1.0.2/notation';
+modeltype uml "strict" uses 'http://www.eclipse.org/uml2/5.0.0/UML';
+modeltype sysml11 "strict" uses 'http://www.eclipse.org/papyrus/0.7.0/SysML';
+modeltype ecore "strict" uses 'http://www.eclipse.org/emf/2002/Ecore';
+modeltype sash "strict" uses 'http://www.eclipse.org/papyrus/0.7.0/sashdi';
+modeltype UMLPrimitivesTypes "strict" uses 'http://www.eclipse.org/uml2/5.0.0/Types' ;
+
+
+
+transformation SysML11BlockDefinitionDiagram(in semantics : umlrpy, out graphics : notation, inout model:uml ,in Sysml11Profile:sysml11, in primitives:UMLPrimitivesTypes) 
+access transformation Rpy2PapyrusSemanticElements(in inModel:umlrpy, out outModel:uml, in primitives:UMLPrimitivesTypes) 
+extends Rpy2PapyrusSemanticElements(in inModel:umlrpy, out outModel:uml, in primitives:UMLPrimitivesTypes)
+{
+	//TODO : maybe we should have a transform method here
+}
+
+mapping rpymetamodel::IDiagram::iDiagramToSysML11BlockDefinitionDiagram(rpyProject:IProject):Diagram when{self.isUserModelDiagram() and self.isSysMLBlockDefinitionDiagram()}{
+	//1. creating the diagram object
+	init {
+		//we are looking for the owner of the diagram
+		
+		//TODO : check the owner part!
+		//TODO : don't use the default subsystem
+		var subsystem: ISubsystem:= semantics.rootObjects()[IProject].defaultSubsystem![ISubsystem]; //TODO : could probably be replaced by the owner of the IDiagram (like done for StateMachine)
+		var owner:EObject:= subsystem.oclAsType(DefaultSubsystemType).resolveIn (umlrpy::DefaultSubsystemType::iDefaultSubsystemTypeToPackage, uml::Package)![EObject];
+		
+		var iDiagramOwner:ecore::EObject:=self[EObject].eContainer()![EObject];
+		if(iDiagramOwner.oclIsKindOf(umlrpy::IClass)){
+			owner:= iDiagramOwner.resolveIn(ecore::EObject::generalMappingToUMLElement, uml::Element)![EObject];
+		};
+		//TODO : check owner and owner!
+		result:=self.map createAndInitDiagram(rpyProject,getPapyrusDiagramType(), owner, owner);
+	}	
+	
+	//1. find some objects
+	var cgiClassChart:CGIClassChart:=self.graphicChart->oclAsSet().selectByType(CGIClassChart)->any(true);
+	var cgiClass:CGIClass:=cgiClassChart.graphElements->selectByType(CGIClass)->any(true);
+	var cgiDiagramFrame:CGIDiagramFrame:=cgiClassChart.graphElements->selectByType(CGIDiagramFrame)->any(true);
+	
+	
+	children:= self.graphicChart.graphElements.map toSysML11BlockDefinitionDiagramShape(cgiClassChart, cgiClass->asSequence());
+	edges:=self.graphicChart.graphElements.map toSysML11BlockDefinitionDiagramEdge();
+	
+}
+
+/**
+* Returns the type of the diagram to create
+*/
+query getPapyrusDiagramType():String{
+	return 'BlockDefinition';
+};
+
+
+mapping GraphElementsType::toLayoutConstraint() : Bounds
+{
+
+if (self.oclIsTypeOf(CGIState) )
+{
+if (not (self[CGIState].m_transform.oclIsUndefined()->any(true)) and self[CGIState].m_transform->size()>5)
+{
+	var x:String :=self![CGIState].m_transform->at(5);
+	var y:String :=self![CGIState].m_transform->at(6);
+
+if (x.asInteger().oclIsUndefined() or x.asInteger().oclIsInvalid())
+{
+	result.x:=x.asFloat().round();
+
+}
+else 
+{	
+	result.x:=x.asInteger();
+	
+};
+if (y.asInteger().oclIsUndefined() or y.asInteger().oclIsInvalid())
+{
+	
+	result.y:=y.asFloat().round();
+}
+else 
+{	
+	
+	result.y:=y.asInteger();
+};
+	var mtransform:List(String):= self![CGIState].m_transform->asList();
+	var mpolygon:List(String):= self![CGIState].m_polygon->asList();
+	result.height:=getStateHeight(mpolygon, mtransform).oclAsType(Integer);
+	result.width:=getStateWidth(mpolygon, mtransform).oclAsType(Integer);
+
+if ( not (self[CGIState].m_pParent.oclIsUndefined()->any(true)))
+{
+if (not (self[CGIState].m_pParent![CGIState].m_transform.oclIsUndefined()->any(true)) and self[CGIState].m_pParent![CGIState].m_transform->size()>5)
+{
+var xratio:String :=self[CGIState].m_pParent![CGIState].m_transform->at(1);
+var yratio:String :=self![CGIState].m_transform->at(4);
+var xration:Float :=xratio.asFloat();
+var yration:Float :=yratio.asFloat();
+result.x:=(result.x * xration).round();
+result.y:=(result.y * yration).round();
+result.width:=(result.width * xration).round();
+result.height:=(result.height *yration).round();
+}
+}
+}
+elif (self[CGIState].m_type![String].equalsIgnoreCase("5"))
+{
+// do not specify the location for pseudo state
+	//result.x:=18;
+	//result.y:=9;
+}
+}
+else if ( self.oclIsTypeOf(CGIClass))
+{
+if ( (not (self[CGIClass].m_transform.oclIsUndefined()->any(true)) and self[CGIClass].m_transform->size()>5))
+{
+var x:String :=self![CGIClass].m_transform->at(5);
+var y:String :=self![CGIClass].m_transform->at(6);
+var astypeX:Integer := x.oclAsType(Integer);
+var astypeY:Integer := y.oclAsType(Integer);
+if (x.asInteger().oclIsUndefined() or x.asInteger().oclIsInvalid())
+{
+	result.x:=x.asFloat().round();
+
+}
+else 
+{	
+	result.x:=x.asInteger();
+	
+};
+if (y.asInteger().oclIsUndefined() or y.asInteger().oclIsInvalid())
+{
+	
+	result.y:=y.asFloat().round();
+}
+else 
+{	
+	
+	result.y:=y.asInteger();
+};
+	var mtransform:List(String):= self![CGIClass].m_transform->asList();
+	var mpolygon:List(String):= self![CGIClass].m_polygon->asList();
+	result.height:=getStateHeight(mpolygon, mtransform).oclAsType(Integer);
+	result.width:=getStateWidth(mpolygon, mtransform).oclAsType(Integer);
+}
+	
+}
+}
+
+//TODO--------------------------------------- rewrite me!
+
+mapping Sequence(String)::toLayoutConstraints() : Bounds
+{
+if (self->size()>5)
+{
+	var num:String :=self->at(4);
+	var num2:String :=self->at(1);
+	result.x:=self->at(5).asInteger();
+	result.y:=self->at(6).asInteger();
+	
+	var h:Real:=num.asFloat()*1233;
+	var w:Real:=num2.asFloat()*1058;
+	result.height:=h.round().oclAsType(Integer);
+	result.width:=w.round().oclAsType(Integer);
+}
+
+}
+
+mapping umlrpy::GraphElementsType::toDecorationNode(): notation::DecorationNode {
+
+
+type:= 
+		if self.oclIsTypeOf(CGIClass) then '5029' 
+		elif (self.oclIsTypeOf(CGIState) and self[CGIState].m_type![String].equalsIgnoreCase("8")) then '6001' 
+		elif (self.oclIsTypeOf(CGIState) and self[CGIState].m_type![String].equalsIgnoreCase("5")) then '8001'
+		endif;
+		if  (self.oclIsTypeOf(CGIState) )
+		{
+			if  (self[CGIState].m_type![String].equalsIgnoreCase("8"))
+			
+				layoutConstraint:= object Bounds
+				{
+					//	width:=63;
+				}
+			elif (self[CGIState].m_type![String].equalsIgnoreCase("5"))
+			{
+			// for the pseudo state
+				layoutConstraint:= object Location
+				{
+						//x:=25;
+						//y:=3;
+				}
+			}
+		}
+}
+
+/**
+*
+* This mapping allows to create all views in a Papyrus SysML 1.1 BDD according to the Rpy Model
+* @param
+*		cgiClassChart : the class chart of the diagram, it is useful to find child to create for the created element
+* @param
+* 		rpyAllowedParent : the list of the allowed Rpy parent to manage the object.
+*		if the Rpy parent is not in this list, the object won't be mapped
+*/
+mapping umlrpy::GraphElementsType::toSysML11BlockDefinitionDiagramShape(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)) : Shape 
+	disjuncts 
+	umlrpy::CGIGenericElement::toSysML11BDDDataTypeShape, //TODO split with value type
+	umlrpy::CGIGenericElement::toSysML11BDDUnitShape,
+	umlrpy::CGIGenericElement::toSysML11BDDDimensionShape,
+	umlrpy::CGIGenericElement::toSysML11BDDEnumerationShape,
+	umlrpy::CGIGenericElement::toSysML11BDDBlockShape,
+	umlrpy::CGIClass::toSysML11BDDBlockShape,
+	umlrpy::CGIClass::toSysML11BDDConstraintBlockShape,
+	umlrpy::CGIClass::toSysML11BDDFlowSpecificationShape,
+	umlrpy::CGIBasicClass::toSysML11BDDActorShape,
+	umlrpy::CGIPackage::toSysML11BDDPackageShape, 
+	umlrpy::CGIGenericElement::toSysML11BDDSignalShape
+	{}
+	
+mapping umlrpy::GraphElementsType::toSysML11BlockDefinitionDiagramEdge() : Edge 
+	disjuncts 
+	umlrpy::CGIAssociationEnd::toSysML11BDDAssociationEdge
+	{}
+	
+/**
+* This mapping creates the Block Shape with its compartment and their children
+*/	
+mapping umlrpy::CGIGenericElement::toSysML11BDDBlockShape(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)) : Shape when {self.m_pModelObject.oclIsKindOf(IType) and self.m_pModelObject.oclAsType(IType).isUMLClass() and self.m_pParent.oclIsKindOf(GraphElementsType) and rpyAllowedParent->includes(self.m_pParent.oclAsType(GraphElementsType))}{
+	type:="shape_sysml_block_as_classifier";
+	element := self.m_pModelObject.resolveone().oclAsType(EObject);
+	var decorationNode:notation::DecorationNode:= object DecorationNode{type:="label_sysml_block_name"};
+	children+=decorationNode;
+	var sysmlPropertyCompartment:=self.map toListCompartment("compartment_sysml_property_as_list", "Attribute");
+	sysmlPropertyCompartment.children+=self.map toSysML11BDDBlockPropertyNode();//TODO : add check to distinghuish properties, from port, part, reference,  ...
+	//TODO : do the mapping ofr all others children
+	var sysmlPartCompartment:=self.map toListCompartment("compartment_sysml_part_as_list", null);
+	var sysmlReferenceCompartment:=self.map toListCompartment("compartment_sysml_reference_as_list", null);
+	var umlPortCompartment:=self.map toListCompartment("compartment_uml_port_as_list", null);
+	var sysmlFlowportCompartment:=self.map toListCompartment("compartment_sysml_flowport_as_list", null);
+	var umlOperationCompartment:=self.map toListCompartment("compartment_uml_operation_as_list", null);
+	var sysmlContraintCompartment:=self.map toListCompartment("compartment_sysml_constraint_as_list", null);
+	var sysmlValueCompartment:=self.map toListCompartment("compartment_sysml_value_as_list", null);
+	children+= sysmlPropertyCompartment;
+	children+= sysmlPartCompartment;
+	children+= sysmlReferenceCompartment;
+	children+= umlPortCompartment;
+	children+= sysmlFlowportCompartment;
+	children+= umlOperationCompartment;
+	children+= sysmlContraintCompartment;
+	children+= sysmlValueCompartment;
+	
+	layoutConstraint:= object Bounds{ x:=getX(self); y:=getY(self); width :=getRectangleWidth(self); height := getRectangleHeight(self)};
+}
+
+//TODO merge me with the previous one
+/**
+* This mapping creates the Block Shape with its compartment and their children
+*/	
+mapping umlrpy::CGIClass::toSysML11BDDBlockShape(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)) : Shape when {self.oclIsTypeOf(CGIClass) and self.m_pParent<>null and  self.m_pModelObject.oclIsTypeOf(IClass) and not (self.m_pModelObject.oclAsType(IClass).isSysMLFlowSpecification() or self.m_pModelObject.oclAsType(IClass).isSysMLConstraintBlock()) and self.m_pParent.oclIsKindOf(GraphElementsType) and rpyAllowedParent->includes(self.m_pParent.oclAsType(GraphElementsType))}{
+	var res:Boolean= self.m_pModelObject.oclIsTypeOf(IClass);
+
+	type:="shape_sysml_block_as_classifier";
+	element := self.m_pModelObject.resolveone().oclAsType(EObject);
+	var decorationNode:notation::DecorationNode:= object DecorationNode{type:="label_sysml_block_name"};
+	children+=decorationNode;
+	var sysmlPropertyCompartment:=self.map toListCompartment("compartment_sysml_property_as_list", "Attribute");
+	sysmlPropertyCompartment.children+=self.map toSysML11BDDBlockPropertyNode();//TODO : add check to distinghuish properties, from port, part, reference,  ...
+	//TODO : do the mapping ofr all others children
+	var sysmlPartCompartment:=self.map toListCompartment("compartment_sysml_part_as_list", null);
+	var sysmlReferenceCompartment:=self.map toListCompartment("compartment_sysml_reference_as_list", null);
+	var umlPortCompartment:=self.map toListCompartment("compartment_uml_port_as_list", null);
+	var sysmlFlowportCompartment:=self.map toListCompartment("compartment_sysml_flowport_as_list", null);
+	var umlOperationCompartment:=self.map toListCompartment("compartment_uml_operation_as_list", "Operation");
+	var sysmlContraintCompartment:=self.map toListCompartment("compartment_sysml_constraint_as_list", null);
+	var sysmlValueCompartment:=self.map toListCompartment("compartment_sysml_value_as_list", null);
+	children+= sysmlPropertyCompartment;
+	children+= sysmlPartCompartment;
+	children+= sysmlReferenceCompartment;
+	children+= umlPortCompartment;
+	children+= sysmlFlowportCompartment;
+	children+= umlOperationCompartment;
+	children+= sysmlContraintCompartment;
+	children+= sysmlValueCompartment;
+	
+	layoutConstraint:= object Bounds{ x:=getX(self); y:=getY(self); width :=getRectangleWidth(self); height := getRectangleHeight(self)};
+}
+
+/**
+* This mapping creates the Block Shape with its compartment and their children
+*/	
+//TODO : merge me with previous one ?
+mapping umlrpy::CGIClass::toSysML11BDDConstraintBlockShape(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)) : Shape when {self.oclIsTypeOf(CGIClass) and self.m_pParent<>null and self.m_pModelObject.oclIsTypeOf(IClass) and self.m_pModelObject.oclAsType(IClass).isSysMLConstraintBlock() and self.m_pParent.oclIsKindOf(GraphElementsType) and rpyAllowedParent->includes(self.m_pParent.oclAsType(GraphElementsType))}{
+
+// <children xmi:type="notation:Shape" xmi:id="_Mr2uIIlmEeaNf9-vLHMoKw" type="shape_sysml_flowspecification_as_classifier">
+//    <children xmi:type="notation:DecorationNode" xmi:id="_Mr3VMIlmEeaNf9-vLHMoKw" type="label_sysml_flowspecification_name"/>
+//    <children xmi:type="notation:ListCompartment" xmi:id="_Mr3VMYlmEeaNf9-vLHMoKw" type="compartment_sysml_flowproperty_as_list">
+//      <styles xmi:type="notation:DrawerStyle" xmi:id="_Mr3VMolmEeaNf9-vLHMoKw"/>
+//      <styles xmi:type="notation:TitleStyle" xmi:id="_Mr3VM4lmEeaNf9-vLHMoKw"/>
+//      <styles xmi:type="notation:SortingStyle" xmi:id="_Mr3VNIlmEeaNf9-vLHMoKw"/>
+//      <styles xmi:type="notation:FilteringStyle" xmi:id="_Mr3VNYlmEeaNf9-vLHMoKw"/>
+//    </children>
+//    <element xmi:type="uml:Interface" href="model.uml#_MpVloIlmEeaNf9-vLHMoKw"/>
+//    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Mr2uIYlmEeaNf9-vLHMoKw" x="89" y="90" width="327" height="226"/>
+//  </children>
+
+	//TODO : I probably forgot several compartment for this usecase!
+	type:="shape_sysml_constraintblock_as_classifier";
+	element := self.m_pModelObject.resolveone().oclAsType(EObject);
+	
+	var decorationNode:notation::DecorationNode:= object DecorationNode{type:="label_sysml_constraintblock_name"};
+	children+=decorationNode;
+	var sysmlParameterCompartment:=self.map toListCompartment("compartment_sysml_parameter_as_list", "ConstraintParameter");
+	sysmlParameterCompartment.children+=self.map toSysML11BDDConstraintParameterNode("ConstraintParameter");//TODO : add check to distinghuish properties, from port, part, reference,  ...
+	var sysmlPropertyCompartment:=self.map toListCompartment("compartment_sysml_constraint_as_list", "Constraint");
+//	sysmlPropertyCompartment.children+=self.map toSysML11BDDBlockPropertyNode();//TODO : add check to distinghuish properties, from port, part, reference,  ...
+	//TODO : do the mapping ofr all others children
+//	var sysmlPartCompartment:=self.map toListCompartment("compartment_sysml_part_as_list", null);
+//	var sysmlReferenceCompartment:=self.map toListCompartment("compartment_sysml_reference_as_list", null);
+//	var umlPortCompartment:=self.map toListCompartment("compartment_uml_port_as_list", null);
+//	var sysmlFlowportCompartment:=self.map toListCompartment("compartment_sysml_flowport_as_list", null);
+//	var umlOperationCompartment:=self.map toListCompartment("compartment_uml_operation_as_list", null);
+//	var sysmlContraintCompartment:=self.map toListCompartment("compartment_sysml_constraint_as_list", null);
+//	var sysmlValueCompartment:=self.map toListCompartment("compartment_sysml_value_as_list", null);
+	children+= sysmlParameterCompartment;
+	children+= sysmlPropertyCompartment;
+//	children+= sysmlPartCompartment;
+//	children+= sysmlReferenceCompartment;
+//	children+= umlPortCompartment;
+//	children+= sysmlFlowportCompartment;
+//	children+= umlOperationCompartment;
+//	children+= sysmlContraintCompartment;
+//	children+= sysmlValueCompartment;
+	
+	layoutConstraint:= object Bounds{ x:=getX(self); y:=getY(self); width :=getRectangleWidth(self); height := getRectangleHeight(self)};
+}
+
+
+/**
+* This mapping creates the Block Shape with its compartment and their children
+*/	
+//TODO : merge me with previous one ?
+mapping umlrpy::CGIClass::toSysML11BDDFlowSpecificationShape(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)) : Shape when {self.oclIsTypeOf(CGIClass) and self.m_pParent<>null and self.m_pModelObject.oclIsTypeOf(IClass) and self.m_pModelObject.oclAsType(IClass).isSysMLFlowSpecification() and self.m_pParent.oclIsKindOf(GraphElementsType) and rpyAllowedParent->includes(self.m_pParent.oclAsType(GraphElementsType))}{
+
+// <children xmi:type="notation:Shape" xmi:id="_Mr2uIIlmEeaNf9-vLHMoKw" type="shape_sysml_flowspecification_as_classifier">
+//    <children xmi:type="notation:DecorationNode" xmi:id="_Mr3VMIlmEeaNf9-vLHMoKw" type="label_sysml_flowspecification_name"/>
+//    <children xmi:type="notation:ListCompartment" xmi:id="_Mr3VMYlmEeaNf9-vLHMoKw" type="compartment_sysml_flowproperty_as_list">
+//      <styles xmi:type="notation:DrawerStyle" xmi:id="_Mr3VMolmEeaNf9-vLHMoKw"/>
+//      <styles xmi:type="notation:TitleStyle" xmi:id="_Mr3VM4lmEeaNf9-vLHMoKw"/>
+//      <styles xmi:type="notation:SortingStyle" xmi:id="_Mr3VNIlmEeaNf9-vLHMoKw"/>
+//      <styles xmi:type="notation:FilteringStyle" xmi:id="_Mr3VNYlmEeaNf9-vLHMoKw"/>
+//    </children>
+//    <element xmi:type="uml:Interface" href="model.uml#_MpVloIlmEeaNf9-vLHMoKw"/>
+//    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Mr2uIYlmEeaNf9-vLHMoKw" x="89" y="90" width="327" height="226"/>
+//  </children>
+	type:="shape_sysml_flowspecification_as_classifier";
+	element := self.m_pModelObject.resolveone().oclAsType(EObject);
+	var decorationNode:notation::DecorationNode:= object DecorationNode{type:="label_sysml_flowspecification_name"};
+	children+=decorationNode;
+	var sysmlPropertyCompartment:=self.map toListCompartment("compartment_sysml_flowproperty_as_list", "FlowProperty");
+	sysmlPropertyCompartment.children+=self.map toSysML11BDDFlowPropertyNode("FlowProperty");//TODO : add check to distinghuish properties, from port, part, reference,  ...
+	//TODO : do the mapping ofr all others children
+//	var sysmlPartCompartment:=self.map toListCompartment("compartment_sysml_part_as_list", null);
+//	var sysmlReferenceCompartment:=self.map toListCompartment("compartment_sysml_reference_as_list", null);
+//	var umlPortCompartment:=self.map toListCompartment("compartment_uml_port_as_list", null);
+//	var sysmlFlowportCompartment:=self.map toListCompartment("compartment_sysml_flowport_as_list", null);
+//	var umlOperationCompartment:=self.map toListCompartment("compartment_uml_operation_as_list", null);
+//	var sysmlContraintCompartment:=self.map toListCompartment("compartment_sysml_constraint_as_list", null);
+//	var sysmlValueCompartment:=self.map toListCompartment("compartment_sysml_value_as_list", null);
+	children+= sysmlPropertyCompartment;
+//	children+= sysmlPartCompartment;
+//	children+= sysmlReferenceCompartment;
+//	children+= umlPortCompartment;
+//	children+= sysmlFlowportCompartment;
+//	children+= umlOperationCompartment;
+//	children+= sysmlContraintCompartment;
+//	children+= sysmlValueCompartment;
+	
+	layoutConstraint:= object Bounds{ x:=getX(self); y:=getY(self); width :=getRectangleWidth(self); height := getRectangleHeight(self)};
+}
+
+mapping umlrpy::CGIGenericElement::toSysML11BDDUnitShape(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)) : Shape when {self.m_pModelObject.oclIsKindOf(IType) and self.m_pModelObject.oclAsType(IType).isUMLInstanceSpecification() and self.m_pModelObject.oclAsType(IType).isSysMLUnit() and self.m_pParent.oclIsKindOf(GraphElementsType) and rpyAllowedParent->includes(self.m_pParent.oclAsType(GraphElementsType))}{
+	type:="shape_sysml_unit_as_classifier";
+	element := self.m_pModelObject.resolveone().oclAsType(EObject);
+	var decorationNode:notation::DecorationNode:= object DecorationNode{type:="label_sysml_unit_name"};
+	children+=decorationNode;
+	//TODO : add compartment as hidden
+	layoutConstraint:= object Bounds{ x:=getX(self); y:=getY(self); width :=getRectangleWidth(self); height := getRectangleHeight(self)};
+}
+mapping umlrpy::CGIGenericElement::toSysML11BDDDimensionShape(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)) : Shape when {self.m_pModelObject.oclIsKindOf(IType) and self.m_pModelObject.oclAsType(IType).isUMLInstanceSpecification() and self.m_pModelObject.oclAsType(IType).isSysMLDimension() and self.m_pParent.oclIsKindOf(GraphElementsType) and rpyAllowedParent->includes(self.m_pParent.oclAsType(GraphElementsType))}{
+	type:="shape_sysml_dimension_as_classifier";
+	element := self.m_pModelObject.resolveone().oclAsType(EObject);
+	var decorationNode:notation::DecorationNode:= object DecorationNode{type:="label_sysml_dimension_name"};
+	children+=decorationNode;
+	//TODO : add compartment as hidden
+	layoutConstraint:= object Bounds{ x:=getX(self); y:=getY(self); width :=getRectangleWidth(self); height := getRectangleHeight(self)};
+}
+
+//TODO : check compartment of all created elements
+//TODO : create comment link and other stuff to dispay stereotype in diagram
+/**
+* map the Rpy enumeration representation to the Papyrus Enumeration
+*/
+mapping umlrpy::CGIGenericElement::toSysML11BDDEnumerationShape(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)) : Shape when {self.m_pModelObject.oclIsKindOf(IType) and self.m_pModelObject.oclAsType(IType).isUMLEnumeration() and self.m_pParent.oclIsKindOf(GraphElementsType) and rpyAllowedParent->includes(self.m_pParent.oclAsType(GraphElementsType))}{
+	type:="shape_uml_enumeration_as_classifier";
+	element := self.m_pModelObject.resolveone().oclAsType(EObject);
+	var decorationNode:notation::DecorationNode:= object DecorationNode{type:="label_uml_namedelement_name"};
+	children+=decorationNode;
+	var enumLiteralCompartment:=self.map toListCompartment("compartment_uml_enumerationliteral_as_list", "EnumerationLiteral");
+	enumLiteralCompartment.children+=self.map toSysML11BDDEnumerationLiteralNode();
+	children+=enumLiteralCompartment;
+	layoutConstraint:= object Bounds{ x:=getX(self); y:=getY(self); width :=getRectangleWidth(self); height := getRectangleHeight(self)};
+}
+
+mapping umlrpy::CGIGenericElement::toSysML11BDDDataTypeShape(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)) : Shape when {self.m_pModelObject.oclIsKindOf(IType) and self.m_pModelObject.oclAsType(IType).isUMLDataType() and self.m_pParent.oclIsKindOf(GraphElementsType) and rpyAllowedParent->includes(self.m_pParent.oclAsType(GraphElementsType))}{
+	type:="shape_uml_datatype_as_classifier";
+	element := self.m_pModelObject.resolveone().oclAsType(EObject);
+	var decorationNode:notation::DecorationNode:= object DecorationNode{type:="label_uml_namedelement_name"};
+	children+=decorationNode;
+	var propertyCompartment:=self.map toListCompartment("compartment_uml_property_as_list", null);
+	var operationCompartment:=self.map toListCompartment("compartment_uml_operation_as_list", null);
+	children+=propertyCompartment;
+	children+=operationCompartment;
+    layoutConstraint:= object Bounds{ x:=getX(self); y:=getY(self); width :=getRectangleWidth(self); height := getRectangleHeight(self)};
+}
+
+/**
+* Create all View to represent wanted the EnumerationLiteral
+*/
+mapping CGIGenericElement::toSysML11BDDEnumerationLiteralNode() : OrderedSet(Node){
+init{
+	var isExplicit:boolean:=self.Compartments[CGICompartment].m_displayOption->includes("Explicit");
+	var isAll:boolean:=self.Compartments[CGICompartment].m_displayOption->includes("All");
+	var isPublic:boolean:=self.Compartments[CGICompartment].m_displayOption->includes("Public"); //IEnumrationLiteral can't be set as public or others
+	if(isAll or isPublic){
+		//in this case nothing is serialized in rpy file, so we create all view from the literal views
+		//we can't use a mapping method because when EnumerationLiteral are represented several time on the same diagram,we will call the same mapping for the same element
+		//and in this case, QVTO call the mapping only the first time and return directly the result the next time without creating new object!
+		self.m_pModelObject.oclAsType(IType).Literals->forEach(lit){
+				result+= lit.oclAsType(IEnumerationLiteral).toSysML11BDDEnumerationLiteralNode();
+		};
+	}elif(isExplicit){
+			self.Compartments[CGICompartment].Items->forEach(lit){
+					result+= lit.oclAsType(IEnumerationLiteral).toSysML11BDDEnumerationLiteralNode();
+			};
+		};	
+	}
+}
+
+/**
+* Create all View to represent wanted the SysML Properties
+*/
+mapping CGIGenericElement::toSysML11BDDBlockPropertyNode() : OrderedSet(Node){
+init{
+	var isExplicit:boolean:=self.Compartments[CGICompartment].m_displayOption->includes("Explicit");
+	var isAll:boolean:=self.Compartments[CGICompartment].m_displayOption->includes("All");
+	var isPublic:boolean:=self.Compartments[CGICompartment].m_displayOption->includes("Public"); //IEnumrationLiteral can't be set as public or others
+	if(isAll or isPublic){ //TODO checlk in Rpy that for block : isAll or Public is equals? !
+		//in this case nothing is serialized in rpy file, so we create all view from the literal views
+		//we can't use a mapping method because when EnumerationLiteral are represented several time on the same diagram,we will call the same mapping for the same element
+		//and in this case, QVTO call the mapping only the first time and return directly the result the next time without creating new object!
+		self.m_pModelObject.oclAsType(IType).Attrs->forEach(attr){
+				result+= attr.oclAsType(IAttribute).toSysML11BDDBlockPropertyNode();
+		};
+	}elif(isExplicit){
+			self.Compartments[CGICompartment].Items->forEach(attr){
+					result+= attr.oclAsType(IAttribute).toSysML11BDDBlockPropertyNode();
+			};
+		};	
+	}
+}
+
+
+
+/**
+* Create all View to represent wanted the SysML Properties
+*/
+//TODO : merge me with the previous one
+mapping CGIClass::toSysML11BDDBlockPropertyNode() : OrderedSet(Node){ //TODO : the CGI comparmtent must probably be a parameter!
+init{
+	var isExplicit:boolean:=self.Compartments[CGICompartment].m_displayOption->includes("Explicit");
+	var isAll:boolean:=self.Compartments[CGICompartment].m_displayOption->includes("All");
+	var isPublic:boolean:=self.Compartments[CGICompartment].m_displayOption->includes("Public"); //IEnumrationLiteral can't be set as public or others
+	if(isAll or isPublic){ //TODO checlk in Rpy that for block : isAll or Public is equals? !
+		//in this case nothing is serialized in rpy file, so we create all view from the literal views
+		//we can't use a mapping method because when EnumerationLiteral are represented several time on the same diagram,we will call the same mapping for the same element
+		//and in this case, QVTO call the mapping only the first time and return directly the result the next time without creating new object!
+		self.m_pModelObject.oclAsType(IType).Attrs->forEach(attr){
+				result+= attr.oclAsType(IAttribute).toSysML11BDDBlockPropertyNode();
+		};
+	}elif(isExplicit){
+			self.Compartments[CGICompartment].Items->forEach(attr){
+					result+= attr.oclAsType(IAttribute).toSysML11BDDBlockPropertyNode();
+			};
+		};	
+	}
+}
+
+/**
+* This query create the Node View for a given SysML Property
+*/
+query umlrpy::IAttribute::toSysML11BDDBlockPropertyNode() : Node{
+	return object Node{
+		element:=self.resolveoneIn(umlrpy::IVariable::iVariableToUMLElement).oclAsType(EObject);
+		type:="shape_uml_property_as_label";
+		styles:= object ShapeStyle{};
+		layoutConstraint:= object Location{};
+	};
+}
+
+/**
+* This query create the Node View for a given SysML Property
+*/
+//TODO : merge me with previous one
+query umlrpy::IRelation::toSysML11BDDBlockConstraintNode() : Node{
+	return object Node{
+		element:=self.resolveoneIn(umlrpy::IRelation::iRelationToUMLElement).oclAsType(EObject);
+		type:="shape_uml_property_as_label";
+		styles:= object ShapeStyle{};
+		layoutConstraint:= object Location{};
+	};
+}
+
+//TODO : merge me with previous one
+query umlrpy::IAttribute::toSysML11BDDFlowPorpertyNode() : Node{
+	return object Node{
+		element:=self.resolveoneIn(umlrpy::IVariable::iVariableToUMLElement).oclAsType(EObject);
+		type:="shape_sysml_flowproperty_as_label";
+		styles:= object ShapeStyle{};
+		layoutConstraint:= object Location{};
+	};
+}
+
+mapping CGIClass::toSysML11BDDFlowPropertyNode(rpyCptName:String) : OrderedSet(Node) when {self.m_pModelObject.oclIsTypeOf(IClass) and self.m_pModelObject.oclAsType(IClass).isSysMLFlowSpecification()}{
+init{
+	//TODO add a check for <>null for this compartment
+	var rpyCpt:CGICompartment :=self.Compartments->selectByKind(CGICompartment)->selectOne(cpt | cpt.m_name=rpyCptName);
+	
+	var isExplicit:boolean:=rpyCpt.m_displayOption->includes("Explicit");
+	var isAll:boolean:=rpyCpt.m_displayOption->includes("All");
+	var isPublic:boolean:=rpyCpt.m_displayOption->includes("Public");
+	if(isAll or isPublic){ //TODO checlk in Rpy that for block : isAll or Public is equals? !
+		//in this case nothing is serialized in rpy file, so we create all view from the literal views
+		//we can't use a mapping method because when EnumerationLiteral are represented several time on the same diagram,we will call the same mapping for the same element
+		//and in this case, QVTO call the mapping only the first time and return directly the result the next time without creating new object!
+		self.m_pModelObject.oclAsType(IClass).Attrs->selectByType(IAttribute)->forEach(attr){
+//    		var res:uml::Element:=relation.resolveoneIn(umlrpy::IRelation::iRelationToUMLElement);
+//    		if(res.oclAsType(uml::Property)){
+	
+		//TODO : check it is a flow property in RPY
+    			result+= attr.toSysML11BDDFlowPorpertyNode();
+    		}
+//    		if(res.getAppliedStereotype(getSysML11Stereotype("ConstraintParameter").getQualifiedName())){//TODO : need to be checked
+    			
+//    		}
+//    		if(relation.oclIsKindOf(ISysMLPort) and res<>null){
+//    			var isysmlPort:umlrpy::ISysMLPort:=relation.oclAsType(ISysMLPort);
+//    			isysmlPort.Stereotypes->forEach(istereotype){
+//    			relation.map applyIStereotypeToUMLElement(res, istereotype.oclAsType(IStereotype));
+//    		}	
+			
+//    	}C
+//    };
+//				result+= attr.oclAsType(ISysMLPort).toSysML11BDDBlockPropertyNode();
+//		};
+	}elif(isExplicit){
+
+		//TODO : ISySML Port is not yet an Item in the metamodel	
+//			self.Compartments[CGICompartment].Items->forEach(attr){
+//					result+= attr.oclAsType(IAttribute).toSysML11BDDBlockPropertyNode();
+//			};
+		};	
+	}
+}
+
+mapping CGIClass::toSysML11BDDConstraintParameterNode(rpyCptName:String) : OrderedSet(Node) when {self.m_pModelObject.oclIsTypeOf(IClass) and self.m_pModelObject.oclAsType(IClass).isSysMLConstraintBlock()}{
+init{
+	var rpyCpt:CGICompartment :=self.Compartments->selectByKind(CGICompartment)->selectOne(cpt | cpt.m_name=rpyCptName);
+
+	var isExplicit:boolean:=rpyCpt.m_displayOption->includes("Explicit");
+	var isAll:boolean:=rpyCpt.m_displayOption->includes("All");
+	var isPublic:boolean:=rpyCpt.m_displayOption->includes("Public");
+	if(isAll or isPublic){ //TODO checlk in Rpy that for block : isAll or Public is equals? !
+		//in this case nothing is serialized in rpy file, so we create all view from the literal views
+		//we can't use a mapping method because when EnumerationLiteral are represented several time on the same diagram,we will call the same mapping for the same element
+		//and in this case, QVTO call the mapping only the first time and return directly the result the next time without creating new object!
+		self.m_pModelObject.oclAsType(IClass).Ports->forEach(relation){
+//    		var res:uml::Element:=relation.resolveoneIn(umlrpy::IRelation::iRelationToUMLElement);
+//    		if(res.oclAsType(uml::Property)){
+    			result+= relation.toSysML11BDDBlockConstraintNode();
+    		}
+//    		if(res.getAppliedStereotype(getSysML11Stereotype("ConstraintParameter").getQualifiedName())){//TODO : need to be checked
+    			
+//    		}
+//    		if(relation.oclIsKindOf(ISysMLPort) and res<>null){
+//    			var isysmlPort:umlrpy::ISysMLPort:=relation.oclAsType(ISysMLPort);
+//    			isysmlPort.Stereotypes->forEach(istereotype){
+//    			relation.map applyIStereotypeToUMLElement(res, istereotype.oclAsType(IStereotype));
+//    		}	
+			
+//    	}C
+//    };
+//				result+= attr.oclAsType(ISysMLPort).toSysML11BDDBlockPropertyNode();
+//		};
+	}elif(isExplicit){
+
+		//TODO : ISySML Port is not yet an Item in the metamodel	
+//			self.Compartments[CGICompartment].Items->forEach(attr){
+//					result+= attr.oclAsType(IAttribute).toSysML11BDDBlockPropertyNode();
+//			};
+		};	
+	}
+}
+
+/**
+* This query create the Node View for a given IEnumerationLiteral
+*/
+query umlrpy::IEnumerationLiteral::toSysML11BDDEnumerationLiteralNode() : Node{
+	return object Node{
+		element:=self.resolveoneIn(umlrpy::IEnumerationLiteral::toUMLEnumerationLiteral).oclAsType(EObject);
+		type:="shape_uml_enumerationliteral_as_label";
+		styles:= object ShapeStyle{};
+		layoutConstraint:= object Location{};
+	};
+}
+
+mapping umlrpy::CGIAssociationEnd::toSysML11BDDAssociationEdge() : Connector 
+{
+	//TODO : use the class RpyNode for the anchors!
+	var sourceNode:CGIClass:=self.m_pSource![CGIClass];
+	var targetNode:CGIClass:=self.m_pTarget![CGIClass];
+	
+	var source_mtransform:List(String):= sourceNode.m_transform->asList();
+	var source_mpolygon:List(String):= sourceNode.m_polygon->asList();
+	var target_mtransform:List(String):= targetNode.m_transform->asList();
+	var target_mpolygon:List(String):= targetNode.m_polygon->asList();
+	var source_Port:List(String):= self.m_SourcePort->asList();
+	var target_Port:List(String):= self.m_TargetPort->asList();
+	
+
+	//we try the new way for anchor calculus
+//	var anchorsAndBendpoints:Sequence(String):=getAnchorsAndBendpoints(self, result);
+//	var sourceAnchorId:String:=anchorsAndBendpoints->asSequence()->at(1);
+//	var	targetAnchorId:String:=anchorsAndBendpoints->asSequence()->at(2);
+	addAnchorsAndBendpoints(self, result);
+	
+	var rpySemanticElement:=self.m_pModelObject;
+	
+	//looking for the uml Association
+	var association:Association:=null;
+	if(rpySemanticElement.oclIsTypeOf(IAssociationEnd)){
+		association:=self.m_pModelObject.resolveoneIn(umlrpy::IAssociationEnd::iAssociationEndToUMLAssociation, uml::Association);
+	}elif(rpySemanticElement.oclIsTypeOf(IPart)){
+		association:=self.m_pModelObject.resolveoneIn(umlrpy::IPart::iPartToUMLAssociation, uml::Association).oclAsType(Association);
+	};
+	
+	
+	result.element:=association.oclAsType(EObject);
+	
+	result.type := "link_sysml_association";
+	result.source:= sourceNode.resolveIn(umlrpy::GraphElementsType::toSysML11BlockDefinitionDiagramShape, Shape)![View];
+	result.target:= targetNode.resolveIn(umlrpy::GraphElementsType::toSysML11BlockDefinitionDiagramShape, Shape)![View];
+	
+	//no idea about this code!
+//	result.children->forEach(element){
+//		element.type:='6007'
+//	};
+//	result.sourceAnchor := object IdentityAnchor{
+//		id:=sourceAnchorId;
+//	};
+//	result.targetAnchor := object IdentityAnchor{
+//		id := targetAnchorId;
+//	};
+	
+	
+//	result.bendpoints:= object RelativeBendpoints{
+////		points:= object RelativeBendpointList{
+////		
+////		}
+//	};
+	// add DecorationNode
+	//	result.children := self.getDecorationNodes();
+	
+	
+	//TODO : manage the place of each label of the association
+	var True:String:="1";
+	var False:String:="0";
+	var res:=self.m_bShowLinkName;
+	var showSourceRole:=self.m_bShowSourceRole;
+	var showTargetRole:=self.m_bShowTargetRole;
+	var showSourceMultiplicity:=self.m_bShowSourceMultiplicity;
+	var showTargetMultiplicity:=self.m_bShowTargetMultiplicity;
+	
+	result.children+= object DecorationNode{
+		type:="linklabel_uml_appliedstereotype";
+//		visible:=self.m_bShowLinkName=True;
+		layoutConstraint:= object Location{ y:=-30};
+	};
+	
+	//TODO : we could manage maskLabel style too
+	result.children+= object DecorationNode{
+		type:="linklabel_uml_namedelement_name";
+		visible:=self.m_bShowLinkName=True;
+		layoutConstraint:= object Location{y:=-10};
+	};
+
+	result.children+= object DecorationNode{
+		type:="linklabel_uml_association_source_role";
+		visible:=self.m_bShowSourceRole=True;
+		layoutConstraint:= object Location{y:=-10};
+	};
+	
+	result.children+= object DecorationNode{
+		type:="linklabel_uml_association_source_multiplicity";
+		visible:=self.m_bShowSourceMultiplicity=True;
+		layoutConstraint:= object Location{y:=10};
+	};
+	
+	result.children+= object DecorationNode{
+		type:="linklabel_uml_association_target_role";
+		visible:=self.m_bShowTargetRole=True;
+		layoutConstraint:= object Location{y:=-10};
+	};
+	
+	result.children+= object DecorationNode{
+		type:="linklabel_uml_association_target_multiplicity";
+		visible:=self.m_bShowTargetMultiplicity=True;
+		layoutConstraint:= object Location{y:=10};
+	};
+
+	result.styles+= object FontStyle{};
+	
+	result.styles+= object EObjectValueStyle{
+		name:="semantic_source_end";
+		eObjectValue:=association.memberEnd->asSequence()->at(1).oclAsType(EObject); //TODO
+	};
+	
+	result.styles+= object EObjectValueStyle{
+		name:="semantic_target_end";
+		eObjectValue:=association.memberEnd->asSequence()->at(2).oclAsType(EObject); //TODO
+	};
+	
+	//manage connector routing
+	routing:=self.oclAsType(GraphElementsType).getConnectorRouting();	
+	eAnnotations+=createCSSForceValue("routing");
+}
+
+/**
+* Create the Actor Shape
+*/ 
+mapping umlrpy::CGIBasicClass::toSysML11BDDActorShape(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)):notation::Shape when {self.m_pModelObject.oclIsTypeOf(IActor) and self.m_pParent.oclIsKindOf(GraphElementsType) and rpyAllowedParent->includes(self.m_pParent.oclAsType(GraphElementsType))}{
+	element := self.m_pModelObject.resolveone().oclAsType(EObject);
+	type:="shape_uml_actor_as_classifier";
+	children+= object DecorationNode{
+		type:="label_uml_namedelement_name";
+	};
+	children+=self.map toListCompartment("compartment_uml_property_as_list",null);
+	children+=self.map toListCompartment("compartment_uml_operation_as_list",null);
+  	layoutConstraint:= object Bounds{ x:=getX(self); y:=getY(self); width :=getRectangleWidth(self); height := getRectangleHeight(self)};
+}
+
+/**
+* Create the package shape
+*
+*/
+mapping umlrpy::CGIPackage::toSysML11BDDPackageShape(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)):notation::Shape when {self.m_pModelObject.oclIsTypeOf(ISubsystem) and self.m_pParent.oclIsKindOf(GraphElementsType) and rpyAllowedParent->includes(self.m_pParent.oclAsType(GraphElementsType))}{
+	element := self.m_pModelObject.resolveone().oclAsType(EObject);
+	type:="Package_Shape";
+	children+= object DecorationNode{
+		type:="Package_NameLabel";
+	};
+	var blockPropertyStructure:BasicCompartment:= object BasicCompartment {
+		type:="Package_PackagedElementCompartment";
+		styles+=object TitleStyle{};
+		layoutConstraint:=object Bounds{};
+	};
+	layoutConstraint:= object Bounds{ x:=getX(self); y:=getY(self); width :=getRectangleWidth(self); height := getRectangleHeight(self)};
+	
+	//create package contents
+	
+	blockPropertyStructure.children+=cgiClassChart.graphElements->select(a | a.isAllowedAsCompartmentChildren(blockPropertyStructure)).map toSysML11BlockDefinitionDiagramShape(cgiClassChart, self->asSequence());
+	children+=blockPropertyStructure;
+}
+
+/**
+* Returns true when the graph element can be set as a children of a given compartment
+*/
+query umlrpy::GraphElementsType::isAllowedAsCompartmentChildren(cpt:BasicCompartment):Boolean{
+	return not self.oclIsTypeOf(CGIPortConnector);
+}
+
+/**
+* Map the CGIGenericElement to a Signal Shape
+*/
+mapping umlrpy::CGIGenericElement::toSysML11BDDSignalShape(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)):notation::Shape when{self.m_pModelObject.oclIsTypeOf(IEvent) and self.m_pParent.oclIsKindOf(GraphElementsType) and rpyAllowedParent->includes(self.m_pParent.oclAsType(GraphElementsType))}{
+	element := self.m_pModelObject.resolveone().oclAsType(EObject);
+	type:="shape_uml_signal_as_classifier";
+	children+= object DecorationNode{
+		type:="label_uml_namedelement_name";
+	};
+	children+=self.map toListCompartment("compartment_uml_property_as_list",null);
+	children+=self.map toListCompartment("compartment_uml_operation_as_list",null);
+	layoutConstraint:= object Bounds{ x:=getX(self); y:=getY(self); width :=getRectangleWidth(self); height := getRectangleHeight(self)};
+}
\ No newline at end of file
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/SysML11Diagrams.qvto b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/SysML11Diagrams.qvto
new file mode 100644
index 0000000..03b2746
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/SysML11Diagrams.qvto
@@ -0,0 +1,78 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *****************************************************************************/
+ 
+import Rpy2PapyrusSemanticElements;
+import RpyUtils;
+import SysMLRpyUtils;
+import SysML11ParametricDiagram;
+import SysML11BlockDefinitionDiagram;
+import SysML11InternalBlockDiagram;
+import org.eclipse.papyrus.interoperability.rpy.blackboxes.Rpy2PapyrusNotationBlackboxes;
+
+modeltype umlrpy "strict" uses 'http://www.eclipse.org/Papyrus/UMLRpy/1.0.0';
+modeltype notation "strict" uses 'http://www.eclipse.org/gmf/runtime/1.0.2/notation';
+modeltype uml "strict" uses 'http://www.eclipse.org/uml2/5.0.0/UML';
+modeltype sysml11 "strict" uses 'http://www.eclipse.org/papyrus/0.7.0/SysML';
+modeltype ecore "strict" uses 'http://www.eclipse.org/emf/2002/Ecore';
+modeltype UMLPrimitivesTypes "strict" uses 'http://www.eclipse.org/uml2/5.0.0/Types' ;
+modeltype properties "strict" uses 'http://www.eclipse.org/papyrus/internationalization/model';
+
+
+/**
+*
+* This transformation does the SysML 1.1 Diagram creation from a Rpy Model
+*
+*/
+transformation SysML11Diagrams(in semantics : umlrpy, out graphics : notation, inout model:uml,in Sysml11Profile:sysml11, in primitives:UMLPrimitivesTypes, inout labels:properties) 
+access transformation Rpy2PapyrusSemanticElements(in inModel:umlrpy, out outModel:uml, in primitives:UMLPrimitivesTypes) 
+extends Rpy2PapyrusSemanticElements(in inModel:umlrpy, out outModel:uml, in primitives:UMLPrimitivesTypes)
+{
+	main() {
+		if(sysml11<>null){
+			if(isContainingSysMLRpyStereotypeReference(semantics.objectsOfKind(EObject))){
+				log("SysML Diagrams Mapping");
+				var diagrams:Set(IDiagram):= semantics.objects()[IDiagram];
+				var iProject:Set(IProject):=semantics.rootObjects()[IProject];
+				diagrams->map iDiagramToPapyrusSysML11Diagram(iProject->any(true));//we assume that there is only one IProject in the model
+				
+				//managing internationalization (labels of SysML Rhaposdy Diagrams)
+				var internationalizationLibrary:InternationalizationLibrary:=labels.rootObjects()->selectByKind(InternationalizationLibrary)->any(true);
+				if(internationalizationLibrary.oclIsUndefined()){
+					internationalizationLibrary:= object InternationalizationLibrary@labels{}
+				};
+				diagrams->forEach(current){
+					var res:Diagram:= current.resolveoneIn(rpymetamodel::IDiagram::iDiagramToPapyrusSysML11Diagram);
+					if(res<>null and not current.displayName.oclIsUndefined() and current.displayName.size()<>0){
+						internationalizationLibrary.entries+= object InternationalizationEntry{
+							key:=res;
+							value:=current.displayName;
+						}
+					}
+				};
+				log("End of SysML Diagram Mapping");
+			}else{
+				log("There is not SysML Stereotype applied on the Rpy model.");
+			};
+		}
+	}
+}
+
+
+/**
+*
+* This method do the mapping between Rpy SysML Diagram and Papyrus SysML11 Diagram
+*/
+mapping rpymetamodel::IDiagram::iDiagramToPapyrusSysML11Diagram(rpyProject:IProject):Diagram@graphics disjuncts
+	rpymetamodel::IDiagram::iDiagramToSysML11BlockDefinitionDiagram,
+	rpymetamodel::IDiagram::iDiagramToSysML11InternalBlockDiagram,
+	rpymetamodel::IDiagram::iDiagramToSysML11ParametricDiagram
+{}
\ No newline at end of file
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/SysML11InternalBlockDiagram.qvto b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/SysML11InternalBlockDiagram.qvto
new file mode 100644
index 0000000..b2ece0e
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/SysML11InternalBlockDiagram.qvto
@@ -0,0 +1,311 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *****************************************************************************/
+ 
+import Rpy2PapyrusSemanticElements;
+import RpyUtils;
+import SysMLRpyUtils;
+import RpyToPapyrusDiagamCommon;
+import org.eclipse.papyrus.interoperability.rpy.blackboxes.Rpy2PapyrusNotationBlackboxes;
+import org.eclipse.papyrus.interoperability.rpy.blackboxes.sysml11.diagrams.InternalBlockDiagramFixLayoutBlackboxes;
+
+modeltype umlrpy "strict" uses 'http://www.eclipse.org/Papyrus/UMLRpy/1.0.0';
+modeltype notation "strict" uses 'http://www.eclipse.org/gmf/runtime/1.0.2/notation';
+modeltype uml "strict" uses 'http://www.eclipse.org/uml2/5.0.0/UML';
+modeltype sysml11 "strict" uses 'http://www.eclipse.org/papyrus/0.7.0/SysML';
+modeltype ecore "strict" uses 'http://www.eclipse.org/emf/2002/Ecore';
+modeltype UMLPrimitivesTypes "strict" uses 'http://www.eclipse.org/uml2/5.0.0/Types' ;
+
+
+/**
+*
+* This transformation manages the SysML 1.1 Internal Block Diagram
+* TODO in this transfo : 
+* floating label location
+* managing comment link on link
+*/
+transformation SysML11InternalBlockDiagram(in semantics : umlrpy, out graphics : notation, inout model:uml, in Sysml11Profile:sysml11, in primitives:UMLPrimitivesTypes) 
+access transformation Rpy2PapyrusSemanticElements(in inModel:umlrpy, out outModel:uml, in primitives:UMLPrimitivesTypes) 
+extends Rpy2PapyrusSemanticElements(in inModel:umlrpy, out outModel:uml, in primitives:UMLPrimitivesTypes)
+{
+	//nothing to do here
+}
+
+
+/**
+*
+* Map a Rpy IBD Diagram with a Papyrus SysML 1.1 IBD Diagram
+*/
+mapping rpymetamodel::IDiagram::iDiagramToSysML11InternalBlockDiagram(rpyProject:IProject):Diagram when{self.isUserModelDiagram() and self.isSysMLInternalBlockDiagram()}{
+	//1. creating the diagram object
+	init {
+		//we are looking for the owner of the diagram
+		var owner:EObject;
+		var iDiagramOwner:ecore::EObject:=self[EObject].eContainer()![EObject];
+		if(iDiagramOwner.oclIsKindOf(umlrpy::IClass)){
+			owner:= iDiagramOwner.resolveIn(ecore::EObject::generalMappingToUMLElement, uml::Element)![EObject];
+		};
+		result:=self.map createAndInitDiagram(rpyProject,getPapyrusDiagramType(), owner, owner);
+	}	
+	
+	//1. find some objects
+	var cgiClassChart:CGIClassChart:=self.graphicChart->oclAsSet().selectByType(CGIClassChart)->any(true);
+	var cgiClass:CGIClass:=cgiClassChart.graphElements->selectByType(CGIClass)->any(true);
+	var cgiDiagramFrame:CGIDiagramFrame:=cgiClassChart.graphElements->selectByType(CGIDiagramFrame)->any(true);
+	
+	//2. as it is an IBD, we must represent the owner in the diagram. This is the Rpy Frame
+	var rootBlockShape:Shape= object Shape{
+		type:="shape_sysml_block_as_composite";
+		children+= object DecorationNode { type:="label_sysml_block_name"};
+		layoutConstraint:=object Bounds{
+			x:=cgiDiagramFrame.get_X_Position(); 
+			y:=cgiDiagramFrame.get_Y_Position(); 
+			width:=cgiDiagramFrame.get_Width(); 
+			height:=cgiDiagramFrame.get_Height()
+		};
+	};
+	
+	var blockCompartmentStructure:BasicCompartment:= object BasicCompartment { 
+			type:="compartment_sysml_structure";
+			styles+= object TitleStyle{};
+	};
+	rootBlockShape.children+=blockCompartmentStructure;
+	children+=rootBlockShape;
+			
+	//3. map the children of the compartment		
+	blockCompartmentStructure.children+=cgiClassChart.graphElements->select(a | a.isAllowedAsCompartmentChildren(blockCompartmentStructure)).map graphElementsTypeToIBDShapes(cgiClassChart,cgiClass->asSequence());
+	
+	//4. map the affixed child node of the compartment
+	rootBlockShape.children+=cgiClassChart.graphElements->select(a | a.isAllowedAsAffixedChildNode(rootBlockShape)).map graphElementsTypeToIBDShapes(cgiClassChart, cgiDiagramFrame->asSequence());
+	
+	//5. map the edges of the diagram	
+	edges+=cgiClassChart.graphElements.map graphElementsTypeToIBDEdges(cgiClassChart, cgiDiagramFrame->asSequence()).oclAsType(notation::Edge);
+	
+	fixLayout(result);
+}
+
+/**
+* Returns the type of the diagram to create
+*/
+query getPapyrusDiagramType():String{
+	return 'InternalBlock';
+};
+
+/**
+* This method allows to map comment link
+*
+*/
+mapping rpymetamodel::CGIAnchor::graphElementsTypeToIBDCommentLink(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)):Connector when {self.getLinkSourceView()<>null and self.getLinkTargetView()<>null}{
+	type:="Comment_AnnotatedElementEdge";
+	source:=self.getLinkSourceView();
+	target:=self.getLinkTargetView();
+	var sourceNode:M_pRootType:=self.m_pSource;
+	var targetNode:M_pRootType:=self.m_pTarget;
+	addAnchorsAndBendpoints(self,result);
+	
+	//manage connector routing
+	routing:=self.oclAsType(GraphElementsType).getConnectorRouting();	
+	eAnnotations+=createCSSForceValue("routing");
+}
+
+
+/**
+*
+* This method allows to map the connector link
+*/
+mapping rpymetamodel::CGIObjectLink::graphElementsTypeToIBDConnector(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)):Connector when {self.getLinkSourceView()<>null and self.getLinkTargetView()<>null}{
+	type:="link_uml_connector";
+	source:=self.getLinkSourceView();
+	target:=self.getLinkTargetView();
+	element:= self.m_pModelObject.resolveoneIn(umlrpy::IObjectLink::iObjectLinkToUMLElement).oclAsType(EObject);
+		
+	addAnchorsAndBendpoints(self,result);
+	
+	children+=object DecorationNode{
+		 type:="linklabel_uml_appliedstereotype";
+		 layoutConstraint:=object Location{
+		 	y:=-30; //TODO : a dummy value
+		 };
+	};
+	
+	
+	//managing the name label of the connector
+//	var nameText:CGIText:=self.m_rpn;
+	children+=object DecorationNode{
+		type:="linklabel_uml_connector_label";
+		layoutConstraint:=object Location{
+			y:=-10; //TODO : a dummy value 
+		};
+	};
+	
+	//manage connector routing
+	routing:=self.oclAsType(GraphElementsType).getConnectorRouting();	
+	eAnnotations+=createCSSForceValue("routing");
+}
+
+
+
+//TODO : calling resolve method could not work in soem case : if we are mapping a link linked to another link not yet mapped -> we will not able to resolve it!
+//TODO : manage link linked to an other link (comment link for example)
+query umlrpy::CGIAnchor::getLinkSourceView():View{
+	var source:View:=self.m_pSource![M_pRootType].resolveIn(umlrpy::GraphElementsType::graphElementsTypeToIBDShapes, Shape)![View];
+	if(source=null){
+//		source:=self.m_pSource![M_pRootType].resolveIn(umlrpy::GraphElementsType::graphElementsTypeToIBDEdges, Connector)![View];
+	};
+	return source;
+}
+
+query umlrpy::CGIAnchor::getLinkTargetView():View{
+	var target:View:=self.m_pTarget![M_pRootType].resolveIn(umlrpy::GraphElementsType::graphElementsTypeToIBDShapes, Shape)![View];
+	if(target=null){
+//		target:=self.m_pTarget![M_pRootType].resolveIn(umlrpy::GraphElementsType::graphElementsTypeToIBDEdges, Connector)![View];
+	};
+	return target
+}
+
+query umlrpy::CGIObjectLink::getLinkSourceView():View{
+	var source:View:=self.m_pSource![M_pRootType].resolveIn(umlrpy::GraphElementsType::graphElementsTypeToIBDShapes, Shape)![View];
+	if(source=null){
+//		source:=self.m_pSource![M_pRootType].resolveIn(umlrpy::GraphElementsType::graphElementsTypeToIBDEdges, Connector)![View];
+	};
+	return source;
+}
+
+query umlrpy::CGIObjectLink::getLinkTargetView():View{
+	var target:View:=self.m_pTarget![M_pRootType].resolveIn(umlrpy::GraphElementsType::graphElementsTypeToIBDShapes, Shape)![View];
+	if(target=null){
+//		target:=self.m_pTarget![M_pRootType].resolveIn(umlrpy::GraphElementsType::graphElementsTypeToIBDEdges, Connector)![View];
+	};
+	return target
+}
+
+/**
+* This mapping take GraphElementsType and returns Shape.
+* @param
+*		cgiClassChart : the class chart of the diagram, it is useful to find child to create for the created element
+* @param
+* 		rpyAllowedParent : the list of the allowed Rpy parent to manage the object.
+*		if the Rpy parent is not in this list, the object won't be mapped
+*	
+*/
+mapping rpymetamodel::GraphElementsType::graphElementsTypeToIBDShapes(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)):Shape disjuncts
+	rpymetamodel::CGIAnnotation::CGIAnnotationToCommentCN, 
+	rpymetamodel::CGIObjectInstance::CGIObjectInstanceIBDBlockProperty, 
+	rpymetamodel::CGIGenericElement::CGIGenericElementToIBDBlockProperty,
+	rpymetamodel::CGIPortConnector::CGIPortConnectorToIBDPort
+{}
+
+
+mapping rpymetamodel::GraphElementsType::graphElementsTypeToIBDEdges(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)):Edge disjuncts
+	 rpymetamodel::CGIObjectLink::graphElementsTypeToIBDConnector,
+	rpymetamodel::CGIAnchor::graphElementsTypeToIBDCommentLink
+{}
+
+mapping rpymetamodel::CGIPortConnector::CGIPortConnectorToIBDPort(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)):Shape when {self.oclIsTypeOf(CGIPortConnector) and rpyAllowedParent->includes(self.m_pParent.oclAsType(GraphElementsType))}{
+	type:="shape_sysml_flowport_as_affixed";
+	children+= object DecorationNode{
+		type:="affixedlabel_sysml_flowport_label";
+		layoutConstraint:= object Location{
+			x:=30; //TODO
+		};
+	};
+	children+= object DecorationNode{
+		type:="affixedlabel_uml_appliedstereotype";
+		layoutConstraint:= object Location{
+			x:=30; //TODO
+		};
+	};
+	layoutConstraint:= object Bounds{
+		x:=getX(self);
+		y:=getY(self);
+		//width:=getRectangleWidth(self);
+		//height:=getRectangleHeight(self);
+		//result of calculus was wrong for port size and moreover this calculus is useless for port.
+		width:=20;
+		height:=20;
+		
+	};
+	
+	var semanticElementRpy:IRelation:=self.m_pModelObject;
+	element:=self.m_pModelObject.resolveoneIn(umlrpy::IRelation::iRelationToUMLElement).oclAsType(EObject);
+}
+
+/**
+* This method maps a CGIObject on a BlockProperty
+* @param
+*	cgiClassChart
+* @param
+*   rpyAllowedParent
+*
+*/
+mapping rpymetamodel::CGIObjectInstance::CGIObjectInstanceIBDBlockProperty(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)):Shape when {self.m_pModelObject.oclIsTypeOf(IPart) and self.oclIsTypeOf(CGIObjectInstance) and rpyAllowedParent->includes(self.m_pParent.oclAsType(GraphElementsType))}{
+	init{
+		//1. create the shape
+		result:=self.graphElementTypeToIBDBlockProperty(cgiClassChart, rpyAllowedParent);
+	}
+	
+	//2. set the represented element
+	var resolvedE:=self.m_pModelObject.resolveoneIn(umlrpy::IPart::iPartToUMLElement);
+	element:=resolvedE.oclAsType(EObject);
+}
+
+/**
+* Returns true when the graph element can be used as an affixed child node in Papyrus Diagram
+*/
+query umlrpy::GraphElementsType::isAllowedAsAffixedChildNode(shape:Shape):Boolean{
+	return self.oclIsTypeOf(CGIPortConnector);
+}
+
+/**
+* Returns true when the graph element can be set as a children of a given compartment
+*/
+query umlrpy::GraphElementsType::isAllowedAsCompartmentChildren(cpt:BasicCompartment):Boolean{
+	return not self.oclIsTypeOf(CGIPortConnector);
+}
+
+
+mapping rpymetamodel::CGIGenericElement::CGIGenericElementToIBDBlockProperty(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)):Shape when {self.m_pModelObject.oclIsTypeOf(IAssociationEnd) and self.m_pModelObject.oclAsType(IAssociationEnd).inverse.oclIsUndefined() and rpyAllowedParent->includes(self.m_pParent.oclAsType(GraphElementsType))}{
+	init{
+		//1. create the shape
+		result:=self.graphElementTypeToIBDBlockProperty(cgiClassChart, rpyAllowedParent);
+	}
+	
+	//2. set the represented element
+	var representedElement:=self.m_pModelObject;
+	var assoEnd:IAssociationEnd:=self.m_pModelObject.oclAsType(IAssociationEnd);
+	var resolvedE:Association=representedElement.resolveoneIn(umlrpy::IAssociationEnd::iAssociationEndToUMLAssociation);
+	var resolvedE2:Property:=resolvedE.memberEnd->select(endd | endd.oclIsKindOf(Property))->select(p | not p.oclAsType(Property).owner.oclIsKindOf(Association))->any(true);
+	element:=resolvedE2.oclAsType(EObject);
+}
+
+/**
+*
+* Helper used to create the Block Property Shape
+*/
+helper rpymetamodel::GraphElementsType::graphElementTypeToIBDBlockProperty(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)):Shape{
+	var localShape:Shape:=object Shape{
+		type:="shape_sysml_blockproperty_as_composite";
+	};
+	
+	localShape.children+= object DecorationNode{
+		type:="label_uml_property_label";
+	};
+	var basicCpt:BasicCompartment:=object BasicCompartment{ 
+		type:="compartment_sysml_blockproperty_structure";
+		styles+=object TitleStyle{};
+	};
+	localShape.children+=basicCpt;
+	localShape.layoutConstraint:= object Bounds{ x:=getX(self); y:=getY(self); width :=getRectangleWidth(self); height := getRectangleHeight(self)};
+	
+	basicCpt.children+=cgiClassChart.graphElements->select(a | a.isAllowedAsCompartmentChildren(basicCpt)).map graphElementsTypeToIBDShapes(cgiClassChart, self->asSequence());
+	localShape.children+=cgiClassChart.graphElements->select(a | a.isAllowedAsAffixedChildNode(localShape)).map graphElementsTypeToIBDShapes(cgiClassChart, self->asSequence());
+	return localShape;
+}
\ No newline at end of file
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/SysML11ParametricDiagram.qvto b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/SysML11ParametricDiagram.qvto
new file mode 100644
index 0000000..7f23584
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/SysML11ParametricDiagram.qvto
@@ -0,0 +1,309 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *****************************************************************************/
+ 
+import Rpy2PapyrusSemanticElements;
+import RpyUtils;
+import SysMLRpyUtils;
+import RpyToPapyrusDiagamCommon;
+import org.eclipse.papyrus.interoperability.rpy.blackboxes.Rpy2PapyrusNotationBlackboxes;
+import org.eclipse.papyrus.interoperability.rpy.blackboxes.sysml11.diagrams.ParametricDiagramFixLayoutLocationBlackboxes;
+
+modeltype umlrpy "strict" uses 'http://www.eclipse.org/Papyrus/UMLRpy/1.0.0';
+modeltype notation "strict" uses 'http://www.eclipse.org/gmf/runtime/1.0.2/notation';
+modeltype uml "strict" uses 'http://www.eclipse.org/uml2/5.0.0/UML';
+modeltype sysml11 "strict" uses 'http://www.eclipse.org/papyrus/0.7.0/SysML';
+modeltype ecore "strict" uses 'http://www.eclipse.org/emf/2002/Ecore';
+modeltype UMLPrimitivesTypes "strict" uses 'http://www.eclipse.org/uml2/5.0.0/Types' ;
+
+
+/**
+* This transformation allows to import Rpy Parametric Diagram as Papyrus SysML 1.1 Parametric Diagram
+*
+*/
+transformation SysML11ParametricDiagram(in semantics : umlrpy, out graphics : notation, inout model:uml ,in Sysml11Profile:sysml11, in primitives:UMLPrimitivesTypes)
+access transformation Rpy2PapyrusSemanticElements(in inModel:umlrpy, out outModel:uml, in primitives:UMLPrimitivesTypes) 
+extends Rpy2PapyrusSemanticElements(in inModel:umlrpy, out outModel:uml, in primitives:UMLPrimitivesTypes)
+{
+	//nothing to do here
+}
+
+
+mapping rpymetamodel::IDiagram::iDiagramToSysML11ParametricDiagram(rpyProject:IProject):Diagram when{self.isUserModelDiagram() and self.isSysMLParametricDiagram()}{
+	init{
+		var owner:EObject;
+			//2. setting the diagram owner
+		var iDiagramOwner:ecore::EObject:=self[EObject].eContainer()![EObject];
+		if(iDiagramOwner.oclIsKindOf(umlrpy::IClass)){
+			owner:= iDiagramOwner.resolveIn(ecore::EObject::generalMappingToUMLElement, uml::Element)![EObject];
+		};
+
+		result:=self.map createAndInitDiagram(rpyProject,getPapyrusDiagramType(), owner, owner);
+	}
+	
+	//0. find some objects
+	var cgiClassChart:CGIClassChart:=self.graphicChart->oclAsSet().selectByType(CGIClassChart)->any(true);
+	
+	//0.a find the object root of the diagram
+	var cgiClass:GraphElementsType:=null;
+	if(cgiClassChart.m_pRoot.oclIsKindOf(CGIClass)){
+		cgiClass:=cgiClassChart.m_pRoot.oclAsType(GraphElementsType);
+	};
+	
+	var cgiDiagramFrame:CGIDiagramFrame:=cgiClassChart.graphElements->selectByType(CGIDiagramFrame)->any(true);
+		
+	//3. as it is an ParametricDiagram, we must represent the owner in the diagram. This is the Rpy Frame
+	var rootBlockShape:Shape= object Shape{
+		type:="shape_sysml_block_as_composite";
+		children+= object DecorationNode { type:="label_sysml_block_name"};
+		layoutConstraint:=object Bounds{x:=cgiDiagramFrame.get_X_Position(); y:=cgiDiagramFrame.get_Y_Position(); width:=cgiDiagramFrame.get_Width(); height:=cgiDiagramFrame.get_Height()};
+	};
+	
+	children+=rootBlockShape;
+
+	var basicCompartment:BasicCompartment:= object BasicCompartment { 
+			type:="compartment_sysml_structure";
+			styles+= object TitleStyle{};
+	};
+	rootBlockShape.children+=basicCompartment;
+	
+
+	//mapping object inside the container 
+	basicCompartment.children+=cgiClassChart.graphElements->select(a | a.isAllowedAsCompartmentChildren(basicCompartment)).map graphElementsTypeToPDShapes(cgiClassChart, cgiClass->asSequence());
+	
+	//mapping affixed child node
+	rootBlockShape.children+=cgiClassChart.graphElements->select(a | a.isAllowedAsAffixedChildNode(rootBlockShape)).map graphElementsTypeToPDShapes(cgiClassChart, cgiDiagramFrame->asSequence());
+	edges+=cgiClassChart.graphElements.map graphElementsTypeToPBEdges(cgiClassChart, cgiClass->asSequence());
+	
+	fixLayout(result);
+};
+
+/**
+* Returns the type of the diagram to create
+*/
+query getPapyrusDiagramType():String{
+	return 'Parametric';
+};
+
+/**
+* Returns true when the graph element can be used as an affixed child node in Papyrus Diagram
+*/
+query umlrpy::GraphElementsType::isAllowedAsAffixedChildNode(shape:Shape):Boolean{
+	return self.oclIsTypeOf(CGIPortConnector);
+}
+
+/**
+* Returns true when the graph element can be set as a children of a given compartment
+*/
+query umlrpy::GraphElementsType::isAllowedAsCompartmentChildren(cpt:BasicCompartment):Boolean{
+	return not self.oclIsTypeOf(CGIPortConnector);
+}
+
+/**
+* This mapping take GraphElementsType and returns Shape.
+* @param
+*		cgiClassChart : the class chart of the diagram, it is useful to find child to create for the created element
+* @param
+* 		rpyAllowedParent : the list of the allowed Rpy parent to manage the object.
+*		if the Rpy parent is not in this list, the object won't be mapped
+*	
+*/
+mapping rpymetamodel::GraphElementsType::graphElementsTypeToPDShapes(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)):Shape disjuncts
+	rpymetamodel::CGIAnnotation::CGIAnnotationToCommentCN,
+	rpymetamodel::CGIObjectInstance::CGIObjectInstanceToPDContraintProperty,
+	rpymetamodel::CGIObjectInstance::CGIObjectInstanceToPDPart,
+	rpymetamodel::CGIGenericElement::CGIGenericElementToPDBlockPropertyAsComposite, 
+	rpymetamodel::CGIPortConnector::CGIPortConnectorToPorpertyAsAffixedChildNode
+{}
+
+
+/**
+* This mapping take GraphElementsType and returns Shape
+*/
+mapping rpymetamodel::GraphElementsType::graphElementsTypeToPBEdges(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)):Edge disjuncts
+	rpymetamodel::CGIObjectLink::graphElementsTypeToPDConnector,
+	rpymetamodel::CGIAnchor::graphElementsTypeToPDCommentLink
+{}
+
+/**
+* This method allows to map comment link
+*
+*/
+mapping rpymetamodel::CGIAnchor::graphElementsTypeToPDCommentLink(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)):Connector when {self.getLinkSourceView()<>null and self.getLinkTargetView()<>null}{
+	type:="Comment_AnnotatedElementEdge";
+	source:=self.getLinkSourceView();
+	target:=self.getLinkTargetView();
+	var sourceNode:M_pRootType:=self.m_pSource;
+	var targetNode:M_pRootType:=self.m_pTarget;
+	addAnchorsAndBendpoints(self,result);
+	
+	//manage connector routing
+	routing:=self.oclAsType(GraphElementsType).getConnectorRouting();	
+	eAnnotations+=createCSSForceValue("routing");
+}
+
+/**
+*
+* This method allows to map the connector link
+*/
+mapping rpymetamodel::CGIObjectLink::graphElementsTypeToPDConnector(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)):Connector when {self.getLinkSourceView()<>null and self.getLinkTargetView()<>null}{
+	type:="link_uml_connector";
+	source:=self.getLinkSourceView();
+	target:=self.getLinkTargetView();
+	element:= self.m_pModelObject.resolveoneIn(umlrpy::IObjectLink::iObjectLinkToUMLElement).oclAsType(EObject);
+		
+	addAnchorsAndBendpoints(self,result);
+	
+	children+=object DecorationNode{
+		 type:="linklabel_uml_appliedstereotype";
+		 layoutConstraint:=object Location{
+		 	y:=-30; //TODO : a dummy value
+		 };
+	};
+	
+	
+	//managing the name label of the connector
+//	var nameText:CGIText:=self.m_rpn;
+	children+=object DecorationNode{
+		type:="linklabel_uml_connector_label";
+		layoutConstraint:=object Location{
+			y:=-10; //TODO : a dummy value 
+		};
+	};
+	
+	//manage connector routing
+	routing:=self.oclAsType(GraphElementsType).getConnectorRouting();	
+	eAnnotations+=createCSSForceValue("routing");
+}
+
+//TODO : calling resolve method could not work in soem case : if we are mapping a link linked to another link not yet mapped -> we will not able to resolve it!
+//TODO : manage link linked to an other link (comment link for example)
+query umlrpy::CGIAnchor::getLinkSourceView():View{
+	var source:View:=self.m_pSource![M_pRootType].resolveIn(umlrpy::GraphElementsType::graphElementsTypeToPDShapes, Shape)![View];
+	if(source=null){
+//		source:=self.m_pSource![M_pRootType].resolveIn(umlrpy::GraphElementsType::graphElementsTypeToIBDEdges, Connector)![View];
+	};
+	return source;
+}
+
+query umlrpy::CGIAnchor::getLinkTargetView():View{
+	var target:View:=self.m_pTarget![M_pRootType].resolveIn(umlrpy::GraphElementsType::graphElementsTypeToPDShapes, Shape)![View];
+	if(target=null){
+//		target:=self.m_pTarget![M_pRootType].resolveIn(umlrpy::GraphElementsType::graphElementsTypeToIBDEdges, Connector)![View];
+	};
+	return target
+}
+
+query umlrpy::CGIObjectLink::getLinkSourceView():View{
+	var source:View:=self.m_pSource![M_pRootType].resolveIn(umlrpy::GraphElementsType::graphElementsTypeToPDShapes, Shape)![View];
+	if(source=null){
+//		source:=self.m_pSource![M_pRootType].resolveIn(umlrpy::GraphElementsType::graphElementsTypeToIBDEdges, Connector)![View];
+	};
+	return source;
+}
+
+query umlrpy::CGIObjectLink::getLinkTargetView():View{
+	var target:View:=self.m_pTarget![M_pRootType].resolveIn(umlrpy::GraphElementsType::graphElementsTypeToPDShapes, Shape)![View];
+	if(target=null){
+//		target:=self.m_pTarget![M_pRootType].resolveIn(umlrpy::GraphElementsType::graphElementsTypeToIBDEdges, Connector)![View];
+	};
+	return target
+}
+
+
+mapping rpymetamodel::CGIPortConnector::CGIPortConnectorToPorpertyAsAffixedChildNode(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)): Shape when {rpyAllowedParent->includes(self.m_pParent.oclAsType(GraphElementsType))}{
+	type:="shape_uml_property_as_affixed";
+
+	children+=object DecorationNode{
+		type:="affixedlabel_uml_port_label";
+		layoutConstraint:= object Location{
+			x:=-40; //TODO dummy value
+			y:=-40; //TODO dummy value
+		};
+	};
+	
+	children+=object DecorationNode{
+		type:="affixedlabel_uml_appliedstereotype";
+		layoutConstraint:= object Location{
+		};
+	};
+	
+	layoutConstraint:= object Bounds{
+		x:=getX(self);
+		y:=getY(self);
+		width:=20;
+		height:=20;
+	};
+	
+	element:=self.m_pModelObject.resolveoneIn(umlrpy::IRelation::iRelationToUMLElement).oclAsType(EObject);
+}
+
+mapping rpymetamodel::CGIObjectInstance::CGIObjectInstanceToPDContraintProperty(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)): Shape when {self.m_pModelObject.oclIsKindOf(IPart) and self.m_pModelObject.oclAsType(IPart).isSysMLConstraintProperty() and self.m_pParent.oclIsTypeOf(CGIClass) and self.m_pParent.oclIsKindOf(GraphElementsType) and rpyAllowedParent->includes(self.m_pParent.oclAsType(GraphElementsType))}{ 
+//we are not able to generate children of ContraintProperty
+	type:= "shape_sysml_constraintblockproperty_as_composite";
+	children+= object DecorationNode {type:="label_uml_property_label"};
+	element:=self.m_pModelObject.resolveone().oclAsType(EObject);
+	
+	//this part is not required for Rpy model!
+	//children+= object DecorationNode {
+	//type:="shape_uml_constraint_as_label";
+	//	//parent element should be a property typed by a constraint block. This constraint block contains a constraint! We map on it!
+	//	var t:uml::Type:=element.oclAsType(uml::TypedElement).type;
+	//	if(t<>null){
+	//		element:=t.ownedElement->selectByType(uml::Constraint)->any(true).oclAsType(EObject);
+	//	};
+	//		};
+	
+	layoutConstraint:= object Bounds{x:=getX(self); y:=getY(self); width:=getRectangleWidth(self); height:=getRectangleHeight(self);};
+	
+	//we add the affixed child node
+	children+= cgiClassChart.graphElements->select(a | a.isAllowedAsAffixedChildNode(result)).map graphElementsTypeToPDShapes(cgiClassChart, self->asSequence());
+}
+
+mapping rpymetamodel::CGIObjectInstance::CGIObjectInstanceToPDPart(cgiClassChart:CGIClassChart, rpyAllowedParent:Sequence(GraphElementsType)):Shape when {self.oclIsTypeOf(CGIObjectInstance) and self.m_pParent.oclIsKindOf(GraphElementsType) and rpyAllowedParent->includes(self.m_pParent.oclAsType(GraphElementsType))}{
+	type:="shape_sysml_blockproperty_as_composite";
+	children+= object DecorationNode{
+		type:="label_uml_property_label";
+	};
+	var blockPropertyStructure:BasicCompartment:= object BasicCompartment {
+		type:="compartment_sysml_blockproperty_structure";
+		styles+=object TitleStyle{};
+	};
+	
+	children+=blockPropertyStructure;
+	layoutConstraint:= object Bounds{ 
+		x:=getX(self); 
+		y:=getY(self); 
+		width :=getRectangleWidth(self); 
+		height := getRectangleHeight(self)
+	};
+	element:=self.m_pModelObject.resolveone().oclAsType(EObject);
+
+	//we fill the compartment
+	blockPropertyStructure.children+= cgiClassChart.graphElements->selectByType(CGIGenericElement)->select(g | g.m_pParent=self).map graphElementsTypeToPDShapes(cgiClassChart, self->asSequence());
+}
+
+mapping rpymetamodel::CGIGenericElement::CGIGenericElementToPDBlockPropertyAsComposite(cgiClassChart:CGIClassChart,rpyAllowedParent:Sequence(GraphElementsType)):Shape when {self.oclIsTypeOf(CGIGenericElement) and self.m_pParent.oclIsKindOf(GraphElementsType) and rpyAllowedParent->includes(self.m_pParent.oclAsType(GraphElementsType))}{
+	type:="shape_sysml_blockproperty_as_composite";
+	children+= object DecorationNode{
+		type:="label_uml_property_label";
+	};
+	children+= object BasicCompartment {
+		type:="compartment_sysml_blockproperty_structure";
+		styles+=object TitleStyle{};
+	};
+	layoutConstraint:= object Bounds{ 
+		x:=getX(self); 
+		y:=getY(self); 
+		width :=getRectangleWidth(self); 
+		height := getRectangleHeight(self)};
+	element:=self.m_pModelObject.resolveone().oclAsType(EObject);
+}
\ No newline at end of file
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/SysML11Profile.qvto b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/SysML11Profile.qvto
new file mode 100644
index 0000000..8475744
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/SysML11Profile.qvto
@@ -0,0 +1,454 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *****************************************************************************/
+ 
+import org.eclipse.papyrus.interoperability.rpy.blackboxes.sysml11.NestedConnectorEndBlackboxes;
+import org.eclipse.papyrus.interoperability.rpy.blackboxes.Rpy2PapyrusNotationBlackboxes;
+import org.eclipse.papyrus.interoperability.rpy.blackboxes.uml.UMLRpySemanticHelper;
+import Rpy2PapyrusSemanticElements;
+import RpyToPapyrus;
+import RpyUtils;
+import SysMLRpyUtils;
+
+modeltype umlrpy "strict" uses 'http://www.eclipse.org/Papyrus/UMLRpy/1.0.0';
+modeltype uml "strict" uses 'http://www.eclipse.org/uml2/5.0.0/UML';
+modeltype sysml11 "strict" uses 'http://www.eclipse.org/papyrus/0.7.0/SysML';
+modeltype ecore "strict" uses 'http://www.eclipse.org/emf/2002/Ecore';
+modeltype UMLPrimitivesTypes "strict" uses 'http://www.eclipse.org/uml2/5.0.0/Types' ;
+
+
+/**
+*
+* WARNING : ISysMLPort is a part of Rpy metamodel and doesn't come from the SysML Rpy Profile
+*
+*
+*/
+transformation SysML11Profile(in inModel:umlrpy, out outModel:uml, in Sysml11Profile:sysml11, in primitives:UMLPrimitivesTypes)
+extends Rpy2PapyrusSemanticElements(in inModel:umlrpy, out outModel:uml, in primitives:UMLPrimitivesTypes)
+
+{
+	main() {
+			if (isRpySysMLProfileApplied() and sysml11<>null ) {
+				log("Start SysML Profiles and Stereotypes Application");
+				//if yes apply it to the output model
+				var model: Model := outModel.rootObjects()![uml::Model]->any(true);
+			
+				// apply sysml 1.1 profile with all sub profiles
+				var sysml11Profiles : Set(Profile) := Sysml11Profile.objectsOfType(Profile);
+	
+				sysml11Profiles->forEach(profile) {
+					model.applyProfile(profile);
+				};
+	
+				//apply SysML 1.1 stereotype when it is applied in Rpy Model
+				inModel.objects()->select(rpy | not rpy.oclIsKindOf( GraphElementsType))->selectByKind(EObject).map applyRequiredSysML11Stereotype();
+		
+				//apply NestedConnectorEnd stereotype
+				outModel.objects()->selectByKind(uml::ConnectorEnd).map applySysML11ConnectorEndStereotype();
+				
+				log("End SysML Profiles and Stereotypes Application");
+			};
+	};
+}
+
+/**
+* This mapping create the NestedConnectorEnd stereotype when required for the given object
+*
+*/
+mapping uml::ConnectorEnd::applySysML11ConnectorEndStereotype() : sysml11::blocks::NestedConnectorEnd when {getNestedConnectorEndPropertyPath(self)->size()>0}{
+	base_ConnectorEnd:=self;
+	propertyPath:=getNestedConnectorEndPropertyPath(self);
+}
+
+
+/**
+*
+* Return true if the Rpy SysML Profile is applied on the Rpy model
+*/
+query isRpySysMLProfileApplied():Boolean {
+	var ret:Boolean = false;
+	var isProfiledModel:Boolean:=inModel.objectsOfType(IStereotype)->size()>0;
+	if (isProfiledModel) {
+		inModel.objectsOfType(IStereotype)->forEach(stereotype){
+			if(stereotype.isARpySysMLStereotype()){	
+				ret:= true;
+				break;
+			}
+		}
+	};
+	return ret;
+}
+
+
+//--------------------------Here we are working on the Rpy Stereotypes--------------
+
+/**
+* This method manage the stereotype application from Rpy to Papyrus for a set of Rpy element
+* 
+* TODO : edit the Rpy metamodel to get a common ancestor to manipulate easily the stereotyped element in Rpy
+*/
+mapping ecore::EObject::applyRequiredSysML11Stereotype() disjuncts
+	ecore::EObject::applyStereotypeFromIClass,
+	ecore::EObject::applyStereotypeFromIType_To_InstanceSpecification,
+	ecore::EObject::applyStereotypeFromIType_To_DataType,
+	ecore::EObject::applyStereotypeFromIType_To_Class,
+	ecore::EObject::applyStereotypeFromIType_To_Type,
+	ecore::EObject::applyStereotypeFromISysMLPort,
+	ecore::EObject::applyStereotypeFromIPart,
+	ecore::EObject::applyStereotypeFromIAttribute,
+	ecore::EObject::applyStereotypeFromIInformationFlow
+{}
+
+/**
+* This method cross the stereotypes applied on the IClass and call the method to apply them on the equivalent uml element
+*/
+mapping ecore::EObject::applyStereotypeFromIClass() when {self.oclIsTypeOf(IClass) /*and not self.oclAsType(IClass).Stereotypes->isEmpty()*/}{ //test on stereotype must be done in the method, because we always need to do some thing for IClass
+	var rpyElement:IClass:=self.oclAsType(IClass);
+	//we look for the created uml element
+	var umlElement:Element:=rpyElement.resolveoneIn(EObject::generalMappingToUMLElement, uml::Element);
+	if(umlElement<>null){
+		rpyElement.Stereotypes->selectByType(umlrpy::IStereotype)->forEach(current){
+				umlElement.map applySysML11Stereotype(rpyElement.oclAsType(EObject), getSysML11StereotypeName(current.name));
+		}
+	};
+	
+	//apply Block and PropertySpecificType on some class
+	var nestedClassesForPart:Sequence(IClass):=rpyElement.Associations[IPart]->select(current | current.implicitClass<>null).implicitClass.oclAsSet();
+    nestedClassesForPart->forEach(current){
+    	var umlClass:uml::Class:=current.resolveone().oclAsType(uml::Class);
+    	umlClass.map applySysML11Stereotype(current.oclAsType(EObject), "Block");
+    	umlClass.map applySysML11Stereotype(current.oclAsType(EObject), "PropertySpecificType");
+    };
+}
+
+/**
+* This method cross the stereotypes applied on the IType and call the method to apply them on the equivalent uml element
+*/
+mapping ecore::EObject::applyStereotypeFromIType_To_InstanceSpecification() when {self.oclIsTypeOf(IType)  and not self.oclAsType(IType).Stereotypes->isEmpty() and self.resolveoneIn(EObject::iTypeToUMLInstanceSpecification, InstanceSpecification)<>null}{
+	var rpyElement:IType:=self.oclAsType(IType);
+	//we look for the created uml element
+	var umlElement:Element:=self.resolveoneIn(EObject::iTypeToUMLInstanceSpecification, InstanceSpecification);
+	if(umlElement<>null){
+		rpyElement.Stereotypes->selectByType(umlrpy::IStereotype)->forEach(current){
+				umlElement.map applySysML11Stereotype(rpyElement.oclAsType(EObject), getSysML11StereotypeName(current.name));
+		}		
+	}
+}
+
+/**
+* This method cross the stereotypes applied on the IType and call the method to apply them on the equivalent uml element
+*/
+mapping ecore::EObject::applyStereotypeFromIType_To_DataType() when {self.oclIsTypeOf(IType)  and not self.oclAsType(IType).Stereotypes->isEmpty() and self.resolveoneIn(EObject::iTypeToUMLDatatype, DataType)<>null}{
+	var rpyElement:IType:=self.oclAsType(IType);
+	//we look for the created uml element
+	var umlElement:Element:=self.resolveoneIn(EObject::iTypeToUMLDatatype, DataType);
+	if(umlElement<>null){
+		rpyElement.Stereotypes->selectByType(umlrpy::IStereotype)->forEach(current){
+				umlElement.map applySysML11Stereotype(rpyElement.oclAsType(EObject), getSysML11StereotypeName(current.name));
+		}		
+	}
+}
+
+//TODO umlDataType and umlClass are probably useless now, waiting for JUnit tests to remove them from this method
+/**
+* This method cross the stereotypes applied on the IType and call the method to apply them on the equivalent uml element
+*/
+mapping ecore::EObject::applyStereotypeFromIType_To_Class() when {self.oclIsTypeOf(IType)  and not self.oclAsType(IType).Stereotypes->isEmpty() and self.resolveoneIn(EObject::iTypeToUMLClass, Class)<>null}{
+	var rpyElement:IType:=self.oclAsType(IType);
+	//we look for the created uml element
+	var umlElement:Element:=rpyElement.resolveoneIn(EObject::iTypeToUMLClass, Class);
+	if(umlElement<>null){
+		rpyElement.Stereotypes->selectByType(umlrpy::IStereotype)->forEach(current){
+				umlElement.map applySysML11Stereotype(rpyElement.oclAsType(EObject), getSysML11StereotypeName(current.name));
+		};
+		
+		//in all case, we apply block on the class
+		umlElement.map applySysML11Stereotype(rpyElement.oclAsType(EObject), getSysML11StereotypeName("Block"));		
+	}
+}
+
+/**
+* This method cross the stereotypes applied on the IType and call the method to apply them on the equivalent uml element
+*/
+mapping ecore::EObject::applyStereotypeFromIType_To_Type() when {self.oclIsTypeOf(IType)  and not self.oclAsType(IType).Stereotypes->isEmpty() and self.resolveoneIn(EObject::generalMappingToUMLElement, Type)<>null}{
+	var rpyElement:IType:=self.oclAsType(IType);
+	//we look for the created uml element
+	var umlElement:Element:=self.resolveoneIn(EObject::generalMappingToUMLElement, Type);
+	if(umlElement<>null){
+		rpyElement.Stereotypes->selectByType(umlrpy::IStereotype)->forEach(current){
+				umlElement.map applySysML11Stereotype(rpyElement.oclAsType(EObject), getSysML11StereotypeName(current.name));
+		}		
+	}
+}
+
+/**
+* This method cross the stereotypes applied on the ISysMLPort and call the method to apply them on the equivalent uml element
+*/
+mapping ecore::EObject::applyStereotypeFromISysMLPort() when {self.oclIsTypeOf(ISysMLPort) and not self.oclAsType(ISysMLPort).Stereotypes->isEmpty()}{
+	var rpyElement:ISysMLPort:=self.oclAsType(ISysMLPort);
+	//we look for the created uml element
+	var umlElement:Element:=rpyElement.resolveoneIn(umlrpy::IRelation::iRelationToUMLElement); 
+	if(umlElement<>null){
+		rpyElement.Stereotypes->selectByType(umlrpy::IStereotype)->forEach(current){
+				umlElement.map applySysML11Stereotype(rpyElement.oclAsType(EObject), getSysML11StereotypeName(current.name));
+		}		
+	}
+}
+
+/**
+* This method cross the stereotypes applied on the IPart and call the method to apply them on the equivalent uml element
+*/
+mapping ecore::EObject::applyStereotypeFromIPart() when {self.oclIsTypeOf(IPart)  and not self.oclAsType(IPart).Stereotypes->isEmpty()}{ 
+	var rpyElement:IPart:=self.oclAsType(IPart);
+	//we look for the created uml element
+	var umlElement:Element:=rpyElement.resolveoneIn(umlrpy::IPart::iPartToUMLElement);
+	if(umlElement<>null){
+		rpyElement.Stereotypes->selectByType(umlrpy::IStereotype)->forEach(current){
+				umlElement.map applySysML11Stereotype(rpyElement.oclAsType(EObject), getSysML11StereotypeName(current.name));
+		}		
+	}
+}
+
+/**
+* This method cross the stereotypes applied on the IAttribute and call the method to apply them on the equivalent uml element
+*/
+mapping ecore::EObject::applyStereotypeFromIAttribute() when {self.oclIsTypeOf(IAttribute) and not self.oclAsType(IAttribute).Stereotypes->isEmpty()}{ 
+	var rpyElement:IAttribute:=self.oclAsType(IAttribute);
+	//we look for the created uml element
+	var umlElement:Element:=rpyElement.resolveoneIn(IVariable::iVariableToUMLElement, uml::Property);
+	if(umlElement<>null){
+		rpyElement.Stereotypes->selectByType(umlrpy::IStereotype)->forEach(current){
+				umlElement.map applySysML11Stereotype(rpyElement.oclAsType(EObject), getSysML11StereotypeName(current.name));
+		}		
+	}
+}
+
+/**
+* This method cross the stereotypes applied on the IInformationFlow and call the method to apply them on the equivalent uml element
+*/
+mapping ecore::EObject::applyStereotypeFromIInformationFlow() when {self.oclIsTypeOf(IInformationFlow)  and not self.oclAsType(IInformationFlow).Stereotypes->isEmpty()}{ 
+	var rpyElement:IInformationFlow:=self.oclAsType(IInformationFlow);
+	//we look for the created uml element
+	var umlElement:Element:=rpyElement.resolveoneIn(umlrpy::IInformationFlow::iInformationFlowToUMLElement); 
+	if(umlElement<>null){
+		rpyElement.Stereotypes->selectByType(umlrpy::IStereotype)->forEach(current){
+				umlElement.map applySysML11Stereotype(rpyElement.oclAsType(EObject), getSysML11StereotypeName(current.name));
+		}		
+	}
+}
+
+
+//--------------------------Here we are working on the UML Stereotypes-------------------
+/**
+* Common method to apply a UML stereotype from the rpy element and from its name to a UML Element 
+*/
+mapping uml::Element::applySysML11Stereotype(rpyElement:EObject, umlSteName:String):EObject disjuncts
+	uml::DataType::applySysML11ValueType,
+	uml::InstanceSpecification::applySysML11Dimension,
+	uml::InstanceSpecification::applySysML11Unit,
+	uml::Class::applySysML11Block,
+	uml::Property::applySysML11FlowProperty,
+	uml::Port::applySysML11FlowPort,
+	
+	//default mapping method
+	uml::Element::applySysML11Stereotype_DefaultMapping
+{}
+
+/**
+* Default mapping to apply Sysml11 stereotype
+*
+*/
+mapping uml::Element::applySysML11Stereotype_DefaultMapping(rpyElement:EObject, umlSteName:String):EObject when {getSysML11Stereotype(umlSteName)<>null}{
+	init {
+		var stereotypeToApply:Stereotype:=getSysML11Stereotype(umlSteName);
+		self.applyStereotype(stereotypeToApply);
+		result:=self.getAppliedStereotype(stereotypeToApply.getQualifiedName()).oclAsType(EObject);
+	}
+}
+
+/**
+*
+* This method apply the stereotype SysML FlowPort
+*/
+mapping uml::Port::applySysML11FlowPort(rpyElement:EObject, stereotypeName:String):EObject when{rpyElement.oclIsKindOf(ISysMLPort) and stereotypeName="FlowPort"}{
+	init{
+		var stereotypeApplication:sysml11::portandflows::FlowPort:= object sysml11::portandflows::FlowPort{
+			base_Port:=self;
+			direction:=getSysML11FlowDirection(rpyElement.oclAsType(ISysMLPort).direction);
+			
+			if(not self.isAtomic(rpyElement.oclAsType(umlrpy::ISysMLPort))){
+					//If the FlowPort is atomic (by its type), then isAtomic=True, the direction must be specified (has a value), and
+					//isConjugated is not specified (has no value).
+				isConjugated:=rpyElement.oclAsType(ISysMLPort).isConjugated();
+			}else{
+				isConjugated:=false;
+			};
+		};
+		result:=stereotypeApplication.oclAsType(EObject);
+	}
+}
+
+/**
+* @param a ISysMLPort 
+* 
+* @return true if the port is atomic and false otherwise
+*
+*/
+helper uml::Port::isAtomic(rpyPort:umlrpy::ISysMLPort): Boolean{
+	var isAtomic:Boolean:=true;
+	if(self.type<>null){
+		//1. we need to call the mapping for stereotype applied on the type of the port to know if it is stereotyped with FlowSpecification
+		rpyPort.oclAsType(ISysMLPort).otherClass.oclAsType(EObject).map applyRequiredSysML11Stereotype();
+		
+		//2. now we could check the stereotype applied on the type of the port
+		var flowSpec:uml::Stereotype:=self.type.getAppliedStereotype(getSysML11Stereotype("FlowSpecification").getQualifiedName());
+		if (flowSpec<> null) {
+				isAtomic:=false;
+		};
+	};
+	return isAtomic;
+}
+
+/**
+*
+* This method apply the stereotype SysML FlowPort
+*/
+mapping uml::Property::applySysML11FlowProperty(rpyElement:EObject, stereotypeName:String):EObject when{rpyElement.oclIsKindOf(IAttribute) and stereotypeName="FlowProperty"}{
+	init{
+		var stereotypeApplication:sysml11::portandflows::FlowProperty:= object sysml11::portandflows::FlowProperty{
+			base_Property:=self;
+			
+			//we have model with 2 kind of declaration for the same thing...
+			//the first way!
+			var dir:String:=rpyElement.oclAsType(IAttribute).Tags->any(name="direction" and typeOf.oclAsType(IType).name="FlowDirection").ValueSpecifications->any(true).oclAsType(ILiteralSpecification).value;
+			//the 2nd way is required
+			if(dir.oclIsUndefined()){
+				//probably due to an error in the model, but in soem case we met RhpString
+				dir:=rpyElement.oclAsType(IAttribute).Tags->any(name="direction" and typeOf.oclAsType(IType).name="RhpString").ValueSpecifications->any(true).oclAsType(ILiteralSpecification).value;
+			};
+			
+			direction:=getSysML11FlowDirection(dir);
+		};
+		result:=stereotypeApplication.oclAsType(EObject);
+	}
+}
+
+/**
+* This method apply the stereotype Block
+*/
+mapping uml::Class::applySysML11Block(rpyElement:EObject, stereotypeName:String):EObject when{stereotypeName="Block"}{
+	init{
+		var stereotypeApplication:sysml11::blocks::Block:= object sysml11::blocks::Block{
+			base_Class:=self;
+		};
+		result:=stereotypeApplication.oclAsType(EObject);
+	}
+}
+
+/**
+* This method apply the stereotype Dimension
+*/
+mapping uml::InstanceSpecification::applySysML11Dimension(rpyElement:EObject, umlSteName:String):EObject when {umlSteName="Dimension"}{
+	init{
+		var stereotypeApplication:sysml11::blocks::Dimension:= object sysml11::blocks::Dimension{
+			base_InstanceSpecification:=self;
+		};
+		result:=stereotypeApplication.oclAsType(EObject);
+	}
+}
+
+/**
+* This method apply the stereotype Unit
+*/
+mapping uml::InstanceSpecification::applySysML11Unit(rpyElement:EObject, umlSteName:String):EObject when {umlSteName="Unit" and  rpyElement.oclIsKindOf(IType)}{
+	init{
+		var stereotypeApplication:sysml11::blocks::Unit:= object sysml11::blocks::Unit{
+			base_InstanceSpecification:=self;
+
+			//manage the dimension field
+			var tt:umlrpy::ITag=rpyElement.oclAsType(IType).Tags->select(t | t.name="dimension")->any(true);
+			var iinstancespec:umlrpy::IInstanceValue=tt.ValueSpecifications->selectByKind(umlrpy::IInstanceValue)->any(true);
+			if(iinstancespec<>null){
+				var val = iinstancespec.value;
+	   			var res:uml::InstanceSpecification = val.resolveoneIn(EObject::iTypeToUMLInstanceSpecification);
+	   			dimension:=res.map applySysML11Stereotype(val.oclAsType(EObject),"Dimension").oclAsType(sysml11::blocks::Dimension);
+			}
+		};
+		result:=stereotypeApplication.oclAsType(EObject);
+	}
+}
+
+mapping uml::DataType::applySysML11ValueType(rpyElement:EObject, umlSteName:String):EObject when {umlSteName="ValueType" and rpyElement.oclIsKindOf(IType)}{
+	init{
+		var stereotypeApplication:sysml11::blocks::ValueType:= object sysml11::blocks::ValueType{
+			base_DataType:=self;
+			
+			//manage the dimension field
+			var dimensionTag:umlrpy::ITag=rpyElement.oclAsType(IType).Tags->select(t | t.name="dimension")->any(true);
+			var dimensionInstanceIInstancespec:umlrpy::IInstanceValue=dimensionTag.ValueSpecifications -> selectByKind(umlrpy::IInstanceValue)->any(true);
+			if(dimensionInstanceIInstancespec<>null){
+				var val = dimensionInstanceIInstancespec.value;
+	   			var res:uml::InstanceSpecification = val.resolveoneIn(EObject::iTypeToUMLInstanceSpecification);
+	   			dimension:=res.map applySysML11Stereotype(val.oclAsType(EObject),"Dimension").oclAsType(sysml11::blocks::Dimension);
+			};
+			
+			//manage the unit field
+			var unitTag:umlrpy::ITag=rpyElement.oclAsType(IType).Tags->select(t | t.name="unit")->any(true);
+			var unitInstanceIInstancespec:umlrpy::IInstanceValue=unitTag.ValueSpecifications -> selectByKind(umlrpy::IInstanceValue)->any(true);
+			if(unitInstanceIInstancespec<>null){
+				var val = unitInstanceIInstancespec.value;
+	   			var res:uml::InstanceSpecification = val.resolveoneIn(EObject::iTypeToUMLInstanceSpecification);
+	   			unit:=res.map applySysML11Stereotype(val.oclAsType(EObject),"Unit").oclAsType(sysml11::blocks::Unit);
+			};
+		};
+		result:=stereotypeApplication.oclAsType(EObject);
+	}
+}
+
+
+/**
+*
+* Return the SysML 1.1 Stereotype for the given string or null if not found
+*/
+query getSysML11Stereotype(rpyStereotypeName:String ) :uml::Stereotype {
+	return Sysml11Profile.objectsOfType(Stereotype)![name=getSysML11StereotypeName(rpyStereotypeName)];
+}
+
+/**
+* Return the SysML 1.1 name corresponding to the Rpy SysML Name
+*/
+query getSysML11StereotypeName(rpyStereotypeName:String): String{
+	var sysml11SteName:=switch{
+		case (rpyStereotypeName="flowSpecification") 	"FlowSpecification";
+		case (rpyStereotypeName="flowProperty") 		"FlowProperty";
+		case (rpyStereotypeName="flowPort") 			"FlowPort";
+		case (rpyStereotypeName="block")	 			"Block";
+		//all case where the Rpy SysML Stereotype name is the same than the Papyrus SysML Name
+		case (true) rpyStereotypeName;
+	};
+	return sysml11SteName
+}
+
+/**
+*
+* This method convert the rhaspody flow direction into the SysML  FlowDirection 
+*/ 
+query getSysML11FlowDirection(rpyDirection:String) : sysml11::portandflows::FlowDirection{
+	var direction:  sysml11::portandflows::FlowDirection;
+	direction:= switch  {
+		case (rpyDirection="In") sysml11::portandflows::FlowDirection::_in;
+		case (rpyDirection="Out") sysml11::portandflows::FlowDirection::_out;
+		case (rpyDirection="InOut") sysml11::portandflows::FlowDirection::_inout; 
+		case (rpyDirection="Bidirectional") sysml11::portandflows::FlowDirection::_inout;
+		case (true) sysml11::portandflows::FlowDirection::_inout;
+	};
+	return direction;
+}
diff --git a/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/SysMLRpyUtils.qvto b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/SysMLRpyUtils.qvto
new file mode 100644
index 0000000..e58e2e0
--- /dev/null
+++ b/rpy/plugins/org.eclipse.papyrus.interoperability.rpy/transform/SysMLRpyUtils.qvto
@@ -0,0 +1,141 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *****************************************************************************/
+ 
+import RpyUtils;
+import org.eclipse.papyrus.interoperability.rpy.blackboxes.ConstantsBlackboxes;
+
+modeltype umlrpy "strict" uses 'http://www.eclipse.org/Papyrus/UMLRpy/1.0.0';
+modeltype sysml11 "strict" uses 'http://www.eclipse.org/papyrus/0.7.0/SysML';
+modeltype ecore "strict" uses 'http://www.eclipse.org/emf/2002/Ecore';
+
+
+/**
+*
+* This file provides useful method to manage SysML Rpy Model
+*/
+library SysMLRpyUtils;
+
+
+/**
+* Return true if the IDiagram is a SysML Parametric Diagram
+*/
+query rpymetamodel::IDiagram::isSysMLParametricDiagram():Boolean{
+	return self.isRpyClassChart() and self.isStereotypedWith("Parametric Diagram");
+}
+
+/**
+* Return true if the IDiagram represents a SysML Block Definition Diagram
+*/
+query rpymetamodel::IDiagram::isSysMLBlockDefinitionDiagram():Boolean{
+	return self.isRpyClassChart() and self.isStereotypedWith("Block Definition Diagram");
+}
+
+/**
+* Return true if the IDiagram represents a SysML Internal Block Diagram
+*/
+query rpymetamodel::IDiagram::isSysMLInternalBlockDiagram():Boolean{
+	return self.oclIsTypeOf(rpymetamodel::IStructureDiagram) and self.isRpyClassChart() and  self.isStereotypedWith("Internal Block Diagram");
+}
+
+
+/**
+* Return true if the IType is stereotyped with the SysML Rpy flowSpecification
+*/
+query umlrpy::IClass::isSysMLFlowSpecification(): Boolean{
+	return self.isStereotypedWith("flowSpecification");
+}
+
+//TODO :duplciated code for IType and IClass
+/**
+* Return true if the IType is stereotyped with the SysML Rpy flowSpecification
+*/
+query umlrpy::IType::isSysMLFlowSpecification(): Boolean{
+	return self.isStereotypedWith("flowSpecification");
+}
+
+/**
+* Return true if the IType is stereotyped with the SysML Rpy ValueType
+*/
+query umlrpy::IType::isSysMLValueType():Boolean {
+	return self.isStereotypedWith("ValueType");
+}
+
+/**
+* Return true if the IType is stereotyped with the SysML Rpy ConstraintProperty
+*/
+query umlrpy::IPart::isSysMLConstraintProperty():Boolean {
+	return self.isStereotypedWith("ConstraintProperty");
+}
+
+/**
+* Return true if the IType is stereotyped with the SysML Rpy ConstraintBlock
+*
+*/
+query umlrpy::IClass::isSysMLConstraintBlock(): Boolean{
+	return self.isStereotypedWith("ConstraintBlock");
+}
+
+/**
+* Return true if the IType is stereotyped with the SysML Rpy Dimension
+*/
+query umlrpy::IType::isSysMLDimension(): Boolean {
+	return self.isStereotypedWith("Dimension");
+}
+
+/**
+*Return true if the IType is stereotyped with the SysML Rpy  Unit
+*/
+query umlrpy::IType::isSysMLUnit(): Boolean {
+	return self.isStereotypedWith("Unit");
+}
+
+/**
+*  Return true if the IType is stereotyped with the SysML Rpy DataType (this stereotype doesn't exist in SysML implementation used by Papyrus')
+*/
+query umlrpy::IType::isRpyDataType(): Boolean {
+	return self.isStereotypedWith("DataType");
+}
+
+
+
+/**
+* Return true if the IStereotype comes from the SysML Rpy profile (or must be mapped in a SysML Profile in Papyrus)
+*
+*/
+query IStereotype::isARpySysMLStereotype():Boolean{
+	var ret:Boolean:=false;
+	var fileName:String:=self.oclAsType(EModelElement).getFileName();
+	ret:=fileName="$OMROOT\\\\Profiles\\\\SysML\\\\SysMLProfile_rpy\\\\SysML.sbs";  //TODO : move me in const file
+	if(not ret){
+		ret:=fileName="PredefinedTypes.sbs" and self.name.equalsIgnoreCase("flowPort"); //TODO : move me in const file 
+	};
+	if(not ret){
+		ret:=self.name.equalsIgnoreCase("block");//TODO sure of this case ? 
+	};
+	return ret;	
+}
+
+/**
+* @param set: a set of EObject
+*    return true if one of this EObject is a Rpy SysML Stereotype
+*/
+helper isContainingSysMLRpyStereotypeReference(set:Set(EObject)):Boolean{
+	var ret:Boolean:=false;
+	set->selectByType(IStereotype)->forEach(current){
+		if(current.isARpySysMLStereotype()){
+			ret:=true;
+			break;
+		}
+	};
+	return ret;
+}
+
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/.classpath b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/.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.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/.gitignore b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/.gitignore
new file mode 100644
index 0000000..d8f7cdc
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/.gitignore
@@ -0,0 +1,2 @@
+/bin/
+/output/
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/.project b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/.project
new file mode 100644
index 0000000..5eea4c2
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.interoperability.rpy.sysml.tests</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<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>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+	</natures>
+</projectDescription>
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/.settings/org.eclipse.jdt.core.prefs b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..b3aa6d6
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/.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.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
+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/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/.settings/org.eclipse.jdt.ui.prefs b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..954281d
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.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/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/.settings/org.eclipse.pde.api.tools.prefs b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 0000000..23fb95e
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,98 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Ignore
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Ignore
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Ignore
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=Enabled
+eclipse.preferences.version=1
+incompatible_api_component_version=Error
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Warning
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/AllTests Import RPY.launch b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/AllTests Import RPY.launch
new file mode 100644
index 0000000..9c6bf7c
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/AllTests Import RPY.launch
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">
+<booleanAttribute key="append.args" value="true"/>
+<booleanAttribute key="askclear" value="false"/>
+<booleanAttribute key="automaticAdd" value="true"/>
+<booleanAttribute key="automaticValidate" value="false"/>
+<stringAttribute key="bootstrap" value=""/>
+<stringAttribute key="checked" value="[NONE]"/>
+<booleanAttribute key="clearConfig" value="true"/>
+<booleanAttribute key="clearws" value="true"/>
+<booleanAttribute key="clearwslog" value="false"/>
+<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/pde-junit"/>
+<booleanAttribute key="default" value="true"/>
+<booleanAttribute key="includeOptional" value="true"/>
+<stringAttribute key="location" value="${workspace_loc}/../junit-workspace"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.papyrus.interoperability.rpy.sysml.tests/src/org/eclipse/papyrus/interoperability/rpy/sysml/tests/tests/AllTests.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.debug.ui.ATTR_CONSOLE_ENCODING" value="UTF-8"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
+<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
+<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
+<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
+<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.papyrus.interoperability.rpy.sysml.tests.tests.AllTests"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.papyrus.interoperability.rpy.sysml.tests"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-ea"/>
+<stringAttribute key="pde.version" value="3.3"/>
+<stringAttribute key="product" value="org.eclipse.platform.ide"/>
+<booleanAttribute key="run_in_ui_thread" value="true"/>
+<booleanAttribute key="show_selected_only" value="false"/>
+<booleanAttribute key="tracing" value="false"/>
+<booleanAttribute key="useCustomFeatures" value="false"/>
+<booleanAttribute key="useDefaultConfig" value="true"/>
+<booleanAttribute key="useDefaultConfigArea" value="false"/>
+<booleanAttribute key="useProduct" value="true"/>
+</launchConfiguration>
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/META-INF/MANIFEST.MF b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..77d2b9d
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,23 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %Bundle-Name
+Bundle-SymbolicName: org.eclipse.papyrus.interoperability.rpy.sysml.tests;singleton:=true
+Bundle-Version: 0.7.0.qualifier
+Bundle-Vendor: %Bundle-Vendor
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.junit;bundle-version="4.12.0",
+ org.eclipse.osgi,
+ org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0",
+ org.eclipse.jface,
+ org.eclipse.ui.workbench,
+ org.eclipse.papyrus.junit.utils;bundle-version="2.0.0",
+ org.eclipse.core.resources,
+ org.eclipse.uml2.uml;bundle-version="5.2.0",
+ org.eclipse.papyrus.sysml;bundle-version="1.2.0",
+ org.eclipse.papyrus.interoperability.rpy.tests;bundle-version="0.7.0",
+ org.eclipse.papyrus.interoperability.rpy;bundle-version="0.7.0",
+ org.eclipse.emf.compare;bundle-version="[3.3.0,4.0.0)"
+Bundle-Description: %Bundle-Description
+Bundle-Activator: org.eclipse.papyrus.interoperability.rpy.sysml.tests.Activator
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.papyrus.interoperability.rpy.sysml.tests.tests
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/OSGI-INF/l10n/bundle.properties b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/OSGI-INF/l10n/bundle.properties
new file mode 100644
index 0000000..f3ee2c7
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/OSGI-INF/l10n/bundle.properties
@@ -0,0 +1,4 @@
+#Properties file for org.eclipse.papyrus.interoperability.rpy.sysml.tests
+Bundle-Vendor = Eclipse Modeling Project
+Bundle-Name = Papyrus Interoperability Rpy SysML Tests (Incubation)
+Bundle-Description = This plugin provides tests for the import of SysML Model from Rpy Tool into Papyrus.
\ No newline at end of file
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/about.html b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/about.html
new file mode 100644
index 0000000..dd3c089
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.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>November 14, 2008</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/build.properties b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/build.properties
new file mode 100644
index 0000000..c084385
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               resources/,\
+               about.html,\
+               OSGI-INF/
+src.includes = about.html
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/AssociationLabelInBDD.PNG b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/AssociationLabelInBDD.PNG
new file mode 100644
index 0000000..a1dc587
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/AssociationLabelInBDD.PNG
Binary files differ
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/AssociationLabelInBDD.ehl b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/AssociationLabelInBDD.ehl
new file mode 100644
index 0000000..2c2ad5d
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/AssociationLabelInBDD.ehl
@@ -0,0 +1,3 @@
+[Op Calls]
+[Events]
+[Breakpoints]
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/AssociationLabelInBDD.rpw b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/AssociationLabelInBDD.rpw
new file mode 100644
index 0000000..622ac14
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/AssociationLabelInBDD.rpw
@@ -0,0 +1,96 @@
+I-Logix-RPY-Archive version 8.12.0 * 9728113
+{ CGEMdiWorkspace 
+	- stubList = { IRPYRawContainer 
+		- size = 0;
+	}
+	- isLoadOnDemand = 0;
+	- myViewsWithID = { IRPYRawContainer 
+		- size = 2;
+		- value = 
+		{ CGEMdiDiagramParams 
+			- _placement = { CCommon_WINDOWPLACEMENT 
+				- m_nLength = 44;
+				- m_nFlags = 2;
+				- m_showCmd = 3;
+				- m_ptMinPositionX = -1;
+				- m_ptMinPositionY = -1;
+				- m_ptMaxPositionX = -8;
+				- m_ptMaxPositionY = -30;
+				- m_nLeft = 150;
+				- m_nTop = 150;
+				- m_nRight = 1805;
+				- m_nBottom = 1013;
+			}
+			- _wasOpenedOnCloseProject = 1;
+			- _theDiagram = { IHandle 
+				- _m2Class = "IDiagram";
+				- _filename = "Default.sbs";
+				- _subsystem = "Default";
+				- _class = "block_0";
+				- _name = "block definition diagram_0";
+				- _id = GUID 736bd75c-1b60-46ed-9574-062a4e36d53c;
+			}
+			- _UpLeft = 1 -6 ;
+			- _DownRight = 1754 1039 ;
+			- _instanceName = "";
+			- m_nDiagramIndex = 1;
+			- m_bIsActiveView = 1;
+		}
+		{ CGEMdiDiagramParams 
+			- _placement = { CCommon_WINDOWPLACEMENT 
+				- m_nLength = 44;
+				- m_nFlags = 0;
+				- m_showCmd = 1;
+				- m_ptMinPositionX = -1;
+				- m_ptMinPositionY = -1;
+				- m_ptMaxPositionX = -8;
+				- m_ptMaxPositionY = -30;
+				- m_nLeft = 125;
+				- m_nTop = 125;
+				- m_nRight = 1780;
+				- m_nBottom = 988;
+			}
+			- _wasOpenedOnCloseProject = 1;
+			- _theDiagram = { IHandle 
+				- _m2Class = "IDiagram";
+				- _filename = "";
+				- _subsystem = "";
+				- _class = "";
+				- _name = "Model1";
+				- _id = GUID eca2ba6b-dd91-4498-b6ed-c518f08a426b;
+			}
+			- _UpLeft = 0 0 ;
+			- _DownRight = 1618 804 ;
+			- _instanceName = "";
+			- m_nDiagramIndex = 2;
+			- m_bIsActiveView = 0;
+		}
+	}
+	- _fullName = "D:\\git\\oxygen\\rpy\\org.eclipse.papyrus.interoperability.rpy.sysml.tests\\resources\\AssociationLabelInBDD\\AssociationLabelInBDD";
+	- m_SearchScopeList = { IRPYRawContainer 
+		- size = 0;
+	}
+	- bUsingCustomBrowserView = 0;
+	- bUsingQueries = 0;
+	- bApplyOnDiagrams = 0;
+	- liQueryIDs = { IRPYRawContainer 
+		- size = 0;
+	}
+	- liElementTypes = { IRPYRawContainer 
+		- size = 0;
+	}
+	- mapOslcRmCollections = { IRPYRawContainer 
+		- size = 0;
+	}
+
+	- m_favoritesTree = {
+		count=1;
+		{ - favoritesItem
+			generation = 0;
+			name = Favorites;
+			idOrFolder = folder;
+		}
+	}
+
+}
+
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/AssociationLabelInBDD.rpy b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/AssociationLabelInBDD.rpy
new file mode 100644
index 0000000..e62e823
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/AssociationLabelInBDD.rpy
@@ -0,0 +1,313 @@
+I-Logix-RPY-Archive version 8.12.0 C++ 9728113
+{ IProject 
+	- _id = GUID f51b65e6-ea56-4d78-a664-6a9267bef838;
+	- _myState = 8192;
+	- _name = "AssociationLabelInBDD";
+	- Stereotypes = { IRPYRawContainer 
+		- size = 1;
+		- value = 
+		{ IHandle 
+			- _m2Class = "IStereotype";
+			- _filename = "$OMROOT\\Profiles\\SysML\\SysMLProfile_rpy\\SysML.sbs";
+			- _subsystem = "SysML";
+			- _class = "";
+			- _name = "SysML";
+			- _id = GUID 052b8171-a32b-4f45-a829-5585f79f9deb;
+		}
+	}
+	- _modifiedTimeWeak = 10.7.2016::12:48:29;
+	- _UserColors = { IRPYRawContainer 
+		- size = 16;
+		- value = 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 
+	}
+	- _defaultSubsystem = { ISubsystemHandle 
+		- _m2Class = "ISubsystem";
+		- _filename = "Default.sbs";
+		- _subsystem = "";
+		- _class = "";
+		- _name = "Default";
+		- _id = GUID ba0065d3-97fa-4942-afb7-c05356f7957e;
+	}
+	- _component = { IHandle 
+		- _m2Class = "IComponent";
+		- _filename = "DefaultComponent.cmp";
+		- _subsystem = "";
+		- _class = "";
+		- _name = "DefaultComponent";
+		- _id = GUID fe403338-0f01-4054-a864-28fdb9591e5d;
+	}
+	- Multiplicities = { IRPYRawContainer 
+		- size = 4;
+		- value = 
+		{ IMultiplicityItem 
+			- _name = "1";
+			- _count = -1;
+		}
+		{ IMultiplicityItem 
+			- _name = "*";
+			- _count = -1;
+		}
+		{ IMultiplicityItem 
+			- _name = "0,1";
+			- _count = -1;
+		}
+		{ IMultiplicityItem 
+			- _name = "1..*";
+			- _count = -1;
+		}
+	}
+	- Subsystems = { IRPYRawContainer 
+		- size = 3;
+		- value = 
+		{ ISubsystem 
+			- fileName = "Default";
+			- _id = GUID ba0065d3-97fa-4942-afb7-c05356f7957e;
+		}
+		{ IProfile 
+			- fileName = "SysML";
+			- _persistAs = "$OMROOT\\Profiles\\SysML\\SysMLProfile_rpy";
+			- _id = GUID d9689b73-885e-44c4-896b-de43defa0a33;
+			- _isReference = 1;
+		}
+		{ IProfile 
+			- fileName = "SysMLPerspectives";
+			- _persistAs = "$OMROOT\\Settings\\SysMLPerspectives";
+			- _id = GUID ab285915-0966-4322-a029-ffac3e6ef3df;
+			- _isReference = 1;
+		}
+	}
+	- Diagrams = { IRPYRawContainer 
+		- size = 1;
+		- value = 
+		{ IDiagram 
+			- _id = GUID eca2ba6b-dd91-4498-b6ed-c518f08a426b;
+			- _myState = 8192;
+			- _properties = { IPropertyContainer 
+				- Subjects = { IRPYRawContainer 
+					- size = 1;
+					- value = 
+					{ IPropertySubject 
+						- _Name = "Format";
+						- Metaclasses = { IRPYRawContainer 
+							- size = 1;
+							- value = 
+							{ IPropertyMetaclass 
+								- _Name = "DiagramFrame";
+								- Properties = { IRPYRawContainer 
+									- size = 8;
+									- value = 
+									{ IProperty 
+										- _Name = "DefaultSize";
+										- _Value = "20,20,590,500";
+										- _Type = String;
+									}
+									{ IProperty 
+										- _Name = "Fill.FillColor";
+										- _Value = "247,247,247";
+										- _Type = Color;
+									}
+									{ IProperty 
+										- _Name = "Fill.Transparent_Fill";
+										- _Value = "0";
+										- _Type = Int;
+									}
+									{ IProperty 
+										- _Name = "Font.Font";
+										- _Value = "Tahoma";
+										- _Type = String;
+									}
+									{ IProperty 
+										- _Name = "Font.Size";
+										- _Value = "8";
+										- _Type = Int;
+									}
+									{ IProperty 
+										- _Name = "Font.Weight@Child.NameCompartment@Name";
+										- _Value = "700";
+										- _Type = Int;
+									}
+									{ IProperty 
+										- _Name = "Line.LineColor";
+										- _Value = "194,192,192";
+										- _Type = Color;
+									}
+									{ IProperty 
+										- _Name = "Line.LineWidth";
+										- _Value = "1";
+										- _Type = Int;
+									}
+								}
+							}
+						}
+					}
+				}
+			}
+			- _name = "Model1";
+			- Stereotypes = { IRPYRawContainer 
+				- size = 1;
+				- value = 
+				{ IHandle 
+					- _m2Class = "IStereotype";
+					- _filename = "$OMROOT\\Profiles\\SysML\\SysMLProfile_rpy\\SysML.sbs";
+					- _subsystem = "SysML::Diagrams";
+					- _class = "";
+					- _name = "Block Definition Diagram";
+					- _id = GUID 6c142614-3349-49e9-8c6b-0236be5f6b61;
+				}
+			}
+			- _modifiedTimeWeak = 1.2.1990::0:0:0;
+			- _lastModifiedTime = "10.7.2016::12:48:29";
+			- _graphicChart = { CGIClassChart 
+				- _id = GUID c669454a-c9e3-41fc-92cd-2de8c09ceda4;
+				- m_type = 0;
+				- m_pModelObject = { IHandle 
+					- _m2Class = "IDiagram";
+					- _id = GUID eca2ba6b-dd91-4498-b6ed-c518f08a426b;
+				}
+				- m_pParent = ;
+				- m_name = { CGIText 
+					- m_str = "";
+					- m_style = "Arial" 10 0 0 0 1 ;
+					- m_color = { IColor 
+						- m_fgColor = 0;
+						- m_bgColor = 0;
+						- m_bgFlag = 0;
+					}
+					- m_position = 1 0 0  ;
+					- m_nIdent = 0;
+					- m_bImplicitSetRectPoints = 0;
+					- m_nOrientationCtrlPt = 8;
+				}
+				- m_drawBehavior = 0;
+				- m_bIsPreferencesInitialized = 0;
+				- elementList = 2;
+				{ CGIClass 
+					- _id = GUID 3ea6f457-2ffa-4c66-aafb-8c0722c22fe8;
+					- m_type = 78;
+					- m_pModelObject = { IHandle 
+						- _m2Class = "IClass";
+						- _filename = "Default.sbs";
+						- _subsystem = "Default";
+						- _class = "";
+						- _name = "TopLevel";
+						- _id = GUID f64950d9-f4d9-4026-a95c-d2d8157d2df5;
+					}
+					- m_pParent = ;
+					- m_name = { CGIText 
+						- m_str = "TopLevel";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 5;
+					}
+					- m_drawBehavior = 0;
+					- m_bIsPreferencesInitialized = 0;
+					- m_AdditionalLabel = { CGIText 
+						- m_str = "";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 1;
+					}
+					- m_polygon = 0 ;
+					- m_nNameFormat = 0;
+					- m_nIsNameFormat = 0;
+					- Compartments = { IRPYRawContainer 
+						- size = 0;
+					}
+					- Attrs = { IRPYRawContainer 
+						- size = 0;
+					}
+					- Operations = { IRPYRawContainer 
+						- size = 0;
+					}
+				}
+				{ CGIDiagramFrame 
+					- _id = GUID e0d87cf0-e7b6-44ba-ba2a-3d26892eb45c;
+					- m_type = 203;
+					- m_pModelObject = { IHandle 
+						- _m2Class = "";
+					}
+					- m_pParent = GUID 3ea6f457-2ffa-4c66-aafb-8c0722c22fe8;
+					- m_name = { CGIText 
+						- m_str = "";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 8;
+					}
+					- m_drawBehavior = 4096;
+					- m_transform = 2.63889 0 0 3.63636 20 20 ;
+					- m_bIsPreferencesInitialized = 1;
+					- m_AdditionalLabel = { CGIText 
+						- m_str = "";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 1;
+					}
+					- m_polygon = 4 0 0  0 132  216 132  216 0  ;
+					- m_nNameFormat = 0;
+					- m_nIsNameFormat = 0;
+					- Compartments = { IRPYRawContainer 
+						- size = 0;
+					}
+				}
+				
+				- m_access = 'Z';
+				- m_modified = 'N';
+				- m_fileVersion = "";
+				- m_nModifyDate = 0;
+				- m_nCreateDate = 0;
+				- m_creator = "";
+				- m_bScaleWithZoom = 1;
+				- m_arrowStyle = 'S';
+				- m_pRoot = GUID 3ea6f457-2ffa-4c66-aafb-8c0722c22fe8;
+				- m_currentLeftTop = 0 0 ;
+				- m_currentRightBottom = 0 0 ;
+				- m_bFreezeCompartmentContent = 0;
+			}
+			- _defaultSubsystem = { IHandle 
+				- _m2Class = "ISubsystem";
+				- _filename = "Default.sbs";
+				- _subsystem = "";
+				- _class = "";
+				- _name = "Default";
+				- _id = GUID ba0065d3-97fa-4942-afb7-c05356f7957e;
+			}
+		}
+	}
+	- Components = { IRPYRawContainer 
+		- size = 1;
+		- value = 
+		{ IComponent 
+			- fileName = "DefaultComponent";
+			- _id = GUID fe403338-0f01-4054-a864-28fdb9591e5d;
+		}
+	}
+}
+
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/AssociationLabelInBDD.save b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/AssociationLabelInBDD.save
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/AssociationLabelInBDD.save
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/AssociationLabelInBDD_rpy/Default.sbs b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/AssociationLabelInBDD_rpy/Default.sbs
new file mode 100644
index 0000000..501e5df
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/AssociationLabelInBDD_rpy/Default.sbs
@@ -0,0 +1,1833 @@
+I-Logix-RPY-Archive version 8.12.0 C++ 9728113
+{ ISubsystem 
+	- _id = GUID ba0065d3-97fa-4942-afb7-c05356f7957e;
+	- _myState = 8192;
+	- _name = "Default";
+	- _modifiedTimeWeak = 10.7.2016::12:49:25;
+	- _lastID = 13;
+	- weakCGTime = 10.7.2016::12:49:25;
+	- strongCGTime = 1.2.1990::0:0:0;
+	- _defaultComposite = GUID f64950d9-f4d9-4026-a95c-d2d8157d2df5;
+	- _eventsBaseID = -1;
+	- Classes = { IRPYRawContainer 
+		- size = 8;
+		- value = 
+		{ IClass 
+			- _id = GUID f64950d9-f4d9-4026-a95c-d2d8157d2df5;
+			- _myState = 40960;
+			- _name = "TopLevel";
+			- _modifiedTimeWeak = 1.2.1990::0:0:0;
+			- weakCGTime = 1.2.1990::0:0:0;
+			- strongCGTime = 1.2.1990::0:0:0;
+			- _multiplicity = "";
+			- _itsStateChart = { IHandle 
+				- _m2Class = "";
+			}
+			- _classModifier = Unspecified;
+		}
+		{ IClass 
+			- _id = GUID 35a54e72-adff-49ad-8353-dc383070332f;
+			- _myState = 10240;
+			- _name = "block_0";
+			- Stereotypes = { IRPYRawContainer 
+				- size = 1;
+				- value = 
+				{ IHandle 
+					- _m2Class = "IStereotype";
+					- _filename = "$OMROOT\\Profiles\\SysML\\SysMLProfile_rpy\\SysML.sbs";
+					- _subsystem = "SysML::Blocks";
+					- _class = "";
+					- _name = "Block";
+					- _id = GUID f685432f-691e-4ff1-be70-4d09d19457e1;
+				}
+			}
+			- _modifiedTimeWeak = 10.7.2016::12:48:48;
+			- _lastID = 1;
+			- Declaratives = { IRPYRawContainer 
+				- size = 1;
+				- value = 
+				{ IDiagram 
+					- _id = GUID 736bd75c-1b60-46ed-9574-062a4e36d53c;
+					- _myState = 10240;
+					- _properties = { IPropertyContainer 
+						- Subjects = { IRPYRawContainer 
+							- size = 1;
+							- value = 
+							{ IPropertySubject 
+								- _Name = "Format";
+								- Metaclasses = { IRPYRawContainer 
+									- size = 3;
+									- value = 
+									{ IPropertyMetaclass 
+										- _Name = "Association";
+										- Properties = { IRPYRawContainer 
+											- size = 4;
+											- value = 
+											{ IProperty 
+												- _Name = "Font.Font";
+												- _Value = "Tahoma";
+												- _Type = String;
+											}
+											{ IProperty 
+												- _Name = "Font.Size";
+												- _Value = "8";
+												- _Type = Int;
+											}
+											{ IProperty 
+												- _Name = "Line.LineColor";
+												- _Value = "128,128,128";
+												- _Type = Color;
+											}
+											{ IProperty 
+												- _Name = "Line.LineWidth";
+												- _Value = "1";
+												- _Type = Int;
+											}
+										}
+									}
+									{ IPropertyMetaclass 
+										- _Name = "Class";
+										- Properties = { IRPYRawContainer 
+											- size = 8;
+											- value = 
+											{ IProperty 
+												- _Name = "DefaultSize";
+												- _Value = "0,34,84,148";
+												- _Type = String;
+											}
+											{ IProperty 
+												- _Name = "Fill.FillColor";
+												- _Value = "255,255,255";
+												- _Type = Color;
+											}
+											{ IProperty 
+												- _Name = "Font.Font";
+												- _Value = "Tahoma";
+												- _Type = String;
+											}
+											{ IProperty 
+												- _Name = "Font.Size";
+												- _Value = "8";
+												- _Type = Int;
+											}
+											{ IProperty 
+												- _Name = "Font.Weight@Child.NameCompartment@Name";
+												- _Value = "700";
+												- _Type = Int;
+											}
+											{ IProperty 
+												- _Name = "Line.LineColor";
+												- _Value = "109,163,217";
+												- _Type = Color;
+											}
+											{ IProperty 
+												- _Name = "Line.LineStyle";
+												- _Value = "0";
+												- _Type = Int;
+											}
+											{ IProperty 
+												- _Name = "Line.LineWidth";
+												- _Value = "1";
+												- _Type = Int;
+											}
+										}
+									}
+									{ IPropertyMetaclass 
+										- _Name = "DiagramFrame";
+										- Properties = { IRPYRawContainer 
+											- size = 8;
+											- value = 
+											{ IProperty 
+												- _Name = "DefaultSize";
+												- _Value = "20,20,590,500";
+												- _Type = String;
+											}
+											{ IProperty 
+												- _Name = "Fill.FillColor";
+												- _Value = "247,247,247";
+												- _Type = Color;
+											}
+											{ IProperty 
+												- _Name = "Fill.Transparent_Fill";
+												- _Value = "0";
+												- _Type = Int;
+											}
+											{ IProperty 
+												- _Name = "Font.Font";
+												- _Value = "Tahoma";
+												- _Type = String;
+											}
+											{ IProperty 
+												- _Name = "Font.Size";
+												- _Value = "8";
+												- _Type = Int;
+											}
+											{ IProperty 
+												- _Name = "Font.Weight@Child.NameCompartment@Name";
+												- _Value = "700";
+												- _Type = Int;
+											}
+											{ IProperty 
+												- _Name = "Line.LineColor";
+												- _Value = "194,192,192";
+												- _Type = Color;
+											}
+											{ IProperty 
+												- _Name = "Line.LineWidth";
+												- _Value = "1";
+												- _Type = Int;
+											}
+										}
+									}
+								}
+							}
+						}
+					}
+					- _name = "block definition diagram_0";
+					- Stereotypes = { IRPYRawContainer 
+						- size = 1;
+						- value = 
+						{ IHandle 
+							- _m2Class = "IStereotype";
+							- _filename = "$OMROOT\\Profiles\\SysML\\SysMLProfile_rpy\\SysML.sbs";
+							- _subsystem = "SysML::Diagrams";
+							- _class = "";
+							- _name = "Block Definition Diagram";
+							- _id = GUID 6c142614-3349-49e9-8c6b-0236be5f6b61;
+						}
+					}
+					- _modifiedTimeWeak = 1.2.1990::0:0:0;
+					- _lastModifiedTime = "10.7.2016::12:50:15";
+					- _graphicChart = { CGIClassChart 
+						- _id = GUID 13997dc7-83e0-4ec9-87a0-7b03bb70150f;
+						- m_type = 0;
+						- m_pModelObject = { IHandle 
+							- _m2Class = "IDiagram";
+							- _id = GUID 736bd75c-1b60-46ed-9574-062a4e36d53c;
+						}
+						- m_pParent = ;
+						- m_name = { CGIText 
+							- m_str = "";
+							- m_style = "Arial" 10 0 0 0 1 ;
+							- m_color = { IColor 
+								- m_fgColor = 0;
+								- m_bgColor = 0;
+								- m_bgFlag = 0;
+							}
+							- m_position = 1 0 0  ;
+							- m_nIdent = 0;
+							- m_bImplicitSetRectPoints = 0;
+							- m_nOrientationCtrlPt = 8;
+						}
+						- m_drawBehavior = 0;
+						- m_bIsPreferencesInitialized = 0;
+						- elementList = 11;
+						{ CGIClass 
+							- _id = GUID d7dc0859-1143-477c-a112-97a697cdf378;
+							- m_type = 78;
+							- m_pModelObject = { IHandle 
+								- _m2Class = "IClass";
+								- _id = GUID f64950d9-f4d9-4026-a95c-d2d8157d2df5;
+							}
+							- m_pParent = ;
+							- m_name = { CGIText 
+								- m_str = "TopLevel";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 0;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 5;
+							}
+							- m_drawBehavior = 0;
+							- m_bIsPreferencesInitialized = 0;
+							- m_AdditionalLabel = { CGIText 
+								- m_str = "";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 0;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 1;
+							}
+							- m_polygon = 0 ;
+							- m_nNameFormat = 0;
+							- m_nIsNameFormat = 0;
+							- Compartments = { IRPYRawContainer 
+								- size = 0;
+							}
+							- Attrs = { IRPYRawContainer 
+								- size = 0;
+							}
+							- Operations = { IRPYRawContainer 
+								- size = 0;
+							}
+						}
+						{ CGIDiagramFrame 
+							- _id = GUID 8a2cbaeb-45ee-4506-a0fe-674e92591c9b;
+							- m_type = 203;
+							- m_pModelObject = { IHandle 
+								- _m2Class = "";
+							}
+							- m_pParent = GUID d7dc0859-1143-477c-a112-97a697cdf378;
+							- m_name = { CGIText 
+								- m_str = "";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 0;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 8;
+							}
+							- m_drawBehavior = 4096;
+							- m_transform = 2.69444 0 0 3.78788 8 0 ;
+							- m_bIsPreferencesInitialized = 1;
+							- m_AdditionalLabel = { CGIText 
+								- m_str = "";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 0;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 1;
+							}
+							- m_polygon = 4 0 0  0 132  216 132  216 0  ;
+							- m_nNameFormat = 0;
+							- m_nIsNameFormat = 0;
+							- Compartments = { IRPYRawContainer 
+								- size = 0;
+							}
+						}
+						{ CGIClass 
+							- _id = GUID 73bb712a-2b3c-4602-919d-155024210555;
+							- _properties = { IPropertyContainer 
+								- Subjects = { IRPYRawContainer 
+									- size = 1;
+									- value = 
+									{ IPropertySubject 
+										- _Name = "ObjectModelGe";
+										- Metaclasses = { IRPYRawContainer 
+											- size = 2;
+											- value = 
+											{ IPropertyMetaclass 
+												- _Name = "Block";
+												- Properties = { IRPYRawContainer 
+													- size = 1;
+													- value = 
+													{ IProperty 
+														- _Name = "Compartments";
+														- _Value = "";
+														- _Type = MultiLine;
+													}
+												}
+											}
+											{ IPropertyMetaclass 
+												- _Name = "Class";
+												- Properties = { IRPYRawContainer 
+													- size = 1;
+													- value = 
+													{ IProperty 
+														- _Name = "Compartments";
+														- _Value = "";
+														- _Type = MultiLine;
+													}
+												}
+											}
+										}
+									}
+								}
+							}
+							- m_type = 87;
+							- m_pModelObject = { IHandle 
+								- _m2Class = "IClass";
+								- _id = GUID 03471a00-835c-4171-8043-f651f32212cb;
+							}
+							- m_pParent = GUID d7dc0859-1143-477c-a112-97a697cdf378;
+							- m_name = { CGIText 
+								- m_str = "block_2";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 0;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 5;
+							}
+							- m_drawBehavior = 2056;
+							- m_transform = 0.0793201 0 0 0.101604 38.8414 -14.4278 ;
+							- m_bIsPreferencesInitialized = 1;
+							- m_AdditionalLabel = { CGIText 
+								- m_str = "";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 0;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 1;
+							}
+							- m_polygon = 4 2 329  2 1451  1061 1451  1061 329  ;
+							- m_nNameFormat = 0;
+							- m_nIsNameFormat = 0;
+							- frameset = "<frameset rows=50%,50%>
+<frame name=AttributeListCompartment>
+<frame name=OperationListCompartment>";
+							- Compartments = { IRPYRawContainer 
+								- size = 2;
+								- value = 
+								{ CGICompartment 
+									- _id = GUID 67ad6e62-96bb-44a6-babd-026bcacc315f;
+									- m_name = "Attribute";
+									- m_displayOption = Explicit;
+									- m_bShowInherited = 0;
+									- m_bOrdered = 0;
+									- Items = { IRPYRawContainer 
+										- size = 0;
+									}
+								}
+								{ CGICompartment 
+									- _id = GUID 1e6664b7-4bea-44a2-9281-f2a69a42aef4;
+									- m_name = "Operation";
+									- m_displayOption = Explicit;
+									- m_bShowInherited = 0;
+									- m_bOrdered = 0;
+									- Items = { IRPYRawContainer 
+										- size = 0;
+									}
+								}
+							}
+							- Attrs = { IRPYRawContainer 
+								- size = 0;
+							}
+							- Operations = { IRPYRawContainer 
+								- size = 0;
+							}
+						}
+						{ CGIClass 
+							- _id = GUID d521ace8-14e3-4743-9ba2-f488eddb8302;
+							- _properties = { IPropertyContainer 
+								- Subjects = { IRPYRawContainer 
+									- size = 1;
+									- value = 
+									{ IPropertySubject 
+										- _Name = "ObjectModelGe";
+										- Metaclasses = { IRPYRawContainer 
+											- size = 2;
+											- value = 
+											{ IPropertyMetaclass 
+												- _Name = "Block";
+												- Properties = { IRPYRawContainer 
+													- size = 1;
+													- value = 
+													{ IProperty 
+														- _Name = "Compartments";
+														- _Value = "";
+														- _Type = MultiLine;
+													}
+												}
+											}
+											{ IPropertyMetaclass 
+												- _Name = "Class";
+												- Properties = { IRPYRawContainer 
+													- size = 1;
+													- value = 
+													{ IProperty 
+														- _Name = "Compartments";
+														- _Value = "";
+														- _Type = MultiLine;
+													}
+												}
+											}
+										}
+									}
+								}
+							}
+							- m_type = 87;
+							- m_pModelObject = { IHandle 
+								- _m2Class = "IClass";
+								- _id = GUID 7d8cc169-ad0d-4080-adeb-d238bb442a4f;
+							}
+							- m_pParent = GUID d7dc0859-1143-477c-a112-97a697cdf378;
+							- m_name = { CGIText 
+								- m_str = "block_4";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 0;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 5;
+							}
+							- m_drawBehavior = 2056;
+							- m_transform = 0.0793201 0 0 0.101604 30.8414 100.572 ;
+							- m_bIsPreferencesInitialized = 1;
+							- m_AdditionalLabel = { CGIText 
+								- m_str = "";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 0;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 1;
+							}
+							- m_polygon = 4 2 329  2 1451  1061 1451  1061 329  ;
+							- m_nNameFormat = 0;
+							- m_nIsNameFormat = 0;
+							- frameset = "<frameset rows=50%,50%>
+<frame name=AttributeListCompartment>
+<frame name=OperationListCompartment>";
+							- Compartments = { IRPYRawContainer 
+								- size = 2;
+								- value = 
+								{ CGICompartment 
+									- _id = GUID 72589ee4-8e66-423e-bf69-ae7cc12013b7;
+									- m_name = "Attribute";
+									- m_displayOption = Explicit;
+									- m_bShowInherited = 0;
+									- m_bOrdered = 0;
+									- Items = { IRPYRawContainer 
+										- size = 0;
+									}
+								}
+								{ CGICompartment 
+									- _id = GUID 3fc2a522-dc2c-49d6-98d6-4fa53a7386d4;
+									- m_name = "Operation";
+									- m_displayOption = Explicit;
+									- m_bShowInherited = 0;
+									- m_bOrdered = 0;
+									- Items = { IRPYRawContainer 
+										- size = 0;
+									}
+								}
+							}
+							- Attrs = { IRPYRawContainer 
+								- size = 0;
+							}
+							- Operations = { IRPYRawContainer 
+								- size = 0;
+							}
+						}
+						{ CGIClass 
+							- _id = GUID 801a8943-a67b-469f-9319-bd4686c7a5ae;
+							- _properties = { IPropertyContainer 
+								- Subjects = { IRPYRawContainer 
+									- size = 1;
+									- value = 
+									{ IPropertySubject 
+										- _Name = "ObjectModelGe";
+										- Metaclasses = { IRPYRawContainer 
+											- size = 2;
+											- value = 
+											{ IPropertyMetaclass 
+												- _Name = "Block";
+												- Properties = { IRPYRawContainer 
+													- size = 1;
+													- value = 
+													{ IProperty 
+														- _Name = "Compartments";
+														- _Value = "";
+														- _Type = MultiLine;
+													}
+												}
+											}
+											{ IPropertyMetaclass 
+												- _Name = "Class";
+												- Properties = { IRPYRawContainer 
+													- size = 1;
+													- value = 
+													{ IProperty 
+														- _Name = "Compartments";
+														- _Value = "";
+														- _Type = MultiLine;
+													}
+												}
+											}
+										}
+									}
+								}
+							}
+							- m_type = 87;
+							- m_pModelObject = { IHandle 
+								- _m2Class = "IClass";
+								- _id = GUID 3e3cb68c-7785-43f6-b578-513096c60b74;
+							}
+							- m_pParent = GUID d7dc0859-1143-477c-a112-97a697cdf378;
+							- m_name = { CGIText 
+								- m_str = "block_6";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 0;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 5;
+							}
+							- m_drawBehavior = 2056;
+							- m_transform = 0.0793201 0 0 0.101604 17.8414 232.572 ;
+							- m_bIsPreferencesInitialized = 1;
+							- m_AdditionalLabel = { CGIText 
+								- m_str = "";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 0;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 1;
+							}
+							- m_polygon = 4 2 329  2 1451  1061 1451  1061 329  ;
+							- m_nNameFormat = 0;
+							- m_nIsNameFormat = 0;
+							- frameset = "<frameset rows=50%,50%>
+<frame name=AttributeListCompartment>
+<frame name=OperationListCompartment>";
+							- Compartments = { IRPYRawContainer 
+								- size = 2;
+								- value = 
+								{ CGICompartment 
+									- _id = GUID 76367929-04aa-42ad-beb1-cd8d0ffe9e6b;
+									- m_name = "Attribute";
+									- m_displayOption = Explicit;
+									- m_bShowInherited = 0;
+									- m_bOrdered = 0;
+									- Items = { IRPYRawContainer 
+										- size = 0;
+									}
+								}
+								{ CGICompartment 
+									- _id = GUID 5543d5a3-52f1-4f2a-addd-c7b84fd89829;
+									- m_name = "Operation";
+									- m_displayOption = Explicit;
+									- m_bShowInherited = 0;
+									- m_bOrdered = 0;
+									- Items = { IRPYRawContainer 
+										- size = 0;
+									}
+								}
+							}
+							- Attrs = { IRPYRawContainer 
+								- size = 0;
+							}
+							- Operations = { IRPYRawContainer 
+								- size = 0;
+							}
+						}
+						{ CGIClass 
+							- _id = GUID adbfc005-ad1a-4dce-a3f0-00a27160d462;
+							- _properties = { IPropertyContainer 
+								- Subjects = { IRPYRawContainer 
+									- size = 1;
+									- value = 
+									{ IPropertySubject 
+										- _Name = "ObjectModelGe";
+										- Metaclasses = { IRPYRawContainer 
+											- size = 2;
+											- value = 
+											{ IPropertyMetaclass 
+												- _Name = "Block";
+												- Properties = { IRPYRawContainer 
+													- size = 1;
+													- value = 
+													{ IProperty 
+														- _Name = "Compartments";
+														- _Value = "";
+														- _Type = MultiLine;
+													}
+												}
+											}
+											{ IPropertyMetaclass 
+												- _Name = "Class";
+												- Properties = { IRPYRawContainer 
+													- size = 1;
+													- value = 
+													{ IProperty 
+														- _Name = "Compartments";
+														- _Value = "";
+														- _Type = MultiLine;
+													}
+												}
+											}
+										}
+									}
+								}
+							}
+							- m_type = 87;
+							- m_pModelObject = { IHandle 
+								- _m2Class = "IClass";
+								- _id = GUID 9cc9b534-ff59-49f6-a19e-d7fa913d3d98;
+							}
+							- m_pParent = GUID d7dc0859-1143-477c-a112-97a697cdf378;
+							- m_name = { CGIText 
+								- m_str = "block_8";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 0;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 5;
+							}
+							- m_drawBehavior = 2056;
+							- m_transform = 0.0793201 0 0 0.101604 323.841 -33.4278 ;
+							- m_bIsPreferencesInitialized = 1;
+							- m_AdditionalLabel = { CGIText 
+								- m_str = "";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 0;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 1;
+							}
+							- m_polygon = 4 2 329  2 1451  1061 1451  1061 329  ;
+							- m_nNameFormat = 0;
+							- m_nIsNameFormat = 0;
+							- frameset = "<frameset rows=50%,50%>
+<frame name=AttributeListCompartment>
+<frame name=OperationListCompartment>";
+							- Compartments = { IRPYRawContainer 
+								- size = 2;
+								- value = 
+								{ CGICompartment 
+									- _id = GUID 596ba5a3-9330-49b3-9fe8-e948e59434fe;
+									- m_name = "Attribute";
+									- m_displayOption = Explicit;
+									- m_bShowInherited = 0;
+									- m_bOrdered = 0;
+									- Items = { IRPYRawContainer 
+										- size = 0;
+									}
+								}
+								{ CGICompartment 
+									- _id = GUID 55b618b2-b703-46cd-accd-ca3236857feb;
+									- m_name = "Operation";
+									- m_displayOption = Explicit;
+									- m_bShowInherited = 0;
+									- m_bOrdered = 0;
+									- Items = { IRPYRawContainer 
+										- size = 0;
+									}
+								}
+							}
+							- Attrs = { IRPYRawContainer 
+								- size = 0;
+							}
+							- Operations = { IRPYRawContainer 
+								- size = 0;
+							}
+						}
+						{ CGIClass 
+							- _id = GUID a931e461-65b1-4b24-87f5-bddbc91967be;
+							- _properties = { IPropertyContainer 
+								- Subjects = { IRPYRawContainer 
+									- size = 1;
+									- value = 
+									{ IPropertySubject 
+										- _Name = "ObjectModelGe";
+										- Metaclasses = { IRPYRawContainer 
+											- size = 2;
+											- value = 
+											{ IPropertyMetaclass 
+												- _Name = "Block";
+												- Properties = { IRPYRawContainer 
+													- size = 1;
+													- value = 
+													{ IProperty 
+														- _Name = "Compartments";
+														- _Value = "";
+														- _Type = MultiLine;
+													}
+												}
+											}
+											{ IPropertyMetaclass 
+												- _Name = "Class";
+												- Properties = { IRPYRawContainer 
+													- size = 1;
+													- value = 
+													{ IProperty 
+														- _Name = "Compartments";
+														- _Value = "";
+														- _Type = MultiLine;
+													}
+												}
+											}
+										}
+									}
+								}
+							}
+							- m_type = 87;
+							- m_pModelObject = { IHandle 
+								- _m2Class = "IClass";
+								- _id = GUID ea7e44f5-6cf2-474a-84fe-6a2576a87a46;
+							}
+							- m_pParent = GUID d7dc0859-1143-477c-a112-97a697cdf378;
+							- m_name = { CGIText 
+								- m_str = "block_10";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 0;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 5;
+							}
+							- m_drawBehavior = 2056;
+							- m_transform = 0.0793201 0 0 0.101604 281.841 130.572 ;
+							- m_bIsPreferencesInitialized = 1;
+							- m_AdditionalLabel = { CGIText 
+								- m_str = "";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 0;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 1;
+							}
+							- m_polygon = 4 2 329  2 1451  1061 1451  1061 329  ;
+							- m_nNameFormat = 0;
+							- m_nIsNameFormat = 0;
+							- frameset = "<frameset rows=50%,50%>
+<frame name=AttributeListCompartment>
+<frame name=OperationListCompartment>";
+							- Compartments = { IRPYRawContainer 
+								- size = 2;
+								- value = 
+								{ CGICompartment 
+									- _id = GUID 3f50b57f-a703-4f29-a13c-c06cc57b9cdc;
+									- m_name = "Attribute";
+									- m_displayOption = Explicit;
+									- m_bShowInherited = 0;
+									- m_bOrdered = 0;
+									- Items = { IRPYRawContainer 
+										- size = 0;
+									}
+								}
+								{ CGICompartment 
+									- _id = GUID f8dfe623-59b5-426a-8dda-dbca69088a65;
+									- m_name = "Operation";
+									- m_displayOption = Explicit;
+									- m_bShowInherited = 0;
+									- m_bOrdered = 0;
+									- Items = { IRPYRawContainer 
+										- size = 0;
+									}
+								}
+							}
+							- Attrs = { IRPYRawContainer 
+								- size = 0;
+							}
+							- Operations = { IRPYRawContainer 
+								- size = 0;
+							}
+						}
+						{ CGIClass 
+							- _id = GUID 9ed7cce0-8380-4401-a5c9-2109eaf580c9;
+							- _properties = { IPropertyContainer 
+								- Subjects = { IRPYRawContainer 
+									- size = 1;
+									- value = 
+									{ IPropertySubject 
+										- _Name = "ObjectModelGe";
+										- Metaclasses = { IRPYRawContainer 
+											- size = 2;
+											- value = 
+											{ IPropertyMetaclass 
+												- _Name = "Block";
+												- Properties = { IRPYRawContainer 
+													- size = 1;
+													- value = 
+													{ IProperty 
+														- _Name = "Compartments";
+														- _Value = "";
+														- _Type = MultiLine;
+													}
+												}
+											}
+											{ IPropertyMetaclass 
+												- _Name = "Class";
+												- Properties = { IRPYRawContainer 
+													- size = 1;
+													- value = 
+													{ IProperty 
+														- _Name = "Compartments";
+														- _Value = "";
+														- _Type = MultiLine;
+													}
+												}
+											}
+										}
+									}
+								}
+							}
+							- m_type = 87;
+							- m_pModelObject = { IHandle 
+								- _m2Class = "IClass";
+								- _id = GUID 07cdc38f-fb9e-4260-8f95-06987641e2af;
+							}
+							- m_pParent = GUID d7dc0859-1143-477c-a112-97a697cdf378;
+							- m_name = { CGIText 
+								- m_str = "block_12";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 0;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 5;
+							}
+							- m_drawBehavior = 2056;
+							- m_transform = 0.0793201 0 0 0.101604 415.841 262.572 ;
+							- m_bIsPreferencesInitialized = 1;
+							- m_AdditionalLabel = { CGIText 
+								- m_str = "";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 0;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 1;
+							}
+							- m_polygon = 4 2 329  2 1451  1061 1451  1061 329  ;
+							- m_nNameFormat = 0;
+							- m_nIsNameFormat = 0;
+							- frameset = "<frameset rows=50%,50%>
+<frame name=AttributeListCompartment>
+<frame name=OperationListCompartment>";
+							- Compartments = { IRPYRawContainer 
+								- size = 2;
+								- value = 
+								{ CGICompartment 
+									- _id = GUID b3fe1429-0a43-416c-aae6-040414be4c27;
+									- m_name = "Attribute";
+									- m_displayOption = Explicit;
+									- m_bShowInherited = 0;
+									- m_bOrdered = 0;
+									- Items = { IRPYRawContainer 
+										- size = 0;
+									}
+								}
+								{ CGICompartment 
+									- _id = GUID 29ca7a7e-36a8-4fee-8729-d3240f6fd71c;
+									- m_name = "Operation";
+									- m_displayOption = Explicit;
+									- m_bShowInherited = 0;
+									- m_bOrdered = 0;
+									- Items = { IRPYRawContainer 
+										- size = 0;
+									}
+								}
+							}
+							- Attrs = { IRPYRawContainer 
+								- size = 0;
+							}
+							- Operations = { IRPYRawContainer 
+								- size = 0;
+							}
+						}
+						{ CGIAssociationEnd 
+							- _id = GUID e9e92068-83e9-4639-8dde-3cde55dfc486;
+							- _properties = { IPropertyContainer 
+								- Subjects = { IRPYRawContainer 
+									- size = 1;
+									- value = 
+									{ IPropertySubject 
+										- _Name = "General";
+										- Metaclasses = { IRPYRawContainer 
+											- size = 1;
+											- value = 
+											{ IPropertyMetaclass 
+												- _Name = "Graphics";
+												- Properties = { IRPYRawContainer 
+													- size = 1;
+													- value = 
+													{ IProperty 
+														- _Name = "ShowLabels";
+														- _Value = "False";
+														- _Type = Bool;
+													}
+												}
+											}
+										}
+									}
+								}
+							}
+							- m_type = 92;
+							- m_pModelObject = { IHandle 
+								- _m2Class = "IAssociationEnd";
+								- _id = GUID a558b7ad-9545-4720-b02a-d3587c4ca77f;
+							}
+							- m_pParent = ;
+							- m_name = { CGIText 
+								- m_str = "";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 0;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 8;
+							}
+							- m_drawBehavior = 4096;
+							- m_bIsPreferencesInitialized = 1;
+							- m_pSource = GUID 73bb712a-2b3c-4602-919d-155024210555;
+							- m_sourceType = 'F';
+							- m_pTarget = GUID adbfc005-ad1a-4dce-a3f0-00a27160d462;
+							- m_targetType = 'T';
+							- m_direction = ' ';
+							- m_rpn = { CGIText 
+								- m_str = "";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 0;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 7;
+							}
+							- m_arrow = 2 223 48  223 23  ;
+							- m_anglePoint1 = 0 0 ;
+							- m_anglePoint2 = 0 0 ;
+							- m_line_style = 2;
+							- m_SourcePort = 1061 614 ;
+							- m_TargetPort = 2 555 ;
+							- m_pInverseModelObject = { IAssociationEndHandle 
+								- _m2Class = "IAssociationEnd";
+								- _id = GUID 3a2cdeb2-2c01-47e0-87d0-3ac37dca06b3;
+							}
+							- m_pInstance = { IObjectLinkHandle 
+								- _m2Class = "";
+							}
+							- m_pInverseInstance = { IObjectLinkHandle 
+								- _m2Class = "";
+							}
+							- m_bShowSourceMultiplicity = 1;
+							- m_bShowSourceRole = 1;
+							- m_bShowTargetMultiplicity = 1;
+							- m_bShowTargetRole = 1;
+							- m_bShowLinkName = 1;
+							- m_bShowSpecificType = 0;
+							- m_bInstance = 0;
+							- m_bShowQualifier1 = 1;
+							- m_bShowQualifier2 = 1;
+							- m_sourceRole = { CGIText 
+								- m_str = "itsBlock_2";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 2;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 0;
+							}
+							- m_targetRole = { CGIText 
+								- m_str = "itsBlock_8";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 3;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 2;
+							}
+							- m_sourceMultiplicity = { CGIText 
+								- m_str = "1";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 4;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 6;
+							}
+							- m_targetMultiplicity = { CGIText 
+								- m_str = "1";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 5;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 4;
+							}
+							- m_sourceQualifier = { CGIText 
+								- m_str = "";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 6;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 8;
+							}
+							- m_targetQualifier = { CGIText 
+								- m_str = "";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 7;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 8;
+							}
+							- m_specificType = symmetric_type;
+						}
+						{ CGIAssociationEnd 
+							- _id = GUID 7bb6a4ec-13d2-458d-a0e5-d679cdf642a6;
+							- _properties = { IPropertyContainer 
+								- Subjects = { IRPYRawContainer 
+									- size = 1;
+									- value = 
+									{ IPropertySubject 
+										- _Name = "General";
+										- Metaclasses = { IRPYRawContainer 
+											- size = 1;
+											- value = 
+											{ IPropertyMetaclass 
+												- _Name = "Graphics";
+												- Properties = { IRPYRawContainer 
+													- size = 1;
+													- value = 
+													{ IProperty 
+														- _Name = "ShowLabels";
+														- _Value = "False";
+														- _Type = Bool;
+													}
+												}
+											}
+										}
+									}
+								}
+							}
+							- m_type = 92;
+							- m_pModelObject = { IHandle 
+								- _m2Class = "IAssociationEnd";
+								- _id = GUID 7aaf59da-e8f5-486a-b569-2d5f7d2f08ca;
+							}
+							- m_pParent = ;
+							- m_name = { CGIText 
+								- m_str = "";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 0;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 8;
+							}
+							- m_drawBehavior = 4096;
+							- m_bIsPreferencesInitialized = 1;
+							- m_pSource = GUID d521ace8-14e3-4743-9ba2-f488eddb8302;
+							- m_sourceType = 'F';
+							- m_pTarget = GUID a931e461-65b1-4b24-87f5-bddbc91967be;
+							- m_targetType = 'T';
+							- m_direction = ' ';
+							- m_rpn = { CGIText 
+								- m_str = "";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 0;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 7;
+							}
+							- m_arrow = 2 198 173  198 246  ;
+							- m_anglePoint1 = 0 0 ;
+							- m_anglePoint2 = 0 0 ;
+							- m_line_style = 2;
+							- m_SourcePort = 1061 713 ;
+							- m_TargetPort = 2 1136 ;
+							- m_pInverseModelObject = { IAssociationEndHandle 
+								- _m2Class = "IAssociationEnd";
+								- _id = GUID 4f9bf0b3-ab70-4abe-a25d-cc47793a433f;
+							}
+							- m_pInstance = { IObjectLinkHandle 
+								- _m2Class = "";
+							}
+							- m_pInverseInstance = { IObjectLinkHandle 
+								- _m2Class = "";
+							}
+							- m_bShowSourceMultiplicity = 1;
+							- m_bShowSourceRole = 1;
+							- m_bShowTargetMultiplicity = 0;
+							- m_bShowTargetRole = 0;
+							- m_bShowLinkName = 1;
+							- m_bShowSpecificType = 0;
+							- m_bInstance = 0;
+							- m_bShowQualifier1 = 0;
+							- m_bShowQualifier2 = 1;
+							- m_sourceRole = { CGIText 
+								- m_str = "itsBlock_4";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 2;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 0;
+							}
+							- m_targetRole = { CGIText 
+								- m_str = "";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 3;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 2;
+							}
+							- m_sourceMultiplicity = { CGIText 
+								- m_str = "1";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 4;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 6;
+							}
+							- m_targetMultiplicity = { CGIText 
+								- m_str = "";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 5;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 4;
+							}
+							- m_sourceQualifier = { CGIText 
+								- m_str = "";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 6;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 8;
+							}
+							- m_targetQualifier = { CGIText 
+								- m_str = "";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 7;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 8;
+							}
+							- m_specificType = symmetric_type;
+						}
+						{ CGIAssociationEnd 
+							- _id = GUID 5c979a95-9263-4761-ba39-c093eefda52a;
+							- _properties = { IPropertyContainer 
+								- Subjects = { IRPYRawContainer 
+									- size = 1;
+									- value = 
+									{ IPropertySubject 
+										- _Name = "General";
+										- Metaclasses = { IRPYRawContainer 
+											- size = 1;
+											- value = 
+											{ IPropertyMetaclass 
+												- _Name = "Graphics";
+												- Properties = { IRPYRawContainer 
+													- size = 1;
+													- value = 
+													{ IProperty 
+														- _Name = "ShowLabels";
+														- _Value = "False";
+														- _Type = Bool;
+													}
+												}
+											}
+										}
+									}
+								}
+							}
+							- m_type = 92;
+							- m_pModelObject = { IHandle 
+								- _m2Class = "IAssociationEnd";
+								- _id = GUID 1a2ad52a-4f33-4ba9-897f-d4351caa1c50;
+							}
+							- m_pParent = ;
+							- m_name = { CGIText 
+								- m_str = "";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 0;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 8;
+							}
+							- m_drawBehavior = 4096;
+							- m_bIsPreferencesInitialized = 1;
+							- m_pSource = GUID 801a8943-a67b-469f-9319-bd4686c7a5ae;
+							- m_sourceType = 'F';
+							- m_pTarget = GUID 9ed7cce0-8380-4401-a5c9-2109eaf580c9;
+							- m_targetType = 'T';
+							- m_direction = ' ';
+							- m_rpn = { CGIText 
+								- m_str = "";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 0;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 7;
+							}
+							- m_arrow = 2 259 306  259 391  ;
+							- m_anglePoint1 = 0 0 ;
+							- m_anglePoint2 = 0 0 ;
+							- m_line_style = 2;
+							- m_SourcePort = 1061 723 ;
+							- m_TargetPort = 2 1264 ;
+							- m_pInverseModelObject = { IAssociationEndHandle 
+								- _m2Class = "IAssociationEnd";
+								- _id = GUID ab20929c-ce81-4918-b605-f040f0cec7c7;
+							}
+							- m_pInstance = { IObjectLinkHandle 
+								- _m2Class = "";
+							}
+							- m_pInverseInstance = { IObjectLinkHandle 
+								- _m2Class = "";
+							}
+							- m_bShowSourceMultiplicity = 0;
+							- m_bShowSourceRole = 1;
+							- m_bShowTargetMultiplicity = 1;
+							- m_bShowTargetRole = 1;
+							- m_bShowLinkName = 1;
+							- m_bShowSpecificType = 0;
+							- m_bInstance = 0;
+							- m_bShowQualifier1 = 1;
+							- m_bShowQualifier2 = 1;
+							- m_sourceRole = { CGIText 
+								- m_str = "itsBlock_6";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 2;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 0;
+							}
+							- m_targetRole = { CGIText 
+								- m_str = "itsBlock_12";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 3;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 2;
+							}
+							- m_sourceMultiplicity = { CGIText 
+								- m_str = "";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 4;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 6;
+							}
+							- m_targetMultiplicity = { CGIText 
+								- m_str = "1";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 5;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 4;
+							}
+							- m_sourceQualifier = { CGIText 
+								- m_str = "";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 6;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 8;
+							}
+							- m_targetQualifier = { CGIText 
+								- m_str = "";
+								- m_style = "Arial" 10 0 0 0 1 ;
+								- m_color = { IColor 
+									- m_fgColor = 0;
+									- m_bgColor = 0;
+									- m_bgFlag = 0;
+								}
+								- m_position = 1 0 0  ;
+								- m_nIdent = 7;
+								- m_bImplicitSetRectPoints = 0;
+								- m_nOrientationCtrlPt = 8;
+							}
+							- m_specificType = symmetric_type;
+						}
+						
+						- m_access = 'Z';
+						- m_modified = 'N';
+						- m_fileVersion = "";
+						- m_nModifyDate = 0;
+						- m_nCreateDate = 0;
+						- m_creator = "";
+						- m_bScaleWithZoom = 1;
+						- m_arrowStyle = 'S';
+						- m_pRoot = GUID d7dc0859-1143-477c-a112-97a697cdf378;
+						- m_currentLeftTop = 0 0 ;
+						- m_currentRightBottom = 0 0 ;
+						- m_bFreezeCompartmentContent = 0;
+					}
+					- _defaultSubsystem = { IHandle 
+						- _m2Class = "ISubsystem";
+						- _id = GUID ba0065d3-97fa-4942-afb7-c05356f7957e;
+					}
+				}
+			}
+			- weakCGTime = 10.7.2016::12:48:48;
+			- strongCGTime = 10.7.2016::12:48:48;
+			- _multiplicity = "";
+			- _itsStateChart = { IHandle 
+				- _m2Class = "";
+			}
+			- _classModifier = Unspecified;
+		}
+		{ IClass 
+			- _id = GUID 03471a00-835c-4171-8043-f651f32212cb;
+			- _myState = 10240;
+			- _name = "block_2";
+			- Stereotypes = { IRPYRawContainer 
+				- size = 1;
+				- value = 
+				{ IHandle 
+					- _m2Class = "IStereotype";
+					- _filename = "$OMROOT\\Profiles\\SysML\\SysMLProfile_rpy\\SysML.sbs";
+					- _subsystem = "SysML::Blocks";
+					- _class = "";
+					- _name = "Block";
+					- _id = GUID f685432f-691e-4ff1-be70-4d09d19457e1;
+				}
+			}
+			- _modifiedTimeWeak = 10.7.2016::12:49:32;
+			- _theMainDiagram = { IHandle 
+				- _m2Class = "IDiagram";
+				- _id = GUID 736bd75c-1b60-46ed-9574-062a4e36d53c;
+			}
+			- weakCGTime = 10.7.2016::12:49:32;
+			- strongCGTime = 10.7.2016::12:49:9;
+			- _multiplicity = "";
+			- _itsStateChart = { IHandle 
+				- _m2Class = "";
+			}
+			- Associations = { IRPYRawContainer 
+				- size = 1;
+				- value = 
+				{ IAssociationEnd 
+					- _id = GUID a558b7ad-9545-4720-b02a-d3587c4ca77f;
+					- _myState = 10240;
+					- _name = "itsBlock_8";
+					- _modifiedTimeWeak = 10.7.2016::12:49:32;
+					- _multiplicity = "1";
+					- _otherClass = { IClassifierHandle 
+						- _m2Class = "IClass";
+						- _id = GUID 9cc9b534-ff59-49f6-a19e-d7fa913d3d98;
+					}
+					- _inverse = { IHandle 
+						- _m2Class = "IAssociationEnd";
+						- _id = GUID 3a2cdeb2-2c01-47e0-87d0-3ac37dca06b3;
+					}
+					- _linkName = "";
+					- _linkType = Assoc;
+					- _navigability = Navigable;
+				}
+			}
+			- _classModifier = Unspecified;
+		}
+		{ IClass 
+			- _id = GUID 7d8cc169-ad0d-4080-adeb-d238bb442a4f;
+			- _myState = 10240;
+			- _name = "block_4";
+			- Stereotypes = { IRPYRawContainer 
+				- size = 1;
+				- value = 
+				{ IHandle 
+					- _m2Class = "IStereotype";
+					- _filename = "$OMROOT\\Profiles\\SysML\\SysMLProfile_rpy\\SysML.sbs";
+					- _subsystem = "SysML::Blocks";
+					- _class = "";
+					- _name = "Block";
+					- _id = GUID f685432f-691e-4ff1-be70-4d09d19457e1;
+				}
+			}
+			- _modifiedTimeWeak = 10.7.2016::12:49:37;
+			- _theMainDiagram = { IHandle 
+				- _m2Class = "IDiagram";
+				- _id = GUID 736bd75c-1b60-46ed-9574-062a4e36d53c;
+			}
+			- weakCGTime = 10.7.2016::12:49:37;
+			- strongCGTime = 10.7.2016::12:49:12;
+			- _multiplicity = "";
+			- _itsStateChart = { IHandle 
+				- _m2Class = "";
+			}
+			- Associations = { IRPYRawContainer 
+				- size = 1;
+				- value = 
+				{ IAssociationEnd 
+					- _id = GUID 7aaf59da-e8f5-486a-b569-2d5f7d2f08ca;
+					- _myState = 10240;
+					- _name = "itsBlock_10";
+					- _modifiedTimeWeak = 10.7.2016::12:49:37;
+					- _multiplicity = "1";
+					- _otherClass = { IClassifierHandle 
+						- _m2Class = "IClass";
+						- _id = GUID ea7e44f5-6cf2-474a-84fe-6a2576a87a46;
+					}
+					- _inverse = { IHandle 
+						- _m2Class = "IAssociationEnd";
+						- _id = GUID 4f9bf0b3-ab70-4abe-a25d-cc47793a433f;
+					}
+					- _linkName = "";
+					- _linkType = Assoc;
+					- _navigability = Navigable;
+				}
+			}
+			- _classModifier = Unspecified;
+		}
+		{ IClass 
+			- _id = GUID 3e3cb68c-7785-43f6-b578-513096c60b74;
+			- _myState = 10240;
+			- _name = "block_6";
+			- Stereotypes = { IRPYRawContainer 
+				- size = 1;
+				- value = 
+				{ IHandle 
+					- _m2Class = "IStereotype";
+					- _filename = "$OMROOT\\Profiles\\SysML\\SysMLProfile_rpy\\SysML.sbs";
+					- _subsystem = "SysML::Blocks";
+					- _class = "";
+					- _name = "Block";
+					- _id = GUID f685432f-691e-4ff1-be70-4d09d19457e1;
+				}
+			}
+			- _modifiedTimeWeak = 10.7.2016::12:49:44;
+			- _theMainDiagram = { IHandle 
+				- _m2Class = "IDiagram";
+				- _id = GUID 736bd75c-1b60-46ed-9574-062a4e36d53c;
+			}
+			- weakCGTime = 10.7.2016::12:49:44;
+			- strongCGTime = 10.7.2016::12:49:15;
+			- _multiplicity = "";
+			- _itsStateChart = { IHandle 
+				- _m2Class = "";
+			}
+			- Associations = { IRPYRawContainer 
+				- size = 1;
+				- value = 
+				{ IAssociationEnd 
+					- _id = GUID 1a2ad52a-4f33-4ba9-897f-d4351caa1c50;
+					- _myState = 10240;
+					- _name = "itsBlock_12";
+					- _modifiedTimeWeak = 10.7.2016::12:49:44;
+					- _multiplicity = "1";
+					- _otherClass = { IClassifierHandle 
+						- _m2Class = "IClass";
+						- _id = GUID 07cdc38f-fb9e-4260-8f95-06987641e2af;
+					}
+					- _inverse = { IHandle 
+						- _m2Class = "IAssociationEnd";
+						- _id = GUID ab20929c-ce81-4918-b605-f040f0cec7c7;
+					}
+					- _linkName = "";
+					- _linkType = Assoc;
+					- _navigability = Navigable;
+				}
+			}
+			- _classModifier = Unspecified;
+		}
+		{ IClass 
+			- _id = GUID 9cc9b534-ff59-49f6-a19e-d7fa913d3d98;
+			- _myState = 10240;
+			- _name = "block_8";
+			- Stereotypes = { IRPYRawContainer 
+				- size = 1;
+				- value = 
+				{ IHandle 
+					- _m2Class = "IStereotype";
+					- _filename = "$OMROOT\\Profiles\\SysML\\SysMLProfile_rpy\\SysML.sbs";
+					- _subsystem = "SysML::Blocks";
+					- _class = "";
+					- _name = "Block";
+					- _id = GUID f685432f-691e-4ff1-be70-4d09d19457e1;
+				}
+			}
+			- _modifiedTimeWeak = 10.7.2016::12:49:32;
+			- _theMainDiagram = { IHandle 
+				- _m2Class = "IDiagram";
+				- _id = GUID 736bd75c-1b60-46ed-9574-062a4e36d53c;
+			}
+			- weakCGTime = 10.7.2016::12:49:32;
+			- strongCGTime = 10.7.2016::12:49:20;
+			- _multiplicity = "";
+			- _itsStateChart = { IHandle 
+				- _m2Class = "";
+			}
+			- Associations = { IRPYRawContainer 
+				- size = 1;
+				- value = 
+				{ IAssociationEnd 
+					- _id = GUID 3a2cdeb2-2c01-47e0-87d0-3ac37dca06b3;
+					- _myState = 10240;
+					- _name = "itsBlock_2";
+					- _modifiedTimeWeak = 10.7.2016::12:49:32;
+					- _multiplicity = "1";
+					- _otherClass = { IClassifierHandle 
+						- _m2Class = "IClass";
+						- _id = GUID 03471a00-835c-4171-8043-f651f32212cb;
+					}
+					- _inverse = { IHandle 
+						- _m2Class = "IAssociationEnd";
+						- _id = GUID a558b7ad-9545-4720-b02a-d3587c4ca77f;
+					}
+					- _linkName = "";
+					- _linkType = Assoc;
+					- _navigability = Navigable;
+				}
+			}
+			- _classModifier = Unspecified;
+		}
+		{ IClass 
+			- _id = GUID ea7e44f5-6cf2-474a-84fe-6a2576a87a46;
+			- _myState = 10240;
+			- _name = "block_10";
+			- Stereotypes = { IRPYRawContainer 
+				- size = 1;
+				- value = 
+				{ IHandle 
+					- _m2Class = "IStereotype";
+					- _filename = "$OMROOT\\Profiles\\SysML\\SysMLProfile_rpy\\SysML.sbs";
+					- _subsystem = "SysML::Blocks";
+					- _class = "";
+					- _name = "Block";
+					- _id = GUID f685432f-691e-4ff1-be70-4d09d19457e1;
+				}
+			}
+			- _modifiedTimeWeak = 10.7.2016::12:49:37;
+			- _theMainDiagram = { IHandle 
+				- _m2Class = "IDiagram";
+				- _id = GUID 736bd75c-1b60-46ed-9574-062a4e36d53c;
+			}
+			- weakCGTime = 10.7.2016::12:49:37;
+			- strongCGTime = 10.7.2016::12:49:23;
+			- _multiplicity = "";
+			- _itsStateChart = { IHandle 
+				- _m2Class = "";
+			}
+			- Associations = { IRPYRawContainer 
+				- size = 1;
+				- value = 
+				{ IAssociationEnd 
+					- _id = GUID 4f9bf0b3-ab70-4abe-a25d-cc47793a433f;
+					- _myState = 10240;
+					- _name = "itsBlock_4";
+					- _modifiedTimeWeak = 10.7.2016::12:49:37;
+					- _multiplicity = "1";
+					- _otherClass = { IClassifierHandle 
+						- _m2Class = "IClass";
+						- _id = GUID 7d8cc169-ad0d-4080-adeb-d238bb442a4f;
+					}
+					- _inverse = { IHandle 
+						- _m2Class = "IAssociationEnd";
+						- _id = GUID 7aaf59da-e8f5-486a-b569-2d5f7d2f08ca;
+					}
+					- _linkName = "";
+					- _linkType = Assoc;
+					- _navigability = Navigable;
+				}
+			}
+			- _classModifier = Unspecified;
+		}
+		{ IClass 
+			- _id = GUID 07cdc38f-fb9e-4260-8f95-06987641e2af;
+			- _myState = 10240;
+			- _name = "block_12";
+			- Stereotypes = { IRPYRawContainer 
+				- size = 1;
+				- value = 
+				{ IHandle 
+					- _m2Class = "IStereotype";
+					- _filename = "$OMROOT\\Profiles\\SysML\\SysMLProfile_rpy\\SysML.sbs";
+					- _subsystem = "SysML::Blocks";
+					- _class = "";
+					- _name = "Block";
+					- _id = GUID f685432f-691e-4ff1-be70-4d09d19457e1;
+				}
+			}
+			- _modifiedTimeWeak = 10.7.2016::12:49:44;
+			- _theMainDiagram = { IHandle 
+				- _m2Class = "IDiagram";
+				- _id = GUID 736bd75c-1b60-46ed-9574-062a4e36d53c;
+			}
+			- weakCGTime = 10.7.2016::12:49:44;
+			- strongCGTime = 10.7.2016::12:49:25;
+			- _multiplicity = "";
+			- _itsStateChart = { IHandle 
+				- _m2Class = "";
+			}
+			- Associations = { IRPYRawContainer 
+				- size = 1;
+				- value = 
+				{ IAssociationEnd 
+					- _id = GUID ab20929c-ce81-4918-b605-f040f0cec7c7;
+					- _myState = 10240;
+					- _name = "itsBlock_6";
+					- _modifiedTimeWeak = 10.7.2016::12:49:44;
+					- _multiplicity = "1";
+					- _otherClass = { IClassifierHandle 
+						- _m2Class = "IClass";
+						- _id = GUID 3e3cb68c-7785-43f6-b578-513096c60b74;
+					}
+					- _inverse = { IHandle 
+						- _m2Class = "IAssociationEnd";
+						- _id = GUID 1a2ad52a-4f33-4ba9-897f-d4351caa1c50;
+					}
+					- _linkName = "";
+					- _linkType = Assoc;
+					- _navigability = Navigable;
+				}
+			}
+			- _classModifier = Unspecified;
+		}
+	}
+	- _configurationRelatedTime = 1.1.1970::1:0:0;
+}
+
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/AssociationLabelInBDD_rpy/DefaultComponent.cmp b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/AssociationLabelInBDD_rpy/DefaultComponent.cmp
new file mode 100644
index 0000000..a352c18
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/AssociationLabelInBDD_rpy/DefaultComponent.cmp
@@ -0,0 +1,115 @@
+I-Logix-RPY-Archive version 8.12.0 C++ 9728113
+{ IComponent 
+	- _id = GUID fe403338-0f01-4054-a864-28fdb9591e5d;
+	- _myState = 139264;
+	- _name = "DefaultComponent";
+	- _modifiedTimeWeak = 10.7.2016::12:48:29;
+	- m_buildType = Executable;
+	- m_libraries = "";
+	- m_additionalSources = "";
+	- m_standardHeaders = "";
+	- m_includePath = "";
+	- m_initializationCode = "";
+	- m_folder = { IFolder 
+		- _id = GUID 2a3965a7-6b3d-40f3-849c-eddc8195ea52;
+		- _myState = 73728;
+		- _name = "Files";
+		- _modifiedTimeWeak = 10.7.2016::12:48:28;
+		- m_path = "";
+		- Elements = { IRPYRawContainer 
+			- size = 0;
+		}
+		- Files = { IRPYRawContainer 
+			- size = 0;
+		}
+	}
+	- m_configActive = { ICodeGenConfigInfoHandle 
+		- _m2Class = "ICodeGenConfigInfo";
+		- _id = GUID 25d14a99-86fb-4a6d-b92f-2565b15688c0;
+	}
+	- Configs = { IRPYRawContainer 
+		- size = 1;
+		- value = 
+		{ ICodeGenConfigInfo 
+			- _id = GUID 25d14a99-86fb-4a6d-b92f-2565b15688c0;
+			- _myState = 8192;
+			- _name = "DefaultConfig";
+			- _modifiedTimeWeak = 1.2.1990::0:0:0;
+			- _scopeType = Explicit;
+			- _libraries = "";
+			- _additionalSources = "";
+			- _standardHeaders = "";
+			- _includePath = "";
+			- _targetMain = "";
+			- _instrumentation = None;
+			- _timeModel = RealTime;
+			- m_generateActors = 1;
+			- _statechartImplementation = Flat;
+			- _initializationCode = "";
+			- _checksList = 0 ;
+			- ScopeElements = { IRPYRawContainer 
+				- size = 0;
+			}
+			- InitialInstances = { IRPYRawContainer 
+				- size = 0;
+			}
+			- _root = { IFolder 
+				- _id = GUID 77fa733f-b2e8-4eef-8d92-a425b9542646;
+				- _myState = 8192;
+				- _name = "DefaultConfig";
+				- _modifiedTimeWeak = 1.2.1990::0:0:0;
+				- m_path = "";
+				- Elements = { IRPYRawContainer 
+					- size = 0;
+				}
+				- Files = { IRPYRawContainer 
+					- size = 0;
+				}
+			}
+			- weakCGTime = 1.2.1990::0:0:0;
+			- strongCGTime = 1.2.1990::0:0:0;
+			- AnimScopeElements = { IRPYRawContainer 
+				- size = 0;
+			}
+			- m_allInAnimScope = 1;
+			- m_generateUsecases = 0;
+		}
+	}
+	- HandlesInMe = { IRPYRawContainer 
+		- size = 3;
+		- value = 
+		{ IHandle 
+			- _m2Class = "ISubsystem";
+			- _filename = "Default.sbs";
+			- _subsystem = "";
+			- _class = "";
+			- _name = "Default";
+			- _id = GUID ba0065d3-97fa-4942-afb7-c05356f7957e;
+		}
+		{ IHandle 
+			- _m2Class = "IProfile";
+			- _filename = "$OMROOT\\Profiles\\SysML\\SysMLProfile_rpy\\SysML.sbs";
+			- _subsystem = "";
+			- _class = "";
+			- _name = "SysML";
+			- _id = GUID d9689b73-885e-44c4-896b-de43defa0a33;
+		}
+		{ IHandle 
+			- _m2Class = "IProfile";
+			- _filename = "$OMROOT\\Settings\\SysMLPerspectives\\SysMLPerspectives.sbs";
+			- _subsystem = "";
+			- _class = "";
+			- _name = "SysMLPerspectives";
+			- _id = GUID ab285915-0966-4322-a029-ffac3e6ef3df;
+		}
+	}
+	- VariationPoints = { IRPYRawContainer 
+		- size = 0;
+	}
+	- SelectedVariants = { IRPYRawContainer 
+		- size = 0;
+	}
+	- weakCGTime = 10.7.2016::12:48:29;
+	- strongCGTime = 1.2.1990::0:0:0;
+}
+
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/AssociationLabelInBDD_rpy/filesTable.dat b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/AssociationLabelInBDD_rpy/filesTable.dat
new file mode 100644
index 0000000..569b8c8
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/AssociationLabelInBDD_rpy/filesTable.dat
@@ -0,0 +1,10 @@
+I-Logix-RPY-Archive version 8.12.0 * 9728113
+
+- filesTable = { IRPYRawContainer 
+	- size = 3;
+	- value = "AssociationLabelInBDD.rpy" ""
+	"AssociationLabelInBDD_rpy\\Default.sbs" "Default"
+	"AssociationLabelInBDD_rpy\\DefaultComponent.cmp" "DefaultComponent"
+	
+}
+
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/expected_papyrus/AssociationLabelInBDD.di b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/expected_papyrus/AssociationLabelInBDD.di
new file mode 100644
index 0000000..bf9abab
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/expected_papyrus/AssociationLabelInBDD.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/expected_papyrus/AssociationLabelInBDD.notation b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/expected_papyrus/AssociationLabelInBDD.notation
new file mode 100644
index 0000000..c113d4c
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/expected_papyrus/AssociationLabelInBDD.notation
@@ -0,0 +1,587 @@
+<?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/5.0.0/UML">
+  <notation:Diagram xmi:id="__ggkcOhrEeaEBeOajBDqKg" type="BlockDefinition" name="block definition diagram_0" measurementUnit="Pixel">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggkcOhrEeaEBeOajBDqKg-EAnnotation--752770677" source="Imported from a Rpy Model">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggkcOhrEeaEBeOajBDqKg-EAnnotation--752770677-EStringToStringMapEntry--492027705-835488170" key="Rpy Model Name" value="AssociationLabelInBDD"/>
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggkcOhrEeaEBeOajBDqKg-EAnnotation--752770677-EStringToStringMapEntry-437159795-0" key="Rpy Version" value=""/>
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggkcOhrEeaEBeOajBDqKg-EAnnotation--752770677-EStringToStringMapEntry--793831098--1799222281" key="Papyrus Rpy Import Bundle Version" value="0.7.0.qualifier"/>
+    </eAnnotations>
+    <children xmi:type="notation:Shape" xmi:id="__ggkdehrEeaEBeOajBDqKg" type="shape_sysml_block_as_classifier">
+      <children xmi:type="notation:DecorationNode" xmi:id="__ggkduhrEeaEBeOajBDqKg" type="label_sysml_block_name"/>
+      <children xmi:type="notation:ListCompartment" xmi:id="__ggkd-hrEeaEBeOajBDqKg" type="compartment_sysml_property_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggkeOhrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggkeehrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__ggkeuhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__ggke-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__ggkfOhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__ggkfehrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__ggkfuhrEeaEBeOajBDqKg" visible="false" type="compartment_sysml_part_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggkf-hrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggkgOhrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__ggkgehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__ggkguhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__ggkg-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__ggkhOhrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__ggkhehrEeaEBeOajBDqKg" visible="false" type="compartment_sysml_reference_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggkhuhrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggkh-hrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__ggkiOhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__ggkiehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__ggkiuhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__ggki-hrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__ggkjOhrEeaEBeOajBDqKg" visible="false" type="compartment_uml_port_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggkjehrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggkjuhrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__ggkj-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__ggkkOhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__ggkkehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__ggkkuhrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__ggkk-hrEeaEBeOajBDqKg" visible="false" type="compartment_sysml_flowport_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggklOhrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggklehrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__ggkluhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__ggkl-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__ggkmOhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__ggkmehrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__ggkmuhrEeaEBeOajBDqKg" type="compartment_uml_operation_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggkm-hrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggknOhrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__ggknehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__ggknuhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__ggkn-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__ggkoOhrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__ggkoehrEeaEBeOajBDqKg" visible="false" type="compartment_sysml_constraint_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggkouhrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggko-hrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__ggkpOhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__ggkpehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__ggkpuhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__ggkp-hrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__ggkqOhrEeaEBeOajBDqKg" visible="false" type="compartment_sysml_value_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggkqehrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggkquhrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__ggkq-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__ggkrOhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__ggkrehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__ggkruhrEeaEBeOajBDqKg"/>
+      </children>
+      <element xmi:type="uml:Class" href="AssociationLabelInBDD.uml#GUID-03471a00-835c-4171-8043-f651f32212cb"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__ggkr-hrEeaEBeOajBDqKg" x="39" y="19" width="84" height="114"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="__ggksOhrEeaEBeOajBDqKg" type="shape_sysml_block_as_classifier">
+      <children xmi:type="notation:DecorationNode" xmi:id="__ggksehrEeaEBeOajBDqKg" type="label_sysml_block_name"/>
+      <children xmi:type="notation:ListCompartment" xmi:id="__ggksuhrEeaEBeOajBDqKg" type="compartment_sysml_property_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggks-hrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggktOhrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__ggktehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__ggktuhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__ggkt-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__ggkuOhrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__ggkuehrEeaEBeOajBDqKg" visible="false" type="compartment_sysml_part_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggkuuhrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggku-hrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__ggkvOhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__ggkvehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__ggkvuhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__ggkv-hrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__ggkwOhrEeaEBeOajBDqKg" visible="false" type="compartment_sysml_reference_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggkwehrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggkwuhrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__ggkw-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__ggkxOhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__ggkxehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__ggkxuhrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__ggkx-hrEeaEBeOajBDqKg" visible="false" type="compartment_uml_port_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggkyOhrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggkyehrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__ggkyuhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__ggky-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__ggkzOhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__ggkzehrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__ggkzuhrEeaEBeOajBDqKg" visible="false" type="compartment_sysml_flowport_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggkz-hrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggk0OhrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__ggk0ehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__ggk0uhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__ggk0-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__ggk1OhrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__ggk1ehrEeaEBeOajBDqKg" type="compartment_uml_operation_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggk1uhrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggk1-hrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__ggk2OhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__ggk2ehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__ggk2uhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__ggk2-hrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__ggk3OhrEeaEBeOajBDqKg" visible="false" type="compartment_sysml_constraint_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggk3ehrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggk3uhrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__ggk3-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__ggk4OhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__ggk4ehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__ggk4uhrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__ggk4-hrEeaEBeOajBDqKg" visible="false" type="compartment_sysml_value_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggk5OhrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggk5ehrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__ggk5uhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__ggk5-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__ggk6OhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__ggk6ehrEeaEBeOajBDqKg"/>
+      </children>
+      <element xmi:type="uml:Class" href="AssociationLabelInBDD.uml#GUID-7d8cc169-ad0d-4080-adeb-d238bb442a4f"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__ggk6uhrEeaEBeOajBDqKg" x="31" y="134" width="84" height="114"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="__ggk6-hrEeaEBeOajBDqKg" type="shape_sysml_block_as_classifier">
+      <children xmi:type="notation:DecorationNode" xmi:id="__ggk7OhrEeaEBeOajBDqKg" type="label_sysml_block_name"/>
+      <children xmi:type="notation:ListCompartment" xmi:id="__ggk7ehrEeaEBeOajBDqKg" type="compartment_sysml_property_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggk7uhrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggk7-hrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__ggk8OhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__ggk8ehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__ggk8uhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__ggk8-hrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__ggk9OhrEeaEBeOajBDqKg" visible="false" type="compartment_sysml_part_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggk9ehrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggk9uhrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__ggk9-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__ggk-OhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__ggk-ehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__ggk-uhrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__ggk--hrEeaEBeOajBDqKg" visible="false" type="compartment_sysml_reference_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggk_OhrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggk_ehrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__ggk_uhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__ggk_-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__gglAOhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__gglAehrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__gglAuhrEeaEBeOajBDqKg" visible="false" type="compartment_uml_port_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__gglA-hrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__gglBOhrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__gglBehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__gglBuhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__gglB-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__gglCOhrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__gglCehrEeaEBeOajBDqKg" visible="false" type="compartment_sysml_flowport_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__gglCuhrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__gglC-hrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__gglDOhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__gglDehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__gglDuhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__gglD-hrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__gglEOhrEeaEBeOajBDqKg" type="compartment_uml_operation_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__gglEehrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__gglEuhrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__gglE-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__gglFOhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__gglFehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__gglFuhrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__gglF-hrEeaEBeOajBDqKg" visible="false" type="compartment_sysml_constraint_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__gglGOhrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__gglGehrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__gglGuhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__gglG-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__gglHOhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__gglHehrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__gglHuhrEeaEBeOajBDqKg" visible="false" type="compartment_sysml_value_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__gglH-hrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__gglIOhrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__gglIehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__gglIuhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__gglI-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__gglJOhrEeaEBeOajBDqKg"/>
+      </children>
+      <element xmi:type="uml:Class" href="AssociationLabelInBDD.uml#GUID-3e3cb68c-7785-43f6-b578-513096c60b74"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__gglJehrEeaEBeOajBDqKg" x="18" y="266" width="84" height="114"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="__gglJuhrEeaEBeOajBDqKg" type="shape_sysml_block_as_classifier">
+      <children xmi:type="notation:DecorationNode" xmi:id="__gglJ-hrEeaEBeOajBDqKg" type="label_sysml_block_name"/>
+      <children xmi:type="notation:ListCompartment" xmi:id="__gglKOhrEeaEBeOajBDqKg" type="compartment_sysml_property_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__gglKehrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__gglKuhrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__gglK-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__gglLOhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__gglLehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__gglLuhrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__gglL-hrEeaEBeOajBDqKg" visible="false" type="compartment_sysml_part_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__gglMOhrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__gglMehrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__gglMuhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__gglM-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__gglNOhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__gglNehrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__gglNuhrEeaEBeOajBDqKg" visible="false" type="compartment_sysml_reference_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__gglN-hrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__gglOOhrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__gglOehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__gglOuhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__gglO-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__gglPOhrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__gglPehrEeaEBeOajBDqKg" visible="false" type="compartment_uml_port_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__gglPuhrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__gglP-hrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__gglQOhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__gglQehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__gglQuhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__gglQ-hrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__gglROhrEeaEBeOajBDqKg" visible="false" type="compartment_sysml_flowport_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__gglRehrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__gglRuhrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__gglR-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__gglSOhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__gglSehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__gglSuhrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__gglS-hrEeaEBeOajBDqKg" type="compartment_uml_operation_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__gglTOhrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__gglTehrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__gglTuhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__gglT-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__gglUOhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__gglUehrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__gglUuhrEeaEBeOajBDqKg" visible="false" type="compartment_sysml_constraint_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__gglU-hrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__gglVOhrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__gglVehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__gglVuhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__gglV-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__gglWOhrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__gglWehrEeaEBeOajBDqKg" visible="false" type="compartment_sysml_value_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__gglWuhrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__gglW-hrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__gglXOhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__gglXehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__gglXuhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__gglX-hrEeaEBeOajBDqKg"/>
+      </children>
+      <element xmi:type="uml:Class" href="AssociationLabelInBDD.uml#GUID-9cc9b534-ff59-49f6-a19e-d7fa913d3d98"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__gglYOhrEeaEBeOajBDqKg" x="324" width="84" height="114"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="__gglYehrEeaEBeOajBDqKg" type="shape_sysml_block_as_classifier">
+      <children xmi:type="notation:DecorationNode" xmi:id="__gglYuhrEeaEBeOajBDqKg" type="label_sysml_block_name"/>
+      <children xmi:type="notation:ListCompartment" xmi:id="__gglY-hrEeaEBeOajBDqKg" type="compartment_sysml_property_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__gglZOhrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__gglZehrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__gglZuhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__gglZ-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__gglaOhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__gglaehrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__gglauhrEeaEBeOajBDqKg" visible="false" type="compartment_sysml_part_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggla-hrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__gglbOhrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__gglbehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__gglbuhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__gglb-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__gglcOhrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__gglcehrEeaEBeOajBDqKg" visible="false" type="compartment_sysml_reference_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__gglcuhrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__gglc-hrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__ggldOhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__ggldehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__gglduhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__ggld-hrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__ggleOhrEeaEBeOajBDqKg" visible="false" type="compartment_uml_port_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggleehrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggleuhrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__ggle-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__gglfOhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__gglfehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__gglfuhrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__gglf-hrEeaEBeOajBDqKg" visible="false" type="compartment_sysml_flowport_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__gglgOhrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__gglgehrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__gglguhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__gglg-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__gglhOhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__gglhehrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__gglhuhrEeaEBeOajBDqKg" type="compartment_uml_operation_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__gglh-hrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggliOhrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__ggliehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__ggliuhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__ggli-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__ggljOhrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__ggljehrEeaEBeOajBDqKg" visible="false" type="compartment_sysml_constraint_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggljuhrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__gglj-hrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__gglkOhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__gglkehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__gglkuhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__gglk-hrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__ggllOhrEeaEBeOajBDqKg" visible="false" type="compartment_sysml_value_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggllehrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__gglluhrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__ggll-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__gglmOhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__gglmehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__gglmuhrEeaEBeOajBDqKg"/>
+      </children>
+      <element xmi:type="uml:Class" href="AssociationLabelInBDD.uml#GUID-ea7e44f5-6cf2-474a-84fe-6a2576a87a46"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__gglm-hrEeaEBeOajBDqKg" x="282" y="164" width="84" height="114"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="__gglnOhrEeaEBeOajBDqKg" type="shape_sysml_block_as_classifier">
+      <children xmi:type="notation:DecorationNode" xmi:id="__gglnehrEeaEBeOajBDqKg" type="label_sysml_block_name"/>
+      <children xmi:type="notation:ListCompartment" xmi:id="__gglnuhrEeaEBeOajBDqKg" type="compartment_sysml_property_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggln-hrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggloOhrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__ggloehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__gglouhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__gglo-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__gglpOhrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__gglpehrEeaEBeOajBDqKg" visible="false" type="compartment_sysml_part_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__gglpuhrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__gglp-hrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__gglqOhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__gglqehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__gglquhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__gglq-hrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__gglrOhrEeaEBeOajBDqKg" visible="false" type="compartment_sysml_reference_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__gglrehrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__gglruhrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__gglr-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__gglsOhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__gglsehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__gglsuhrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__ggls-hrEeaEBeOajBDqKg" visible="false" type="compartment_uml_port_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggltOhrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggltehrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__ggltuhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__gglt-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__ggluOhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__ggluehrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__ggluuhrEeaEBeOajBDqKg" visible="false" type="compartment_sysml_flowport_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__gglu-hrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__gglvOhrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__gglvehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__gglvuhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__gglv-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__gglwOhrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__gglwehrEeaEBeOajBDqKg" type="compartment_uml_operation_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__gglwuhrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__gglw-hrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__gglxOhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__gglxehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__gglxuhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__gglx-hrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__gglyOhrEeaEBeOajBDqKg" visible="false" type="compartment_sysml_constraint_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__gglyehrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__gglyuhrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__ggly-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__gglzOhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__gglzehrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__gglzuhrEeaEBeOajBDqKg"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="__gglz-hrEeaEBeOajBDqKg" visible="false" type="compartment_sysml_value_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggl0OhrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggl0ehrEeaEBeOajBDqKg" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="__ggl0uhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__ggl0-hrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__ggl1OhrEeaEBeOajBDqKg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__ggl1ehrEeaEBeOajBDqKg"/>
+      </children>
+      <element xmi:type="uml:Class" href="AssociationLabelInBDD.uml#GUID-07cdc38f-fb9e-4260-8f95-06987641e2af"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__ggl1uhrEeaEBeOajBDqKg" x="416" y="296" width="84" height="114"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="__ggl1-hrEeaEBeOajBDqKg"/>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="__ggl2OhrEeaEBeOajBDqKg" name="diagram_compatibility_version" stringValue="1.2.0"/>
+    <element xmi:type="uml:Class" href="AssociationLabelInBDD.uml#GUID-35a54e72-adff-49ad-8353-dc383070332f"/>
+    <edges xmi:type="notation:Connector" xmi:id="__ggl2ehrEeaEBeOajBDqKg" type="link_sysml_association" source="__ggkdehrEeaEBeOajBDqKg" target="__gglJuhrEeaEBeOajBDqKg">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggl2uhrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggl2-hrEeaEBeOajBDqKg" key="routing" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="__ggl3OhrEeaEBeOajBDqKg" type="linklabel_uml_appliedstereotype">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__ggl3ehrEeaEBeOajBDqKg" y="-30"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="__ggl3uhrEeaEBeOajBDqKg" type="linklabel_uml_namedelement_name">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__ggl3-hrEeaEBeOajBDqKg" y="-10"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="__ggl4OhrEeaEBeOajBDqKg" type="linklabel_uml_association_source_role">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__ggl4ehrEeaEBeOajBDqKg" y="-10"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="__ggl4uhrEeaEBeOajBDqKg" type="linklabel_uml_association_source_multiplicity">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__ggl4-hrEeaEBeOajBDqKg" y="10"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="__ggl5OhrEeaEBeOajBDqKg" type="linklabel_uml_association_target_role">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__ggl5ehrEeaEBeOajBDqKg" y="-10"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="__ggl5uhrEeaEBeOajBDqKg" type="linklabel_uml_association_target_multiplicity">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__ggl5-hrEeaEBeOajBDqKg" y="10"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="__ggl6OhrEeaEBeOajBDqKg"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="__ggl6ehrEeaEBeOajBDqKg" name="semantic_source_end">
+        <eObjectValue xmi:type="uml:Property" href="AssociationLabelInBDD.uml#GUID-3a2cdeb2-2c01-47e0-87d0-3ac37dca06b3"/>
+      </styles>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="__ggl6uhrEeaEBeOajBDqKg" name="semantic_target_end">
+        <eObjectValue xmi:type="uml:Property" href="AssociationLabelInBDD.uml#GUID-a558b7ad-9545-4720-b02a-d3587c4ca77f"/>
+      </styles>
+      <element xmi:type="uml:Association" href="AssociationLabelInBDD.uml#GUID-3a2cdeb2-2c01-47e0-87d0-3ac37dca06b3-association"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__ggl6-hrEeaEBeOajBDqKg" points="[123, 48, -643984, -643984]$[223, 48, -643984, -643984]$[223, 23, -643984, -643984]$[324, 23, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__ggl7OhrEeaEBeOajBDqKg" id="(0.9999998,0.25401)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__ggl7ehrEeaEBeOajBDqKg" id="(0.0,0.20142546)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="__ggl7uhrEeaEBeOajBDqKg" type="link_sysml_association" source="__ggksOhrEeaEBeOajBDqKg" target="__gglYehrEeaEBeOajBDqKg">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggl7-hrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggl8OhrEeaEBeOajBDqKg" key="routing" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="__ggl8ehrEeaEBeOajBDqKg" type="linklabel_uml_appliedstereotype">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__ggl8uhrEeaEBeOajBDqKg" y="-30"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="__ggl8-hrEeaEBeOajBDqKg" type="linklabel_uml_namedelement_name">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__ggl9OhrEeaEBeOajBDqKg" y="-10"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="__ggl9ehrEeaEBeOajBDqKg" type="linklabel_uml_association_source_role">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__ggl9uhrEeaEBeOajBDqKg" y="-10"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="__ggl9-hrEeaEBeOajBDqKg" type="linklabel_uml_association_source_multiplicity">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__ggl-OhrEeaEBeOajBDqKg" y="10"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="__ggl-ehrEeaEBeOajBDqKg" visible="false" type="linklabel_uml_association_target_role">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__ggl-uhrEeaEBeOajBDqKg" y="-10"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="__ggl--hrEeaEBeOajBDqKg" visible="false" type="linklabel_uml_association_target_multiplicity">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__ggl_OhrEeaEBeOajBDqKg" y="10"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="__ggl_ehrEeaEBeOajBDqKg"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="__ggl_uhrEeaEBeOajBDqKg" name="semantic_source_end">
+        <eObjectValue xmi:type="uml:Property" href="AssociationLabelInBDD.uml#GUID-4f9bf0b3-ab70-4abe-a25d-cc47793a433f"/>
+      </styles>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="__ggl_-hrEeaEBeOajBDqKg" name="semantic_target_end">
+        <eObjectValue xmi:type="uml:Property" href="AssociationLabelInBDD.uml#GUID-7aaf59da-e8f5-486a-b569-2d5f7d2f08ca"/>
+      </styles>
+      <element xmi:type="uml:Association" href="AssociationLabelInBDD.uml#GUID-4f9bf0b3-ab70-4abe-a25d-cc47793a433f-association"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__ggmAOhrEeaEBeOajBDqKg" points="[115, 173, -643984, -643984]$[198, 173, -643984, -643984]$[198, 246, -643984, -643984]$[282, 246, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__ggmAehrEeaEBeOajBDqKg" id="(0.9999998,0.34224507)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__ggmAuhrEeaEBeOajBDqKg" id="(0.0,0.71924937)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="__ggmA-hrEeaEBeOajBDqKg" type="link_sysml_association" source="__ggk6-hrEeaEBeOajBDqKg" target="__gglnOhrEeaEBeOajBDqKg">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggmBOhrEeaEBeOajBDqKg" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggmBehrEeaEBeOajBDqKg" key="routing" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="__ggmBuhrEeaEBeOajBDqKg" type="linklabel_uml_appliedstereotype">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__ggmB-hrEeaEBeOajBDqKg" y="-30"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="__ggmCOhrEeaEBeOajBDqKg" type="linklabel_uml_namedelement_name">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__ggmCehrEeaEBeOajBDqKg" y="-10"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="__ggmCuhrEeaEBeOajBDqKg" type="linklabel_uml_association_source_role">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__ggmC-hrEeaEBeOajBDqKg" y="-10"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="__ggmDOhrEeaEBeOajBDqKg" visible="false" type="linklabel_uml_association_source_multiplicity">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__ggmDehrEeaEBeOajBDqKg" y="10"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="__ggmDuhrEeaEBeOajBDqKg" type="linklabel_uml_association_target_role">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__ggmD-hrEeaEBeOajBDqKg" y="-10"/>
+      </children>
+      <children xmi:type="notation:DecorationNode" xmi:id="__ggmEOhrEeaEBeOajBDqKg" type="linklabel_uml_association_target_multiplicity">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__ggmEehrEeaEBeOajBDqKg" y="10"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="__ggmEuhrEeaEBeOajBDqKg"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="__ggmE-hrEeaEBeOajBDqKg" name="semantic_source_end">
+        <eObjectValue xmi:type="uml:Property" href="AssociationLabelInBDD.uml#GUID-ab20929c-ce81-4918-b605-f040f0cec7c7"/>
+      </styles>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="__ggmFOhrEeaEBeOajBDqKg" name="semantic_target_end">
+        <eObjectValue xmi:type="uml:Property" href="AssociationLabelInBDD.uml#GUID-1a2ad52a-4f33-4ba9-897f-d4351caa1c50"/>
+      </styles>
+      <element xmi:type="uml:Association" href="AssociationLabelInBDD.uml#GUID-ab20929c-ce81-4918-b605-f040f0cec7c7-association"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__ggmFehrEeaEBeOajBDqKg" points="[102, 306, -643984, -643984]$[259, 306, -643984, -643984]$[259, 391, -643984, -643984]$[416, 391, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__ggmFuhrEeaEBeOajBDqKg" id="(0.9999998,0.35115767)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__ggmF-hrEeaEBeOajBDqKg" id="(0.0,0.83333105)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="__ggmGOhrEeaEBeOajBDqKg" type="BlockDefinition" name="Model1" measurementUnit="Pixel">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__ggmGOhrEeaEBeOajBDqKg-EAnnotation--752770677" source="Imported from a Rpy Model">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggmGOhrEeaEBeOajBDqKg-EAnnotation--752770677-EStringToStringMapEntry--492027705-835488170" key="Rpy Model Name" value="AssociationLabelInBDD"/>
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggmGOhrEeaEBeOajBDqKg-EAnnotation--752770677-EStringToStringMapEntry-437159795-0" key="Rpy Version" value=""/>
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__ggmGOhrEeaEBeOajBDqKg-EAnnotation--752770677-EStringToStringMapEntry--793831098--1799222281" key="Papyrus Rpy Import Bundle Version" value="0.7.0.qualifier"/>
+    </eAnnotations>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="__ggmHehrEeaEBeOajBDqKg"/>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="__ggmHuhrEeaEBeOajBDqKg" name="diagram_compatibility_version" stringValue="1.2.0"/>
+    <element xmi:type="uml:Package" href="AssociationLabelInBDD.uml#GUID-ba0065d3-97fa-4942-afb7-c05356f7957e"/>
+  </notation:Diagram>
+</xmi:XMI>
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/expected_papyrus/AssociationLabelInBDD.properties b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/expected_papyrus/AssociationLabelInBDD.properties
new file mode 100644
index 0000000..d29ae9e
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/expected_papyrus/AssociationLabelInBDD.properties
@@ -0,0 +1 @@
+#Wed Feb 01 11:48:40 CET 2017
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/expected_papyrus/AssociationLabelInBDD.uml b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/expected_papyrus/AssociationLabelInBDD.uml
new file mode 100644
index 0000000..f6a450f
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/AssociationLabelInBDD_test/expected_papyrus/AssociationLabelInBDD.uml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Blocks="http://www.eclipse.org/papyrus/0.7.0/SysML/Blocks" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/papyrus/0.7.0/SysML/Blocks http://www.eclipse.org/papyrus/0.7.0/SysML#//blocks">
+  <uml:Model xmi:id="GUID-f51b65e6-ea56-4d78-a664-6a9267bef838" name="AssociationLabelInBDD">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-f51b65e6-ea56-4d78-a664-6a9267bef838-EAnnotation--752770677" source="Imported from a Rpy Model">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="GUID-f51b65e6-ea56-4d78-a664-6a9267bef838-EAnnotation--752770677-EStringToStringMapEntry--492027705-835488170" key="Rpy Model Name" value="AssociationLabelInBDD"/>
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="GUID-f51b65e6-ea56-4d78-a664-6a9267bef838-EAnnotation--752770677-EStringToStringMapEntry-437159795-0" key="Rpy Version" value=""/>
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="GUID-f51b65e6-ea56-4d78-a664-6a9267bef838-EAnnotation--752770677-EStringToStringMapEntry--793831098--1799222281" key="Papyrus Rpy Import Bundle Version" value="0.7.0.qualifier"/>
+    </eAnnotations>
+    <packageImport xmi:type="uml:PackageImport" xmi:id="GUID-f51b65e6-ea56-4d78-a664-6a9267bef838-PackageImport-PrimitiveTypes">
+      <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+    </packageImport>
+    <packagedElement xmi:type="uml:Package" xmi:id="GUID-ba0065d3-97fa-4942-afb7-c05356f7957e" name="Default">
+      <packagedElement xmi:type="uml:Class" xmi:id="GUID-35a54e72-adff-49ad-8353-dc383070332f" name="block_0"/>
+      <packagedElement xmi:type="uml:Class" xmi:id="GUID-03471a00-835c-4171-8043-f651f32212cb" name="block_2">
+        <ownedAttribute xmi:type="uml:Property" xmi:id="GUID-a558b7ad-9545-4720-b02a-d3587c4ca77f" name="itsBlock_8" type="GUID-9cc9b534-ff59-49f6-a19e-d7fa913d3d98" association="GUID-3a2cdeb2-2c01-47e0-87d0-3ac37dca06b3-association"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Class" xmi:id="GUID-7d8cc169-ad0d-4080-adeb-d238bb442a4f" name="block_4">
+        <ownedAttribute xmi:type="uml:Property" xmi:id="GUID-7aaf59da-e8f5-486a-b569-2d5f7d2f08ca" name="itsBlock_10" type="GUID-ea7e44f5-6cf2-474a-84fe-6a2576a87a46" association="GUID-4f9bf0b3-ab70-4abe-a25d-cc47793a433f-association"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Class" xmi:id="GUID-3e3cb68c-7785-43f6-b578-513096c60b74" name="block_6">
+        <ownedAttribute xmi:type="uml:Property" xmi:id="GUID-1a2ad52a-4f33-4ba9-897f-d4351caa1c50" name="itsBlock_12" type="GUID-07cdc38f-fb9e-4260-8f95-06987641e2af" association="GUID-ab20929c-ce81-4918-b605-f040f0cec7c7-association"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Class" xmi:id="GUID-9cc9b534-ff59-49f6-a19e-d7fa913d3d98" name="block_8">
+        <ownedAttribute xmi:type="uml:Property" xmi:id="GUID-3a2cdeb2-2c01-47e0-87d0-3ac37dca06b3" name="itsBlock_2" type="GUID-03471a00-835c-4171-8043-f651f32212cb" association="GUID-3a2cdeb2-2c01-47e0-87d0-3ac37dca06b3-association"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Class" xmi:id="GUID-ea7e44f5-6cf2-474a-84fe-6a2576a87a46" name="block_10">
+        <ownedAttribute xmi:type="uml:Property" xmi:id="GUID-4f9bf0b3-ab70-4abe-a25d-cc47793a433f" name="itsBlock_4" type="GUID-7d8cc169-ad0d-4080-adeb-d238bb442a4f" association="GUID-4f9bf0b3-ab70-4abe-a25d-cc47793a433f-association"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Class" xmi:id="GUID-07cdc38f-fb9e-4260-8f95-06987641e2af" name="block_12">
+        <ownedAttribute xmi:type="uml:Property" xmi:id="GUID-ab20929c-ce81-4918-b605-f040f0cec7c7" name="itsBlock_6" type="GUID-3e3cb68c-7785-43f6-b578-513096c60b74" association="GUID-ab20929c-ce81-4918-b605-f040f0cec7c7-association"/>
+      </packagedElement>
+      <packagedElement xmi:type="uml:Association" xmi:id="GUID-3a2cdeb2-2c01-47e0-87d0-3ac37dca06b3-association" memberEnd="GUID-3a2cdeb2-2c01-47e0-87d0-3ac37dca06b3 GUID-a558b7ad-9545-4720-b02a-d3587c4ca77f"/>
+      <packagedElement xmi:type="uml:Association" xmi:id="GUID-4f9bf0b3-ab70-4abe-a25d-cc47793a433f-association" memberEnd="GUID-4f9bf0b3-ab70-4abe-a25d-cc47793a433f GUID-7aaf59da-e8f5-486a-b569-2d5f7d2f08ca"/>
+      <packagedElement xmi:type="uml:Association" xmi:id="GUID-ab20929c-ce81-4918-b605-f040f0cec7c7-association" memberEnd="GUID-ab20929c-ce81-4918-b605-f040f0cec7c7 GUID-1a2ad52a-4f33-4ba9-897f-d4351caa1c50"/>
+    </packagedElement>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-f51b65e6-ea56-4d78-a664-6a9267bef838-ProfileApplication-SysML">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-f51b65e6-ea56-4d78-a664-6a9267bef838-ProfileApplication-SysML-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#/"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_TZ_nULU5EduiKqCzJMWbGw"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-f51b65e6-ea56-4d78-a664-6a9267bef838-ProfileApplication-SysML::ModelElements">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-f51b65e6-ea56-4d78-a664-6a9267bef838-ProfileApplication-SysML::ModelElements-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//modelelements"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_Gx8MgLX7EduFmqQsrNB9lw"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-f51b65e6-ea56-4d78-a664-6a9267bef838-ProfileApplication-SysML::Blocks">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-f51b65e6-ea56-4d78-a664-6a9267bef838-ProfileApplication-SysML::Blocks-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//blocks"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_fSw28LX7EduFmqQsrNB9lw"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-f51b65e6-ea56-4d78-a664-6a9267bef838-ProfileApplication-SysML::PortAndFlows">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-f51b65e6-ea56-4d78-a664-6a9267bef838-ProfileApplication-SysML::PortAndFlows-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//portandflows"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_rpx28LX7EduFmqQsrNB9lw"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-f51b65e6-ea56-4d78-a664-6a9267bef838-ProfileApplication-SysML::Constraints">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-f51b65e6-ea56-4d78-a664-6a9267bef838-ProfileApplication-SysML::Constraints-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//constraints"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_5WYJ0LX7EduFmqQsrNB9lw"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-f51b65e6-ea56-4d78-a664-6a9267bef838-ProfileApplication-SysML::Activities">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-f51b65e6-ea56-4d78-a664-6a9267bef838-ProfileApplication-SysML::Activities-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//activities"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_C2zXMLX8EduFmqQsrNB9lw"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-f51b65e6-ea56-4d78-a664-6a9267bef838-ProfileApplication-SysML::Allocations">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-f51b65e6-ea56-4d78-a664-6a9267bef838-ProfileApplication-SysML::Allocations-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//allocations"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_NxdG4LX8EduFmqQsrNB9lw"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-f51b65e6-ea56-4d78-a664-6a9267bef838-ProfileApplication-SysML::Requirements">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-f51b65e6-ea56-4d78-a664-6a9267bef838-ProfileApplication-SysML::Requirements-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//requirements"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_OOJC4LX8EduFmqQsrNB9lw"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-f51b65e6-ea56-4d78-a664-6a9267bef838-ProfileApplication-SysML::Interactions">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-f51b65e6-ea56-4d78-a664-6a9267bef838-ProfileApplication-SysML::Interactions-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//interactions"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_meOioLX8EduFmqQsrNB9lw"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-f51b65e6-ea56-4d78-a664-6a9267bef838-ProfileApplication-SysML::StateMachines">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-f51b65e6-ea56-4d78-a664-6a9267bef838-ProfileApplication-SysML::StateMachines-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//statemachines"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_nAF5kLX8EduFmqQsrNB9lw"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-f51b65e6-ea56-4d78-a664-6a9267bef838-ProfileApplication-SysML::UseCases">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-f51b65e6-ea56-4d78-a664-6a9267bef838-ProfileApplication-SysML::UseCases-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//usecases"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_neZmMLX8EduFmqQsrNB9lw"/>
+    </profileApplication>
+  </uml:Model>
+  <Blocks:Block xmi:id="Block-of-GUID-03471a00-835c-4171-8043-f651f32212cb" base_Class="GUID-03471a00-835c-4171-8043-f651f32212cb"/>
+  <Blocks:Block xmi:id="Block-of-GUID-9cc9b534-ff59-49f6-a19e-d7fa913d3d98" base_Class="GUID-9cc9b534-ff59-49f6-a19e-d7fa913d3d98"/>
+  <Blocks:Block xmi:id="Block-of-GUID-07cdc38f-fb9e-4260-8f95-06987641e2af" base_Class="GUID-07cdc38f-fb9e-4260-8f95-06987641e2af"/>
+  <Blocks:Block xmi:id="Block-of-GUID-7d8cc169-ad0d-4080-adeb-d238bb442a4f" base_Class="GUID-7d8cc169-ad0d-4080-adeb-d238bb442a4f"/>
+  <Blocks:Block xmi:id="Block-of-GUID-ea7e44f5-6cf2-474a-84fe-6a2576a87a46" base_Class="GUID-ea7e44f5-6cf2-474a-84fe-6a2576a87a46"/>
+  <Blocks:Block xmi:id="Block-of-GUID-3e3cb68c-7785-43f6-b578-513096c60b74" base_Class="GUID-3e3cb68c-7785-43f6-b578-513096c60b74"/>
+  <Blocks:Block xmi:id="Block-of-GUID-35a54e72-adff-49ad-8353-dc383070332f" base_Class="GUID-35a54e72-adff-49ad-8353-dc383070332f"/>
+</xmi:XMI>
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/EnumerationInBDD.ehl b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/EnumerationInBDD.ehl
new file mode 100644
index 0000000..2c2ad5d
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/EnumerationInBDD.ehl
@@ -0,0 +1,3 @@
+[Op Calls]
+[Events]
+[Breakpoints]
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/EnumerationInBDD.jpg b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/EnumerationInBDD.jpg
new file mode 100644
index 0000000..6f1f480
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/EnumerationInBDD.jpg
Binary files differ
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/EnumerationInBDD.rpw b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/EnumerationInBDD.rpw
new file mode 100644
index 0000000..e736cbc
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/EnumerationInBDD.rpw
@@ -0,0 +1,63 @@
+I-Logix-RPY-Archive version 8.8.0 * 6107223
+{ CGEMdiWorkspace 
+	- stubList = { IRPYRawContainer 
+		- size = 0;
+	}
+	- isLoadOnDemand = 0;
+	- myViewsWithID = { IRPYRawContainer 
+		- size = 1;
+		- value = 
+		{ CGEMdiDiagramParams 
+			- _placement = { CCommon_WINDOWPLACEMENT 
+				- m_nLength = 44;
+				- m_nFlags = 2;
+				- m_showCmd = 3;
+				- m_ptMinPositionX = -1;
+				- m_ptMinPositionY = -1;
+				- m_ptMaxPositionX = -8;
+				- m_ptMaxPositionY = -30;
+				- m_nLeft = 0;
+				- m_nTop = 0;
+				- m_nRight = 679;
+				- m_nBottom = 51;
+			}
+			- _wasOpenedOnCloseProject = 1;
+			- _theDiagram = { IHandle 
+				- _m2Class = "IDiagram";
+				- _filename = "";
+				- _subsystem = "";
+				- _class = "";
+				- _name = "Model1";
+				- _id = GUID b52247a2-c4e4-4059-add3-a95340f7a01a;
+			}
+			- _UpLeft = 0 0 ;
+			- _DownRight = 1074 642 ;
+			- _instanceName = "";
+			- m_nDiagramIndex = 0;
+		}
+	}
+	- _fullName = "F:\\RhapsodyTest\\EnumerationInBDD\\EnumerationInBDD";
+	- m_SearchScopeList = { IRPYRawContainer 
+		- size = 0;
+	}
+	- bUsingCustomBrowserView = 0;
+	- bUsingQueries = 0;
+	- bApplyOnDiagrams = 0;
+	- liQueryIDs = { IRPYRawContainer 
+		- size = 0;
+	}
+	- liElementTypes = { IRPYRawContainer 
+		- size = 0;
+	}
+
+	- m_favoritesTree = {
+		count=1;
+		{ - favoritesItem
+			generation = 0;
+			name = Favorites;
+			idOrFolder = folder;
+		}
+	}
+
+}
+
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/EnumerationInBDD.rpy b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/EnumerationInBDD.rpy
new file mode 100644
index 0000000..2f981a2
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/EnumerationInBDD.rpy
@@ -0,0 +1,956 @@
+I-Logix-RPY-Archive version 8.8.0 C++ 6107223
+{ IProject 
+	- _id = GUID 347aebc9-6081-481d-8f5f-78bee902cb73;
+	- _myState = 8192;
+	- _name = "EnumerationInBDD";
+	- Stereotypes = { IRPYRawContainer 
+		- size = 1;
+		- value = 
+		{ IHandle 
+			- _m2Class = "IStereotype";
+			- _filename = "$OMROOT\\Profiles\\SysML\\SysMLProfile_rpy\\SysML.sbs";
+			- _subsystem = "SysML";
+			- _class = "";
+			- _name = "SysML";
+			- _id = GUID 052b8171-a32b-4f45-a829-5585f79f9deb;
+		}
+	}
+	- _modifiedTimeWeak = 8.3.2016::13:25:18;
+	- _UserColors = { IRPYRawContainer 
+		- size = 16;
+		- value = 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 
+	}
+	- _defaultSubsystem = { ISubsystemHandle 
+		- _m2Class = "ISubsystem";
+		- _filename = "Default.sbs";
+		- _subsystem = "";
+		- _class = "";
+		- _name = "Default";
+		- _id = GUID 253017c5-b226-42a7-8f35-7acef90c8904;
+	}
+	- _component = { IHandle 
+		- _m2Class = "IComponent";
+		- _filename = "DefaultComponent.cmp";
+		- _subsystem = "";
+		- _class = "";
+		- _name = "DefaultComponent";
+		- _id = GUID 39812a8b-d20e-4cec-a317-b03e63c4f54b;
+	}
+	- Multiplicities = { IRPYRawContainer 
+		- size = 4;
+		- value = 
+		{ IMultiplicityItem 
+			- _name = "1";
+			- _count = -1;
+		}
+		{ IMultiplicityItem 
+			- _name = "*";
+			- _count = -1;
+		}
+		{ IMultiplicityItem 
+			- _name = "0,1";
+			- _count = -1;
+		}
+		{ IMultiplicityItem 
+			- _name = "1..*";
+			- _count = -1;
+		}
+	}
+	- Subsystems = { IRPYRawContainer 
+		- size = 2;
+		- value = 
+		{ ISubsystem 
+			- fileName = "Default";
+			- _id = GUID 253017c5-b226-42a7-8f35-7acef90c8904;
+		}
+		{ IProfile 
+			- fileName = "SysML";
+			- _persistAs = "$OMROOT\\Profiles\\SysML\\SysMLProfile_rpy";
+			- _id = GUID d9689b73-885e-44c4-896b-de43defa0a33;
+			- _isReference = 1;
+		}
+	}
+	- Diagrams = { IRPYRawContainer 
+		- size = 1;
+		- value = 
+		{ IDiagram 
+			- _id = GUID b52247a2-c4e4-4059-add3-a95340f7a01a;
+			- _myState = 8192;
+			- _properties = { IPropertyContainer 
+				- Subjects = { IRPYRawContainer 
+					- size = 2;
+					- value = 
+					{ IPropertySubject 
+						- _Name = "Format";
+						- Metaclasses = { IRPYRawContainer 
+							- size = 2;
+							- value = 
+							{ IPropertyMetaclass 
+								- _Name = "DiagramFrame";
+								- Properties = { IRPYRawContainer 
+									- size = 8;
+									- value = 
+									{ IProperty 
+										- _Name = "DefaultSize";
+										- _Value = "20,20,590,500";
+										- _Type = String;
+									}
+									{ IProperty 
+										- _Name = "Fill.FillColor";
+										- _Value = "247,247,247";
+										- _Type = Color;
+									}
+									{ IProperty 
+										- _Name = "Fill.Transparent_Fill";
+										- _Value = "0";
+										- _Type = Int;
+									}
+									{ IProperty 
+										- _Name = "Font.Font";
+										- _Value = "Tahoma";
+										- _Type = String;
+									}
+									{ IProperty 
+										- _Name = "Font.Size";
+										- _Value = "8";
+										- _Type = Int;
+									}
+									{ IProperty 
+										- _Name = "Font.Weight@Child.NameCompartment@Name";
+										- _Value = "700";
+										- _Type = Int;
+									}
+									{ IProperty 
+										- _Name = "Line.LineColor";
+										- _Value = "194,192,192";
+										- _Type = Color;
+									}
+									{ IProperty 
+										- _Name = "Line.LineWidth";
+										- _Value = "1";
+										- _Type = Int;
+									}
+								}
+							}
+							{ IPropertyMetaclass 
+								- _Name = "Type";
+								- Properties = { IRPYRawContainer 
+									- size = 7;
+									- value = 
+									{ IProperty 
+										- _Name = "DefaultSize";
+										- _Value = "0,0,108,73";
+										- _Type = String;
+									}
+									{ IProperty 
+										- _Name = "Fill.FillColor";
+										- _Value = "255,255,255";
+										- _Type = Color;
+									}
+									{ IProperty 
+										- _Name = "Font.Font";
+										- _Value = "Tahoma";
+										- _Type = String;
+									}
+									{ IProperty 
+										- _Name = "Font.Size";
+										- _Value = "8";
+										- _Type = Int;
+									}
+									{ IProperty 
+										- _Name = "Font.Weight@Child.NameCompartment@Name";
+										- _Value = "700";
+										- _Type = Int;
+									}
+									{ IProperty 
+										- _Name = "Line.LineColor";
+										- _Value = "109,163,217";
+										- _Type = Color;
+									}
+									{ IProperty 
+										- _Name = "Line.LineWidth";
+										- _Value = "1";
+										- _Type = Int;
+									}
+								}
+							}
+						}
+					}
+					{ IPropertySubject 
+						- _Name = "General";
+						- Metaclasses = { IRPYRawContainer 
+							- size = 1;
+							- value = 
+							{ IPropertyMetaclass 
+								- _Name = "Graphics";
+								- Properties = { IRPYRawContainer 
+									- size = 2;
+									- value = 
+									{ IProperty 
+										- _Name = "grid_display";
+										- _Value = "True";
+										- _Type = Bool;
+									}
+									{ IProperty 
+										- _Name = "grid_snap";
+										- _Value = "True";
+										- _Type = Bool;
+									}
+								}
+							}
+						}
+					}
+				}
+			}
+			- _name = "Model1";
+			- Stereotypes = { IRPYRawContainer 
+				- size = 1;
+				- value = 
+				{ IHandle 
+					- _m2Class = "IStereotype";
+					- _filename = "$OMROOT\\Profiles\\SysML\\SysMLProfile_rpy\\SysML.sbs";
+					- _subsystem = "SysML::Diagrams";
+					- _class = "";
+					- _name = "Block Definition Diagram";
+					- _id = GUID 6c142614-3349-49e9-8c6b-0236be5f6b61;
+				}
+			}
+			- _modifiedTimeWeak = 1.1.1970::1:0:0;
+			- _lastModifiedTime = "8.3.2016::13:30:40";
+			- _graphicChart = { CGIClassChart 
+				- _id = GUID 92d0e1a1-c06d-4e8e-812c-00cd2b596366;
+				- m_type = 0;
+				- m_pModelObject = { IHandle 
+					- _m2Class = "IDiagram";
+					- _id = GUID b52247a2-c4e4-4059-add3-a95340f7a01a;
+				}
+				- m_pParent = ;
+				- m_name = { CGIText 
+					- m_str = "";
+					- m_style = "Arial" 10 0 0 0 1 ;
+					- m_color = { IColor 
+						- m_fgColor = 0;
+						- m_bgColor = 0;
+						- m_bgFlag = 0;
+					}
+					- m_position = 1 0 0  ;
+					- m_nIdent = 0;
+					- m_bImplicitSetRectPoints = 0;
+					- m_nOrientationCtrlPt = 8;
+				}
+				- m_drawBehavior = 0;
+				- m_bIsPreferencesInitialized = 0;
+				- elementList = 8;
+				{ CGIClass 
+					- _id = GUID f3060a77-f7cc-42e7-b137-3484d029a112;
+					- m_type = 78;
+					- m_pModelObject = { IHandle 
+						- _m2Class = "IClass";
+						- _filename = "Default.sbs";
+						- _subsystem = "Default";
+						- _class = "";
+						- _name = "TopLevel";
+						- _id = GUID d8ad5e5d-d290-44ee-be59-5b994d59861f;
+					}
+					- m_pParent = ;
+					- m_name = { CGIText 
+						- m_str = "TopLevel";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 5;
+					}
+					- m_drawBehavior = 0;
+					- m_bIsPreferencesInitialized = 0;
+					- m_AdditionalLabel = { CGIText 
+						- m_str = "";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 1;
+					}
+					- m_polygon = 0 ;
+					- m_nNameFormat = 0;
+					- m_nIsNameFormat = 0;
+					- Compartments = { IRPYRawContainer 
+						- size = 0;
+					}
+					- Attrs = { IRPYRawContainer 
+						- size = 0;
+					}
+					- Operations = { IRPYRawContainer 
+						- size = 0;
+					}
+				}
+				{ CGIDiagramFrame 
+					- _id = GUID 2e95b4ab-86b8-4981-80fc-c8958adc0c7b;
+					- m_type = 203;
+					- m_pModelObject = { IHandle 
+						- _m2Class = "";
+					}
+					- m_pParent = GUID f3060a77-f7cc-42e7-b137-3484d029a112;
+					- m_name = { CGIText 
+						- m_str = "";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 8;
+					}
+					- m_drawBehavior = 4096;
+					- m_transform = 2.63889 0 0 3.63636 20 20 ;
+					- m_bIsPreferencesInitialized = 1;
+					- m_AdditionalLabel = { CGIText 
+						- m_str = "";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 1;
+					}
+					- m_polygon = 4 0 0  0 132  216 132  216 0  ;
+					- m_nNameFormat = 0;
+					- m_nIsNameFormat = 0;
+					- Compartments = { IRPYRawContainer 
+						- size = 0;
+					}
+				}
+				{ CGIGenericElement 
+					- _id = GUID 3f84827d-518f-4115-abb1-0cec780cb41c;
+					- _properties = { IPropertyContainer 
+						- Subjects = { IRPYRawContainer 
+							- size = 1;
+							- value = 
+							{ IPropertySubject 
+								- _Name = "General";
+								- Metaclasses = { IRPYRawContainer 
+									- size = 1;
+									- value = 
+									{ IPropertyMetaclass 
+										- _Name = "Graphics";
+										- Properties = { IRPYRawContainer 
+											- size = 1;
+											- value = 
+											{ IProperty 
+												- _Name = "FitBoxToItsTextuals";
+												- _Value = "False";
+												- _Type = Bool;
+											}
+										}
+									}
+								}
+							}
+						}
+					}
+					- m_type = 200;
+					- m_pModelObject = { IHandle 
+						- _m2Class = "IType";
+						- _filename = "Default.sbs";
+						- _subsystem = "Default";
+						- _class = "";
+						- _name = "MyEnum";
+						- _id = GUID 00e64c98-8bc7-4f58-ae8d-5af5ecc94220;
+					}
+					- m_pParent = GUID f3060a77-f7cc-42e7-b137-3484d029a112;
+					- m_name = { CGIText 
+						- m_str = "MyEnum";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 5;
+					}
+					- m_drawBehavior = 4104;
+					- m_transform = 0.0912933 0 0 0.0986031 36 48.2958 ;
+					- m_bIsPreferencesInitialized = 1;
+					- m_AdditionalLabel = { CGIText 
+						- m_str = "";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 1;
+					}
+					- m_polygon = 4 0 -3  0 1214  1183 1214  1183 -3  ;
+					- m_nNameFormat = 0;
+					- m_nIsNameFormat = 0;
+					- Compartments = { IRPYRawContainer 
+						- size = 0;
+					}
+				}
+				{ CGIGenericElement 
+					- _id = GUID 922754d9-7e15-4057-a56d-d06072895162;
+					- _properties = { IPropertyContainer 
+						- Subjects = { IRPYRawContainer 
+							- size = 2;
+							- value = 
+							{ IPropertySubject 
+								- _Name = "General";
+								- Metaclasses = { IRPYRawContainer 
+									- size = 1;
+									- value = 
+									{ IPropertyMetaclass 
+										- _Name = "Graphics";
+										- Properties = { IRPYRawContainer 
+											- size = 1;
+											- value = 
+											{ IProperty 
+												- _Name = "FitBoxToItsTextuals";
+												- _Value = "False";
+												- _Type = Bool;
+											}
+										}
+									}
+								}
+							}
+							{ IPropertySubject 
+								- _Name = "ObjectModelGe";
+								- Metaclasses = { IRPYRawContainer 
+									- size = 1;
+									- value = 
+									{ IPropertyMetaclass 
+										- _Name = "DataType";
+										- Properties = { IRPYRawContainer 
+											- size = 1;
+											- value = 
+											{ IProperty 
+												- _Name = "Compartments";
+												- _Value = "EnumerationLiteral,";
+												- _Type = MultiLine;
+											}
+										}
+									}
+								}
+							}
+						}
+					}
+					- m_type = 200;
+					- m_pModelObject = { IHandle 
+						- _m2Class = "IType";
+						- _filename = "Default.sbs";
+						- _subsystem = "Default";
+						- _class = "";
+						- _name = "MyEnum";
+						- _id = GUID 00e64c98-8bc7-4f58-ae8d-5af5ecc94220;
+					}
+					- m_pParent = GUID f3060a77-f7cc-42e7-b137-3484d029a112;
+					- m_name = { CGIText 
+						- m_str = "MyEnum";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 5;
+					}
+					- m_drawBehavior = 4104;
+					- m_transform = 0.105664 0 0 0.108463 48 192.325 ;
+					- m_bIsPreferencesInitialized = 1;
+					- m_AdditionalLabel = { CGIText 
+						- m_str = "";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 1;
+					}
+					- m_polygon = 4 0 -3  0 1214  1183 1214  1183 -3  ;
+					- m_nNameFormat = 0;
+					- m_nIsNameFormat = 0;
+					- frameset = "<frameset rows=100%>
+<frame name=EnumerationLiteralListCompartment>";
+					- Compartments = { IRPYRawContainer 
+						- size = 1;
+						- value = 
+						{ CGICompartment 
+							- _id = GUID a8f9e61a-aa96-4f04-aa28-99a29c24ae8e;
+							- m_name = "EnumerationLiteral";
+							- m_displayOption = All;
+							- m_bShowInherited = 0;
+							- m_bOrdered = 0;
+						}
+					}
+				}
+				{ CGIGenericElement 
+					- _id = GUID 862dbaf5-1fda-4fa2-89df-f61f4d3e078f;
+					- _properties = { IPropertyContainer 
+						- Subjects = { IRPYRawContainer 
+							- size = 2;
+							- value = 
+							{ IPropertySubject 
+								- _Name = "General";
+								- Metaclasses = { IRPYRawContainer 
+									- size = 1;
+									- value = 
+									{ IPropertyMetaclass 
+										- _Name = "Graphics";
+										- Properties = { IRPYRawContainer 
+											- size = 1;
+											- value = 
+											{ IProperty 
+												- _Name = "FitBoxToItsTextuals";
+												- _Value = "False";
+												- _Type = Bool;
+											}
+										}
+									}
+								}
+							}
+							{ IPropertySubject 
+								- _Name = "ObjectModelGe";
+								- Metaclasses = { IRPYRawContainer 
+									- size = 1;
+									- value = 
+									{ IPropertyMetaclass 
+										- _Name = "DataType";
+										- Properties = { IRPYRawContainer 
+											- size = 1;
+											- value = 
+											{ IProperty 
+												- _Name = "Compartments";
+												- _Value = "EnumerationLiteral,";
+												- _Type = MultiLine;
+											}
+										}
+									}
+								}
+							}
+						}
+					}
+					- m_type = 200;
+					- m_pModelObject = { IHandle 
+						- _m2Class = "IType";
+						- _filename = "Default.sbs";
+						- _subsystem = "Default";
+						- _class = "";
+						- _name = "MyEnum";
+						- _id = GUID 00e64c98-8bc7-4f58-ae8d-5af5ecc94220;
+					}
+					- m_pParent = GUID f3060a77-f7cc-42e7-b137-3484d029a112;
+					- m_name = { CGIText 
+						- m_str = "MyEnum";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 5;
+					}
+					- m_drawBehavior = 4104;
+					- m_transform = 0.121724 0 0 0.0879211 48 324.264 ;
+					- m_bIsPreferencesInitialized = 1;
+					- m_AdditionalLabel = { CGIText 
+						- m_str = "";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 1;
+					}
+					- m_polygon = 4 0 -3  0 1214  1183 1214  1183 -3  ;
+					- m_nNameFormat = 0;
+					- m_nIsNameFormat = 0;
+					- frameset = "<frameset rows=100%>
+<frame name=EnumerationLiteralListCompartment>";
+					- Compartments = { IRPYRawContainer 
+						- size = 1;
+						- value = 
+						{ CGICompartment 
+							- _id = GUID e58dcf14-0ec0-44dc-8335-74403aadcd91;
+							- m_name = "EnumerationLiteral";
+							- m_displayOption = Explicit;
+							- m_bShowInherited = 0;
+							- m_bOrdered = 1;
+							- Items = { IRPYRawContainer 
+								- size = 1;
+								- value = 
+								{ IHandle 
+									- _m2Class = "IEnumerationLiteral";
+									- _filename = "Default.sbs";
+									- _subsystem = "Default";
+									- _class = "MyEnum";
+									- _name = "enumerationliteral_1";
+									- _id = GUID 23da8cf0-bfc5-4ad5-80d1-84e784b754e7;
+								}
+							}
+						}
+					}
+				}
+				{ CGIGenericElement 
+					- _id = GUID 5caab80f-3ea6-4a8a-bc2e-00c597ee782c;
+					- _properties = { IPropertyContainer 
+						- Subjects = { IRPYRawContainer 
+							- size = 2;
+							- value = 
+							{ IPropertySubject 
+								- _Name = "General";
+								- Metaclasses = { IRPYRawContainer 
+									- size = 1;
+									- value = 
+									{ IPropertyMetaclass 
+										- _Name = "Graphics";
+										- Properties = { IRPYRawContainer 
+											- size = 1;
+											- value = 
+											{ IProperty 
+												- _Name = "FitBoxToItsTextuals";
+												- _Value = "False";
+												- _Type = Bool;
+											}
+										}
+									}
+								}
+							}
+							{ IPropertySubject 
+								- _Name = "ObjectModelGe";
+								- Metaclasses = { IRPYRawContainer 
+									- size = 1;
+									- value = 
+									{ IPropertyMetaclass 
+										- _Name = "DataType";
+										- Properties = { IRPYRawContainer 
+											- size = 1;
+											- value = 
+											{ IProperty 
+												- _Name = "Compartments";
+												- _Value = "EnumerationLiteral,";
+												- _Type = MultiLine;
+											}
+										}
+									}
+								}
+							}
+						}
+					}
+					- m_type = 200;
+					- m_pModelObject = { IHandle 
+						- _m2Class = "IType";
+						- _filename = "Default.sbs";
+						- _subsystem = "Default";
+						- _class = "";
+						- _name = "MyEnum";
+						- _id = GUID 00e64c98-8bc7-4f58-ae8d-5af5ecc94220;
+					}
+					- m_pParent = GUID f3060a77-f7cc-42e7-b137-3484d029a112;
+					- m_name = { CGIText 
+						- m_str = "MyEnum";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 5;
+					}
+					- m_drawBehavior = 4104;
+					- m_transform = 0.152156 0 0 0.0986031 180 48.2958 ;
+					- m_bIsPreferencesInitialized = 1;
+					- m_AdditionalLabel = { CGIText 
+						- m_str = "";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 1;
+					}
+					- m_polygon = 4 0 -3  0 1214  1183 1214  1183 -3  ;
+					- m_nNameFormat = 0;
+					- m_nIsNameFormat = 0;
+					- frameset = "<frameset rows=100%>
+<frame name=EnumerationLiteralListCompartment>";
+					- Compartments = { IRPYRawContainer 
+						- size = 1;
+						- value = 
+						{ CGICompartment 
+							- _id = GUID 4d8c73c9-5a3c-4b9a-a70a-0d0b0b04e9f3;
+							- m_name = "EnumerationLiteral";
+							- m_displayOption = Public;
+							- m_bShowInherited = 0;
+							- m_bOrdered = 0;
+						}
+					}
+				}
+				{ CGIGenericElement 
+					- _id = GUID 434ebd29-f3f9-42f5-81c2-3830e58e5fd2;
+					- _properties = { IPropertyContainer 
+						- Subjects = { IRPYRawContainer 
+							- size = 2;
+							- value = 
+							{ IPropertySubject 
+								- _Name = "General";
+								- Metaclasses = { IRPYRawContainer 
+									- size = 1;
+									- value = 
+									{ IPropertyMetaclass 
+										- _Name = "Graphics";
+										- Properties = { IRPYRawContainer 
+											- size = 2;
+											- value = 
+											{ IProperty 
+												- _Name = "FitBoxToItsTextuals";
+												- _Value = "False";
+												- _Type = Bool;
+											}
+											{ IProperty 
+												- _Name = "ShowCompartmentsTitle";
+												- _Value = "False";
+												- _Type = Bool;
+											}
+										}
+									}
+								}
+							}
+							{ IPropertySubject 
+								- _Name = "ObjectModelGe";
+								- Metaclasses = { IRPYRawContainer 
+									- size = 1;
+									- value = 
+									{ IPropertyMetaclass 
+										- _Name = "DataType";
+										- Properties = { IRPYRawContainer 
+											- size = 1;
+											- value = 
+											{ IProperty 
+												- _Name = "Compartments";
+												- _Value = "EnumerationLiteral,";
+												- _Type = MultiLine;
+											}
+										}
+									}
+								}
+							}
+						}
+					}
+					- m_type = 200;
+					- m_pModelObject = { IHandle 
+						- _m2Class = "IType";
+						- _filename = "Default.sbs";
+						- _subsystem = "Default";
+						- _class = "";
+						- _name = "MyEnum";
+						- _id = GUID 00e64c98-8bc7-4f58-ae8d-5af5ecc94220;
+					}
+					- m_pParent = GUID f3060a77-f7cc-42e7-b137-3484d029a112;
+					- m_name = { CGIText 
+						- m_str = "MyEnum";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 5;
+					}
+					- m_drawBehavior = 4104;
+					- m_transform = 0.152156 0 0 0.0986031 360 48.2958 ;
+					- m_bIsPreferencesInitialized = 1;
+					- m_AdditionalLabel = { CGIText 
+						- m_str = "";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 1;
+					}
+					- m_polygon = 4 0 -3  0 1214  1183 1214  1183 -3  ;
+					- m_nNameFormat = 0;
+					- m_nIsNameFormat = 0;
+					- frameset = "<frameset rows=100%>
+<frame name=EnumerationLiteralListCompartment>";
+					- Compartments = { IRPYRawContainer 
+						- size = 1;
+						- value = 
+						{ CGICompartment 
+							- _id = GUID 1fe88340-a6d2-432e-a3ef-4f5f28ec24df;
+							- m_name = "EnumerationLiteral";
+							- m_displayOption = All;
+							- m_bShowInherited = 0;
+							- m_bOrdered = 0;
+						}
+					}
+				}
+				{ CGIGenericElement 
+					- _id = GUID a165c9ef-a69d-4fb1-9851-5b249aacd30b;
+					- _properties = { IPropertyContainer 
+						- Subjects = { IRPYRawContainer 
+							- size = 1;
+							- value = 
+							{ IPropertySubject 
+								- _Name = "ObjectModelGe";
+								- Metaclasses = { IRPYRawContainer 
+									- size = 1;
+									- value = 
+									{ IPropertyMetaclass 
+										- _Name = "DataType";
+										- Properties = { IRPYRawContainer 
+											- size = 1;
+											- value = 
+											{ IProperty 
+												- _Name = "Compartments";
+												- _Value = "EnumerationLiteral,";
+												- _Type = MultiLine;
+											}
+										}
+									}
+								}
+							}
+						}
+					}
+					- m_type = 200;
+					- m_pModelObject = { IHandle 
+						- _m2Class = "IType";
+						- _filename = "Default.sbs";
+						- _subsystem = "Default";
+						- _class = "";
+						- _name = "MyEnum";
+						- _id = GUID 00e64c98-8bc7-4f58-ae8d-5af5ecc94220;
+					}
+					- m_pParent = GUID f3060a77-f7cc-42e7-b137-3484d029a112;
+					- m_name = { CGIText 
+						- m_str = "MyEnum";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 5;
+					}
+					- m_drawBehavior = 4104;
+					- m_transform = 0.0912933 0 0 0.0599836 312 192.18 ;
+					- m_bIsPreferencesInitialized = 1;
+					- m_AdditionalLabel = { CGIText 
+						- m_str = "";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 1;
+					}
+					- m_polygon = 4 0 -3  0 1214  1183 1214  1183 -3  ;
+					- m_nNameFormat = 0;
+					- m_nIsNameFormat = 0;
+					- frameset = "<frameset rows=100%>
+<frame name=EnumerationLiteralListCompartment>";
+					- Compartments = { IRPYRawContainer 
+						- size = 1;
+						- value = 
+						{ CGICompartment 
+							- _id = GUID 2cb858cf-c8ad-4f0f-ac1d-3ceaff981f18;
+							- m_name = "EnumerationLiteral";
+							- m_displayOption = Explicit;
+							- m_bShowInherited = 0;
+							- m_bOrdered = 0;
+							- Items = { IRPYRawContainer 
+								- size = 0;
+							}
+						}
+					}
+				}
+				
+				- m_access = 'Z';
+				- m_modified = 'N';
+				- m_fileVersion = "";
+				- m_nModifyDate = 0;
+				- m_nCreateDate = 0;
+				- m_creator = "";
+				- m_bScaleWithZoom = 1;
+				- m_arrowStyle = 'S';
+				- m_pRoot = GUID f3060a77-f7cc-42e7-b137-3484d029a112;
+				- m_currentLeftTop = 0 0 ;
+				- m_currentRightBottom = 0 0 ;
+			}
+			- _defaultSubsystem = { IHandle 
+				- _m2Class = "ISubsystem";
+				- _filename = "Default.sbs";
+				- _subsystem = "";
+				- _class = "";
+				- _name = "Default";
+				- _id = GUID 253017c5-b226-42a7-8f35-7acef90c8904;
+			}
+		}
+	}
+	- Components = { IRPYRawContainer 
+		- size = 1;
+		- value = 
+		{ IComponent 
+			- fileName = "DefaultComponent";
+			- _id = GUID 39812a8b-d20e-4cec-a317-b03e63c4f54b;
+		}
+	}
+}
+
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/EnumerationInBDD.save b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/EnumerationInBDD.save
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/EnumerationInBDD.save
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/EnumerationInBDD_rpy/Default.sbs b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/EnumerationInBDD_rpy/Default.sbs
new file mode 100644
index 0000000..e87dcd8
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/EnumerationInBDD_rpy/Default.sbs
@@ -0,0 +1,77 @@
+I-Logix-RPY-Archive version 8.8.0 C++ 6107223
+{ ISubsystem 
+	- _id = GUID 253017c5-b226-42a7-8f35-7acef90c8904;
+	- _myState = 8192;
+	- _name = "Default";
+	- _modifiedTimeWeak = 8.3.2016::13:26:27;
+	- _lastID = 1;
+	- weakCGTime = 8.3.2016::13:26:27;
+	- strongCGTime = 1.1.1970::1:0:0;
+	- _defaultComposite = GUID d8ad5e5d-d290-44ee-be59-5b994d59861f;
+	- _eventsBaseID = -1;
+	- Classes = { IRPYRawContainer 
+		- size = 1;
+		- value = 
+		{ IClass 
+			- _id = GUID d8ad5e5d-d290-44ee-be59-5b994d59861f;
+			- _myState = 40960;
+			- _name = "TopLevel";
+			- _modifiedTimeWeak = 1.1.1970::1:0:0;
+			- weakCGTime = 1.1.1970::1:0:0;
+			- strongCGTime = 1.1.1970::1:0:0;
+			- _multiplicity = "";
+			- _itsStateChart = { IHandle 
+				- _m2Class = "";
+			}
+			- _classModifier = Unspecified;
+		}
+	}
+	- Types = { IRPYRawContainer 
+		- size = 1;
+		- value = 
+		{ IType 
+			- _id = GUID 00e64c98-8bc7-4f58-ae8d-5af5ecc94220;
+			- _myState = 8192;
+			- _name = "MyEnum";
+			- Stereotypes = { IRPYRawContainer 
+				- size = 1;
+				- value = 
+				{ IHandle 
+					- _m2Class = "IStereotype";
+					- _filename = "$OMROOT\\Profiles\\SysML\\SysMLProfile_rpy\\SysML.sbs";
+					- _subsystem = "SysML::Blocks";
+					- _class = "";
+					- _name = "DataType";
+					- _id = GUID 39bf6572-6f61-4cbf-b651-64241e075688;
+				}
+			}
+			- _modifiedTimeWeak = 8.3.2016::13:26:27;
+			- _lastID = 3;
+			- Literals = { IRPYRawContainer 
+				- size = 3;
+				- value = 
+				{ IEnumerationLiteral 
+					- _id = GUID a9730f30-f712-4d48-a5f8-70c54d84531c;
+					- _name = "enumerationliteral_0";
+					- _modifiedTimeWeak = 8.3.2016::13:26:25;
+					- _value = "";
+				}
+				{ IEnumerationLiteral 
+					- _id = GUID 23da8cf0-bfc5-4ad5-80d1-84e784b754e7;
+					- _name = "enumerationliteral_1";
+					- _modifiedTimeWeak = 8.3.2016::13:26:26;
+					- _value = "";
+				}
+				{ IEnumerationLiteral 
+					- _id = GUID 96f0c201-549d-46c4-b256-e605b76656de;
+					- _name = "enumerationliteral_2";
+					- _modifiedTimeWeak = 8.3.2016::13:26:27;
+					- _value = "";
+				}
+			}
+			- _kind = Enumeration;
+		}
+	}
+	- _configurationRelatedTime = 1.1.1970::1:0:0;
+}
+
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/EnumerationInBDD_rpy/DefaultComponent.cmp b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/EnumerationInBDD_rpy/DefaultComponent.cmp
new file mode 100644
index 0000000..f5a8206
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/EnumerationInBDD_rpy/DefaultComponent.cmp
@@ -0,0 +1,133 @@
+I-Logix-RPY-Archive version 8.8.0 C++ 6107223
+{ IComponent 
+	- _id = GUID 39812a8b-d20e-4cec-a317-b03e63c4f54b;
+	- _myState = 139264;
+	- _name = "DefaultComponent";
+	- _modifiedTimeWeak = 8.3.2016::13:25:18;
+	- m_buildType = Executable;
+	- m_libraries = "";
+	- m_additionalSources = "";
+	- m_standardHeaders = "";
+	- m_includePath = "";
+	- m_initializationCode = "";
+	- m_folder = { IFolder 
+		- _id = GUID cf3ed606-71ce-4c77-a16d-4e3b243e24c4;
+		- _myState = 73728;
+		- _name = "Files";
+		- _modifiedTimeWeak = 8.3.2016::13:25:16;
+		- m_path = "";
+		- Elements = { IRPYRawContainer 
+			- size = 0;
+		}
+		- Files = { IRPYRawContainer 
+			- size = 0;
+		}
+	}
+	- m_configActive = { ICodeGenConfigInfoHandle 
+		- _m2Class = "ICodeGenConfigInfo";
+		- _id = GUID a0b1642b-226d-497e-b003-17262d084803;
+	}
+	- Configs = { IRPYRawContainer 
+		- size = 1;
+		- value = 
+		{ ICodeGenConfigInfo 
+			- _id = GUID a0b1642b-226d-497e-b003-17262d084803;
+			- _myState = 8192;
+			- _name = "DefaultConfig";
+			- _modifiedTimeWeak = 1.1.1970::1:0:0;
+			- HyperLinks = { IRPYRawContainer 
+				- size = 2;
+				- value = 
+				{ IMHyperLink 
+					- _id = GUID 6e0e9fea-1240-4372-a23e-a7283d543e7d;
+					- _modifiedTimeWeak = 1.1.1970::1:0:0;
+					- _dependsOn = { INObjectHandle 
+						- _m2Class = "";
+					}
+					- _linkDispName = "Edit Makefile";
+					- _linkType = "FREE";
+					- _linkTarget = "F:\\RhapsodyTest\\EnumerationInBDD\\DefaultComponent\\DefaultConfig\\DefaultComponent.mak";
+					- isConfigurationFileHyperLink = 1;
+				}
+				{ IMHyperLink 
+					- _id = GUID e3b95a32-b887-44da-a544-bbcc0b076277;
+					- _modifiedTimeWeak = 1.1.1970::1:0:0;
+					- _dependsOn = { INObjectHandle 
+						- _m2Class = "";
+					}
+					- _linkDispName = "Edit Main File";
+					- _linkType = "FREE";
+					- _linkTarget = "F:\\RhapsodyTest\\EnumerationInBDD\\DefaultComponent\\DefaultConfig\\MainDefaultComponent";
+					- isConfigurationFileHyperLink = 1;
+				}
+			}
+			- _scopeType = Explicit;
+			- _libraries = "";
+			- _additionalSources = "";
+			- _standardHeaders = "";
+			- _includePath = "";
+			- _targetMain = "";
+			- _instrumentation = None;
+			- _timeModel = RealTime;
+			- m_generateActors = 1;
+			- _statechartImplementation = Flat;
+			- _initializationCode = "";
+			- _checksList = 0 ;
+			- ScopeElements = { IRPYRawContainer 
+				- size = 0;
+			}
+			- InitialInstances = { IRPYRawContainer 
+				- size = 0;
+			}
+			- _root = { IFolder 
+				- _id = GUID ab2bd897-1a95-4eb5-9915-67c5431c8321;
+				- _myState = 8192;
+				- _name = "DefaultConfig";
+				- _modifiedTimeWeak = 1.1.1970::1:0:0;
+				- m_path = "";
+				- Elements = { IRPYRawContainer 
+					- size = 0;
+				}
+				- Files = { IRPYRawContainer 
+					- size = 0;
+				}
+			}
+			- weakCGTime = 1.1.1970::1:0:0;
+			- strongCGTime = 1.1.1970::1:0:0;
+			- AnimScopeElements = { IRPYRawContainer 
+				- size = 0;
+			}
+			- m_allInAnimScope = 1;
+			- m_generateUsecases = 0;
+		}
+	}
+	- HandlesInMe = { IRPYRawContainer 
+		- size = 2;
+		- value = 
+		{ IHandle 
+			- _m2Class = "ISubsystem";
+			- _filename = "Default.sbs";
+			- _subsystem = "";
+			- _class = "";
+			- _name = "Default";
+			- _id = GUID 253017c5-b226-42a7-8f35-7acef90c8904;
+		}
+		{ IHandle 
+			- _m2Class = "IProfile";
+			- _filename = "$OMROOT\\Profiles\\SysML\\SysMLProfile_rpy\\SysML.sbs";
+			- _subsystem = "";
+			- _class = "";
+			- _name = "SysML";
+			- _id = GUID d9689b73-885e-44c4-896b-de43defa0a33;
+		}
+	}
+	- VariationPoints = { IRPYRawContainer 
+		- size = 0;
+	}
+	- SelectedVariants = { IRPYRawContainer 
+		- size = 0;
+	}
+	- weakCGTime = 8.3.2016::13:25:18;
+	- strongCGTime = 1.1.1970::1:0:0;
+}
+
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/EnumerationInBDD_rpy/filesTable.dat b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/EnumerationInBDD_rpy/filesTable.dat
new file mode 100644
index 0000000..dd86b0d
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/EnumerationInBDD_rpy/filesTable.dat
@@ -0,0 +1,10 @@
+I-Logix-RPY-Archive version 8.8.0 * 6107223
+
+- filesTable = { IRPYRawContainer 
+	- size = 3;
+	- value = "EnumerationInBDD.rpy" ""
+	"EnumerationInBDD_rpy\\Default.sbs" "Default"
+	"EnumerationInBDD_rpy\\DefaultComponent.cmp" "DefaultComponent"
+	
+}
+
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/expected_papyrus/EnumerationInBDD.di b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/expected_papyrus/EnumerationInBDD.di
new file mode 100644
index 0000000..bf9abab
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/expected_papyrus/EnumerationInBDD.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/expected_papyrus/EnumerationInBDD.notation b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/expected_papyrus/EnumerationInBDD.notation
new file mode 100644
index 0000000..545faa4
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/expected_papyrus/EnumerationInBDD.notation
@@ -0,0 +1,148 @@
+<?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/5.0.0/UML" xmi:id="_eAO4QtzAEea4K6xARJBg7g" type="BlockDefinition" name="Model1" measurementUnit="Pixel">
+  <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eAO4Q9zAEea4K6xARJBg7g" source="Imported from a Rpy Model">
+    <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eAO4RNzAEea4K6xARJBg7g" key="Rpy Model Name" value="EnumerationInBDD"/>
+    <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eAO4RdzAEea4K6xARJBg7g" key="Rpy Version" value="version 8.8.0 C++ 6107223&#xA;"/>
+    <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eAO4RtzAEea4K6xARJBg7g" key="Papyrus Rpy Import Bundle Version" value="0.7.0.qualifier"/>
+  </eAnnotations>
+  <children xmi:type="notation:Shape" xmi:id="_eAO4R9zAEea4K6xARJBg7g" type="shape_uml_enumeration_as_classifier">
+    <children xmi:type="notation:DecorationNode" xmi:id="_eAO4SNzAEea4K6xARJBg7g" type="label_uml_namedelement_name"/>
+    <children xmi:type="notation:ListCompartment" xmi:id="_eAO4SdzAEea4K6xARJBg7g" visible="false" type="compartment_uml_enumerationliteral_as_list">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eAO4StzAEea4K6xARJBg7g" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eAO4S9zAEea4K6xARJBg7g" key="visible" value="true"/>
+      </eAnnotations>
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_eAO4TNzAEea4K6xARJBg7g"/>
+      <styles xmi:type="notation:TitleStyle" xmi:id="_eAO4TdzAEea4K6xARJBg7g"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_eAO4TtzAEea4K6xARJBg7g"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_eAO4T9zAEea4K6xARJBg7g"/>
+    </children>
+    <element xmi:type="uml:Enumeration" href="EnumerationInBDD.uml#GUID-00e64c98-8bc7-4f58-ae8d-5af5ecc94220"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eAO4UNzAEea4K6xARJBg7g" x="36" y="48" width="108" height="120"/>
+  </children>
+  <children xmi:type="notation:Shape" xmi:id="_eAO4UdzAEea4K6xARJBg7g" type="shape_uml_enumeration_as_classifier">
+    <children xmi:type="notation:DecorationNode" xmi:id="_eAO4UtzAEea4K6xARJBg7g" type="label_uml_namedelement_name"/>
+    <children xmi:type="notation:ListCompartment" xmi:id="_eAO4U9zAEea4K6xARJBg7g" type="compartment_uml_enumerationliteral_as_list">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eAO4VNzAEea4K6xARJBg7g" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eAO4VdzAEea4K6xARJBg7g" key="visible" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:Node" xmi:id="_eAPfENzAEea4K6xARJBg7g" type="shape_uml_enumerationliteral_as_label">
+        <styles xmi:type="notation:ShapeStyle" xmi:id="_eAPfEdzAEea4K6xARJBg7g"/>
+        <element xmi:type="uml:EnumerationLiteral" href="EnumerationInBDD.uml#GUID-a9730f30-f712-4d48-a5f8-70c54d84531c"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_eAPfEtzAEea4K6xARJBg7g"/>
+      </children>
+      <children xmi:type="notation:Node" xmi:id="_eAPfE9zAEea4K6xARJBg7g" type="shape_uml_enumerationliteral_as_label">
+        <styles xmi:type="notation:ShapeStyle" xmi:id="_eAPfFNzAEea4K6xARJBg7g"/>
+        <element xmi:type="uml:EnumerationLiteral" href="EnumerationInBDD.uml#GUID-23da8cf0-bfc5-4ad5-80d1-84e784b754e7"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_eAPfFdzAEea4K6xARJBg7g"/>
+      </children>
+      <children xmi:type="notation:Node" xmi:id="_eAPfFtzAEea4K6xARJBg7g" type="shape_uml_enumerationliteral_as_label">
+        <styles xmi:type="notation:ShapeStyle" xmi:id="_eAPfF9zAEea4K6xARJBg7g"/>
+        <element xmi:type="uml:EnumerationLiteral" href="EnumerationInBDD.uml#GUID-96f0c201-549d-46c4-b256-e605b76656de"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_eAPfGNzAEea4K6xARJBg7g"/>
+      </children>
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_eAPfGdzAEea4K6xARJBg7g"/>
+      <styles xmi:type="notation:TitleStyle" xmi:id="_eAPfGtzAEea4K6xARJBg7g"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_eAPfG9zAEea4K6xARJBg7g"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_eAPfHNzAEea4K6xARJBg7g"/>
+    </children>
+    <element xmi:type="uml:Enumeration" href="EnumerationInBDD.uml#GUID-00e64c98-8bc7-4f58-ae8d-5af5ecc94220"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eAPfHdzAEea4K6xARJBg7g" x="48" y="192" width="125" height="132"/>
+  </children>
+  <children xmi:type="notation:Shape" xmi:id="_eAPfHtzAEea4K6xARJBg7g" type="shape_uml_enumeration_as_classifier">
+    <children xmi:type="notation:DecorationNode" xmi:id="_eAPfH9zAEea4K6xARJBg7g" type="label_uml_namedelement_name"/>
+    <children xmi:type="notation:ListCompartment" xmi:id="_eAPfINzAEea4K6xARJBg7g" type="compartment_uml_enumerationliteral_as_list">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eAPfIdzAEea4K6xARJBg7g" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eAPfItzAEea4K6xARJBg7g" key="visible" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:Node" xmi:id="_eAPfI9zAEea4K6xARJBg7g" type="shape_uml_enumerationliteral_as_label">
+        <styles xmi:type="notation:ShapeStyle" xmi:id="_eAPfJNzAEea4K6xARJBg7g"/>
+        <element xmi:type="uml:EnumerationLiteral" href="EnumerationInBDD.uml#GUID-23da8cf0-bfc5-4ad5-80d1-84e784b754e7"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_eAPfJdzAEea4K6xARJBg7g"/>
+      </children>
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_eAPfJtzAEea4K6xARJBg7g"/>
+      <styles xmi:type="notation:TitleStyle" xmi:id="_eAPfJ9zAEea4K6xARJBg7g"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_eAPfKNzAEea4K6xARJBg7g"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_eAPfKdzAEea4K6xARJBg7g"/>
+    </children>
+    <element xmi:type="uml:Enumeration" href="EnumerationInBDD.uml#GUID-00e64c98-8bc7-4f58-ae8d-5af5ecc94220"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eAPfKtzAEea4K6xARJBg7g" x="48" y="324" width="144" height="107"/>
+  </children>
+  <children xmi:type="notation:Shape" xmi:id="_eAPfK9zAEea4K6xARJBg7g" type="shape_uml_enumeration_as_classifier">
+    <children xmi:type="notation:DecorationNode" xmi:id="_eAPfLNzAEea4K6xARJBg7g" type="label_uml_namedelement_name"/>
+    <children xmi:type="notation:ListCompartment" xmi:id="_eAPfLdzAEea4K6xARJBg7g" type="compartment_uml_enumerationliteral_as_list">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eAPfLtzAEea4K6xARJBg7g" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eAPfL9zAEea4K6xARJBg7g" key="visible" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:Node" xmi:id="_eAPfMNzAEea4K6xARJBg7g" type="shape_uml_enumerationliteral_as_label">
+        <styles xmi:type="notation:ShapeStyle" xmi:id="_eAPfMdzAEea4K6xARJBg7g"/>
+        <element xmi:type="uml:EnumerationLiteral" href="EnumerationInBDD.uml#GUID-a9730f30-f712-4d48-a5f8-70c54d84531c"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_eAPfMtzAEea4K6xARJBg7g"/>
+      </children>
+      <children xmi:type="notation:Node" xmi:id="_eAPfM9zAEea4K6xARJBg7g" type="shape_uml_enumerationliteral_as_label">
+        <styles xmi:type="notation:ShapeStyle" xmi:id="_eAPfNNzAEea4K6xARJBg7g"/>
+        <element xmi:type="uml:EnumerationLiteral" href="EnumerationInBDD.uml#GUID-23da8cf0-bfc5-4ad5-80d1-84e784b754e7"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_eAPfNdzAEea4K6xARJBg7g"/>
+      </children>
+      <children xmi:type="notation:Node" xmi:id="_eAPfNtzAEea4K6xARJBg7g" type="shape_uml_enumerationliteral_as_label">
+        <styles xmi:type="notation:ShapeStyle" xmi:id="_eAPfN9zAEea4K6xARJBg7g"/>
+        <element xmi:type="uml:EnumerationLiteral" href="EnumerationInBDD.uml#GUID-96f0c201-549d-46c4-b256-e605b76656de"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_eAPfONzAEea4K6xARJBg7g"/>
+      </children>
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_eAPfOdzAEea4K6xARJBg7g"/>
+      <styles xmi:type="notation:TitleStyle" xmi:id="_eAPfOtzAEea4K6xARJBg7g"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_eAPfO9zAEea4K6xARJBg7g"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_eAPfPNzAEea4K6xARJBg7g"/>
+    </children>
+    <element xmi:type="uml:Enumeration" href="EnumerationInBDD.uml#GUID-00e64c98-8bc7-4f58-ae8d-5af5ecc94220"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eAPfPdzAEea4K6xARJBg7g" x="180" y="48" width="180" height="120"/>
+  </children>
+  <children xmi:type="notation:Shape" xmi:id="_eAPfPtzAEea4K6xARJBg7g" type="shape_uml_enumeration_as_classifier">
+    <children xmi:type="notation:DecorationNode" xmi:id="_eAPfP9zAEea4K6xARJBg7g" type="label_uml_namedelement_name"/>
+    <children xmi:type="notation:ListCompartment" xmi:id="_eAPfQNzAEea4K6xARJBg7g" type="compartment_uml_enumerationliteral_as_list">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eAPfQdzAEea4K6xARJBg7g" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eAPfQtzAEea4K6xARJBg7g" key="showTitle" value="false"/>
+      </eAnnotations>
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eAPfQ9zAEea4K6xARJBg7g" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eAPfRNzAEea4K6xARJBg7g" key="visible" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:Node" xmi:id="_eAPfRdzAEea4K6xARJBg7g" type="shape_uml_enumerationliteral_as_label">
+        <styles xmi:type="notation:ShapeStyle" xmi:id="_eAPfRtzAEea4K6xARJBg7g"/>
+        <element xmi:type="uml:EnumerationLiteral" href="EnumerationInBDD.uml#GUID-a9730f30-f712-4d48-a5f8-70c54d84531c"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_eAPfR9zAEea4K6xARJBg7g"/>
+      </children>
+      <children xmi:type="notation:Node" xmi:id="_eAPfSNzAEea4K6xARJBg7g" type="shape_uml_enumerationliteral_as_label">
+        <styles xmi:type="notation:ShapeStyle" xmi:id="_eAPfSdzAEea4K6xARJBg7g"/>
+        <element xmi:type="uml:EnumerationLiteral" href="EnumerationInBDD.uml#GUID-23da8cf0-bfc5-4ad5-80d1-84e784b754e7"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_eAPfStzAEea4K6xARJBg7g"/>
+      </children>
+      <children xmi:type="notation:Node" xmi:id="_eAPfS9zAEea4K6xARJBg7g" type="shape_uml_enumerationliteral_as_label">
+        <styles xmi:type="notation:ShapeStyle" xmi:id="_eAPfTNzAEea4K6xARJBg7g"/>
+        <element xmi:type="uml:EnumerationLiteral" href="EnumerationInBDD.uml#GUID-96f0c201-549d-46c4-b256-e605b76656de"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_eAPfTdzAEea4K6xARJBg7g"/>
+      </children>
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_eAPfTtzAEea4K6xARJBg7g"/>
+      <styles xmi:type="notation:TitleStyle" xmi:id="_eAPfT9zAEea4K6xARJBg7g"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_eAPfUNzAEea4K6xARJBg7g"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_eAPfUdzAEea4K6xARJBg7g"/>
+    </children>
+    <element xmi:type="uml:Enumeration" href="EnumerationInBDD.uml#GUID-00e64c98-8bc7-4f58-ae8d-5af5ecc94220"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eAPfUtzAEea4K6xARJBg7g" x="360" y="48" width="180" height="120"/>
+  </children>
+  <children xmi:type="notation:Shape" xmi:id="_eAPfU9zAEea4K6xARJBg7g" type="shape_uml_enumeration_as_classifier">
+    <children xmi:type="notation:DecorationNode" xmi:id="_eAPfVNzAEea4K6xARJBg7g" type="label_uml_namedelement_name"/>
+    <children xmi:type="notation:ListCompartment" xmi:id="_eAPfVdzAEea4K6xARJBg7g" type="compartment_uml_enumerationliteral_as_list">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eAPfVtzAEea4K6xARJBg7g" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eAPfV9zAEea4K6xARJBg7g" key="visible" value="true"/>
+      </eAnnotations>
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_eAPfWNzAEea4K6xARJBg7g"/>
+      <styles xmi:type="notation:TitleStyle" xmi:id="_eAPfWdzAEea4K6xARJBg7g"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_eAPfWtzAEea4K6xARJBg7g"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_eAPfW9zAEea4K6xARJBg7g"/>
+    </children>
+    <element xmi:type="uml:Enumeration" href="EnumerationInBDD.uml#GUID-00e64c98-8bc7-4f58-ae8d-5af5ecc94220"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eAPfXNzAEea4K6xARJBg7g" x="312" y="192" width="108" height="73"/>
+  </children>
+  <styles xmi:type="notation:DiagramStyle" xmi:id="_eAPfXdzAEea4K6xARJBg7g"/>
+  <styles xmi:type="notation:StringValueStyle" xmi:id="_eAPfXtzAEea4K6xARJBg7g" name="diagram_compatibility_version" stringValue="1.2.0"/>
+  <element xmi:type="uml:Package" href="EnumerationInBDD.uml#GUID-253017c5-b226-42a7-8f35-7acef90c8904"/>
+</notation:Diagram>
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/expected_papyrus/EnumerationInBDD.properties b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/expected_papyrus/EnumerationInBDD.properties
new file mode 100644
index 0000000..26907ad
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/expected_papyrus/EnumerationInBDD.properties
@@ -0,0 +1 @@
+#Tue Jan 17 15:23:08 CET 2017
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/expected_papyrus/EnumerationInBDD.uml b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/expected_papyrus/EnumerationInBDD.uml
new file mode 100644
index 0000000..5c5fa1e
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/EnumerationInBDD_test/expected_papyrus/EnumerationInBDD.uml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="GUID-347aebc9-6081-481d-8f5f-78bee902cb73" name="EnumerationInBDD">
+  <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-347aebc9-6081-481d-8f5f-78bee902cb73-EAnnotation--752770677" source="Imported from a Rpy Model">
+    <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="GUID-347aebc9-6081-481d-8f5f-78bee902cb73-EAnnotation--752770677-EStringToStringMapEntry--492027705--1851833578" key="Rpy Model Name" value="EnumerationInBDD"/>
+    <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="GUID-347aebc9-6081-481d-8f5f-78bee902cb73-EAnnotation--752770677-EStringToStringMapEntry-437159795-0" key="Rpy Version" value=""/>
+    <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="GUID-347aebc9-6081-481d-8f5f-78bee902cb73-EAnnotation--752770677-EStringToStringMapEntry--793831098--1799222281" key="Papyrus Rpy Import Bundle Version" value="0.7.0.qualifier"/>
+  </eAnnotations>
+  <packageImport xmi:type="uml:PackageImport" xmi:id="GUID-347aebc9-6081-481d-8f5f-78bee902cb73-PackageImport-PrimitiveTypes">
+    <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+  </packageImport>
+  <packagedElement xmi:type="uml:Package" xmi:id="GUID-253017c5-b226-42a7-8f35-7acef90c8904" name="Default">
+    <packagedElement xmi:type="uml:Enumeration" xmi:id="GUID-00e64c98-8bc7-4f58-ae8d-5af5ecc94220" name="MyEnum">
+      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="GUID-a9730f30-f712-4d48-a5f8-70c54d84531c" name="enumerationliteral_0"/>
+      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="GUID-23da8cf0-bfc5-4ad5-80d1-84e784b754e7" name="enumerationliteral_1"/>
+      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="GUID-96f0c201-549d-46c4-b256-e605b76656de" name="enumerationliteral_2"/>
+    </packagedElement>
+  </packagedElement>
+  <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-347aebc9-6081-481d-8f5f-78bee902cb73-ProfileApplication-SysML">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-347aebc9-6081-481d-8f5f-78bee902cb73-ProfileApplication-SysML-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+      <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#/"/>
+    </eAnnotations>
+    <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_TZ_nULU5EduiKqCzJMWbGw"/>
+  </profileApplication>
+  <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-347aebc9-6081-481d-8f5f-78bee902cb73-ProfileApplication-SysML::ModelElements">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-347aebc9-6081-481d-8f5f-78bee902cb73-ProfileApplication-SysML::ModelElements-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+      <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//modelelements"/>
+    </eAnnotations>
+    <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_Gx8MgLX7EduFmqQsrNB9lw"/>
+  </profileApplication>
+  <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-347aebc9-6081-481d-8f5f-78bee902cb73-ProfileApplication-SysML::Blocks">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-347aebc9-6081-481d-8f5f-78bee902cb73-ProfileApplication-SysML::Blocks-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+      <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//blocks"/>
+    </eAnnotations>
+    <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_fSw28LX7EduFmqQsrNB9lw"/>
+  </profileApplication>
+  <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-347aebc9-6081-481d-8f5f-78bee902cb73-ProfileApplication-SysML::PortAndFlows">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-347aebc9-6081-481d-8f5f-78bee902cb73-ProfileApplication-SysML::PortAndFlows-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+      <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//portandflows"/>
+    </eAnnotations>
+    <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_rpx28LX7EduFmqQsrNB9lw"/>
+  </profileApplication>
+  <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-347aebc9-6081-481d-8f5f-78bee902cb73-ProfileApplication-SysML::Constraints">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-347aebc9-6081-481d-8f5f-78bee902cb73-ProfileApplication-SysML::Constraints-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+      <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//constraints"/>
+    </eAnnotations>
+    <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_5WYJ0LX7EduFmqQsrNB9lw"/>
+  </profileApplication>
+  <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-347aebc9-6081-481d-8f5f-78bee902cb73-ProfileApplication-SysML::Activities">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-347aebc9-6081-481d-8f5f-78bee902cb73-ProfileApplication-SysML::Activities-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+      <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//activities"/>
+    </eAnnotations>
+    <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_C2zXMLX8EduFmqQsrNB9lw"/>
+  </profileApplication>
+  <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-347aebc9-6081-481d-8f5f-78bee902cb73-ProfileApplication-SysML::Allocations">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-347aebc9-6081-481d-8f5f-78bee902cb73-ProfileApplication-SysML::Allocations-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+      <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//allocations"/>
+    </eAnnotations>
+    <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_NxdG4LX8EduFmqQsrNB9lw"/>
+  </profileApplication>
+  <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-347aebc9-6081-481d-8f5f-78bee902cb73-ProfileApplication-SysML::Requirements">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-347aebc9-6081-481d-8f5f-78bee902cb73-ProfileApplication-SysML::Requirements-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+      <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//requirements"/>
+    </eAnnotations>
+    <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_OOJC4LX8EduFmqQsrNB9lw"/>
+  </profileApplication>
+  <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-347aebc9-6081-481d-8f5f-78bee902cb73-ProfileApplication-SysML::Interactions">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-347aebc9-6081-481d-8f5f-78bee902cb73-ProfileApplication-SysML::Interactions-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+      <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//interactions"/>
+    </eAnnotations>
+    <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_meOioLX8EduFmqQsrNB9lw"/>
+  </profileApplication>
+  <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-347aebc9-6081-481d-8f5f-78bee902cb73-ProfileApplication-SysML::StateMachines">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-347aebc9-6081-481d-8f5f-78bee902cb73-ProfileApplication-SysML::StateMachines-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+      <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//statemachines"/>
+    </eAnnotations>
+    <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_nAF5kLX8EduFmqQsrNB9lw"/>
+  </profileApplication>
+  <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-347aebc9-6081-481d-8f5f-78bee902cb73-ProfileApplication-SysML::UseCases">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-347aebc9-6081-481d-8f5f-78bee902cb73-ProfileApplication-SysML::UseCases-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+      <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//usecases"/>
+    </eAnnotations>
+    <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_neZmMLX8EduFmqQsrNB9lw"/>
+  </profileApplication>
+</uml:Model>
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/Inputs/Model/Rph_Actors_And_Events_001.ehl b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/Inputs/Model/Rph_Actors_And_Events_001.ehl
new file mode 100644
index 0000000..2c2ad5d
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/Inputs/Model/Rph_Actors_And_Events_001.ehl
@@ -0,0 +1,3 @@
+[Op Calls]
+[Events]
+[Breakpoints]
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/Inputs/Model/Rph_Actors_And_Events_001.rpw b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/Inputs/Model/Rph_Actors_And_Events_001.rpw
new file mode 100644
index 0000000..456b2cf
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/Inputs/Model/Rph_Actors_And_Events_001.rpw
@@ -0,0 +1,96 @@
+I-Logix-RPY-Archive version 8.12.0 * 9728113
+{ CGEMdiWorkspace 
+	- stubList = { IRPYRawContainer 
+		- size = 0;
+	}
+	- isLoadOnDemand = 0;
+	- myViewsWithID = { IRPYRawContainer 
+		- size = 2;
+		- value = 
+		{ CGEMdiDiagramParams 
+			- _placement = { CCommon_WINDOWPLACEMENT 
+				- m_nLength = 44;
+				- m_nFlags = 2;
+				- m_showCmd = 3;
+				- m_ptMinPositionX = -1;
+				- m_ptMinPositionY = -1;
+				- m_ptMaxPositionX = -8;
+				- m_ptMaxPositionY = -30;
+				- m_nLeft = 50;
+				- m_nTop = 50;
+				- m_nRight = 1705;
+				- m_nBottom = 883;
+			}
+			- _wasOpenedOnCloseProject = 1;
+			- _theDiagram = { IHandle 
+				- _m2Class = "IDiagram";
+				- _filename = "Default.sbs";
+				- _subsystem = "Default";
+				- _class = "";
+				- _name = "block definition diagram_0";
+				- _id = GUID 66e8cea3-dd1e-4b10-a65e-f164c94da1ba;
+			}
+			- _UpLeft = 0 0 ;
+			- _DownRight = 1378 823 ;
+			- _instanceName = "";
+			- m_nDiagramIndex = 0;
+			- m_bIsActiveView = 1;
+		}
+		{ CGEMdiDiagramParams 
+			- _placement = { CCommon_WINDOWPLACEMENT 
+				- m_nLength = 44;
+				- m_nFlags = 0;
+				- m_showCmd = 1;
+				- m_ptMinPositionX = -1;
+				- m_ptMinPositionY = -1;
+				- m_ptMaxPositionX = -8;
+				- m_ptMaxPositionY = -30;
+				- m_nLeft = 25;
+				- m_nTop = 25;
+				- m_nRight = 1680;
+				- m_nBottom = 858;
+			}
+			- _wasOpenedOnCloseProject = 1;
+			- _theDiagram = { IHandle 
+				- _m2Class = "IDiagram";
+				- _filename = "";
+				- _subsystem = "";
+				- _class = "";
+				- _name = "Model1";
+				- _id = GUID b38c904c-52b8-421d-92ca-3a96c944a3c5;
+			}
+			- _UpLeft = 0 0 ;
+			- _DownRight = 1618 774 ;
+			- _instanceName = "";
+			- m_nDiagramIndex = 1;
+			- m_bIsActiveView = 0;
+		}
+	}
+	- _fullName = "D:\\VL222926\\Desktop\\rpyTMP\\Rph_Actors_And_Events_001";
+	- m_SearchScopeList = { IRPYRawContainer 
+		- size = 0;
+	}
+	- bUsingCustomBrowserView = 0;
+	- bUsingQueries = 0;
+	- bApplyOnDiagrams = 0;
+	- liQueryIDs = { IRPYRawContainer 
+		- size = 0;
+	}
+	- liElementTypes = { IRPYRawContainer 
+		- size = 0;
+	}
+	- mapOslcRmCollections = { IRPYRawContainer 
+		- size = 0;
+	}
+
+	- m_favoritesTree = {
+		count=1;
+		{ - favoritesItem
+			generation = 0;
+			name = Favorites;
+			idOrFolder = folder;
+		}
+	}
+
+}
+
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/Inputs/Model/Rph_Actors_And_Events_001.rpy b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/Inputs/Model/Rph_Actors_And_Events_001.rpy
new file mode 100644
index 0000000..917a95f
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/Inputs/Model/Rph_Actors_And_Events_001.rpy
@@ -0,0 +1,313 @@
+I-Logix-RPY-Archive version 8.12.0 C++ 9728113
+{ IProject 
+	- _id = GUID abdfc616-0f20-428d-8a91-35b13ae587ff;
+	- _myState = 8192;
+	- _name = "Rph_Actors_And_Events_001";
+	- Stereotypes = { IRPYRawContainer 
+		- size = 1;
+		- value = 
+		{ IHandle 
+			- _m2Class = "IStereotype";
+			- _filename = "$OMROOT\\Profiles\\SysML\\SysMLProfile_rpy\\SysML.sbs";
+			- _subsystem = "SysML";
+			- _class = "";
+			- _name = "SysML";
+			- _id = GUID 052b8171-a32b-4f45-a829-5585f79f9deb;
+		}
+	}
+	- _modifiedTimeWeak = 1.12.2017::10:19:54;
+	- _UserColors = { IRPYRawContainer 
+		- size = 16;
+		- value = 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 
+	}
+	- _defaultSubsystem = { ISubsystemHandle 
+		- _m2Class = "ISubsystem";
+		- _filename = "Default.sbs";
+		- _subsystem = "";
+		- _class = "";
+		- _name = "Default";
+		- _id = GUID 337ad934-0dd7-4d29-a363-f6a451039341;
+	}
+	- _component = { IHandle 
+		- _m2Class = "IComponent";
+		- _filename = "DefaultComponent.cmp";
+		- _subsystem = "";
+		- _class = "";
+		- _name = "DefaultComponent";
+		- _id = GUID 39c93af1-49c5-433e-b76b-8263ef3ea73f;
+	}
+	- Multiplicities = { IRPYRawContainer 
+		- size = 4;
+		- value = 
+		{ IMultiplicityItem 
+			- _name = "1";
+			- _count = -1;
+		}
+		{ IMultiplicityItem 
+			- _name = "*";
+			- _count = -1;
+		}
+		{ IMultiplicityItem 
+			- _name = "0,1";
+			- _count = -1;
+		}
+		{ IMultiplicityItem 
+			- _name = "1..*";
+			- _count = -1;
+		}
+	}
+	- Subsystems = { IRPYRawContainer 
+		- size = 3;
+		- value = 
+		{ ISubsystem 
+			- fileName = "Default";
+			- _id = GUID 337ad934-0dd7-4d29-a363-f6a451039341;
+		}
+		{ IProfile 
+			- fileName = "SysML";
+			- _persistAs = "$OMROOT\\Profiles\\SysML\\SysMLProfile_rpy";
+			- _id = GUID d9689b73-885e-44c4-896b-de43defa0a33;
+			- _isReference = 1;
+		}
+		{ IProfile 
+			- fileName = "SysMLPerspectives";
+			- _persistAs = "$OMROOT\\Settings\\SysMLPerspectives";
+			- _id = GUID ab285915-0966-4322-a029-ffac3e6ef3df;
+			- _isReference = 1;
+		}
+	}
+	- Diagrams = { IRPYRawContainer 
+		- size = 1;
+		- value = 
+		{ IDiagram 
+			- _id = GUID b38c904c-52b8-421d-92ca-3a96c944a3c5;
+			- _myState = 8192;
+			- _properties = { IPropertyContainer 
+				- Subjects = { IRPYRawContainer 
+					- size = 1;
+					- value = 
+					{ IPropertySubject 
+						- _Name = "Format";
+						- Metaclasses = { IRPYRawContainer 
+							- size = 1;
+							- value = 
+							{ IPropertyMetaclass 
+								- _Name = "DiagramFrame";
+								- Properties = { IRPYRawContainer 
+									- size = 8;
+									- value = 
+									{ IProperty 
+										- _Name = "DefaultSize";
+										- _Value = "20,20,590,500";
+										- _Type = String;
+									}
+									{ IProperty 
+										- _Name = "Fill.FillColor";
+										- _Value = "247,247,247";
+										- _Type = Color;
+									}
+									{ IProperty 
+										- _Name = "Fill.Transparent_Fill";
+										- _Value = "0";
+										- _Type = Int;
+									}
+									{ IProperty 
+										- _Name = "Font.Font";
+										- _Value = "Tahoma";
+										- _Type = String;
+									}
+									{ IProperty 
+										- _Name = "Font.Size";
+										- _Value = "8";
+										- _Type = Int;
+									}
+									{ IProperty 
+										- _Name = "Font.Weight@Child.NameCompartment@Name";
+										- _Value = "700";
+										- _Type = Int;
+									}
+									{ IProperty 
+										- _Name = "Line.LineColor";
+										- _Value = "194,192,192";
+										- _Type = Color;
+									}
+									{ IProperty 
+										- _Name = "Line.LineWidth";
+										- _Value = "1";
+										- _Type = Int;
+									}
+								}
+							}
+						}
+					}
+				}
+			}
+			- _name = "Model1";
+			- Stereotypes = { IRPYRawContainer 
+				- size = 1;
+				- value = 
+				{ IHandle 
+					- _m2Class = "IStereotype";
+					- _filename = "$OMROOT\\Profiles\\SysML\\SysMLProfile_rpy\\SysML.sbs";
+					- _subsystem = "SysML::Diagrams";
+					- _class = "";
+					- _name = "Block Definition Diagram";
+					- _id = GUID 6c142614-3349-49e9-8c6b-0236be5f6b61;
+				}
+			}
+			- _modifiedTimeWeak = 1.2.1990::0:0:0;
+			- _lastModifiedTime = "1.12.2017::10:11:32";
+			- _graphicChart = { CGIClassChart 
+				- _id = GUID c062110c-a9c0-4280-92aa-92acc2702c1c;
+				- m_type = 0;
+				- m_pModelObject = { IHandle 
+					- _m2Class = "IDiagram";
+					- _id = GUID b38c904c-52b8-421d-92ca-3a96c944a3c5;
+				}
+				- m_pParent = ;
+				- m_name = { CGIText 
+					- m_str = "";
+					- m_style = "Arial" 10 0 0 0 1 ;
+					- m_color = { IColor 
+						- m_fgColor = 0;
+						- m_bgColor = 0;
+						- m_bgFlag = 0;
+					}
+					- m_position = 1 0 0  ;
+					- m_nIdent = 0;
+					- m_bImplicitSetRectPoints = 0;
+					- m_nOrientationCtrlPt = 8;
+				}
+				- m_drawBehavior = 0;
+				- m_bIsPreferencesInitialized = 0;
+				- elementList = 2;
+				{ CGIClass 
+					- _id = GUID 7abb9959-9cec-4417-b542-da7568653f0c;
+					- m_type = 78;
+					- m_pModelObject = { IHandle 
+						- _m2Class = "IClass";
+						- _filename = "Default.sbs";
+						- _subsystem = "Default";
+						- _class = "";
+						- _name = "TopLevel";
+						- _id = GUID 5dbb87ca-b8b1-43a0-8c81-bb1201d9755b;
+					}
+					- m_pParent = ;
+					- m_name = { CGIText 
+						- m_str = "TopLevel";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 5;
+					}
+					- m_drawBehavior = 0;
+					- m_bIsPreferencesInitialized = 0;
+					- m_AdditionalLabel = { CGIText 
+						- m_str = "";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 1;
+					}
+					- m_polygon = 0 ;
+					- m_nNameFormat = 0;
+					- m_nIsNameFormat = 0;
+					- Compartments = { IRPYRawContainer 
+						- size = 0;
+					}
+					- Attrs = { IRPYRawContainer 
+						- size = 0;
+					}
+					- Operations = { IRPYRawContainer 
+						- size = 0;
+					}
+				}
+				{ CGIDiagramFrame 
+					- _id = GUID b56341eb-8f97-417d-936e-8ed4f7ff6f38;
+					- m_type = 203;
+					- m_pModelObject = { IHandle 
+						- _m2Class = "";
+					}
+					- m_pParent = GUID 7abb9959-9cec-4417-b542-da7568653f0c;
+					- m_name = { CGIText 
+						- m_str = "";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 8;
+					}
+					- m_drawBehavior = 4096;
+					- m_transform = 2.63889 0 0 3.63636 20 20 ;
+					- m_bIsPreferencesInitialized = 1;
+					- m_AdditionalLabel = { CGIText 
+						- m_str = "";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 1;
+					}
+					- m_polygon = 4 0 0  0 132  216 132  216 0  ;
+					- m_nNameFormat = 0;
+					- m_nIsNameFormat = 0;
+					- Compartments = { IRPYRawContainer 
+						- size = 0;
+					}
+				}
+				
+				- m_access = 'Z';
+				- m_modified = 'N';
+				- m_fileVersion = "";
+				- m_nModifyDate = 0;
+				- m_nCreateDate = 0;
+				- m_creator = "";
+				- m_bScaleWithZoom = 1;
+				- m_arrowStyle = 'S';
+				- m_pRoot = GUID 7abb9959-9cec-4417-b542-da7568653f0c;
+				- m_currentLeftTop = 0 0 ;
+				- m_currentRightBottom = 0 0 ;
+				- m_bFreezeCompartmentContent = 0;
+			}
+			- _defaultSubsystem = { IHandle 
+				- _m2Class = "ISubsystem";
+				- _filename = "Default.sbs";
+				- _subsystem = "";
+				- _class = "";
+				- _name = "Default";
+				- _id = GUID 337ad934-0dd7-4d29-a363-f6a451039341;
+			}
+		}
+	}
+	- Components = { IRPYRawContainer 
+		- size = 1;
+		- value = 
+		{ IComponent 
+			- fileName = "DefaultComponent";
+			- _id = GUID 39c93af1-49c5-433e-b76b-8263ef3ea73f;
+		}
+	}
+}
+
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/Inputs/Model/Rph_Actors_And_Events_001.save b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/Inputs/Model/Rph_Actors_And_Events_001.save
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/Inputs/Model/Rph_Actors_And_Events_001.save
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/Inputs/Model/Rph_Actors_And_Events_001_rpy/Default.sbs b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/Inputs/Model/Rph_Actors_And_Events_001_rpy/Default.sbs
new file mode 100644
index 0000000..24fd9a6
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/Inputs/Model/Rph_Actors_And_Events_001_rpy/Default.sbs
@@ -0,0 +1,675 @@
+I-Logix-RPY-Archive version 8.12.0 C++ 9728113
+{ ISubsystem 
+	- _id = GUID 337ad934-0dd7-4d29-a363-f6a451039341;
+	- _myState = 8192;
+	- _name = "Default";
+	- _modifiedTimeWeak = 1.12.2017::10:19:54;
+	- _lastID = 4;
+	- Declaratives = { IRPYRawContainer 
+		- size = 2;
+		- value = 
+		{ IDiagram 
+			- _id = GUID 66e8cea3-dd1e-4b10-a65e-f164c94da1ba;
+			- _myState = 10240;
+			- _properties = { IPropertyContainer 
+				- Subjects = { IRPYRawContainer 
+					- size = 1;
+					- value = 
+					{ IPropertySubject 
+						- _Name = "Format";
+						- Metaclasses = { IRPYRawContainer 
+							- size = 4;
+							- value = 
+							{ IPropertyMetaclass 
+								- _Name = "Actor";
+								- Properties = { IRPYRawContainer 
+									- size = 7;
+									- value = 
+									{ IProperty 
+										- _Name = "DefaultSize";
+										- _Value = "0,0,53,142";
+										- _Type = String;
+									}
+									{ IProperty 
+										- _Name = "Fill.FillColor";
+										- _Value = "255,255,255";
+										- _Type = Color;
+									}
+									{ IProperty 
+										- _Name = "Font.Font";
+										- _Value = "Tahoma";
+										- _Type = String;
+									}
+									{ IProperty 
+										- _Name = "Font.Size";
+										- _Value = "8";
+										- _Type = Int;
+									}
+									{ IProperty 
+										- _Name = "Font.Weight@Child.NameCompartment@Name";
+										- _Value = "700";
+										- _Type = Int;
+									}
+									{ IProperty 
+										- _Name = "Line.LineColor";
+										- _Value = "109,163,217";
+										- _Type = Color;
+									}
+									{ IProperty 
+										- _Name = "Line.LineWidth";
+										- _Value = "0";
+										- _Type = Int;
+									}
+								}
+							}
+							{ IPropertyMetaclass 
+								- _Name = "DiagramFrame";
+								- Properties = { IRPYRawContainer 
+									- size = 8;
+									- value = 
+									{ IProperty 
+										- _Name = "DefaultSize";
+										- _Value = "20,20,590,500";
+										- _Type = String;
+									}
+									{ IProperty 
+										- _Name = "Fill.FillColor";
+										- _Value = "247,247,247";
+										- _Type = Color;
+									}
+									{ IProperty 
+										- _Name = "Fill.Transparent_Fill";
+										- _Value = "0";
+										- _Type = Int;
+									}
+									{ IProperty 
+										- _Name = "Font.Font";
+										- _Value = "Tahoma";
+										- _Type = String;
+									}
+									{ IProperty 
+										- _Name = "Font.Size";
+										- _Value = "8";
+										- _Type = Int;
+									}
+									{ IProperty 
+										- _Name = "Font.Weight@Child.NameCompartment@Name";
+										- _Value = "700";
+										- _Type = Int;
+									}
+									{ IProperty 
+										- _Name = "Line.LineColor";
+										- _Value = "194,192,192";
+										- _Type = Color;
+									}
+									{ IProperty 
+										- _Name = "Line.LineWidth";
+										- _Value = "1";
+										- _Type = Int;
+									}
+								}
+							}
+							{ IPropertyMetaclass 
+								- _Name = "Event";
+								- Properties = { IRPYRawContainer 
+									- size = 8;
+									- value = 
+									{ IProperty 
+										- _Name = "DefaultSize";
+										- _Value = "0,0,108,73";
+										- _Type = String;
+									}
+									{ IProperty 
+										- _Name = "Fill.FillColor";
+										- _Value = "255,255,255";
+										- _Type = Color;
+									}
+									{ IProperty 
+										- _Name = "Font.Font";
+										- _Value = "Tahoma";
+										- _Type = String;
+									}
+									{ IProperty 
+										- _Name = "Font.Size";
+										- _Value = "8";
+										- _Type = Int;
+									}
+									{ IProperty 
+										- _Name = "Font.Weight@Child.NameCompartment@Name";
+										- _Value = "700";
+										- _Type = Int;
+									}
+									{ IProperty 
+										- _Name = "Line.LineColor";
+										- _Value = "109,163,217";
+										- _Type = Color;
+									}
+									{ IProperty 
+										- _Name = "Line.LineStyle";
+										- _Value = "0";
+										- _Type = Int;
+									}
+									{ IProperty 
+										- _Name = "Line.LineWidth";
+										- _Value = "1";
+										- _Type = Int;
+									}
+								}
+							}
+							{ IPropertyMetaclass 
+								- _Name = "Package";
+								- Properties = { IRPYRawContainer 
+									- size = 7;
+									- value = 
+									{ IProperty 
+										- _Name = "DefaultSize";
+										- _Value = "0,0,216,151";
+										- _Type = String;
+									}
+									{ IProperty 
+										- _Name = "Fill.FillColor";
+										- _Value = "255,255,255";
+										- _Type = Color;
+									}
+									{ IProperty 
+										- _Name = "Font.Font";
+										- _Value = "Tahoma";
+										- _Type = String;
+									}
+									{ IProperty 
+										- _Name = "Font.Size";
+										- _Value = "8";
+										- _Type = Int;
+									}
+									{ IProperty 
+										- _Name = "Font.Weight@Child.NameCompartment@Name";
+										- _Value = "700";
+										- _Type = Int;
+									}
+									{ IProperty 
+										- _Name = "Line.LineColor";
+										- _Value = "109,163,217";
+										- _Type = Color;
+									}
+									{ IProperty 
+										- _Name = "Line.LineWidth";
+										- _Value = "1";
+										- _Type = Int;
+									}
+								}
+							}
+						}
+					}
+				}
+			}
+			- _name = "block definition diagram_0";
+			- Stereotypes = { IRPYRawContainer 
+				- size = 1;
+				- value = 
+				{ IHandle 
+					- _m2Class = "IStereotype";
+					- _filename = "$OMROOT\\Profiles\\SysML\\SysMLProfile_rpy\\SysML.sbs";
+					- _subsystem = "SysML::Diagrams";
+					- _class = "";
+					- _name = "Block Definition Diagram";
+					- _id = GUID 6c142614-3349-49e9-8c6b-0236be5f6b61;
+				}
+			}
+			- _modifiedTimeWeak = 1.2.1990::0:0:0;
+			- _lastModifiedTime = "1.12.2017::10:15:10";
+			- _graphicChart = { CGIClassChart 
+				- _id = GUID e80f7c81-b084-4768-83ed-28fcab8e57ad;
+				- m_type = 0;
+				- m_pModelObject = { IHandle 
+					- _m2Class = "IDiagram";
+					- _id = GUID 66e8cea3-dd1e-4b10-a65e-f164c94da1ba;
+				}
+				- m_pParent = ;
+				- m_name = { CGIText 
+					- m_str = "";
+					- m_style = "Arial" 10 0 0 0 1 ;
+					- m_color = { IColor 
+						- m_fgColor = 0;
+						- m_bgColor = 0;
+						- m_bgFlag = 0;
+					}
+					- m_position = 1 0 0  ;
+					- m_nIdent = 0;
+					- m_bImplicitSetRectPoints = 0;
+					- m_nOrientationCtrlPt = 8;
+				}
+				- m_drawBehavior = 0;
+				- m_bIsPreferencesInitialized = 0;
+				- elementList = 7;
+				{ CGIClass 
+					- _id = GUID a8b4d0b7-81e4-414c-ad52-0fa365a184cf;
+					- m_type = 78;
+					- m_pModelObject = { IHandle 
+						- _m2Class = "IClass";
+						- _id = GUID 5dbb87ca-b8b1-43a0-8c81-bb1201d9755b;
+					}
+					- m_pParent = ;
+					- m_name = { CGIText 
+						- m_str = "TopLevel";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 5;
+					}
+					- m_drawBehavior = 0;
+					- m_bIsPreferencesInitialized = 0;
+					- m_AdditionalLabel = { CGIText 
+						- m_str = "";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 1;
+					}
+					- m_polygon = 0 ;
+					- m_nNameFormat = 0;
+					- m_nIsNameFormat = 0;
+					- Compartments = { IRPYRawContainer 
+						- size = 0;
+					}
+					- Attrs = { IRPYRawContainer 
+						- size = 0;
+					}
+					- Operations = { IRPYRawContainer 
+						- size = 0;
+					}
+				}
+				{ CGIDiagramFrame 
+					- _id = GUID 0a680dc4-912c-4f32-955c-d492e590b30b;
+					- m_type = 203;
+					- m_pModelObject = { IHandle 
+						- _m2Class = "";
+					}
+					- m_pParent = GUID a8b4d0b7-81e4-414c-ad52-0fa365a184cf;
+					- m_name = { CGIText 
+						- m_str = "";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 8;
+					}
+					- m_drawBehavior = 4096;
+					- m_transform = 2.63889 0 0 3.63636 20 20 ;
+					- m_bIsPreferencesInitialized = 1;
+					- m_AdditionalLabel = { CGIText 
+						- m_str = "";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 1;
+					}
+					- m_polygon = 4 0 0  0 132  216 132  216 0  ;
+					- m_nNameFormat = 0;
+					- m_nIsNameFormat = 0;
+					- Compartments = { IRPYRawContainer 
+						- size = 0;
+					}
+				}
+				{ CGIBasicClass 
+					- _id = GUID 5a62f2b5-068c-4246-bc50-e10dab7469c5;
+					- m_type = 124;
+					- m_pModelObject = { IHandle 
+						- _m2Class = "IActor";
+						- _id = GUID 3be16112-b3fc-4665-90f7-10ede6571a3f;
+					}
+					- m_pParent = GUID a8b4d0b7-81e4-414c-ad52-0fa365a184cf;
+					- m_name = { CGIText 
+						- m_str = "actor_1";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 5;
+					}
+					- m_drawBehavior = 2056;
+					- m_transform = 0.0489381 0 0 0.124343 56.3869 19.6655 ;
+					- m_bIsPreferencesInitialized = 1;
+					- m_AdditionalLabel = { CGIText 
+						- m_str = "";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 1;
+					}
+					- m_polygon = 4 176 252  176 1394  1259 1394  1259 252  ;
+					- m_nNameFormat = 0;
+					- m_nIsNameFormat = 0;
+					- Compartments = { IRPYRawContainer 
+						- size = 0;
+					}
+				}
+				{ CGIPackage 
+					- _id = GUID aa141090-0946-4620-8be3-d7f2cc6fa77b;
+					- _properties = { IPropertyContainer 
+						- Subjects = { IRPYRawContainer 
+							- size = 1;
+							- value = 
+							{ IPropertySubject 
+								- _Name = "General";
+								- Metaclasses = { IRPYRawContainer 
+									- size = 1;
+									- value = 
+									{ IPropertyMetaclass 
+										- _Name = "Graphics";
+										- Properties = { IRPYRawContainer 
+											- size = 1;
+											- value = 
+											{ IProperty 
+												- _Name = "FitBoxToItsTextuals";
+												- _Value = "False";
+												- _Type = Bool;
+											}
+										}
+									}
+								}
+							}
+						}
+					}
+					- m_type = 127;
+					- m_pModelObject = { IHandle 
+						- _m2Class = "ISubsystem";
+						- _filename = "package_2.sbs";
+						- _subsystem = "Default";
+						- _class = "";
+						- _name = "package_2";
+						- _id = GUID c085a6c1-b0d8-4c37-ba3b-4398cdacf2bf;
+					}
+					- m_pParent = GUID a8b4d0b7-81e4-414c-ad52-0fa365a184cf;
+					- m_name = { CGIText 
+						- m_str = "package_2";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 5;
+					}
+					- m_drawBehavior = 4104;
+					- m_transform = 0.215461 0 0 0.264987 298 134.623 ;
+					- m_bIsPreferencesInitialized = 1;
+					- m_AdditionalLabel = { CGIText 
+						- m_str = "";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 1;
+					}
+					- m_polygon = 4 0 0  0 1151  1216 1151  1216 0  ;
+					- m_nNameFormat = 0;
+					- m_nIsNameFormat = 0;
+					- Compartments = { IRPYRawContainer 
+						- size = 0;
+					}
+				}
+				{ CGIBasicClass 
+					- _id = GUID d99ce40d-38be-44ad-87f0-9ecb52766501;
+					- m_type = 124;
+					- m_pModelObject = { IHandle 
+						- _m2Class = "IActor";
+						- _filename = "package_2.sbs";
+						- _subsystem = "Default::package_2";
+						- _class = "";
+						- _name = "actor_0";
+						- _id = GUID f52294ba-73f7-43cf-9009-476f35eb919f;
+					}
+					- m_pParent = GUID aa141090-0946-4620-8be3-d7f2cc6fa77b;
+					- m_name = { CGIText 
+						- m_str = "package_2::actor_0";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 5;
+					}
+					- m_drawBehavior = 2056;
+					- m_transform = 0.172991 0 0 0.469243 386.778 60.5425 ;
+					- m_bIsPreferencesInitialized = 1;
+					- m_AdditionalLabel = { CGIText 
+						- m_str = "";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 1;
+					}
+					- m_polygon = 4 176 252  176 1394  1259 1394  1259 252  ;
+					- m_nNameFormat = 0;
+					- m_nIsNameFormat = 0;
+					- Compartments = { IRPYRawContainer 
+						- size = 0;
+					}
+				}
+				{ CGIGenericElement 
+					- _id = GUID 79833cbf-b988-4f50-ae03-e0de2d298a0c;
+					- m_type = 212;
+					- m_pModelObject = { IHandle 
+						- _m2Class = "IEvent";
+						- _id = GUID a6c3fae0-cc2e-4af9-ab89-9e5e0df8603f;
+					}
+					- m_pParent = GUID a8b4d0b7-81e4-414c-ad52-0fa365a184cf;
+					- m_name = { CGIText 
+						- m_str = "event_3()";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 5;
+					}
+					- m_drawBehavior = 4104;
+					- m_transform = 0.409091 0 0 0.675926 52 234 ;
+					- m_bIsPreferencesInitialized = 1;
+					- m_AdditionalLabel = { CGIText 
+						- m_str = "";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 1;
+					}
+					- m_polygon = 4 0 0  0 108  264 108  264 0  ;
+					- m_nNameFormat = 0;
+					- m_nIsNameFormat = 0;
+					- Compartments = { IRPYRawContainer 
+						- size = 0;
+					}
+				}
+				{ CGIGenericElement 
+					- _id = GUID e2c7585e-6803-43d0-9be2-99e9bbf519fa;
+					- m_type = 212;
+					- m_pModelObject = { IHandle 
+						- _m2Class = "IEvent";
+						- _filename = "package_2.sbs";
+						- _subsystem = "Default::package_2";
+						- _class = "";
+						- _name = "event_1()";
+						- _id = GUID 7b17a812-9fe7-4e7c-91af-d1dd42a275e4;
+					}
+					- m_pParent = GUID aa141090-0946-4620-8be3-d7f2cc6fa77b;
+					- m_name = { CGIText 
+						- m_str = "event_1()";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 5;
+					}
+					- m_drawBehavior = 4104;
+					- m_transform = 1.89868 0 0 2.55079 190.29 824.106 ;
+					- m_bIsPreferencesInitialized = 1;
+					- m_AdditionalLabel = { CGIText 
+						- m_str = "";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 1;
+					}
+					- m_polygon = 4 0 0  0 108  264 108  264 0  ;
+					- m_nNameFormat = 0;
+					- m_nIsNameFormat = 0;
+					- Compartments = { IRPYRawContainer 
+						- size = 0;
+					}
+				}
+				
+				- m_access = 'Z';
+				- m_modified = 'N';
+				- m_fileVersion = "";
+				- m_nModifyDate = 0;
+				- m_nCreateDate = 0;
+				- m_creator = "";
+				- m_bScaleWithZoom = 1;
+				- m_arrowStyle = 'S';
+				- m_pRoot = GUID a8b4d0b7-81e4-414c-ad52-0fa365a184cf;
+				- m_currentLeftTop = 0 0 ;
+				- m_currentRightBottom = 0 0 ;
+				- m_bFreezeCompartmentContent = 0;
+			}
+			- _defaultSubsystem = { IHandle 
+				- _m2Class = "ISubsystem";
+				- _id = GUID 337ad934-0dd7-4d29-a363-f6a451039341;
+			}
+		}
+		{ ISubsystem 
+			- fileName = "package_2";
+			- _id = GUID c085a6c1-b0d8-4c37-ba3b-4398cdacf2bf;
+		}
+	}
+	- weakCGTime = 1.12.2017::10:19:54;
+	- strongCGTime = 1.2.1990::0:0:0;
+	- _defaultComposite = GUID 5dbb87ca-b8b1-43a0-8c81-bb1201d9755b;
+	- _eventsBaseID = 18601;
+	- Classes = { IRPYRawContainer 
+		- size = 1;
+		- value = 
+		{ IClass 
+			- _id = GUID 5dbb87ca-b8b1-43a0-8c81-bb1201d9755b;
+			- _myState = 40960;
+			- _name = "TopLevel";
+			- _modifiedTimeWeak = 1.2.1990::0:0:0;
+			- weakCGTime = 1.2.1990::0:0:0;
+			- strongCGTime = 1.2.1990::0:0:0;
+			- _multiplicity = "";
+			- _itsStateChart = { IHandle 
+				- _m2Class = "";
+			}
+			- _classModifier = Unspecified;
+		}
+	}
+	- Events = { IRPYRawContainer 
+		- size = 1;
+		- value = 
+		{ IEvent 
+			- _id = GUID a6c3fae0-cc2e-4af9-ab89-9e5e0df8603f;
+			- _myState = 10240;
+			- _name = "event_3";
+			- _modifiedTimeWeak = 1.12.2017::10:14:58;
+			- _virtual = 0;
+			- Args = { IRPYRawContainer 
+				- size = 0;
+			}
+		}
+	}
+	- Actors = { IRPYRawContainer 
+		- size = 1;
+		- value = 
+		{ IActor 
+			- _id = GUID 3be16112-b3fc-4665-90f7-10ede6571a3f;
+			- _myState = 10240;
+			- _name = "actor_1";
+			- _modifiedTimeWeak = 1.12.2017::10:12:12;
+			- _theMainDiagram = { IHandle 
+				- _m2Class = "IDiagram";
+				- _id = GUID 66e8cea3-dd1e-4b10-a65e-f164c94da1ba;
+			}
+			- weakCGTime = 1.12.2017::10:12:12;
+			- strongCGTime = 1.12.2017::10:12:9;
+			- _multiplicity = "";
+			- _itsStateChart = { IHandle 
+				- _m2Class = "";
+			}
+			- _classModifier = Unspecified;
+		}
+	}
+	- _configurationRelatedTime = 1.1.1970::1:0:0;
+}
+
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/Inputs/Model/Rph_Actors_And_Events_001_rpy/DefaultComponent.cmp b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/Inputs/Model/Rph_Actors_And_Events_001_rpy/DefaultComponent.cmp
new file mode 100644
index 0000000..2a73a07
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/Inputs/Model/Rph_Actors_And_Events_001_rpy/DefaultComponent.cmp
@@ -0,0 +1,123 @@
+I-Logix-RPY-Archive version 8.12.0 C++ 9728113
+{ IComponent 
+	- _id = GUID 39c93af1-49c5-433e-b76b-8263ef3ea73f;
+	- _myState = 139264;
+	- _name = "DefaultComponent";
+	- _modifiedTimeWeak = 1.12.2017::10:19:54;
+	- m_buildType = Executable;
+	- m_libraries = "";
+	- m_additionalSources = "";
+	- m_standardHeaders = "";
+	- m_includePath = "";
+	- m_initializationCode = "";
+	- m_folder = { IFolder 
+		- _id = GUID ec076b86-292f-4549-92e5-cbd0438da538;
+		- _myState = 73728;
+		- _name = "Files";
+		- _modifiedTimeWeak = 1.12.2017::10:11:30;
+		- m_path = "";
+		- Elements = { IRPYRawContainer 
+			- size = 0;
+		}
+		- Files = { IRPYRawContainer 
+			- size = 0;
+		}
+	}
+	- m_configActive = { ICodeGenConfigInfoHandle 
+		- _m2Class = "ICodeGenConfigInfo";
+		- _id = GUID f8aaa1c1-70c9-4efb-af0f-61c6f0f3fedf;
+	}
+	- Configs = { IRPYRawContainer 
+		- size = 1;
+		- value = 
+		{ ICodeGenConfigInfo 
+			- _id = GUID f8aaa1c1-70c9-4efb-af0f-61c6f0f3fedf;
+			- _myState = 8192;
+			- _name = "DefaultConfig";
+			- _modifiedTimeWeak = 1.2.1990::0:0:0;
+			- _scopeType = Explicit;
+			- _libraries = "";
+			- _additionalSources = "";
+			- _standardHeaders = "";
+			- _includePath = "";
+			- _targetMain = "";
+			- _instrumentation = None;
+			- _timeModel = RealTime;
+			- m_generateActors = 1;
+			- _statechartImplementation = Flat;
+			- _initializationCode = "";
+			- _checksList = 0 ;
+			- ScopeElements = { IRPYRawContainer 
+				- size = 0;
+			}
+			- InitialInstances = { IRPYRawContainer 
+				- size = 0;
+			}
+			- _root = { IFolder 
+				- _id = GUID ad59531b-81ac-4204-8859-61524c155490;
+				- _myState = 8192;
+				- _name = "DefaultConfig";
+				- _modifiedTimeWeak = 1.2.1990::0:0:0;
+				- m_path = "";
+				- Elements = { IRPYRawContainer 
+					- size = 0;
+				}
+				- Files = { IRPYRawContainer 
+					- size = 0;
+				}
+			}
+			- weakCGTime = 1.2.1990::0:0:0;
+			- strongCGTime = 1.2.1990::0:0:0;
+			- AnimScopeElements = { IRPYRawContainer 
+				- size = 0;
+			}
+			- m_allInAnimScope = 1;
+			- m_generateUsecases = 0;
+		}
+	}
+	- HandlesInMe = { IRPYRawContainer 
+		- size = 4;
+		- value = 
+		{ IHandle 
+			- _m2Class = "ISubsystem";
+			- _filename = "Default.sbs";
+			- _subsystem = "";
+			- _class = "";
+			- _name = "Default";
+			- _id = GUID 337ad934-0dd7-4d29-a363-f6a451039341;
+		}
+		{ IHandle 
+			- _m2Class = "ISubsystem";
+			- _filename = "package_2.sbs";
+			- _subsystem = "Default";
+			- _class = "";
+			- _name = "package_2";
+			- _id = GUID c085a6c1-b0d8-4c37-ba3b-4398cdacf2bf;
+		}
+		{ IHandle 
+			- _m2Class = "IProfile";
+			- _filename = "$OMROOT\\Profiles\\SysML\\SysMLProfile_rpy\\SysML.sbs";
+			- _subsystem = "";
+			- _class = "";
+			- _name = "SysML";
+			- _id = GUID d9689b73-885e-44c4-896b-de43defa0a33;
+		}
+		{ IHandle 
+			- _m2Class = "IProfile";
+			- _filename = "$OMROOT\\Settings\\SysMLPerspectives\\SysMLPerspectives.sbs";
+			- _subsystem = "";
+			- _class = "";
+			- _name = "SysMLPerspectives";
+			- _id = GUID ab285915-0966-4322-a029-ffac3e6ef3df;
+		}
+	}
+	- VariationPoints = { IRPYRawContainer 
+		- size = 0;
+	}
+	- SelectedVariants = { IRPYRawContainer 
+		- size = 0;
+	}
+	- weakCGTime = 1.12.2017::10:19:54;
+	- strongCGTime = 1.2.1990::0:0:0;
+}
+
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/Inputs/Model/Rph_Actors_And_Events_001_rpy/filesTable.dat b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/Inputs/Model/Rph_Actors_And_Events_001_rpy/filesTable.dat
new file mode 100644
index 0000000..21572cc
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/Inputs/Model/Rph_Actors_And_Events_001_rpy/filesTable.dat
@@ -0,0 +1,11 @@
+I-Logix-RPY-Archive version 8.12.0 * 9728113
+
+- filesTable = { IRPYRawContainer 
+	- size = 4;
+	- value = "Rph_Actors_And_Events_001.rpy" ""
+	"Rph_Actors_And_Events_001_rpy\\Default.sbs" "Default"
+	"Rph_Actors_And_Events_001_rpy\\DefaultComponent.cmp" "DefaultComponent"
+	"Rph_Actors_And_Events_001_rpy\\package_2.sbs" "Default::package_2"
+	
+}
+
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/Inputs/Model/Rph_Actors_And_Events_001_rpy/package_2.sbs b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/Inputs/Model/Rph_Actors_And_Events_001_rpy/package_2.sbs
new file mode 100644
index 0000000..3fb3f48
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/Inputs/Model/Rph_Actors_And_Events_001_rpy/package_2.sbs
@@ -0,0 +1,78 @@
+I-Logix-RPY-Archive version 8.12.0 C++ 9728113
+{ ISubsystem 
+	- _id = GUID c085a6c1-b0d8-4c37-ba3b-4398cdacf2bf;
+	- _myState = 10240;
+	- _name = "package_2";
+	- _modifiedTimeWeak = 1.12.2017::10:19:54;
+	- _theMainDiagram = { IHandle 
+		- _m2Class = "IDiagram";
+		- _filename = "Default.sbs";
+		- _subsystem = "Default";
+		- _class = "";
+		- _name = "block definition diagram_0";
+		- _id = GUID 66e8cea3-dd1e-4b10-a65e-f164c94da1ba;
+	}
+	- _lastID = 2;
+	- weakCGTime = 1.12.2017::10:19:54;
+	- strongCGTime = 1.12.2017::10:12:30;
+	- _defaultComposite = GUID e22bf21a-5586-49b0-a8ae-abbde77fb476;
+	- _eventsBaseID = 5801;
+	- Classes = { IRPYRawContainer 
+		- size = 1;
+		- value = 
+		{ IClass 
+			- _id = GUID e22bf21a-5586-49b0-a8ae-abbde77fb476;
+			- _myState = 40960;
+			- _name = "TopLevel";
+			- _modifiedTimeWeak = 1.2.1990::0:0:0;
+			- weakCGTime = 1.2.1990::0:0:0;
+			- strongCGTime = 1.2.1990::0:0:0;
+			- _multiplicity = "";
+			- _itsStateChart = { IHandle 
+				- _m2Class = "";
+			}
+			- _classModifier = Unspecified;
+		}
+	}
+	- Events = { IRPYRawContainer 
+		- size = 1;
+		- value = 
+		{ IEvent 
+			- _id = GUID 7b17a812-9fe7-4e7c-91af-d1dd42a275e4;
+			- _myState = 10240;
+			- _name = "event_1";
+			- _modifiedTimeWeak = 1.12.2017::10:15:7;
+			- _virtual = 0;
+			- Args = { IRPYRawContainer 
+				- size = 0;
+			}
+		}
+	}
+	- Actors = { IRPYRawContainer 
+		- size = 1;
+		- value = 
+		{ IActor 
+			- _id = GUID f52294ba-73f7-43cf-9009-476f35eb919f;
+			- _myState = 10240;
+			- _name = "actor_0";
+			- _modifiedTimeWeak = 1.12.2017::10:12:42;
+			- _theMainDiagram = { IHandle 
+				- _m2Class = "IDiagram";
+				- _filename = "Default.sbs";
+				- _subsystem = "Default";
+				- _class = "";
+				- _name = "block definition diagram_0";
+				- _id = GUID 66e8cea3-dd1e-4b10-a65e-f164c94da1ba;
+			}
+			- weakCGTime = 1.12.2017::10:12:42;
+			- strongCGTime = 1.12.2017::10:12:35;
+			- _multiplicity = "";
+			- _itsStateChart = { IHandle 
+				- _m2Class = "";
+			}
+			- _classModifier = Unspecified;
+		}
+	}
+	- _configurationRelatedTime = 1.1.1970::1:0:0;
+}
+
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/expected_papyrus/Rph_Actors_And_Events_001.di b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/expected_papyrus/Rph_Actors_And_Events_001.di
new file mode 100644
index 0000000..bf9abab
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/expected_papyrus/Rph_Actors_And_Events_001.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/expected_papyrus/Rph_Actors_And_Events_001.notation b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/expected_papyrus/Rph_Actors_And_Events_001.notation
new file mode 100644
index 0000000..14729a9
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/expected_papyrus/Rph_Actors_And_Events_001.notation
@@ -0,0 +1,124 @@
+<?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/5.0.0/UML">
+  <notation:Diagram xmi:id="_cCHZsN1pEeaPE50IvOrJGw" type="BlockDefinition" name="block definition diagram_0" measurementUnit="Pixel">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cCHZsd1pEeaPE50IvOrJGw" source="Imported from a Rpy Model">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cCHZst1pEeaPE50IvOrJGw" key="Rpy Model Name" value="Rph_Actors_And_Events_001"/>
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cCHZs91pEeaPE50IvOrJGw" key="Rpy Version" value="version 8.12.0 C++ 9728113&#xA;"/>
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cCHZtN1pEeaPE50IvOrJGw" key="Papyrus Rpy Import Bundle Version" value="0.7.0.qualifier"/>
+    </eAnnotations>
+    <children xmi:type="notation:Shape" xmi:id="_cCHZtd1pEeaPE50IvOrJGw" type="shape_uml_actor_as_classifier">
+      <children xmi:type="notation:DecorationNode" xmi:id="_cCHZtt1pEeaPE50IvOrJGw" type="label_uml_namedelement_name"/>
+      <children xmi:type="notation:ListCompartment" xmi:id="_cCHZt91pEeaPE50IvOrJGw" visible="false" type="compartment_uml_property_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cCHZuN1pEeaPE50IvOrJGw" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cCHZud1pEeaPE50IvOrJGw" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="_cCHZut1pEeaPE50IvOrJGw"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cCHZu91pEeaPE50IvOrJGw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cCHZvN1pEeaPE50IvOrJGw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cCHZvd1pEeaPE50IvOrJGw"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="_cCHZvt1pEeaPE50IvOrJGw" visible="false" type="compartment_uml_operation_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cCHZv91pEeaPE50IvOrJGw" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cCHZwN1pEeaPE50IvOrJGw" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="_cCHZwd1pEeaPE50IvOrJGw"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cCHZwt1pEeaPE50IvOrJGw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cCHZw91pEeaPE50IvOrJGw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cCHZxN1pEeaPE50IvOrJGw"/>
+      </children>
+      <element xmi:type="uml:Actor" href="Rph_Actors_And_Events_001.uml#GUID-3be16112-b3fc-4665-90f7-10ede6571a3f"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cCHZxd1pEeaPE50IvOrJGw" x="65" y="51" width="53" height="142"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_cCHZxt1pEeaPE50IvOrJGw" type="Package_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_cCHZx91pEeaPE50IvOrJGw" type="Package_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cCHZyN1pEeaPE50IvOrJGw" type="Package_PackagedElementCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_cCHZyd1pEeaPE50IvOrJGw" type="shape_uml_actor_as_classifier">
+          <children xmi:type="notation:DecorationNode" xmi:id="_cCHZyt1pEeaPE50IvOrJGw" type="label_uml_namedelement_name"/>
+          <children xmi:type="notation:ListCompartment" xmi:id="_cCHZy91pEeaPE50IvOrJGw" visible="false" type="compartment_uml_property_as_list">
+            <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cCHZzN1pEeaPE50IvOrJGw" source="PapyrusCSSForceValue">
+              <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cCHZzd1pEeaPE50IvOrJGw" key="visible" value="true"/>
+            </eAnnotations>
+            <styles xmi:type="notation:DrawerStyle" xmi:id="_cCHZzt1pEeaPE50IvOrJGw"/>
+            <styles xmi:type="notation:TitleStyle" xmi:id="_cCHZz91pEeaPE50IvOrJGw"/>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_cCHZ0N1pEeaPE50IvOrJGw"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_cCHZ0d1pEeaPE50IvOrJGw"/>
+          </children>
+          <children xmi:type="notation:ListCompartment" xmi:id="_cCHZ0t1pEeaPE50IvOrJGw" visible="false" type="compartment_uml_operation_as_list">
+            <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cCHZ091pEeaPE50IvOrJGw" source="PapyrusCSSForceValue">
+              <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cCHZ1N1pEeaPE50IvOrJGw" key="visible" value="true"/>
+            </eAnnotations>
+            <styles xmi:type="notation:DrawerStyle" xmi:id="_cCHZ1d1pEeaPE50IvOrJGw"/>
+            <styles xmi:type="notation:TitleStyle" xmi:id="_cCHZ1t1pEeaPE50IvOrJGw"/>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_cCHZ191pEeaPE50IvOrJGw"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_cCHZ2N1pEeaPE50IvOrJGw"/>
+          </children>
+          <element xmi:type="uml:Actor" href="Rph_Actors_And_Events_001.uml#GUID-f52294ba-73f7-43cf-9009-476f35eb919f"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cCHZ2d1pEeaPE50IvOrJGw" x="90" y="47" width="40" height="142"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_cCHZ2t1pEeaPE50IvOrJGw" type="shape_uml_signal_as_classifier">
+          <children xmi:type="notation:DecorationNode" xmi:id="_cCHZ291pEeaPE50IvOrJGw" type="label_uml_namedelement_name"/>
+          <children xmi:type="notation:ListCompartment" xmi:id="_cCHZ3N1pEeaPE50IvOrJGw" visible="false" type="compartment_uml_property_as_list">
+            <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cCHZ3d1pEeaPE50IvOrJGw" source="PapyrusCSSForceValue">
+              <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cCHZ3t1pEeaPE50IvOrJGw" key="visible" value="true"/>
+            </eAnnotations>
+            <styles xmi:type="notation:DrawerStyle" xmi:id="_cCHZ391pEeaPE50IvOrJGw"/>
+            <styles xmi:type="notation:TitleStyle" xmi:id="_cCHZ4N1pEeaPE50IvOrJGw"/>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_cCHZ4d1pEeaPE50IvOrJGw"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_cCHZ4t1pEeaPE50IvOrJGw"/>
+          </children>
+          <children xmi:type="notation:ListCompartment" xmi:id="_cCHZ491pEeaPE50IvOrJGw" visible="false" type="compartment_uml_operation_as_list">
+            <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cCHZ5N1pEeaPE50IvOrJGw" source="PapyrusCSSForceValue">
+              <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cCHZ5d1pEeaPE50IvOrJGw" key="visible" value="true"/>
+            </eAnnotations>
+            <styles xmi:type="notation:DrawerStyle" xmi:id="_cCHZ5t1pEeaPE50IvOrJGw"/>
+            <styles xmi:type="notation:TitleStyle" xmi:id="_cCHZ591pEeaPE50IvOrJGw"/>
+            <styles xmi:type="notation:SortingStyle" xmi:id="_cCHZ6N1pEeaPE50IvOrJGw"/>
+            <styles xmi:type="notation:FilteringStyle" xmi:id="_cCHZ6d1pEeaPE50IvOrJGw"/>
+          </children>
+          <element xmi:type="uml:Signal" href="Rph_Actors_And_Events_001.uml#GUID-7b17a812-9fe7-4e7c-91af-d1dd42a275e4"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cCHZ6t1pEeaPE50IvOrJGw" x="41" y="218" width="108" height="73"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cCHZ691pEeaPE50IvOrJGw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cCHZ7N1pEeaPE50IvOrJGw"/>
+      </children>
+      <element xmi:type="uml:Package" href="Rph_Actors_And_Events_001.uml#GUID-c085a6c1-b0d8-4c37-ba3b-4398cdacf2bf"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cCHZ7d1pEeaPE50IvOrJGw" x="298" y="135" width="262" height="305"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_cCHZ7t1pEeaPE50IvOrJGw" type="shape_uml_signal_as_classifier">
+      <children xmi:type="notation:DecorationNode" xmi:id="_cCHZ791pEeaPE50IvOrJGw" type="label_uml_namedelement_name"/>
+      <children xmi:type="notation:ListCompartment" xmi:id="_cCHZ8N1pEeaPE50IvOrJGw" visible="false" type="compartment_uml_property_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cCHZ8d1pEeaPE50IvOrJGw" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cCHZ8t1pEeaPE50IvOrJGw" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="_cCHZ891pEeaPE50IvOrJGw"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cCHZ9N1pEeaPE50IvOrJGw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cCHZ9d1pEeaPE50IvOrJGw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cCHZ9t1pEeaPE50IvOrJGw"/>
+      </children>
+      <children xmi:type="notation:ListCompartment" xmi:id="_cCHZ991pEeaPE50IvOrJGw" visible="false" type="compartment_uml_operation_as_list">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cCHZ-N1pEeaPE50IvOrJGw" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cCHZ-d1pEeaPE50IvOrJGw" key="visible" value="true"/>
+        </eAnnotations>
+        <styles xmi:type="notation:DrawerStyle" xmi:id="_cCHZ-t1pEeaPE50IvOrJGw"/>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cCHZ-91pEeaPE50IvOrJGw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cCHZ_N1pEeaPE50IvOrJGw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cCHZ_d1pEeaPE50IvOrJGw"/>
+      </children>
+      <element xmi:type="uml:Signal" href="Rph_Actors_And_Events_001.uml#GUID-a6c3fae0-cc2e-4af9-ab89-9e5e0df8603f"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cCHZ_t1pEeaPE50IvOrJGw" x="52" y="234" width="108" height="73"/>
+    </children>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_cCHZ_91pEeaPE50IvOrJGw"/>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_cCHaAN1pEeaPE50IvOrJGw" name="diagram_compatibility_version" stringValue="1.2.0"/>
+    <element xmi:type="uml:Package" href="Rph_Actors_And_Events_001.uml#GUID-337ad934-0dd7-4d29-a363-f6a451039341"/>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_cCHaAd1pEeaPE50IvOrJGw" type="BlockDefinition" name="Model1" measurementUnit="Pixel">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cCHaAt1pEeaPE50IvOrJGw" source="Imported from a Rpy Model">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cCHaA91pEeaPE50IvOrJGw" key="Rpy Model Name" value="Rph_Actors_And_Events_001"/>
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cCHaBN1pEeaPE50IvOrJGw" key="Rpy Version" value="version 8.12.0 C++ 9728113&#xA;"/>
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cCHaBd1pEeaPE50IvOrJGw" key="Papyrus Rpy Import Bundle Version" value="0.7.0.qualifier"/>
+    </eAnnotations>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_cCHaBt1pEeaPE50IvOrJGw"/>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_cCHaB91pEeaPE50IvOrJGw" name="diagram_compatibility_version" stringValue="1.2.0"/>
+    <element xmi:type="uml:Package" href="Rph_Actors_And_Events_001.uml#GUID-337ad934-0dd7-4d29-a363-f6a451039341"/>
+  </notation:Diagram>
+</xmi:XMI>
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/expected_papyrus/Rph_Actors_And_Events_001.properties b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/expected_papyrus/Rph_Actors_And_Events_001.properties
new file mode 100644
index 0000000..5c4c373
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/expected_papyrus/Rph_Actors_And_Events_001.properties
@@ -0,0 +1 @@
+#Wed Jan 18 11:32:40 CET 2017
\ No newline at end of file
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/expected_papyrus/Rph_Actors_And_Events_001.uml b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/expected_papyrus/Rph_Actors_And_Events_001.uml
new file mode 100644
index 0000000..9ce9ce5
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/expected_papyrus/Rph_Actors_And_Events_001.uml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="GUID-abdfc616-0f20-428d-8a91-35b13ae587ff" name="Rph_Actors_And_Events_001">
+  <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-abdfc616-0f20-428d-8a91-35b13ae587ff-EAnnotation--752770677" source="Imported from a Rpy Model">
+    <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="GUID-abdfc616-0f20-428d-8a91-35b13ae587ff-EAnnotation--752770677-EStringToStringMapEntry--492027705-1037342239" key="Rpy Model Name" value="Rph_Actors_And_Events_001"/>
+    <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="GUID-abdfc616-0f20-428d-8a91-35b13ae587ff-EAnnotation--752770677-EStringToStringMapEntry-437159795-0" key="Rpy Version" value=""/>
+    <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="GUID-abdfc616-0f20-428d-8a91-35b13ae587ff-EAnnotation--752770677-EStringToStringMapEntry--793831098--1799222281" key="Papyrus Rpy Import Bundle Version" value="0.7.0.qualifier"/>
+  </eAnnotations>
+  <packageImport xmi:type="uml:PackageImport" xmi:id="GUID-abdfc616-0f20-428d-8a91-35b13ae587ff-PackageImport-PrimitiveTypes">
+    <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+  </packageImport>
+  <packagedElement xmi:type="uml:Package" xmi:id="GUID-337ad934-0dd7-4d29-a363-f6a451039341" name="Default">
+    <packagedElement xmi:type="uml:Signal" xmi:id="GUID-a6c3fae0-cc2e-4af9-ab89-9e5e0df8603f" name="event_3"/>
+    <packagedElement xmi:type="uml:Actor" xmi:id="GUID-3be16112-b3fc-4665-90f7-10ede6571a3f" name="actor_1"/>
+    <packagedElement xmi:type="uml:Package" xmi:id="GUID-c085a6c1-b0d8-4c37-ba3b-4398cdacf2bf" name="package_2">
+      <packagedElement xmi:type="uml:Signal" xmi:id="GUID-7b17a812-9fe7-4e7c-91af-d1dd42a275e4" name="event_1"/>
+      <packagedElement xmi:type="uml:Actor" xmi:id="GUID-f52294ba-73f7-43cf-9009-476f35eb919f" name="actor_0"/>
+    </packagedElement>
+  </packagedElement>
+  <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-abdfc616-0f20-428d-8a91-35b13ae587ff-ProfileApplication-SysML">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-abdfc616-0f20-428d-8a91-35b13ae587ff-ProfileApplication-SysML-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+      <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#/"/>
+    </eAnnotations>
+    <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_TZ_nULU5EduiKqCzJMWbGw"/>
+  </profileApplication>
+  <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-abdfc616-0f20-428d-8a91-35b13ae587ff-ProfileApplication-SysML::ModelElements">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-abdfc616-0f20-428d-8a91-35b13ae587ff-ProfileApplication-SysML::ModelElements-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+      <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//modelelements"/>
+    </eAnnotations>
+    <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_Gx8MgLX7EduFmqQsrNB9lw"/>
+  </profileApplication>
+  <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-abdfc616-0f20-428d-8a91-35b13ae587ff-ProfileApplication-SysML::Blocks">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-abdfc616-0f20-428d-8a91-35b13ae587ff-ProfileApplication-SysML::Blocks-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+      <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//blocks"/>
+    </eAnnotations>
+    <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_fSw28LX7EduFmqQsrNB9lw"/>
+  </profileApplication>
+  <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-abdfc616-0f20-428d-8a91-35b13ae587ff-ProfileApplication-SysML::PortAndFlows">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-abdfc616-0f20-428d-8a91-35b13ae587ff-ProfileApplication-SysML::PortAndFlows-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+      <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//portandflows"/>
+    </eAnnotations>
+    <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_rpx28LX7EduFmqQsrNB9lw"/>
+  </profileApplication>
+  <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-abdfc616-0f20-428d-8a91-35b13ae587ff-ProfileApplication-SysML::Constraints">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-abdfc616-0f20-428d-8a91-35b13ae587ff-ProfileApplication-SysML::Constraints-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+      <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//constraints"/>
+    </eAnnotations>
+    <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_5WYJ0LX7EduFmqQsrNB9lw"/>
+  </profileApplication>
+  <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-abdfc616-0f20-428d-8a91-35b13ae587ff-ProfileApplication-SysML::Activities">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-abdfc616-0f20-428d-8a91-35b13ae587ff-ProfileApplication-SysML::Activities-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+      <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//activities"/>
+    </eAnnotations>
+    <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_C2zXMLX8EduFmqQsrNB9lw"/>
+  </profileApplication>
+  <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-abdfc616-0f20-428d-8a91-35b13ae587ff-ProfileApplication-SysML::Allocations">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-abdfc616-0f20-428d-8a91-35b13ae587ff-ProfileApplication-SysML::Allocations-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+      <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//allocations"/>
+    </eAnnotations>
+    <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_NxdG4LX8EduFmqQsrNB9lw"/>
+  </profileApplication>
+  <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-abdfc616-0f20-428d-8a91-35b13ae587ff-ProfileApplication-SysML::Requirements">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-abdfc616-0f20-428d-8a91-35b13ae587ff-ProfileApplication-SysML::Requirements-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+      <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//requirements"/>
+    </eAnnotations>
+    <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_OOJC4LX8EduFmqQsrNB9lw"/>
+  </profileApplication>
+  <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-abdfc616-0f20-428d-8a91-35b13ae587ff-ProfileApplication-SysML::Interactions">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-abdfc616-0f20-428d-8a91-35b13ae587ff-ProfileApplication-SysML::Interactions-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+      <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//interactions"/>
+    </eAnnotations>
+    <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_meOioLX8EduFmqQsrNB9lw"/>
+  </profileApplication>
+  <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-abdfc616-0f20-428d-8a91-35b13ae587ff-ProfileApplication-SysML::StateMachines">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-abdfc616-0f20-428d-8a91-35b13ae587ff-ProfileApplication-SysML::StateMachines-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+      <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//statemachines"/>
+    </eAnnotations>
+    <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_nAF5kLX8EduFmqQsrNB9lw"/>
+  </profileApplication>
+  <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-abdfc616-0f20-428d-8a91-35b13ae587ff-ProfileApplication-SysML::UseCases">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-abdfc616-0f20-428d-8a91-35b13ae587ff-ProfileApplication-SysML::UseCases-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+      <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//usecases"/>
+    </eAnnotations>
+    <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_neZmMLX8EduFmqQsrNB9lw"/>
+  </profileApplication>
+</uml:Model>
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/screenshots/BDD.PNG b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/screenshots/BDD.PNG
new file mode 100644
index 0000000..cfb907c
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_Actors_And_Events_001/screenshots/BDD.PNG
Binary files differ
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/Inputs/Model/Rph_LibraryImport_001.ehl b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/Inputs/Model/Rph_LibraryImport_001.ehl
new file mode 100644
index 0000000..2c2ad5d
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/Inputs/Model/Rph_LibraryImport_001.ehl
@@ -0,0 +1,3 @@
+[Op Calls]
+[Events]
+[Breakpoints]
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/Inputs/Model/Rph_LibraryImport_001.rpw b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/Inputs/Model/Rph_LibraryImport_001.rpw
new file mode 100644
index 0000000..1e1bfa1
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/Inputs/Model/Rph_LibraryImport_001.rpw
@@ -0,0 +1,67 @@
+I-Logix-RPY-Archive version 8.12.0 * 9728113
+{ CGEMdiWorkspace 
+	- stubList = { IRPYRawContainer 
+		- size = 0;
+	}
+	- isLoadOnDemand = 0;
+	- myViewsWithID = { IRPYRawContainer 
+		- size = 1;
+		- value = 
+		{ CGEMdiDiagramParams 
+			- _placement = { CCommon_WINDOWPLACEMENT 
+				- m_nLength = 44;
+				- m_nFlags = 2;
+				- m_showCmd = 3;
+				- m_ptMinPositionX = -1;
+				- m_ptMinPositionY = -1;
+				- m_ptMaxPositionX = -8;
+				- m_ptMaxPositionY = -30;
+				- m_nLeft = 75;
+				- m_nTop = 75;
+				- m_nRight = 1199;
+				- m_nBottom = 644;
+			}
+			- _wasOpenedOnCloseProject = 1;
+			- _theDiagram = { IHandle 
+				- _m2Class = "IDiagram";
+				- _filename = "";
+				- _subsystem = "";
+				- _class = "";
+				- _name = "Model1";
+				- _id = GUID c70d3411-5e13-4c08-ae95-3b5be11995b5;
+			}
+			- _UpLeft = 0 0 ;
+			- _DownRight = 1378 823 ;
+			- _instanceName = "";
+			- m_nDiagramIndex = 0;
+			- m_bIsActiveView = 1;
+		}
+	}
+	- _fullName = "D:\\VL222926\\Desktop\\rpyTMP\\Rph_LibraryImport_001\\Rph_LibraryImport_001";
+	- m_SearchScopeList = { IRPYRawContainer 
+		- size = 0;
+	}
+	- bUsingCustomBrowserView = 0;
+	- bUsingQueries = 0;
+	- bApplyOnDiagrams = 0;
+	- liQueryIDs = { IRPYRawContainer 
+		- size = 0;
+	}
+	- liElementTypes = { IRPYRawContainer 
+		- size = 0;
+	}
+	- mapOslcRmCollections = { IRPYRawContainer 
+		- size = 0;
+	}
+
+	- m_favoritesTree = {
+		count=1;
+		{ - favoritesItem
+			generation = 0;
+			name = Favorites;
+			idOrFolder = folder;
+		}
+	}
+
+}
+
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/Inputs/Model/Rph_LibraryImport_001.rpy b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/Inputs/Model/Rph_LibraryImport_001.rpy
new file mode 100644
index 0000000..5da3214
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/Inputs/Model/Rph_LibraryImport_001.rpy
@@ -0,0 +1,313 @@
+I-Logix-RPY-Archive version 8.12.0 C++ 9728113
+{ IProject 
+	- _id = GUID 420979e3-ed15-4094-af5a-c8d117603bd2;
+	- _myState = 8192;
+	- _name = "Rph_LibraryImport_001";
+	- Stereotypes = { IRPYRawContainer 
+		- size = 1;
+		- value = 
+		{ IHandle 
+			- _m2Class = "IStereotype";
+			- _filename = "$OMROOT\\Profiles\\SysML\\SysMLProfile_rpy\\SysML.sbs";
+			- _subsystem = "SysML";
+			- _class = "";
+			- _name = "SysML";
+			- _id = GUID 052b8171-a32b-4f45-a829-5585f79f9deb;
+		}
+	}
+	- _modifiedTimeWeak = 1.12.2017::15:33:53;
+	- _UserColors = { IRPYRawContainer 
+		- size = 16;
+		- value = 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 16777215; 
+	}
+	- _defaultSubsystem = { ISubsystemHandle 
+		- _m2Class = "ISubsystem";
+		- _filename = "Default.sbs";
+		- _subsystem = "";
+		- _class = "";
+		- _name = "Default";
+		- _id = GUID b31fcd11-4230-4a83-85e5-ed16472029b6;
+	}
+	- _component = { IHandle 
+		- _m2Class = "IComponent";
+		- _filename = "DefaultComponent.cmp";
+		- _subsystem = "";
+		- _class = "";
+		- _name = "DefaultComponent";
+		- _id = GUID 91326338-89a8-406e-87b5-ae740a5cc1ea;
+	}
+	- Multiplicities = { IRPYRawContainer 
+		- size = 4;
+		- value = 
+		{ IMultiplicityItem 
+			- _name = "1";
+			- _count = -1;
+		}
+		{ IMultiplicityItem 
+			- _name = "*";
+			- _count = -1;
+		}
+		{ IMultiplicityItem 
+			- _name = "0,1";
+			- _count = -1;
+		}
+		{ IMultiplicityItem 
+			- _name = "1..*";
+			- _count = -1;
+		}
+	}
+	- Subsystems = { IRPYRawContainer 
+		- size = 3;
+		- value = 
+		{ ISubsystem 
+			- fileName = "Default";
+			- _id = GUID b31fcd11-4230-4a83-85e5-ed16472029b6;
+		}
+		{ IProfile 
+			- fileName = "SysML";
+			- _persistAs = "$OMROOT\\Profiles\\SysML\\SysMLProfile_rpy";
+			- _id = GUID d9689b73-885e-44c4-896b-de43defa0a33;
+			- _isReference = 1;
+		}
+		{ IProfile 
+			- fileName = "SysMLPerspectives";
+			- _persistAs = "$OMROOT\\Settings\\SysMLPerspectives";
+			- _id = GUID ab285915-0966-4322-a029-ffac3e6ef3df;
+			- _isReference = 1;
+		}
+	}
+	- Diagrams = { IRPYRawContainer 
+		- size = 1;
+		- value = 
+		{ IDiagram 
+			- _id = GUID c70d3411-5e13-4c08-ae95-3b5be11995b5;
+			- _myState = 8192;
+			- _properties = { IPropertyContainer 
+				- Subjects = { IRPYRawContainer 
+					- size = 1;
+					- value = 
+					{ IPropertySubject 
+						- _Name = "Format";
+						- Metaclasses = { IRPYRawContainer 
+							- size = 1;
+							- value = 
+							{ IPropertyMetaclass 
+								- _Name = "DiagramFrame";
+								- Properties = { IRPYRawContainer 
+									- size = 8;
+									- value = 
+									{ IProperty 
+										- _Name = "DefaultSize";
+										- _Value = "20,20,590,500";
+										- _Type = String;
+									}
+									{ IProperty 
+										- _Name = "Fill.FillColor";
+										- _Value = "247,247,247";
+										- _Type = Color;
+									}
+									{ IProperty 
+										- _Name = "Fill.Transparent_Fill";
+										- _Value = "0";
+										- _Type = Int;
+									}
+									{ IProperty 
+										- _Name = "Font.Font";
+										- _Value = "Tahoma";
+										- _Type = String;
+									}
+									{ IProperty 
+										- _Name = "Font.Size";
+										- _Value = "8";
+										- _Type = Int;
+									}
+									{ IProperty 
+										- _Name = "Font.Weight@Child.NameCompartment@Name";
+										- _Value = "700";
+										- _Type = Int;
+									}
+									{ IProperty 
+										- _Name = "Line.LineColor";
+										- _Value = "194,192,192";
+										- _Type = Color;
+									}
+									{ IProperty 
+										- _Name = "Line.LineWidth";
+										- _Value = "1";
+										- _Type = Int;
+									}
+								}
+							}
+						}
+					}
+				}
+			}
+			- _name = "Model1";
+			- Stereotypes = { IRPYRawContainer 
+				- size = 1;
+				- value = 
+				{ IHandle 
+					- _m2Class = "IStereotype";
+					- _filename = "$OMROOT\\Profiles\\SysML\\SysMLProfile_rpy\\SysML.sbs";
+					- _subsystem = "SysML::Diagrams";
+					- _class = "";
+					- _name = "Block Definition Diagram";
+					- _id = GUID 6c142614-3349-49e9-8c6b-0236be5f6b61;
+				}
+			}
+			- _modifiedTimeWeak = 1.2.1990::0:0:0;
+			- _lastModifiedTime = "1.12.2017::15:33:53";
+			- _graphicChart = { CGIClassChart 
+				- _id = GUID 27e9c52c-7945-45b5-a3d5-7759abc86a0b;
+				- m_type = 0;
+				- m_pModelObject = { IHandle 
+					- _m2Class = "IDiagram";
+					- _id = GUID c70d3411-5e13-4c08-ae95-3b5be11995b5;
+				}
+				- m_pParent = ;
+				- m_name = { CGIText 
+					- m_str = "";
+					- m_style = "Arial" 10 0 0 0 1 ;
+					- m_color = { IColor 
+						- m_fgColor = 0;
+						- m_bgColor = 0;
+						- m_bgFlag = 0;
+					}
+					- m_position = 1 0 0  ;
+					- m_nIdent = 0;
+					- m_bImplicitSetRectPoints = 0;
+					- m_nOrientationCtrlPt = 8;
+				}
+				- m_drawBehavior = 0;
+				- m_bIsPreferencesInitialized = 0;
+				- elementList = 2;
+				{ CGIClass 
+					- _id = GUID 246c7c8e-c8a9-4474-91f0-01a32d388790;
+					- m_type = 78;
+					- m_pModelObject = { IHandle 
+						- _m2Class = "IClass";
+						- _filename = "Default.sbs";
+						- _subsystem = "Default";
+						- _class = "";
+						- _name = "TopLevel";
+						- _id = GUID b12d7d74-2e9f-41ac-8fdb-3cb3cb34d46d;
+					}
+					- m_pParent = ;
+					- m_name = { CGIText 
+						- m_str = "TopLevel";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 5;
+					}
+					- m_drawBehavior = 0;
+					- m_bIsPreferencesInitialized = 0;
+					- m_AdditionalLabel = { CGIText 
+						- m_str = "";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 1;
+					}
+					- m_polygon = 0 ;
+					- m_nNameFormat = 0;
+					- m_nIsNameFormat = 0;
+					- Compartments = { IRPYRawContainer 
+						- size = 0;
+					}
+					- Attrs = { IRPYRawContainer 
+						- size = 0;
+					}
+					- Operations = { IRPYRawContainer 
+						- size = 0;
+					}
+				}
+				{ CGIDiagramFrame 
+					- _id = GUID d39c4f68-ecd4-4e51-9a3b-f37b7b405c7b;
+					- m_type = 203;
+					- m_pModelObject = { IHandle 
+						- _m2Class = "";
+					}
+					- m_pParent = GUID 246c7c8e-c8a9-4474-91f0-01a32d388790;
+					- m_name = { CGIText 
+						- m_str = "";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 8;
+					}
+					- m_drawBehavior = 4096;
+					- m_transform = 2.63889 0 0 3.63636 20 20 ;
+					- m_bIsPreferencesInitialized = 1;
+					- m_AdditionalLabel = { CGIText 
+						- m_str = "";
+						- m_style = "Arial" 10 0 0 0 1 ;
+						- m_color = { IColor 
+							- m_fgColor = 0;
+							- m_bgColor = 0;
+							- m_bgFlag = 0;
+						}
+						- m_position = 1 0 0  ;
+						- m_nIdent = 0;
+						- m_bImplicitSetRectPoints = 0;
+						- m_nOrientationCtrlPt = 1;
+					}
+					- m_polygon = 4 0 0  0 132  216 132  216 0  ;
+					- m_nNameFormat = 0;
+					- m_nIsNameFormat = 0;
+					- Compartments = { IRPYRawContainer 
+						- size = 0;
+					}
+				}
+				
+				- m_access = 'Z';
+				- m_modified = 'N';
+				- m_fileVersion = "";
+				- m_nModifyDate = 0;
+				- m_nCreateDate = 0;
+				- m_creator = "";
+				- m_bScaleWithZoom = 1;
+				- m_arrowStyle = 'S';
+				- m_pRoot = GUID 246c7c8e-c8a9-4474-91f0-01a32d388790;
+				- m_currentLeftTop = 0 0 ;
+				- m_currentRightBottom = 0 0 ;
+				- m_bFreezeCompartmentContent = 0;
+			}
+			- _defaultSubsystem = { IHandle 
+				- _m2Class = "ISubsystem";
+				- _filename = "Default.sbs";
+				- _subsystem = "";
+				- _class = "";
+				- _name = "Default";
+				- _id = GUID b31fcd11-4230-4a83-85e5-ed16472029b6;
+			}
+		}
+	}
+	- Components = { IRPYRawContainer 
+		- size = 1;
+		- value = 
+		{ IComponent 
+			- fileName = "DefaultComponent";
+			- _id = GUID 91326338-89a8-406e-87b5-ae740a5cc1ea;
+		}
+	}
+}
+
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/Inputs/Model/Rph_LibraryImport_001.save b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/Inputs/Model/Rph_LibraryImport_001.save
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/Inputs/Model/Rph_LibraryImport_001.save
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/Inputs/Model/Rph_LibraryImport_001_rpy/Default.sbs b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/Inputs/Model/Rph_LibraryImport_001_rpy/Default.sbs
new file mode 100644
index 0000000..386b98f
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/Inputs/Model/Rph_LibraryImport_001_rpy/Default.sbs
@@ -0,0 +1,118 @@
+I-Logix-RPY-Archive version 8.12.0 C++ 9728113
+{ ISubsystem 
+	- _id = GUID b31fcd11-4230-4a83-85e5-ed16472029b6;
+	- _myState = 8192;
+	- _name = "Default";
+	- _modifiedTimeWeak = 1.12.2017::15:35:7;
+	- _lastID = 1;
+	- weakCGTime = 1.12.2017::15:35:7;
+	- strongCGTime = 1.2.1990::0:0:0;
+	- _defaultComposite = GUID b12d7d74-2e9f-41ac-8fdb-3cb3cb34d46d;
+	- _eventsBaseID = -1;
+	- Classes = { IRPYRawContainer 
+		- size = 2;
+		- value = 
+		{ IClass 
+			- _id = GUID b12d7d74-2e9f-41ac-8fdb-3cb3cb34d46d;
+			- _myState = 40960;
+			- _name = "TopLevel";
+			- _modifiedTimeWeak = 1.2.1990::0:0:0;
+			- weakCGTime = 1.2.1990::0:0:0;
+			- strongCGTime = 1.2.1990::0:0:0;
+			- _multiplicity = "";
+			- _itsStateChart = { IHandle 
+				- _m2Class = "";
+			}
+			- _classModifier = Unspecified;
+		}
+		{ IClass 
+			- _id = GUID a809dd99-7428-433c-9c3d-fe2d6f0eadee;
+			- _myState = 10240;
+			- _name = "block_0";
+			- Stereotypes = { IRPYRawContainer 
+				- size = 1;
+				- value = 
+				{ IHandle 
+					- _m2Class = "IStereotype";
+					- _filename = "$OMROOT\\Profiles\\SysML\\SysMLProfile_rpy\\SysML.sbs";
+					- _subsystem = "SysML::Blocks";
+					- _class = "";
+					- _name = "Block";
+					- _id = GUID f685432f-691e-4ff1-be70-4d09d19457e1;
+				}
+			}
+			- _modifiedTimeWeak = 1.12.2017::15:36:29;
+			- _lastID = 1;
+			- weakCGTime = 1.12.2017::15:36:29;
+			- strongCGTime = 1.12.2017::15:34:5;
+			- Attrs = { IRPYRawContainer 
+				- size = 3;
+				- value = 
+				{ IAttribute 
+					- _id = GUID 2b73684a-e350-4754-a551-c4b4b31f6c18;
+					- _myState = 10240;
+					- _name = "attribute_0";
+					- _modifiedTimeWeak = 1.12.2017::15:34:16;
+					- _typeOf = { IHandle 
+						- _m2Class = "IType";
+						- _filename = "PredefinedTypesC++.sbs";
+						- _subsystem = "PredefinedTypesCpp";
+						- _class = "";
+						- _name = "int";
+						- _id = GUID 6024c6ab-fe9e-402e-954f-27aca6d3b5e4;
+					}
+					- _isOrdered = 0;
+					- _protection = iPublic;
+					- _static = 0;
+					- _isReference = 0;
+					- _isConstant = 0;
+				}
+				{ IAttribute 
+					- _id = GUID 753d1612-5f39-4c44-a016-c424fb1b130a;
+					- _myState = 8192;
+					- _name = "attribute_1";
+					- _modifiedTimeWeak = 1.12.2017::15:35:7;
+					- _typeOf = { IHandle 
+						- _m2Class = "IType";
+						- _filename = "PredefinedTypes.sbs";
+						- _subsystem = "PredefinedTypes";
+						- _class = "";
+						- _name = "RhpInteger";
+						- _id = GUID 9503fd72-4374-4a1d-9a70-b60508d8f583;
+					}
+					- _isOrdered = 0;
+					- _protection = iPublic;
+					- _static = 0;
+					- _isReference = 0;
+					- _isConstant = 0;
+				}
+				{ IAttribute 
+					- _id = GUID 3a196e85-90cf-4585-b6b5-9918c9836faf;
+					- _myState = 8192;
+					- _name = "attribute_2";
+					- _modifiedTimeWeak = 1.12.2017::15:36:29;
+					- _typeOf = { IHandle 
+						- _m2Class = "IType";
+						- _filename = "PredefinedTypesC++.sbs";
+						- _subsystem = "PredefinedTypesCpp";
+						- _class = "";
+						- _name = "OMString";
+						- _id = GUID 1af3f2a5-fcc3-48cd-b086-29e9f0c30052;
+					}
+					- _isOrdered = 0;
+					- _protection = iPublic;
+					- _static = 0;
+					- _isReference = 0;
+					- _isConstant = 0;
+				}
+			}
+			- _multiplicity = "";
+			- _itsStateChart = { IHandle 
+				- _m2Class = "";
+			}
+			- _classModifier = Unspecified;
+		}
+	}
+	- _configurationRelatedTime = 1.1.1970::1:0:0;
+}
+
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/Inputs/Model/Rph_LibraryImport_001_rpy/DefaultComponent.cmp b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/Inputs/Model/Rph_LibraryImport_001_rpy/DefaultComponent.cmp
new file mode 100644
index 0000000..4d371fc
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/Inputs/Model/Rph_LibraryImport_001_rpy/DefaultComponent.cmp
@@ -0,0 +1,115 @@
+I-Logix-RPY-Archive version 8.12.0 C++ 9728113
+{ IComponent 
+	- _id = GUID 91326338-89a8-406e-87b5-ae740a5cc1ea;
+	- _myState = 139264;
+	- _name = "DefaultComponent";
+	- _modifiedTimeWeak = 1.12.2017::15:33:53;
+	- m_buildType = Executable;
+	- m_libraries = "";
+	- m_additionalSources = "";
+	- m_standardHeaders = "";
+	- m_includePath = "";
+	- m_initializationCode = "";
+	- m_folder = { IFolder 
+		- _id = GUID 0c5cdea3-30dd-4cef-9295-aac006cd2fb4;
+		- _myState = 73728;
+		- _name = "Files";
+		- _modifiedTimeWeak = 1.12.2017::15:33:52;
+		- m_path = "";
+		- Elements = { IRPYRawContainer 
+			- size = 0;
+		}
+		- Files = { IRPYRawContainer 
+			- size = 0;
+		}
+	}
+	- m_configActive = { ICodeGenConfigInfoHandle 
+		- _m2Class = "ICodeGenConfigInfo";
+		- _id = GUID 04deec47-a8d0-4c64-a574-a4aa0ed99d87;
+	}
+	- Configs = { IRPYRawContainer 
+		- size = 1;
+		- value = 
+		{ ICodeGenConfigInfo 
+			- _id = GUID 04deec47-a8d0-4c64-a574-a4aa0ed99d87;
+			- _myState = 8192;
+			- _name = "DefaultConfig";
+			- _modifiedTimeWeak = 1.2.1990::0:0:0;
+			- _scopeType = Explicit;
+			- _libraries = "";
+			- _additionalSources = "";
+			- _standardHeaders = "";
+			- _includePath = "";
+			- _targetMain = "";
+			- _instrumentation = None;
+			- _timeModel = RealTime;
+			- m_generateActors = 1;
+			- _statechartImplementation = Flat;
+			- _initializationCode = "";
+			- _checksList = 0 ;
+			- ScopeElements = { IRPYRawContainer 
+				- size = 0;
+			}
+			- InitialInstances = { IRPYRawContainer 
+				- size = 0;
+			}
+			- _root = { IFolder 
+				- _id = GUID a0afdd70-1d50-46c9-8d28-b41e0dcdb612;
+				- _myState = 8192;
+				- _name = "DefaultConfig";
+				- _modifiedTimeWeak = 1.2.1990::0:0:0;
+				- m_path = "";
+				- Elements = { IRPYRawContainer 
+					- size = 0;
+				}
+				- Files = { IRPYRawContainer 
+					- size = 0;
+				}
+			}
+			- weakCGTime = 1.2.1990::0:0:0;
+			- strongCGTime = 1.2.1990::0:0:0;
+			- AnimScopeElements = { IRPYRawContainer 
+				- size = 0;
+			}
+			- m_allInAnimScope = 1;
+			- m_generateUsecases = 0;
+		}
+	}
+	- HandlesInMe = { IRPYRawContainer 
+		- size = 3;
+		- value = 
+		{ IHandle 
+			- _m2Class = "ISubsystem";
+			- _filename = "Default.sbs";
+			- _subsystem = "";
+			- _class = "";
+			- _name = "Default";
+			- _id = GUID b31fcd11-4230-4a83-85e5-ed16472029b6;
+		}
+		{ IHandle 
+			- _m2Class = "IProfile";
+			- _filename = "$OMROOT\\Profiles\\SysML\\SysMLProfile_rpy\\SysML.sbs";
+			- _subsystem = "";
+			- _class = "";
+			- _name = "SysML";
+			- _id = GUID d9689b73-885e-44c4-896b-de43defa0a33;
+		}
+		{ IHandle 
+			- _m2Class = "IProfile";
+			- _filename = "$OMROOT\\Settings\\SysMLPerspectives\\SysMLPerspectives.sbs";
+			- _subsystem = "";
+			- _class = "";
+			- _name = "SysMLPerspectives";
+			- _id = GUID ab285915-0966-4322-a029-ffac3e6ef3df;
+		}
+	}
+	- VariationPoints = { IRPYRawContainer 
+		- size = 0;
+	}
+	- SelectedVariants = { IRPYRawContainer 
+		- size = 0;
+	}
+	- weakCGTime = 1.12.2017::15:33:53;
+	- strongCGTime = 1.2.1990::0:0:0;
+}
+
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/Inputs/Model/Rph_LibraryImport_001_rpy/filesTable.dat b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/Inputs/Model/Rph_LibraryImport_001_rpy/filesTable.dat
new file mode 100644
index 0000000..7855c49
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/Inputs/Model/Rph_LibraryImport_001_rpy/filesTable.dat
@@ -0,0 +1,10 @@
+I-Logix-RPY-Archive version 8.12.0 * 9728113
+
+- filesTable = { IRPYRawContainer 
+	- size = 3;
+	- value = "Rph_LibraryImport_001.rpy" ""
+	"Rph_LibraryImport_001_rpy\\Default.sbs" "Default"
+	"Rph_LibraryImport_001_rpy\\DefaultComponent.cmp" "DefaultComponent"
+	
+}
+
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/expected_papyrus/Rph_LibraryImport_001.di b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/expected_papyrus/Rph_LibraryImport_001.di
new file mode 100644
index 0000000..bf9abab
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/expected_papyrus/Rph_LibraryImport_001.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/expected_papyrus/Rph_LibraryImport_001.notation b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/expected_papyrus/Rph_LibraryImport_001.notation
new file mode 100644
index 0000000..ad6419d
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/expected_papyrus/Rph_LibraryImport_001.notation
@@ -0,0 +1,11 @@
+<?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/5.0.0/UML" xmi:id="_YWlH4NzAEea4K6xARJBg7g" type="BlockDefinition" name="Model1" measurementUnit="Pixel">
+  <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YWlH4NzAEea4K6xARJBg7g-EAnnotation--752770677" source="Imported from a Rpy Model">
+    <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YWlH4NzAEea4K6xARJBg7g-EAnnotation--752770677-EStringToStringMapEntry--492027705-1938285149" key="Rpy Model Name" value="Rph_LibraryImport_001"/>
+    <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YWlH4NzAEea4K6xARJBg7g-EAnnotation--752770677-EStringToStringMapEntry-437159795-0" key="Rpy Version" value=""/>
+    <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YWlH4NzAEea4K6xARJBg7g-EAnnotation--752770677-EStringToStringMapEntry--793831098--1799222281" key="Papyrus Rpy Import Bundle Version" value="0.7.0.qualifier"/>
+  </eAnnotations>
+  <styles xmi:type="notation:DiagramStyle" xmi:id="_YWlH5dzAEea4K6xARJBg7g"/>
+  <styles xmi:type="notation:StringValueStyle" xmi:id="_YWlH5tzAEea4K6xARJBg7g" name="diagram_compatibility_version" stringValue="1.2.0"/>
+  <element xmi:type="uml:Package" href="Rph_LibraryImport_001.uml#GUID-b31fcd11-4230-4a83-85e5-ed16472029b6"/>
+</notation:Diagram>
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/expected_papyrus/Rph_LibraryImport_001.properties b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/expected_papyrus/Rph_LibraryImport_001.properties
new file mode 100644
index 0000000..afac1e4
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/expected_papyrus/Rph_LibraryImport_001.properties
@@ -0,0 +1 @@
+#Tue Jan 17 15:22:31 CET 2017
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/expected_papyrus/Rph_LibraryImport_001.uml b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/expected_papyrus/Rph_LibraryImport_001.uml
new file mode 100644
index 0000000..232420b
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/resources/Rph_LibraryImport_001/expected_papyrus/Rph_LibraryImport_001.uml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Blocks="http://www.eclipse.org/papyrus/0.7.0/SysML/Blocks" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/papyrus/0.7.0/SysML/Blocks http://www.eclipse.org/papyrus/0.7.0/SysML#//blocks">
+  <uml:Model xmi:id="GUID-420979e3-ed15-4094-af5a-c8d117603bd2" name="Rph_LibraryImport_001">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-420979e3-ed15-4094-af5a-c8d117603bd2-EAnnotation--752770677" source="Imported from a Rpy Model">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="GUID-420979e3-ed15-4094-af5a-c8d117603bd2-EAnnotation--752770677-EStringToStringMapEntry--492027705-1938285149" key="Rpy Model Name" value="Rph_LibraryImport_001"/>
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="GUID-420979e3-ed15-4094-af5a-c8d117603bd2-EAnnotation--752770677-EStringToStringMapEntry-437159795-0" key="Rpy Version" value=""/>
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="GUID-420979e3-ed15-4094-af5a-c8d117603bd2-EAnnotation--752770677-EStringToStringMapEntry--793831098--1799222281" key="Papyrus Rpy Import Bundle Version" value="0.7.0.qualifier"/>
+    </eAnnotations>
+    <packageImport xmi:type="uml:PackageImport" xmi:id="GUID-420979e3-ed15-4094-af5a-c8d117603bd2-PackageImport-PrimitiveTypes">
+      <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+    </packageImport>
+    <packagedElement xmi:type="uml:Package" xmi:id="GUID-b31fcd11-4230-4a83-85e5-ed16472029b6" name="Default">
+      <packagedElement xmi:type="uml:Class" xmi:id="GUID-a809dd99-7428-433c-9c3d-fe2d6f0eadee" name="block_0">
+        <ownedAttribute xmi:type="uml:Property" xmi:id="GUID-2b73684a-e350-4754-a551-c4b4b31f6c18" name="attribute_0" type="GUID-6024c6ab-fe9e-402e-954f-27aca6d3b5e4" aggregation="composite"/>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="GUID-753d1612-5f39-4c44-a016-c424fb1b130a" name="attribute_1" type="GUID-9503fd72-4374-4a1d-9a70-b60508d8f583" aggregation="composite"/>
+        <ownedAttribute xmi:type="uml:Property" xmi:id="GUID-3a196e85-90cf-4585-b6b5-9918c9836faf" name="attribute_2" type="GUID-1af3f2a5-fcc3-48cd-b086-29e9f0c30052" aggregation="composite"/>
+      </packagedElement>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Package" xmi:id="GUID-420979e3-ed15-4094-af5a-c8d117603bd2-Package-Rph_LibraryImport_001::PredefinedTypes" name="PredefinedTypes">
+      <packagedElement xmi:type="uml:DataType" xmi:id="GUID-9503fd72-4374-4a1d-9a70-b60508d8f583" name="RhpInteger"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Package" xmi:id="GUID-420979e3-ed15-4094-af5a-c8d117603bd2-Package-Rph_LibraryImport_001::PredefinedTypesC++" name="PredefinedTypesC++">
+      <packagedElement xmi:type="uml:DataType" xmi:id="GUID-6024c6ab-fe9e-402e-954f-27aca6d3b5e4" name="int"/>
+      <packagedElement xmi:type="uml:DataType" xmi:id="GUID-1af3f2a5-fcc3-48cd-b086-29e9f0c30052" name="OMString"/>
+    </packagedElement>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-420979e3-ed15-4094-af5a-c8d117603bd2-ProfileApplication-SysML">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-420979e3-ed15-4094-af5a-c8d117603bd2-ProfileApplication-SysML-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#/"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_TZ_nULU5EduiKqCzJMWbGw"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-420979e3-ed15-4094-af5a-c8d117603bd2-ProfileApplication-SysML::ModelElements">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-420979e3-ed15-4094-af5a-c8d117603bd2-ProfileApplication-SysML::ModelElements-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//modelelements"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_Gx8MgLX7EduFmqQsrNB9lw"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-420979e3-ed15-4094-af5a-c8d117603bd2-ProfileApplication-SysML::Blocks">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-420979e3-ed15-4094-af5a-c8d117603bd2-ProfileApplication-SysML::Blocks-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//blocks"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_fSw28LX7EduFmqQsrNB9lw"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-420979e3-ed15-4094-af5a-c8d117603bd2-ProfileApplication-SysML::PortAndFlows">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-420979e3-ed15-4094-af5a-c8d117603bd2-ProfileApplication-SysML::PortAndFlows-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//portandflows"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_rpx28LX7EduFmqQsrNB9lw"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-420979e3-ed15-4094-af5a-c8d117603bd2-ProfileApplication-SysML::Constraints">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-420979e3-ed15-4094-af5a-c8d117603bd2-ProfileApplication-SysML::Constraints-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//constraints"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_5WYJ0LX7EduFmqQsrNB9lw"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-420979e3-ed15-4094-af5a-c8d117603bd2-ProfileApplication-SysML::Activities">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-420979e3-ed15-4094-af5a-c8d117603bd2-ProfileApplication-SysML::Activities-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//activities"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_C2zXMLX8EduFmqQsrNB9lw"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-420979e3-ed15-4094-af5a-c8d117603bd2-ProfileApplication-SysML::Allocations">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-420979e3-ed15-4094-af5a-c8d117603bd2-ProfileApplication-SysML::Allocations-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//allocations"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_NxdG4LX8EduFmqQsrNB9lw"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-420979e3-ed15-4094-af5a-c8d117603bd2-ProfileApplication-SysML::Requirements">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-420979e3-ed15-4094-af5a-c8d117603bd2-ProfileApplication-SysML::Requirements-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//requirements"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_OOJC4LX8EduFmqQsrNB9lw"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-420979e3-ed15-4094-af5a-c8d117603bd2-ProfileApplication-SysML::Interactions">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-420979e3-ed15-4094-af5a-c8d117603bd2-ProfileApplication-SysML::Interactions-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//interactions"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_meOioLX8EduFmqQsrNB9lw"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-420979e3-ed15-4094-af5a-c8d117603bd2-ProfileApplication-SysML::StateMachines">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-420979e3-ed15-4094-af5a-c8d117603bd2-ProfileApplication-SysML::StateMachines-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//statemachines"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_nAF5kLX8EduFmqQsrNB9lw"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="GUID-420979e3-ed15-4094-af5a-c8d117603bd2-ProfileApplication-SysML::UseCases">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="GUID-420979e3-ed15-4094-af5a-c8d117603bd2-ProfileApplication-SysML::UseCases-EAnnotation--906144443" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/0.7.0/SysML#//usecases"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://SysML_PROFILES/SysML.profile.uml#_neZmMLX8EduFmqQsrNB9lw"/>
+    </profileApplication>
+  </uml:Model>
+  <Blocks:Block xmi:id="Block-of-GUID-a809dd99-7428-433c-9c3d-fe2d6f0eadee" base_Class="GUID-a809dd99-7428-433c-9c3d-fe2d6f0eadee"/>
+</xmi:XMI>
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/src/org/eclipse/papyrus/interoperability/rpy/sysml/tests/Activator.java b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/src/org/eclipse/papyrus/interoperability/rpy/sysml/tests/Activator.java
new file mode 100644
index 0000000..5fb7e87
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/src/org/eclipse/papyrus/interoperability/rpy/sysml/tests/Activator.java
@@ -0,0 +1,71 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST.
+ *
+ *    
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.sysml.tests;
+
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.papyrus.infra.core.log.LogHelper;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends Plugin {
+
+	/** Plug-in ID */
+	public static final String PLUGIN_ID = "org.eclipse.papyrus.interoperability.rpy.sysml.tests"; //$NON-NLS-1$
+
+	/** The plug-in shared instance */
+	private static Activator plugin;
+
+	/** The log service */
+	public static LogHelper log;
+
+
+	/** Default Constructor */
+	public Activator() {
+
+	}
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
+	 */
+	@Override
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+		log = new LogHelper(plugin);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.core.runtime.Plugin#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/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/src/org/eclipse/papyrus/interoperability/rpy/sysml/tests/tests/AllTests.java b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/src/org/eclipse/papyrus/interoperability/rpy/sysml/tests/tests/AllTests.java
new file mode 100644
index 0000000..056b3a5
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/src/org/eclipse/papyrus/interoperability/rpy/sysml/tests/tests/AllTests.java
@@ -0,0 +1,36 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST.
+ *
+ *    
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.interoperability.rpy.sysml.tests.tests;
+
+import org.eclipse.papyrus.junit.framework.classification.ClassificationSuite;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite.SuiteClasses;
+
+/**
+ * Master test suite for this test fragment.
+ */
+@RunWith(ClassificationSuite.class)
+@SuiteClasses({
+		org.eclipse.papyrus.interoperability.rpy.tests.AllTests.class,
+		
+		ImportSysML11_EnumerationInBDD_Test.class,
+		ImportSysML11_AssociationLabelInBDD_Test.class,
+		ImportSysML11_Rph_Actors_And_Events_001_Test.class,
+		ImportSysML11_Rph_LibraryImport_001_Test.class
+})
+
+public class AllTests {
+
+}
+ 
\ No newline at end of file
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/src/org/eclipse/papyrus/interoperability/rpy/sysml/tests/tests/ImportSysML11_AssociationLabelInBDD_Test.java b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/src/org/eclipse/papyrus/interoperability/rpy/sysml/tests/tests/ImportSysML11_AssociationLabelInBDD_Test.java
new file mode 100644
index 0000000..823a00b
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/src/org/eclipse/papyrus/interoperability/rpy/sysml/tests/tests/ImportSysML11_AssociationLabelInBDD_Test.java
@@ -0,0 +1,54 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST.
+ *
+ *    
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.sysml.tests.tests;
+
+
+import org.eclipse.papyrus.interoperability.rpy.sysml.tests.Activator;
+import org.eclipse.papyrus.interoperability.rpy.tests.tests.AbstractImportRpyModelTests;
+import org.eclipse.papyrus.junit.utils.rules.PluginResource;
+import org.junit.Before;
+
+/**
+ * 
+ * @author VL222926
+ * 
+ * 
+ *
+ */
+@PluginResource("resources/AssociationLabelInBDD_test/expected_papyrus/AssociationLabelInBDD.di") // the name of the expected model must be the same than the name of the Rpy project
+public class ImportSysML11_AssociationLabelInBDD_Test extends AbstractImportRpyModelTests {
+
+	/**
+	 * the name of the Rpy File
+	 */
+	public static final String RPY_MODEL_NAME = "AssociationLabelInBDD";// $NON-NLS-0$
+
+	/**
+	 * the name of the project created to execute the tests
+	 */
+	public static final String PROJECT_NAME = "org.eclipse.papyrus.sysml.rpy.testImport"; // $NON-NLS-0$
+
+	private static final String SOURCE_PATH = "resources/AssociationLabelInBDD_test/"; // $NON-NLS-0$
+
+	/**
+	 * 
+	 * @throws Exception
+	 */
+	@Before
+	public void initTest() throws Exception {
+		super.initTest(PROJECT_NAME, RPY_MODEL_NAME, SOURCE_PATH, Activator.getDefault().getBundle());
+	}
+
+}
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/src/org/eclipse/papyrus/interoperability/rpy/sysml/tests/tests/ImportSysML11_EnumerationInBDD_Test.java b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/src/org/eclipse/papyrus/interoperability/rpy/sysml/tests/tests/ImportSysML11_EnumerationInBDD_Test.java
new file mode 100644
index 0000000..1076698
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/src/org/eclipse/papyrus/interoperability/rpy/sysml/tests/tests/ImportSysML11_EnumerationInBDD_Test.java
@@ -0,0 +1,53 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST.
+ *
+ *    
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.sysml.tests.tests;
+
+import org.eclipse.papyrus.interoperability.rpy.sysml.tests.Activator;
+import org.eclipse.papyrus.interoperability.rpy.tests.tests.AbstractImportRpyModelTests;
+import org.eclipse.papyrus.junit.utils.rules.PluginResource;
+import org.junit.Before;
+
+/**
+ * 
+ * @author VL222926
+ * 
+ * 
+ *
+ */
+@PluginResource("resources/EnumerationInBDD_test/expected_papyrus/EnumerationInBDD.di") // the name of the expected model must be the same than the name of the Rpy project
+public class ImportSysML11_EnumerationInBDD_Test extends AbstractImportRpyModelTests {
+
+	/**
+	 * the name of the Rpy File
+	 */
+	public static final String RPY_MODEL_NAME = "EnumerationInBDD";// $NON-NLS-0$
+
+	/**
+	 * the name of the project created to execute the tests
+	 */
+	public static final String PROJECT_NAME = "org.eclipse.papyrus.sysml.rpy.testImport"; // $NON-NLS-0$
+
+	private static final String SOURCE_PATH = "resources/EnumerationInBDD_test/"; // $NON-NLS-0$
+
+	/**
+	 * 
+	 * @throws Exception
+	 */
+	@Before
+	public void initTest() throws Exception {
+		super.initTest(PROJECT_NAME, RPY_MODEL_NAME, SOURCE_PATH, Activator.getDefault().getBundle());
+	}
+
+}
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/src/org/eclipse/papyrus/interoperability/rpy/sysml/tests/tests/ImportSysML11_Rph_Actors_And_Events_001_Test.java b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/src/org/eclipse/papyrus/interoperability/rpy/sysml/tests/tests/ImportSysML11_Rph_Actors_And_Events_001_Test.java
new file mode 100644
index 0000000..09b3a35
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/src/org/eclipse/papyrus/interoperability/rpy/sysml/tests/tests/ImportSysML11_Rph_Actors_And_Events_001_Test.java
@@ -0,0 +1,54 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST.
+ *
+ *    
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.sysml.tests.tests;
+
+
+import org.eclipse.papyrus.interoperability.rpy.sysml.tests.Activator;
+import org.eclipse.papyrus.interoperability.rpy.tests.tests.AbstractImportRpyModelTests;
+import org.eclipse.papyrus.junit.utils.rules.PluginResource;
+import org.junit.Before;
+
+/**
+ * 
+ * @author VL222926
+ * 
+ * 
+ *
+ */
+@PluginResource("resources/Rph_Actors_And_Events_001/expected_papyrus/Rph_Actors_And_Events_001.di") // the name of the expected model must be the same than the name of the Rpy project
+public class ImportSysML11_Rph_Actors_And_Events_001_Test extends AbstractImportRpyModelTests {
+
+	/**
+	 * the name of the Rpy File
+	 */
+	public static final String RPY_MODEL_NAME = "Rph_Actors_And_Events_001"; //$NON-NLS-1$
+
+	/**
+	 * the name of the project created to execute the tests
+	 */
+	public static final String PROJECT_NAME = "org.eclipse.papyrus.sysml.rpy.testImport"; //$NON-NLS-1$
+
+	private static final String SOURCE_PATH = "resources/Rph_Actors_And_Events_001/Inputs/Model/"; //$NON-NLS-1$
+
+	/**
+	 * 
+	 * @throws Exception
+	 */
+	@Before
+	public void initTest() throws Exception {
+		super.initTest(PROJECT_NAME, RPY_MODEL_NAME, SOURCE_PATH, Activator.getDefault().getBundle());
+	}
+
+}
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/src/org/eclipse/papyrus/interoperability/rpy/sysml/tests/tests/ImportSysML11_Rph_LibraryImport_001_Test.java b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/src/org/eclipse/papyrus/interoperability/rpy/sysml/tests/tests/ImportSysML11_Rph_LibraryImport_001_Test.java
new file mode 100644
index 0000000..61b4854
--- /dev/null
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.sysml.tests/src/org/eclipse/papyrus/interoperability/rpy/sysml/tests/tests/ImportSysML11_Rph_LibraryImport_001_Test.java
@@ -0,0 +1,54 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST.
+ *
+ *    
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *  Vincent Lorenzo (CEA LIST) vincent.lorenzo@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.interoperability.rpy.sysml.tests.tests;
+
+
+import org.eclipse.papyrus.interoperability.rpy.sysml.tests.Activator;
+import org.eclipse.papyrus.interoperability.rpy.tests.tests.AbstractImportRpyModelTests;
+import org.eclipse.papyrus.junit.utils.rules.PluginResource;
+import org.junit.Before;
+
+/**
+ * 
+ * @author VL222926
+ * 
+ * 
+ *
+ */
+@PluginResource("resources/Rph_LibraryImport_001/expected_papyrus/Rph_LibraryImport_001.di") // the name of the expected model must be the same than the name of the Rpy project
+public class ImportSysML11_Rph_LibraryImport_001_Test extends AbstractImportRpyModelTests {
+
+	/**
+	 * the name of the Rpy File
+	 */
+	public static final String RPY_MODEL_NAME = "Rph_LibraryImport_001"; //$NON-NLS-1$
+
+	/**
+	 * the name of the project created to execute the tests
+	 */
+	public static final String PROJECT_NAME = "org.eclipse.papyrus.sysml.rpy.testImport"; //$NON-NLS-1$
+
+	private static final String SOURCE_PATH = "resources/Rph_LibraryImport_001/Inputs/Model/"; //$NON-NLS-1$
+
+	/**
+	 * 
+	 * @throws Exception
+	 */
+	@Before
+	public void initTest() throws Exception {
+		super.initTest(PROJECT_NAME, RPY_MODEL_NAME, SOURCE_PATH, Activator.getDefault().getBundle());
+	}
+
+}
diff --git a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.tests/META-INF/MANIFEST.MF b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.tests/META-INF/MANIFEST.MF
index e1fc6d1..4d3b0a1 100755
--- a/rpy/tests/org.eclipse.papyrus.interoperability.rpy.tests/META-INF/MANIFEST.MF
+++ b/rpy/tests/org.eclipse.papyrus.interoperability.rpy.tests/META-INF/MANIFEST.MF
@@ -10,9 +10,9 @@
  org.eclipse.core.commands,
  org.eclipse.emf.ecore,
  org.eclipse.papyrus.interoperability.rpy;bundle-version="0.7.0",
- org.eclipse.uml2.uml;bundle-version="5.3.0",
+ org.eclipse.uml2.uml;bundle-version="[5.2.0,6.0.0)",
  org.eclipse.papyrus.junit.utils;bundle-version="2.0.0",
- org.eclipse.emf.compare;bundle-version="3.4.0",
+ org.eclipse.emf.compare;bundle-version="[3.3.0,4.0.0)",
  org.eclipse.papyrus.interoperability.rpy.blackboxes;bundle-version="0.7.0",
  org.eclipse.papyrus.interoperability.common;bundle-version="0.7.0",
  org.eclipse.papyrus.interoperability.rpy.metamodel;bundle-version="0.7.0"