MANIFEST and few gen files updated (not in gen folders)
diff --git a/services/org.eclipse.sensinact.studio.model.resource.editor/src/org/eclipse/sensinact/studio/resource/presentation/ResourceEditor.java b/services/org.eclipse.sensinact.studio.model.resource.editor/src/org/eclipse/sensinact/studio/resource/presentation/ResourceEditor.java
index 38b7955..6ea843a 100644
--- a/services/org.eclipse.sensinact.studio.model.resource.editor/src/org/eclipse/sensinact/studio/resource/presentation/ResourceEditor.java
+++ b/services/org.eclipse.sensinact.studio.model.resource.editor/src/org/eclipse/sensinact/studio/resource/presentation/ResourceEditor.java
@@ -411,6 +411,8 @@
 	 */
 	protected EContentAdapter problemIndicationAdapter =
 		new EContentAdapter() {
+			protected boolean dispatching;
+
 			@Override
 			public void notifyChanged(Notification notification) {
 				if (notification.getNotifier() instanceof Resource) {
@@ -426,15 +428,7 @@
 							else {
 								resourceToDiagnosticMap.remove(resource);
 							}
-
-							if (updateProblemIndication) {
-								getSite().getShell().getDisplay().asyncExec
-									(new Runnable() {
-										 public void run() {
-											 updateProblemIndication();
-										 }
-									 });
-							}
+							dispatchUpdateProblemIndication();
 							break;
 						}
 					}
@@ -444,6 +438,19 @@
 				}
 			}
 
+			protected void dispatchUpdateProblemIndication() {
+				if (updateProblemIndication && !dispatching) {
+					dispatching = true;
+					getSite().getShell().getDisplay().asyncExec
+						(new Runnable() {
+							 public void run() {
+								 dispatching = false;
+								 updateProblemIndication();
+							 }
+						 });
+				}
+			}
+
 			@Override
 			protected void setTarget(Resource target) {
 				basicSetTarget(target);
@@ -453,14 +460,7 @@
 			protected void unsetTarget(Resource target) {
 				basicUnsetTarget(target);
 				resourceToDiagnosticMap.remove(target);
-				if (updateProblemIndication) {
-					getSite().getShell().getDisplay().asyncExec
-						(new Runnable() {
-							 public void run() {
-								 updateProblemIndication();
-							 }
-						 });
-				}
+				dispatchUpdateProblemIndication();
 			}
 		};
 
@@ -658,14 +658,11 @@
 			}
 
 			if (markerHelper.hasMarkers(editingDomain.getResourceSet())) {
-				markerHelper.deleteMarkers(editingDomain.getResourceSet());
-				if (diagnostic.getSeverity() != Diagnostic.OK) {
-					try {
-						markerHelper.createMarkers(diagnostic);
-					}
-					catch (CoreException exception) {
-						ResourceEditorPlugin.INSTANCE.log(exception);
-					}
+				try {
+					markerHelper.updateMarkers(diagnostic);
+				}
+				catch (CoreException exception) {
+					ResourceEditorPlugin.INSTANCE.log(exception);
 				}
 			}
 		}
@@ -1046,6 +1043,7 @@
 
 				selectionViewer = (TreeViewer)viewerPane.getViewer();
 				selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
+				selectionViewer.setUseHashlookup(true);
 
 				selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
 				selectionViewer.setInput(editingDomain.getResourceSet());
@@ -1351,6 +1349,7 @@
 
 					// Set up the tree viewer.
 					//
+					contentOutlineViewer.setUseHashlookup(true);
 					contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
 					contentOutlineViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
 					contentOutlineViewer.setInput(editingDomain.getResourceSet());
@@ -1498,7 +1497,9 @@
 					// Save the resources to the file system.
 					//
 					boolean first = true;
-					for (Resource resource : editingDomain.getResourceSet().getResources()) {
+					List<Resource> resources = editingDomain.getResourceSet().getResources();
+					for (int i = 0; i < resources.size(); ++i) {
+						Resource resource = resources.get(i);
 						if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) {
 							try {
 								long timeStamp = resource.getTimeStamp();
diff --git a/xtext/org.eclipse.sensinact.studio.language.sensinact.ide/META-INF/MANIFEST.MF b/xtext/org.eclipse.sensinact.studio.language.sensinact.ide/META-INF/MANIFEST.MF
index 39b21b2..1a21763 100644
--- a/xtext/org.eclipse.sensinact.studio.language.sensinact.ide/META-INF/MANIFEST.MF
+++ b/xtext/org.eclipse.sensinact.studio.language.sensinact.ide/META-INF/MANIFEST.MF
@@ -1,14 +1,15 @@
-Manifest-Version: 1.0

-Bundle-ManifestVersion: 2

-Bundle-Name: org.eclipse.sensinact.studio.language.sensinact.ide

-Bundle-Vendor: My Company

-Bundle-Version: 1.0.0.qualifier

-Bundle-SymbolicName: org.eclipse.sensinact.studio.language.sensinact.ide; singleton:=true

-Bundle-ActivationPolicy: lazy

-Require-Bundle: org.eclipse.sensinact.studio.language.sensinact,

- org.eclipse.xtext.ide,

- org.eclipse.xtext.xbase.ide

-Bundle-RequiredExecutionEnvironment: JavaSE-1.7

-Export-Package: org.eclipse.sensinact.studio.language.ide.contentassist.antlr,

- org.eclipse.sensinact.studio.language.ide.contentassist.antlr.internal

-

+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.sensinact.studio.language.sensinact.ide
+Bundle-Vendor: My Company
+Bundle-Version: 1.0.0.qualifier
+Bundle-SymbolicName: org.eclipse.sensinact.studio.language.sensinact.ide; singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.sensinact.studio.language.sensinact,
+ org.eclipse.xtext.ide,
+ org.eclipse.xtext.xbase.ide,
+ org.antlr.runtime
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Export-Package: org.eclipse.sensinact.studio.language.ide.contentassist.antlr,
+ org.eclipse.sensinact.studio.language.ide.contentassist.antlr.internal
+
diff --git a/xtext/org.eclipse.sensinact.studio.language.sensinact.ide/src/org/eclipse/sensinact/studio/language/ide/SensinactIdeModule.xtend b/xtext/org.eclipse.sensinact.studio.language.sensinact.ide/src/org/eclipse/sensinact/studio/language/ide/SensinactIdeModule.xtend
new file mode 100644
index 0000000..dbc5f00
--- /dev/null
+++ b/xtext/org.eclipse.sensinact.studio.language.sensinact.ide/src/org/eclipse/sensinact/studio/language/ide/SensinactIdeModule.xtend
@@ -0,0 +1,11 @@
+/*
+ * generated by Xtext 2.12.0
+ */
+package org.eclipse.sensinact.studio.language.ide
+
+
+/**
+ * Use this class to register ide components.
+ */
+class SensinactIdeModule extends AbstractSensinactIdeModule {
+}
diff --git a/xtext/org.eclipse.sensinact.studio.language.sensinact.ide/src/org/eclipse/sensinact/studio/language/ide/SensinactIdeSetup.xtend b/xtext/org.eclipse.sensinact.studio.language.sensinact.ide/src/org/eclipse/sensinact/studio/language/ide/SensinactIdeSetup.xtend
new file mode 100644
index 0000000..52512e1
--- /dev/null
+++ b/xtext/org.eclipse.sensinact.studio.language.sensinact.ide/src/org/eclipse/sensinact/studio/language/ide/SensinactIdeSetup.xtend
@@ -0,0 +1,20 @@
+/*
+ * generated by Xtext 2.12.0
+ */
+package org.eclipse.sensinact.studio.language.ide
+
+import com.google.inject.Guice
+import org.eclipse.sensinact.studio.language.SensinactRuntimeModule
+import org.eclipse.sensinact.studio.language.SensinactStandaloneSetup
+import org.eclipse.xtext.util.Modules2
+
+/**
+ * Initialization support for running Xtext languages as language servers.
+ */
+class SensinactIdeSetup extends SensinactStandaloneSetup {
+
+	override createInjector() {
+		Guice.createInjector(Modules2.mixin(new SensinactRuntimeModule, new SensinactIdeModule))
+	}
+	
+}
diff --git a/xtext/org.eclipse.sensinact.studio.language.sensinact.tests/META-INF/MANIFEST.MF b/xtext/org.eclipse.sensinact.studio.language.sensinact.tests/META-INF/MANIFEST.MF
index 26f2da3..e1d616e 100644
--- a/xtext/org.eclipse.sensinact.studio.language.sensinact.tests/META-INF/MANIFEST.MF
+++ b/xtext/org.eclipse.sensinact.studio.language.sensinact.tests/META-INF/MANIFEST.MF
@@ -1,21 +1,23 @@
-Manifest-Version: 1.0

-Bundle-ManifestVersion: 2

-Bundle-Name: org.eclipse.sensinact.studio.language.sensinact.tests

-Bundle-Vendor: My Company

-Bundle-Version: 1.0.0.qualifier

-Bundle-SymbolicName: org.eclipse.sensinact.studio.language.sensinact.tests; singleton:=true

-Bundle-ActivationPolicy: lazy

-Require-Bundle: org.eclipse.sensinact.studio.language.sensinact,

- org.junit,

- org.eclipse.xtext.junit4,

- org.eclipse.xtext.xbase.junit,

- org.eclipse.xtext.xbase.lib

-Bundle-RequiredExecutionEnvironment: JavaSE-1.7

-Export-Package: org.eclipse.sensinact.studio.language.tests

-Import-Package: org.hamcrest.core,

- org.junit,

- org.junit.runners.model,

- org.junit.runner,

- org.junit.runners,

- org.junit.runner.manipulation,

- org.junit.runner.notification

+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.sensinact.studio.language.sensinact.tests
+Bundle-Vendor: My Company
+Bundle-Version: 1.0.0.qualifier
+Bundle-SymbolicName: org.eclipse.sensinact.studio.language.sensinact.tests; singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.sensinact.studio.language.sensinact,
+ org.junit,
+ org.eclipse.xtext.junit4,
+ org.eclipse.xtext.xbase.junit,
+ org.eclipse.xtext.xbase.lib,
+ org.eclipse.xtext.testing,
+ org.eclipse.xtext.xbase.testing
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Export-Package: org.eclipse.sensinact.studio.language.tests;x-internal=true
+Import-Package: org.hamcrest.core,
+ org.junit;version="4.5.0",
+ org.junit.runners.model;version="4.5.0",
+ org.junit.runner;version="4.5.0",
+ org.junit.runners;version="4.5.0",
+ org.junit.runner.manipulation;version="4.5.0",
+ org.junit.runner.notification;version="4.5.0"
diff --git a/xtext/org.eclipse.sensinact.studio.language.sensinact.ui.tests/META-INF/MANIFEST.MF b/xtext/org.eclipse.sensinact.studio.language.sensinact.ui.tests/META-INF/MANIFEST.MF
index cf7b0cb..5049d61 100644
--- a/xtext/org.eclipse.sensinact.studio.language.sensinact.ui.tests/META-INF/MANIFEST.MF
+++ b/xtext/org.eclipse.sensinact.studio.language.sensinact.ui.tests/META-INF/MANIFEST.MF
@@ -1,22 +1,24 @@
-Manifest-Version: 1.0

-Bundle-ManifestVersion: 2

-Bundle-Name: org.eclipse.sensinact.studio.language.sensinact.ui.tests

-Bundle-Vendor: My Company

-Bundle-Version: 1.0.0.qualifier

-Bundle-SymbolicName: org.eclipse.sensinact.studio.language.sensinact.ui.tests; singleton:=true

-Bundle-ActivationPolicy: lazy

-Require-Bundle: org.eclipse.sensinact.studio.language.sensinact.ui,

- org.junit,

- org.eclipse.xtext.junit4,

- org.eclipse.xtext.xbase.junit,

- org.eclipse.core.runtime,

- org.eclipse.ui.workbench

-Bundle-RequiredExecutionEnvironment: JavaSE-1.7

-Export-Package: org.eclipse.sensinact.studio.language.ui.tests

-Import-Package: org.hamcrest.core,

- org.junit,

- org.junit.runners.model,

- org.junit.runner,

- org.junit.runners,

- org.junit.runner.manipulation,

- org.junit.runner.notification

+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.sensinact.studio.language.sensinact.ui.tests
+Bundle-Vendor: My Company
+Bundle-Version: 1.0.0.qualifier
+Bundle-SymbolicName: org.eclipse.sensinact.studio.language.sensinact.ui.tests; singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.sensinact.studio.language.sensinact.ui,
+ org.junit,
+ org.eclipse.xtext.junit4,
+ org.eclipse.xtext.xbase.junit,
+ org.eclipse.core.runtime,
+ org.eclipse.ui.workbench;resolution:=optional,
+ org.eclipse.xtext.testing,
+ org.eclipse.xtext.xbase.testing
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Export-Package: org.eclipse.sensinact.studio.language.ui.tests;x-internal=true
+Import-Package: org.hamcrest.core,
+ org.junit;version="4.5.0",
+ org.junit.runners.model;version="4.5.0",
+ org.junit.runner;version="4.5.0",
+ org.junit.runners;version="4.5.0",
+ org.junit.runner.manipulation;version="4.5.0",
+ org.junit.runner.notification;version="4.5.0"
diff --git a/xtext/org.eclipse.sensinact.studio.language.sensinact.ui/META-INF/MANIFEST.MF b/xtext/org.eclipse.sensinact.studio.language.sensinact.ui/META-INF/MANIFEST.MF
index 1b3d143..b481ee1 100644
--- a/xtext/org.eclipse.sensinact.studio.language.sensinact.ui/META-INF/MANIFEST.MF
+++ b/xtext/org.eclipse.sensinact.studio.language.sensinact.ui/META-INF/MANIFEST.MF
@@ -1,26 +1,26 @@
-Manifest-Version: 1.0

-Bundle-ManifestVersion: 2

-Bundle-Name: org.eclipse.sensinact.studio.language.sensinact.ui

-Bundle-Vendor: My Company

-Bundle-Version: 1.0.0.qualifier

-Bundle-SymbolicName: org.eclipse.sensinact.studio.language.sensinact.ui; singleton:=true

-Bundle-ActivationPolicy: lazy

-Require-Bundle: org.eclipse.sensinact.studio.language.sensinact,

- org.eclipse.sensinact.studio.language.sensinact.ide,

- org.eclipse.xtext.ui,

- org.eclipse.xtext.ui.shared,

- org.eclipse.xtext.ui.codetemplates.ui,

- org.eclipse.ui.editors,

- org.eclipse.ui.ide,

- org.eclipse.ui,

- org.eclipse.compare,

- org.eclipse.xtext.builder,

- org.eclipse.xtend.lib,

- org.eclipse.xtext.xbase.lib,

- org.eclipse.sensinact.studio.model.manager

-Import-Package: org.apache.log4j

-Bundle-RequiredExecutionEnvironment: JavaSE-1.7

-Export-Package: org.eclipse.sensinact.studio.language.ui.quickfix,

- org.eclipse.sensinact.studio.language.sensinact.ui.internal,

- org.eclipse.sensinact.studio.language.ui.contentassist

-Bundle-Activator: org.eclipse.sensinact.studio.language.sensinact.ui.internal.SensinactActivator

+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.sensinact.studio.language.sensinact.ui
+Bundle-Vendor: My Company
+Bundle-Version: 1.0.0.qualifier
+Bundle-SymbolicName: org.eclipse.sensinact.studio.language.sensinact.ui; singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.sensinact.studio.language.sensinact,
+ org.eclipse.sensinact.studio.language.sensinact.ide,
+ org.eclipse.xtext.ui,
+ org.eclipse.xtext.ui.shared,
+ org.eclipse.xtext.ui.codetemplates.ui,
+ org.eclipse.ui.editors,
+ org.eclipse.ui.ide,
+ org.eclipse.ui,
+ org.eclipse.compare,
+ org.eclipse.xtext.builder,
+ org.eclipse.xtend.lib;resolution:=optional,
+ org.eclipse.xtext.xbase.lib,
+ org.eclipse.sensinact.studio.model.manager
+Import-Package: org.apache.log4j
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Export-Package: org.eclipse.sensinact.studio.language.ui.quickfix,
+ org.eclipse.sensinact.studio.language.sensinact.ui.internal,
+ org.eclipse.sensinact.studio.language.ui.contentassist
+Bundle-Activator: org.eclipse.sensinact.studio.language.sensinact.ui.internal.SensinactActivator
diff --git a/xtext/org.eclipse.sensinact.studio.language.sensinact.ui/plugin.xml_gen b/xtext/org.eclipse.sensinact.studio.language.sensinact.ui/plugin.xml_gen
new file mode 100644
index 0000000..705ed4f
--- /dev/null
+++ b/xtext/org.eclipse.sensinact.studio.language.sensinact.ui/plugin.xml_gen
@@ -0,0 +1,410 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+	<extension
+		point="org.eclipse.ui.editors">
+		<editor
+			class="org.eclipse.sensinact.studio.language.ui.SensinactExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+			contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+			default="true"
+			extensions="sna"
+			id="org.eclipse.sensinact.studio.language.Sensinact"
+			name="Sensinact Editor">
+		</editor>
+	</extension>
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler
+			class="org.eclipse.sensinact.studio.language.ui.SensinactExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+			commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.sensinact.studio.language.Sensinact.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+		<handler
+			class="org.eclipse.sensinact.studio.language.ui.SensinactExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+			commandId="org.eclipse.sensinact.studio.language.Sensinact.validate">
+		<activeWhen>
+			<reference
+					definitionId="org.eclipse.sensinact.studio.language.Sensinact.Editor.opened">
+			</reference>
+		</activeWhen>
+		</handler>
+		<!-- copy qualified name -->
+		<handler
+			class="org.eclipse.sensinact.studio.language.ui.SensinactExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedNameHandler"
+			commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName">
+			<activeWhen>
+				<reference definitionId="org.eclipse.sensinact.studio.language.Sensinact.Editor.opened" />
+			</activeWhen>
+		</handler>
+		<handler
+			class="org.eclipse.sensinact.studio.language.ui.SensinactExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
+			commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
+			<activeWhen>
+				<and>
+					<reference definitionId="org.eclipse.sensinact.studio.language.Sensinact.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.sensinact.studio.language.Sensinact.Editor.opened">
+			<and>
+				<reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+				<with variable="activeEditor">
+					<test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName"
+						value="org.eclipse.sensinact.studio.language.Sensinact"
+						forcePluginActivation="true"/>
+				</with>
+			</and>
+		</definition>
+		<definition id="org.eclipse.sensinact.studio.language.Sensinact.XtextEditor.opened">
+			<and>
+				<reference definitionId="isXtextEditorActive"/>
+				<with variable="activeEditor">
+					<test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName"
+						value="org.eclipse.sensinact.studio.language.Sensinact"
+						forcePluginActivation="true"/>
+				</with>
+			</and>
+		</definition>
+	</extension>
+	<extension
+			point="org.eclipse.ui.preferencePages">
+		<page
+			class="org.eclipse.sensinact.studio.language.ui.SensinactExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+			id="org.eclipse.sensinact.studio.language.Sensinact"
+			name="Sensinact">
+			<keywordReference id="org.eclipse.sensinact.studio.language.ui.keyword_Sensinact"/>
+		</page>
+		<page
+			category="org.eclipse.sensinact.studio.language.Sensinact"
+			class="org.eclipse.sensinact.studio.language.ui.SensinactExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+			id="org.eclipse.sensinact.studio.language.Sensinact.coloring"
+			name="Syntax Coloring">
+			<keywordReference id="org.eclipse.sensinact.studio.language.ui.keyword_Sensinact"/>
+		</page>
+		<page
+			category="org.eclipse.sensinact.studio.language.Sensinact"
+			class="org.eclipse.sensinact.studio.language.ui.SensinactExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+			id="org.eclipse.sensinact.studio.language.Sensinact.templates"
+			name="Templates">
+			<keywordReference id="org.eclipse.sensinact.studio.language.ui.keyword_Sensinact"/>
+		</page>
+	</extension>
+	<extension
+			point="org.eclipse.ui.propertyPages">
+		<page
+			class="org.eclipse.sensinact.studio.language.ui.SensinactExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+			id="org.eclipse.sensinact.studio.language.Sensinact"
+			name="Sensinact">
+			<keywordReference id="org.eclipse.sensinact.studio.language.ui.keyword_Sensinact"/>
+			<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.sensinact.studio.language.ui.keyword_Sensinact"
+			label="Sensinact"/>
+	</extension>
+	<extension
+		point="org.eclipse.ui.commands">
+	<command
+			description="Trigger expensive validation"
+			id="org.eclipse.sensinact.studio.language.Sensinact.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.sensinact.studio.language.Sensinact.validate"
+				 style="push"
+				 tooltip="Trigger expensive validation">
+			<visibleWhen checkEnabled="false">
+				<reference
+					definitionId="org.eclipse.sensinact.studio.language.Sensinact.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.sensinact.studio.language.Sensinact.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.sensinact.studio.language.Sensinact.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.sensinact.studio.language.Sensinact.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.sensinact.studio.language.Sensinact.Editor.opened">
+					</reference>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+		<handler
+			class="org.eclipse.sensinact.studio.language.ui.SensinactExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+			commandId="org.eclipse.xtext.ui.editor.FindReferences">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.sensinact.studio.language.Sensinact.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+	<!-- adding resource factories -->
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.sensinact.studio.language.ui.SensinactExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="sna">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+		<resourceServiceProvider
+			class="org.eclipse.sensinact.studio.language.ui.SensinactExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+			uriExtension="sna">
+		</resourceServiceProvider>
+	</extension>
+	<!-- marker definitions for org.eclipse.sensinact.studio.language.Sensinact -->
+	<extension
+			id="sensinact.check.fast"
+			name="Sensinact Problem"
+			point="org.eclipse.core.resources.markers">
+		<super type="org.eclipse.xtext.ui.check.fast"/>
+		<persistent value="true"/>
+	</extension>
+	<extension
+			id="sensinact.check.normal"
+			name="Sensinact Problem"
+			point="org.eclipse.core.resources.markers">
+		<super type="org.eclipse.xtext.ui.check.normal"/>
+		<persistent value="true"/>
+	</extension>
+	<extension
+			id="sensinact.check.expensive"
+			name="Sensinact 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.sensinact.studio.language.ui.SensinactExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant"
+			fileExtensions="sna"/>
+	</extension>
+	<extension point="org.eclipse.ui.preferencePages">
+		<page
+			category="org.eclipse.sensinact.studio.language.Sensinact"
+			class="org.eclipse.sensinact.studio.language.ui.SensinactExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+			id="org.eclipse.sensinact.studio.language.Sensinact.compiler.preferencePage"
+			name="Compiler">
+			<keywordReference id="org.eclipse.sensinact.studio.language.ui.keyword_Sensinact"/>
+		</page>
+	</extension>
+	<extension point="org.eclipse.ui.propertyPages">
+		<page
+			category="org.eclipse.sensinact.studio.language.Sensinact"
+			class="org.eclipse.sensinact.studio.language.ui.SensinactExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+			id="org.eclipse.sensinact.studio.language.Sensinact.compiler.propertyPage"
+			name="Compiler">
+			<keywordReference id="org.eclipse.sensinact.studio.language.ui.keyword_Sensinact"/>
+			<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.sensinact.studio.language.Sensinact.OpenGeneratedCode"
+				style="push">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.sensinact.studio.language.Sensinact.Editor.opened" />
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+		<handler
+			class="org.eclipse.sensinact.studio.language.ui.SensinactExecutableExtensionFactory:org.eclipse.xtext.ui.generator.trace.OpenGeneratedFileHandler"
+			commandId="org.eclipse.xtext.ui.OpenGeneratedFileCommand">
+			<activeWhen>
+				<reference definitionId="org.eclipse.sensinact.studio.language.Sensinact.Editor.opened" />
+			</activeWhen>
+		</handler>
+	</extension>
+	<!-- Quick Outline -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.sensinact.studio.language.ui.SensinactExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.sensinact.studio.language.Sensinact.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.sensinact.studio.language.Sensinact.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<!-- quickfix marker resolution generator for org.eclipse.sensinact.studio.language.Sensinact -->
+	<extension
+			point="org.eclipse.ui.ide.markerResolution">
+		<markerResolutionGenerator
+			class="org.eclipse.sensinact.studio.language.ui.SensinactExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+			markerType="org.eclipse.sensinact.studio.language.sensinact.ui.sensinact.check.fast">
+			<attribute
+				name="FIXABLE_KEY"
+				value="true">
+			</attribute>
+		</markerResolutionGenerator>
+		<markerResolutionGenerator
+			class="org.eclipse.sensinact.studio.language.ui.SensinactExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+			markerType="org.eclipse.sensinact.studio.language.sensinact.ui.sensinact.check.normal">
+			<attribute
+				name="FIXABLE_KEY"
+				value="true">
+			</attribute>
+		</markerResolutionGenerator>
+		<markerResolutionGenerator
+			class="org.eclipse.sensinact.studio.language.ui.SensinactExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+			markerType="org.eclipse.sensinact.studio.language.sensinact.ui.sensinact.check.expensive">
+			<attribute
+				name="FIXABLE_KEY"
+				value="true">
+			</attribute>
+		</markerResolutionGenerator>
+	</extension>
+	<!-- Rename Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.sensinact.studio.language.ui.SensinactExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.DefaultRenameElementHandler"
+			commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.sensinact.studio.language.Sensinact.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.sensinact.studio.language.Sensinact.Editor.opened">
+					</reference>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.preferencePages">
+		<page
+			category="org.eclipse.sensinact.studio.language.Sensinact"
+			class="org.eclipse.sensinact.studio.language.ui.SensinactExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+			id="org.eclipse.sensinact.studio.language.Sensinact.refactoring"
+			name="Refactoring">
+			<keywordReference id="org.eclipse.sensinact.studio.language.ui.keyword_Sensinact"/>
+		</page>
+	</extension>
+	<extension point="org.eclipse.compare.contentViewers">
+		<viewer id="org.eclipse.sensinact.studio.language.Sensinact.compare.contentViewers"
+			class="org.eclipse.sensinact.studio.language.ui.SensinactExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+			extensions="sna">
+		</viewer>
+	</extension>
+	<extension point="org.eclipse.compare.contentMergeViewers">
+		<viewer id="org.eclipse.sensinact.studio.language.Sensinact.compare.contentMergeViewers"
+			class="org.eclipse.sensinact.studio.language.ui.SensinactExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+			extensions="sna" label="Sensinact Compare">
+		</viewer>
+	</extension>
+	<extension point="org.eclipse.ui.editors.documentProviders">
+		<provider id="org.eclipse.sensinact.studio.language.Sensinact.editors.documentProviders"
+			class="org.eclipse.sensinact.studio.language.ui.SensinactExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+			extensions="sna">
+		</provider>
+	</extension>
+	<extension point="org.eclipse.team.core.fileTypes">
+		<fileTypes
+			extension="sna"
+			type="text">
+		</fileTypes>
+	</extension>
+</plugin>
diff --git a/xtext/org.eclipse.sensinact.studio.language.sensinact/model/generated/Sensinact.genmodel b/xtext/org.eclipse.sensinact.studio.language.sensinact/model/generated/Sensinact.genmodel
index 3f49a2d..6058f8a 100644
--- a/xtext/org.eclipse.sensinact.studio.language.sensinact/model/generated/Sensinact.genmodel
+++ b/xtext/org.eclipse.sensinact.studio.language.sensinact/model/generated/Sensinact.genmodel
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
-    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="generated by Xtext 2.9.1" modelDirectory="/org.eclipse.sensinact.studio.language.sensinact/src-gen"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="generated by Xtext 2.12.0" modelDirectory="/org.eclipse.sensinact.studio.language.sensinact/src-gen"
     modelPluginID="org.eclipse.sensinact.studio.language.sensinact" forceOverwrite="true"
     modelName="Sensinact" updateClasspath="false" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
-    complianceLevel="6.0" copyrightFields="false" runtimeVersion="2.11">
+    complianceLevel="6.0" copyrightFields="false" runtimeVersion="2.13">
   <genPackages prefix="Sensinact" basePackage="org.eclipse.sensinact.studio.language"
       disposableProviderFactory="true" fileExtensions="sna" ecorePackage="Sensinact.ecore#/">
     <genClasses ecoreClass="Sensinact.ecore#//Sensinact">
diff --git a/xtext/org.eclipse.sensinact.studio.language.sensinact/plugin.xml_gen b/xtext/org.eclipse.sensinact.studio.language.sensinact/plugin.xml_gen
new file mode 100644
index 0000000..d23b4e4
--- /dev/null
+++ b/xtext/org.eclipse.sensinact.studio.language.sensinact/plugin.xml_gen
@@ -0,0 +1,10 @@
+<?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/sensinact/studio/language/Sensinact"
+			class = "org.eclipse.sensinact.studio.language.sensinact.SensinactPackage"
+			genModel = "model/generated/Sensinact.genmodel" />
+	</extension>
+</plugin>