Merge "Bug 515277 - [Requirements] Support boilerplates (templates) to write requirements text easily" into neon
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/.classpath b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/.classpath
new file mode 100644
index 0000000..9081d4f
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/.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/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/.gitignore b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/.project b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/.project
new file mode 100644
index 0000000..9a9db58
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide</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.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/.settings/org.eclipse.core.resources.prefs b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..68a0304
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=windows-1252
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/.settings/org.eclipse.jdt.core.prefs b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.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
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/META-INF/MANIFEST.MF b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..21d4e08
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide
+Bundle-Vendor: Eclipse Modelling Project
+Bundle-Version: 0.7.0.qualifier
+Bundle-SymbolicName: org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide; singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.papyrus.requirements.sysml14.boilerplatetext,
+ org.eclipse.xtext.ide,
+ org.eclipse.xtext.xbase.ide,
+ org.antlr.runtime
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.papyrus.requirements.sysml14.ide.contentassist.antlr,
+ org.eclipse.papyrus.requirements.sysml14.ide.contentassist.antlr.internal
+
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/about.html b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/about.html
new file mode 100644
index 0000000..d35d5ae
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 5, 2007</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/build.properties b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/build.properties
new file mode 100644
index 0000000..e1f6f18
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/build.properties
@@ -0,0 +1,8 @@
+source.. = src/,\
+           src-gen/,\
+           xtend-gen/
+bin.includes = .,\
+               META-INF/,\
+               about.html
+src.includes = about.html,\
+               src/
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/src-gen/META-INF/services/org.eclipse.xtext.ISetup b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/src-gen/META-INF/services/org.eclipse.xtext.ISetup
new file mode 100644
index 0000000..84eff18
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/src-gen/META-INF/services/org.eclipse.xtext.ISetup
@@ -0,0 +1 @@
+org.eclipse.papyrus.requirements.sysml14.ide.BoilerplateTextIdeSetup
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/src-gen/org/eclipse/papyrus/requirements/sysml14/ide/AbstractBoilerplateTextIdeModule.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/src-gen/org/eclipse/papyrus/requirements/sysml14/ide/AbstractBoilerplateTextIdeModule.java
new file mode 100644
index 0000000..952b598
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/src-gen/org/eclipse/papyrus/requirements/sysml14/ide/AbstractBoilerplateTextIdeModule.java
@@ -0,0 +1,61 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.ide;
+
+import com.google.inject.Binder;
+import com.google.inject.name.Names;
+import org.eclipse.papyrus.requirements.sysml14.ide.contentassist.antlr.BoilerplateTextParser;
+import org.eclipse.papyrus.requirements.sysml14.ide.contentassist.antlr.internal.InternalBoilerplateTextLexer;
+import org.eclipse.xtext.ide.DefaultIdeModule;
+import org.eclipse.xtext.ide.LexerIdeBindings;
+import org.eclipse.xtext.ide.editor.contentassist.FQNPrefixMatcher;
+import org.eclipse.xtext.ide.editor.contentassist.IPrefixMatcher;
+import org.eclipse.xtext.ide.editor.contentassist.IProposalConflictHelper;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.AntlrProposalConflictHelper;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.IContentAssistParser;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.Lexer;
+
+/**
+ * Manual modifications go to {@link BoilerplateTextIdeModule}.
+ */
+@SuppressWarnings("all")
+public abstract class AbstractBoilerplateTextIdeModule extends DefaultIdeModule {
+
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public void configureContentAssistLexer(Binder binder) {
+		binder.bind(Lexer.class)
+			.annotatedWith(Names.named(LexerIdeBindings.CONTENT_ASSIST))
+			.to(InternalBoilerplateTextLexer.class);
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Class<? extends IContentAssistParser> bindIContentAssistParser() {
+		return BoilerplateTextParser.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Class<? extends IProposalConflictHelper> bindIProposalConflictHelper() {
+		return AntlrProposalConflictHelper.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.exporting.QualifiedNamesFragment2
+	public Class<? extends IPrefixMatcher> bindIPrefixMatcher() {
+		return FQNPrefixMatcher.class;
+	}
+	
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/src-gen/org/eclipse/papyrus/requirements/sysml14/ide/contentassist/antlr/BoilerplateTextParser.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/src-gen/org/eclipse/papyrus/requirements/sysml14/ide/contentassist/antlr/BoilerplateTextParser.java
new file mode 100644
index 0000000..a139a0c
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/src-gen/org/eclipse/papyrus/requirements/sysml14/ide/contentassist/antlr/BoilerplateTextParser.java
@@ -0,0 +1,100 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.ide.contentassist.antlr;
+
+import com.google.inject.Inject;
+import java.util.HashMap;
+import java.util.Map;
+import org.eclipse.papyrus.requirements.sysml14.ide.contentassist.antlr.internal.InternalBoilerplateTextParser;
+import org.eclipse.papyrus.requirements.sysml14.services.BoilerplateTextGrammarAccess;
+import org.eclipse.xtext.AbstractElement;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.AbstractContentAssistParser;
+
+public class BoilerplateTextParser extends AbstractContentAssistParser {
+
+	@Inject
+	private BoilerplateTextGrammarAccess grammarAccess;
+
+	private Map<AbstractElement, String> nameMappings;
+
+	@Override
+	protected InternalBoilerplateTextParser createParser() {
+		InternalBoilerplateTextParser result = new InternalBoilerplateTextParser(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.getPrefixAccess().getAlternatives(), "rule__Prefix__Alternatives");
+					put(grammarAccess.getPredicateAccess().getAlternatives(), "rule__Predicate__Alternatives");
+					put(grammarAccess.getShallNotAllowAccess().getAlternatives_3(), "rule__ShallNotAllow__Alternatives_3");
+					put(grammarAccess.getShallAllowAccess().getAlternatives_2(), "rule__ShallAllow__Alternatives_2");
+					put(grammarAccess.getRequirementAccess().getGroup(), "rule__Requirement__Group__0");
+					put(grammarAccess.getRequirementAccess().getGroup_0(), "rule__Requirement__Group_0__0");
+					put(grammarAccess.getIfAccess().getGroup(), "rule__If__Group__0");
+					put(grammarAccess.getIfAccess().getGroup_2(), "rule__If__Group_2__0");
+					put(grammarAccess.getWhileAccess().getGroup(), "rule__While__Group__0");
+					put(grammarAccess.getShallNotAllowAccess().getGroup(), "rule__ShallNotAllow__Group__0");
+					put(grammarAccess.getShallNotAllowAccess().getGroup_3_1(), "rule__ShallNotAllow__Group_3_1__0");
+					put(grammarAccess.getShallAllowAccess().getGroup(), "rule__ShallAllow__Group__0");
+					put(grammarAccess.getShallAllowAccess().getGroup_2_1(), "rule__ShallAllow__Group_2_1__0");
+					put(grammarAccess.getShallNotAccess().getGroup(), "rule__ShallNot__Group__0");
+					put(grammarAccess.getShallNotAccess().getGroup_2(), "rule__ShallNot__Group_2__0");
+					put(grammarAccess.getShallAccess().getGroup(), "rule__Shall__Group__0");
+					put(grammarAccess.getShallAccess().getGroup_1(), "rule__Shall__Group_1__0");
+					put(grammarAccess.getShallAccess().getGroup_1_0(), "rule__Shall__Group_1_0__0");
+					put(grammarAccess.getModelAccess().getModelAssignment(), "rule__Model__ModelAssignment");
+					put(grammarAccess.getRequirementAccess().getPrefixAssignment_0_0(), "rule__Requirement__PrefixAssignment_0_0");
+					put(grammarAccess.getRequirementAccess().getSystemAssignment_1(), "rule__Requirement__SystemAssignment_1");
+					put(grammarAccess.getRequirementAccess().getPredicateAssignment_2(), "rule__Requirement__PredicateAssignment_2");
+					put(grammarAccess.getSubjectAccess().getSystemAssignment(), "rule__Subject__SystemAssignment");
+					put(grammarAccess.getIfAccess().getEventAssignment_1(), "rule__If__EventAssignment_1");
+					put(grammarAccess.getIfAccess().getEventAssignment_2_1(), "rule__If__EventAssignment_2_1");
+					put(grammarAccess.getWhileAccess().getStateAssignment_1(), "rule__While__StateAssignment_1");
+					put(grammarAccess.getShallNotAllowAccess().getActionAssignment_3_0(), "rule__ShallNotAllow__ActionAssignment_3_0");
+					put(grammarAccess.getShallNotAllowAccess().getEntityAssignment_3_1_0(), "rule__ShallNotAllow__EntityAssignment_3_1_0");
+					put(grammarAccess.getShallNotAllowAccess().getActionPerformedByEntityAssignment_3_1_2(), "rule__ShallNotAllow__ActionPerformedByEntityAssignment_3_1_2");
+					put(grammarAccess.getShallAllowAccess().getActionAssignment_2_0(), "rule__ShallAllow__ActionAssignment_2_0");
+					put(grammarAccess.getShallAllowAccess().getEntityAssignment_2_1_0(), "rule__ShallAllow__EntityAssignment_2_1_0");
+					put(grammarAccess.getShallAllowAccess().getActionPerformedByEntityAssignment_2_1_2(), "rule__ShallAllow__ActionPerformedByEntityAssignment_2_1_2");
+					put(grammarAccess.getShallNotAccess().getActionAssignment_3(), "rule__ShallNot__ActionAssignment_3");
+					put(grammarAccess.getShallAccess().getActionAssignment_2(), "rule__Shall__ActionAssignment_2");
+				}
+			};
+		}
+		return nameMappings.get(element);
+	}
+			
+	@Override
+	protected String[] getInitialHiddenTokens() {
+		return new String[] { "RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT" };
+	}
+
+	public BoilerplateTextGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+
+	public void setGrammarAccess(BoilerplateTextGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/src-gen/org/eclipse/papyrus/requirements/sysml14/ide/contentassist/antlr/PartialBoilerplateTextContentAssistParser.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/src-gen/org/eclipse/papyrus/requirements/sysml14/ide/contentassist/antlr/PartialBoilerplateTextContentAssistParser.java
new file mode 100644
index 0000000..eff2fb5
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/src-gen/org/eclipse/papyrus/requirements/sysml14/ide/contentassist/antlr/PartialBoilerplateTextContentAssistParser.java
@@ -0,0 +1,48 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.ide.contentassist.antlr;
+
+import java.util.Collection;
+import java.util.Collections;
+import org.eclipse.xtext.AbstractRule;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.FollowElement;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ide.editor.partialEditing.IPartialEditingContentAssistParser;
+import org.eclipse.xtext.util.PolymorphicDispatcher;
+
+public class PartialBoilerplateTextContentAssistParser extends BoilerplateTextParser implements IPartialEditingContentAssistParser {
+
+	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/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/src-gen/org/eclipse/papyrus/requirements/sysml14/ide/contentassist/antlr/internal/InternalBoilerplateText.g b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/src-gen/org/eclipse/papyrus/requirements/sysml14/ide/contentassist/antlr/internal/InternalBoilerplateText.g
new file mode 100644
index 0000000..0f8b0a9
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/src-gen/org/eclipse/papyrus/requirements/sysml14/ide/contentassist/antlr/internal/InternalBoilerplateText.g
@@ -0,0 +1,1743 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+/*
+ * generated by Xtext 2.11.0
+ */
+grammar InternalBoilerplateText;
+
+options {
+	superClass=AbstractInternalContentAssistParser;
+	backtrack=true;
+}
+
+@lexer::header {
+package org.eclipse.papyrus.requirements.sysml14.ide.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.ide.editor.contentassist.antlr.internal.Lexer;
+}
+
+@parser::header {
+package org.eclipse.papyrus.requirements.sysml14.ide.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.ide.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.DFA;
+import org.eclipse.papyrus.requirements.sysml14.services.BoilerplateTextGrammarAccess;
+
+}
+@parser::members {
+	private BoilerplateTextGrammarAccess grammarAccess;
+
+	public void setGrammarAccess(BoilerplateTextGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+
+	@Override
+	protected Grammar getGrammar() {
+		return grammarAccess.getGrammar();
+	}
+
+	@Override
+	protected String getValueForTokenName(String tokenName) {
+		return tokenName;
+	}
+}
+
+// Entry rule entryRuleModel
+entryRuleModel
+:
+{ before(grammarAccess.getModelRule()); }
+	 ruleModel
+{ after(grammarAccess.getModelRule()); } 
+	 EOF 
+;
+
+// Rule Model
+ruleModel 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getModelAccess().getModelAssignment()); }
+		(rule__Model__ModelAssignment)
+		{ after(grammarAccess.getModelAccess().getModelAssignment()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleRequirement
+entryRuleRequirement
+:
+{ before(grammarAccess.getRequirementRule()); }
+	 ruleRequirement
+{ after(grammarAccess.getRequirementRule()); } 
+	 EOF 
+;
+
+// Rule Requirement
+ruleRequirement 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getRequirementAccess().getGroup()); }
+		(rule__Requirement__Group__0)
+		{ after(grammarAccess.getRequirementAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleSubject
+entryRuleSubject
+:
+{ before(grammarAccess.getSubjectRule()); }
+	 ruleSubject
+{ after(grammarAccess.getSubjectRule()); } 
+	 EOF 
+;
+
+// Rule Subject
+ruleSubject 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getSubjectAccess().getSystemAssignment()); }
+		(rule__Subject__SystemAssignment)
+		{ after(grammarAccess.getSubjectAccess().getSystemAssignment()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRulePrefix
+entryRulePrefix
+:
+{ before(grammarAccess.getPrefixRule()); }
+	 rulePrefix
+{ after(grammarAccess.getPrefixRule()); } 
+	 EOF 
+;
+
+// Rule Prefix
+rulePrefix 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getPrefixAccess().getAlternatives()); }
+		(rule__Prefix__Alternatives)
+		{ after(grammarAccess.getPrefixAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleIf
+entryRuleIf
+:
+{ before(grammarAccess.getIfRule()); }
+	 ruleIf
+{ after(grammarAccess.getIfRule()); } 
+	 EOF 
+;
+
+// Rule If
+ruleIf 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getIfAccess().getGroup()); }
+		(rule__If__Group__0)
+		{ after(grammarAccess.getIfAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleWhile
+entryRuleWhile
+:
+{ before(grammarAccess.getWhileRule()); }
+	 ruleWhile
+{ after(grammarAccess.getWhileRule()); } 
+	 EOF 
+;
+
+// Rule While
+ruleWhile 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getWhileAccess().getGroup()); }
+		(rule__While__Group__0)
+		{ after(grammarAccess.getWhileAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRulePredicate
+entryRulePredicate
+:
+{ before(grammarAccess.getPredicateRule()); }
+	 rulePredicate
+{ after(grammarAccess.getPredicateRule()); } 
+	 EOF 
+;
+
+// Rule Predicate
+rulePredicate 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getPredicateAccess().getAlternatives()); }
+		(rule__Predicate__Alternatives)
+		{ after(grammarAccess.getPredicateAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleShallNotAllow
+entryRuleShallNotAllow
+:
+{ before(grammarAccess.getShallNotAllowRule()); }
+	 ruleShallNotAllow
+{ after(grammarAccess.getShallNotAllowRule()); } 
+	 EOF 
+;
+
+// Rule ShallNotAllow
+ruleShallNotAllow 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getShallNotAllowAccess().getGroup()); }
+		(rule__ShallNotAllow__Group__0)
+		{ after(grammarAccess.getShallNotAllowAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleShallAllow
+entryRuleShallAllow
+:
+{ before(grammarAccess.getShallAllowRule()); }
+	 ruleShallAllow
+{ after(grammarAccess.getShallAllowRule()); } 
+	 EOF 
+;
+
+// Rule ShallAllow
+ruleShallAllow 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getShallAllowAccess().getGroup()); }
+		(rule__ShallAllow__Group__0)
+		{ after(grammarAccess.getShallAllowAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleShallNot
+entryRuleShallNot
+:
+{ before(grammarAccess.getShallNotRule()); }
+	 ruleShallNot
+{ after(grammarAccess.getShallNotRule()); } 
+	 EOF 
+;
+
+// Rule ShallNot
+ruleShallNot 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getShallNotAccess().getGroup()); }
+		(rule__ShallNot__Group__0)
+		{ after(grammarAccess.getShallNotAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleShall
+entryRuleShall
+:
+{ before(grammarAccess.getShallRule()); }
+	 ruleShall
+{ after(grammarAccess.getShallRule()); } 
+	 EOF 
+;
+
+// Rule Shall
+ruleShall 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getShallAccess().getGroup()); }
+		(rule__Shall__Group__0)
+		{ after(grammarAccess.getShallAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Prefix__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPrefixAccess().getIfParserRuleCall_0()); }
+		ruleIf
+		{ after(grammarAccess.getPrefixAccess().getIfParserRuleCall_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getPrefixAccess().getWhileParserRuleCall_1()); }
+		ruleWhile
+		{ after(grammarAccess.getPrefixAccess().getWhileParserRuleCall_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Predicate__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getPredicateAccess().getShallParserRuleCall_0()); }
+		ruleShall
+		{ after(grammarAccess.getPredicateAccess().getShallParserRuleCall_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getPredicateAccess().getShallNotParserRuleCall_1()); }
+		ruleShallNot
+		{ after(grammarAccess.getPredicateAccess().getShallNotParserRuleCall_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getPredicateAccess().getShallAllowParserRuleCall_2()); }
+		ruleShallAllow
+		{ after(grammarAccess.getPredicateAccess().getShallAllowParserRuleCall_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getPredicateAccess().getShallNotAllowParserRuleCall_3()); }
+		ruleShallNotAllow
+		{ after(grammarAccess.getPredicateAccess().getShallNotAllowParserRuleCall_3()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallNotAllow__Alternatives_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getShallNotAllowAccess().getActionAssignment_3_0()); }
+		(rule__ShallNotAllow__ActionAssignment_3_0)
+		{ after(grammarAccess.getShallNotAllowAccess().getActionAssignment_3_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getShallNotAllowAccess().getGroup_3_1()); }
+		(rule__ShallNotAllow__Group_3_1__0)
+		{ after(grammarAccess.getShallNotAllowAccess().getGroup_3_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallAllow__Alternatives_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getShallAllowAccess().getActionAssignment_2_0()); }
+		(rule__ShallAllow__ActionAssignment_2_0)
+		{ after(grammarAccess.getShallAllowAccess().getActionAssignment_2_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getShallAllowAccess().getGroup_2_1()); }
+		(rule__ShallAllow__Group_2_1__0)
+		{ after(grammarAccess.getShallAllowAccess().getGroup_2_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Requirement__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Requirement__Group__0__Impl
+	rule__Requirement__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Requirement__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getRequirementAccess().getGroup_0()); }
+	(rule__Requirement__Group_0__0)?
+	{ after(grammarAccess.getRequirementAccess().getGroup_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Requirement__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Requirement__Group__1__Impl
+	rule__Requirement__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Requirement__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getRequirementAccess().getSystemAssignment_1()); }
+	(rule__Requirement__SystemAssignment_1)
+	{ after(grammarAccess.getRequirementAccess().getSystemAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Requirement__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Requirement__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Requirement__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getRequirementAccess().getPredicateAssignment_2()); }
+	(rule__Requirement__PredicateAssignment_2)
+	{ after(grammarAccess.getRequirementAccess().getPredicateAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Requirement__Group_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Requirement__Group_0__0__Impl
+	rule__Requirement__Group_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Requirement__Group_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getRequirementAccess().getPrefixAssignment_0_0()); }
+	(rule__Requirement__PrefixAssignment_0_0)
+	{ after(grammarAccess.getRequirementAccess().getPrefixAssignment_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Requirement__Group_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Requirement__Group_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Requirement__Group_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getRequirementAccess().getCommaKeyword_0_1()); }
+	','
+	{ after(grammarAccess.getRequirementAccess().getCommaKeyword_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__If__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__If__Group__0__Impl
+	rule__If__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__If__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getIfAccess().getIfKeyword_0()); }
+	'if'
+	{ after(grammarAccess.getIfAccess().getIfKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__If__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__If__Group__1__Impl
+	rule__If__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__If__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getIfAccess().getEventAssignment_1()); }
+	(rule__If__EventAssignment_1)
+	{ after(grammarAccess.getIfAccess().getEventAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__If__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__If__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__If__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getIfAccess().getGroup_2()); }
+	(rule__If__Group_2__0)*
+	{ after(grammarAccess.getIfAccess().getGroup_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__If__Group_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__If__Group_2__0__Impl
+	rule__If__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__If__Group_2__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getIfAccess().getAndKeyword_2_0()); }
+	'and'
+	{ after(grammarAccess.getIfAccess().getAndKeyword_2_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__If__Group_2__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__If__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__If__Group_2__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getIfAccess().getEventAssignment_2_1()); }
+	(rule__If__EventAssignment_2_1)
+	{ after(grammarAccess.getIfAccess().getEventAssignment_2_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__While__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__While__Group__0__Impl
+	rule__While__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__While__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getWhileAccess().getWhileKeyword_0()); }
+	'while'
+	{ after(grammarAccess.getWhileAccess().getWhileKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__While__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__While__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__While__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getWhileAccess().getStateAssignment_1()); }
+	(rule__While__StateAssignment_1)
+	{ after(grammarAccess.getWhileAccess().getStateAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ShallNotAllow__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ShallNotAllow__Group__0__Impl
+	rule__ShallNotAllow__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallNotAllow__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getShallNotAllowAccess().getShallKeyword_0()); }
+	'shall'
+	{ after(grammarAccess.getShallNotAllowAccess().getShallKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallNotAllow__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ShallNotAllow__Group__1__Impl
+	rule__ShallNotAllow__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallNotAllow__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getShallNotAllowAccess().getNotKeyword_1()); }
+	('not')
+	{ after(grammarAccess.getShallNotAllowAccess().getNotKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallNotAllow__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ShallNotAllow__Group__2__Impl
+	rule__ShallNotAllow__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallNotAllow__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getShallNotAllowAccess().getAllowKeyword_2()); }
+	('allow')
+	{ after(grammarAccess.getShallNotAllowAccess().getAllowKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallNotAllow__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ShallNotAllow__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallNotAllow__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getShallNotAllowAccess().getAlternatives_3()); }
+	(rule__ShallNotAllow__Alternatives_3)
+	{ after(grammarAccess.getShallNotAllowAccess().getAlternatives_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ShallNotAllow__Group_3_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ShallNotAllow__Group_3_1__0__Impl
+	rule__ShallNotAllow__Group_3_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallNotAllow__Group_3_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getShallNotAllowAccess().getEntityAssignment_3_1_0()); }
+	(rule__ShallNotAllow__EntityAssignment_3_1_0)
+	{ after(grammarAccess.getShallNotAllowAccess().getEntityAssignment_3_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallNotAllow__Group_3_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ShallNotAllow__Group_3_1__1__Impl
+	rule__ShallNotAllow__Group_3_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallNotAllow__Group_3_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getShallNotAllowAccess().getToKeyword_3_1_1()); }
+	'to'
+	{ after(grammarAccess.getShallNotAllowAccess().getToKeyword_3_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallNotAllow__Group_3_1__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ShallNotAllow__Group_3_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallNotAllow__Group_3_1__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getShallNotAllowAccess().getActionPerformedByEntityAssignment_3_1_2()); }
+	(rule__ShallNotAllow__ActionPerformedByEntityAssignment_3_1_2)
+	{ after(grammarAccess.getShallNotAllowAccess().getActionPerformedByEntityAssignment_3_1_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ShallAllow__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ShallAllow__Group__0__Impl
+	rule__ShallAllow__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallAllow__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getShallAllowAccess().getShallKeyword_0()); }
+	'shall'
+	{ after(grammarAccess.getShallAllowAccess().getShallKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallAllow__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ShallAllow__Group__1__Impl
+	rule__ShallAllow__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallAllow__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getShallAllowAccess().getAllowKeyword_1()); }
+	('allow')
+	{ after(grammarAccess.getShallAllowAccess().getAllowKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallAllow__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ShallAllow__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallAllow__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getShallAllowAccess().getAlternatives_2()); }
+	(rule__ShallAllow__Alternatives_2)
+	{ after(grammarAccess.getShallAllowAccess().getAlternatives_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ShallAllow__Group_2_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ShallAllow__Group_2_1__0__Impl
+	rule__ShallAllow__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallAllow__Group_2_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getShallAllowAccess().getEntityAssignment_2_1_0()); }
+	(rule__ShallAllow__EntityAssignment_2_1_0)
+	{ after(grammarAccess.getShallAllowAccess().getEntityAssignment_2_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallAllow__Group_2_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ShallAllow__Group_2_1__1__Impl
+	rule__ShallAllow__Group_2_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallAllow__Group_2_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getShallAllowAccess().getToKeyword_2_1_1()); }
+	'to'
+	{ after(grammarAccess.getShallAllowAccess().getToKeyword_2_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallAllow__Group_2_1__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ShallAllow__Group_2_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallAllow__Group_2_1__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getShallAllowAccess().getActionPerformedByEntityAssignment_2_1_2()); }
+	(rule__ShallAllow__ActionPerformedByEntityAssignment_2_1_2)
+	{ after(grammarAccess.getShallAllowAccess().getActionPerformedByEntityAssignment_2_1_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ShallNot__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ShallNot__Group__0__Impl
+	rule__ShallNot__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallNot__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getShallNotAccess().getShallKeyword_0()); }
+	'shall'
+	{ after(grammarAccess.getShallNotAccess().getShallKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallNot__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ShallNot__Group__1__Impl
+	rule__ShallNot__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallNot__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getShallNotAccess().getNotKeyword_1()); }
+	('not')
+	{ after(grammarAccess.getShallNotAccess().getNotKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallNot__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ShallNot__Group__2__Impl
+	rule__ShallNot__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallNot__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getShallNotAccess().getGroup_2()); }
+	(rule__ShallNot__Group_2__0)?
+	{ after(grammarAccess.getShallNotAccess().getGroup_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallNot__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ShallNot__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallNot__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getShallNotAccess().getActionAssignment_3()); }
+	(rule__ShallNot__ActionAssignment_3)
+	{ after(grammarAccess.getShallNotAccess().getActionAssignment_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ShallNot__Group_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ShallNot__Group_2__0__Impl
+	rule__ShallNot__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallNot__Group_2__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getShallNotAccess().getBeKeyword_2_0()); }
+	'be'
+	{ after(grammarAccess.getShallNotAccess().getBeKeyword_2_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallNot__Group_2__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ShallNot__Group_2__1__Impl
+	rule__ShallNot__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallNot__Group_2__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getShallNotAccess().getAbleKeyword_2_1()); }
+	('able')
+	{ after(grammarAccess.getShallNotAccess().getAbleKeyword_2_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallNot__Group_2__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ShallNot__Group_2__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallNot__Group_2__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getShallNotAccess().getToKeyword_2_2()); }
+	('to')
+	{ after(grammarAccess.getShallNotAccess().getToKeyword_2_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Shall__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Shall__Group__0__Impl
+	rule__Shall__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Shall__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getShallAccess().getShallKeyword_0()); }
+	'shall'
+	{ after(grammarAccess.getShallAccess().getShallKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Shall__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Shall__Group__1__Impl
+	rule__Shall__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Shall__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getShallAccess().getGroup_1()); }
+	(rule__Shall__Group_1__0)?
+	{ after(grammarAccess.getShallAccess().getGroup_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Shall__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Shall__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Shall__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getShallAccess().getActionAssignment_2()); }
+	(rule__Shall__ActionAssignment_2)
+	{ after(grammarAccess.getShallAccess().getActionAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Shall__Group_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Shall__Group_1__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Shall__Group_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getShallAccess().getGroup_1_0()); }
+	(rule__Shall__Group_1_0__0)
+	{ after(grammarAccess.getShallAccess().getGroup_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Shall__Group_1_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Shall__Group_1_0__0__Impl
+	rule__Shall__Group_1_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Shall__Group_1_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getShallAccess().getBeKeyword_1_0_0()); }
+	'be'
+	{ after(grammarAccess.getShallAccess().getBeKeyword_1_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Shall__Group_1_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Shall__Group_1_0__1__Impl
+	rule__Shall__Group_1_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Shall__Group_1_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getShallAccess().getAbleKeyword_1_0_1()); }
+	('able')
+	{ after(grammarAccess.getShallAccess().getAbleKeyword_1_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Shall__Group_1_0__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Shall__Group_1_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Shall__Group_1_0__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getShallAccess().getToKeyword_1_0_2()); }
+	('to')
+	{ after(grammarAccess.getShallAccess().getToKeyword_1_0_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Model__ModelAssignment
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getModelAccess().getModelRequirementParserRuleCall_0()); }
+		ruleRequirement
+		{ after(grammarAccess.getModelAccess().getModelRequirementParserRuleCall_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Requirement__PrefixAssignment_0_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getRequirementAccess().getPrefixPrefixParserRuleCall_0_0_0()); }
+		rulePrefix
+		{ after(grammarAccess.getRequirementAccess().getPrefixPrefixParserRuleCall_0_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Requirement__SystemAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getRequirementAccess().getSystemSubjectParserRuleCall_1_0()); }
+		ruleSubject
+		{ after(grammarAccess.getRequirementAccess().getSystemSubjectParserRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Requirement__PredicateAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getRequirementAccess().getPredicatePredicateParserRuleCall_2_0()); }
+		rulePredicate
+		{ after(grammarAccess.getRequirementAccess().getPredicatePredicateParserRuleCall_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Subject__SystemAssignment
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getSubjectAccess().getSystemSTRINGTerminalRuleCall_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getSubjectAccess().getSystemSTRINGTerminalRuleCall_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__If__EventAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getIfAccess().getEventSTRINGTerminalRuleCall_1_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getIfAccess().getEventSTRINGTerminalRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__If__EventAssignment_2_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getIfAccess().getEventSTRINGTerminalRuleCall_2_1_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getIfAccess().getEventSTRINGTerminalRuleCall_2_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__While__StateAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getWhileAccess().getStateSTRINGTerminalRuleCall_1_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getWhileAccess().getStateSTRINGTerminalRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallNotAllow__ActionAssignment_3_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getShallNotAllowAccess().getActionSTRINGTerminalRuleCall_3_0_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getShallNotAllowAccess().getActionSTRINGTerminalRuleCall_3_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallNotAllow__EntityAssignment_3_1_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getShallNotAllowAccess().getEntitySTRINGTerminalRuleCall_3_1_0_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getShallNotAllowAccess().getEntitySTRINGTerminalRuleCall_3_1_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallNotAllow__ActionPerformedByEntityAssignment_3_1_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getShallNotAllowAccess().getActionPerformedByEntitySTRINGTerminalRuleCall_3_1_2_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getShallNotAllowAccess().getActionPerformedByEntitySTRINGTerminalRuleCall_3_1_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallAllow__ActionAssignment_2_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getShallAllowAccess().getActionSTRINGTerminalRuleCall_2_0_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getShallAllowAccess().getActionSTRINGTerminalRuleCall_2_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallAllow__EntityAssignment_2_1_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getShallAllowAccess().getEntitySTRINGTerminalRuleCall_2_1_0_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getShallAllowAccess().getEntitySTRINGTerminalRuleCall_2_1_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallAllow__ActionPerformedByEntityAssignment_2_1_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getShallAllowAccess().getActionPerformedByEntitySTRINGTerminalRuleCall_2_1_2_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getShallAllowAccess().getActionPerformedByEntitySTRINGTerminalRuleCall_2_1_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ShallNot__ActionAssignment_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getShallNotAccess().getActionSTRINGTerminalRuleCall_3_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getShallNotAccess().getActionSTRINGTerminalRuleCall_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Shall__ActionAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getShallAccess().getActionSTRINGTerminalRuleCall_2_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getShallAccess().getActionSTRINGTerminalRuleCall_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
+
+RULE_INT : ('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/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/src-gen/org/eclipse/papyrus/requirements/sysml14/ide/contentassist/antlr/internal/InternalBoilerplateText.tokens b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/src-gen/org/eclipse/papyrus/requirements/sysml14/ide/contentassist/antlr/internal/InternalBoilerplateText.tokens
new file mode 100644
index 0000000..629db52
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/src-gen/org/eclipse/papyrus/requirements/sysml14/ide/contentassist/antlr/internal/InternalBoilerplateText.tokens
@@ -0,0 +1,27 @@
+','=11
+'able'=20
+'allow'=17
+'and'=13
+'be'=19
+'if'=12
+'not'=16
+'shall'=15
+'to'=18
+'while'=14
+RULE_ANY_OTHER=10
+RULE_ID=5
+RULE_INT=6
+RULE_ML_COMMENT=7
+RULE_SL_COMMENT=8
+RULE_STRING=4
+RULE_WS=9
+T__11=11
+T__12=12
+T__13=13
+T__14=14
+T__15=15
+T__16=16
+T__17=17
+T__18=18
+T__19=19
+T__20=20
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/src-gen/org/eclipse/papyrus/requirements/sysml14/ide/contentassist/antlr/internal/InternalBoilerplateTextLexer.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/src-gen/org/eclipse/papyrus/requirements/sysml14/ide/contentassist/antlr/internal/InternalBoilerplateTextLexer.java
new file mode 100644
index 0000000..46ec43d
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/src-gen/org/eclipse/papyrus/requirements/sysml14/ide/contentassist/antlr/internal/InternalBoilerplateTextLexer.java
@@ -0,0 +1,1058 @@
+package org.eclipse.papyrus.requirements.sysml14.ide.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.ide.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 InternalBoilerplateTextLexer extends Lexer {
+    public static final int RULE_STRING=4;
+    public static final int RULE_SL_COMMENT=8;
+    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 T__11=11;
+    public static final int T__12=12;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int EOF=-1;
+    public static final int RULE_ID=5;
+    public static final int RULE_WS=9;
+    public static final int RULE_ANY_OTHER=10;
+    public static final int RULE_INT=6;
+    public static final int RULE_ML_COMMENT=7;
+    public static final int T__20=20;
+
+    // delegates
+    // delegators
+
+    public InternalBoilerplateTextLexer() {;} 
+    public InternalBoilerplateTextLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalBoilerplateTextLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "InternalBoilerplateText.g"; }
+
+    // $ANTLR start "T__11"
+    public final void mT__11() throws RecognitionException {
+        try {
+            int _type = T__11;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalBoilerplateText.g:11:7: ( ',' )
+            // InternalBoilerplateText.g:11:9: ','
+            {
+            match(','); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__11"
+
+    // $ANTLR start "T__12"
+    public final void mT__12() throws RecognitionException {
+        try {
+            int _type = T__12;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalBoilerplateText.g:12:7: ( 'if' )
+            // InternalBoilerplateText.g:12:9: 'if'
+            {
+            match("if"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__12"
+
+    // $ANTLR start "T__13"
+    public final void mT__13() throws RecognitionException {
+        try {
+            int _type = T__13;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalBoilerplateText.g:13:7: ( 'and' )
+            // InternalBoilerplateText.g:13:9: 'and'
+            {
+            match("and"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__13"
+
+    // $ANTLR start "T__14"
+    public final void mT__14() throws RecognitionException {
+        try {
+            int _type = T__14;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalBoilerplateText.g:14:7: ( 'while' )
+            // InternalBoilerplateText.g:14:9: 'while'
+            {
+            match("while"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__14"
+
+    // $ANTLR start "T__15"
+    public final void mT__15() throws RecognitionException {
+        try {
+            int _type = T__15;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalBoilerplateText.g:15:7: ( 'shall' )
+            // InternalBoilerplateText.g:15:9: 'shall'
+            {
+            match("shall"); 
+
+
+            }
+
+            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;
+            // InternalBoilerplateText.g:16:7: ( 'not' )
+            // InternalBoilerplateText.g:16:9: 'not'
+            {
+            match("not"); 
+
+
+            }
+
+            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;
+            // InternalBoilerplateText.g:17:7: ( 'allow' )
+            // InternalBoilerplateText.g:17:9: 'allow'
+            {
+            match("allow"); 
+
+
+            }
+
+            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;
+            // InternalBoilerplateText.g:18:7: ( 'to' )
+            // InternalBoilerplateText.g:18:9: 'to'
+            {
+            match("to"); 
+
+
+            }
+
+            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;
+            // InternalBoilerplateText.g:19:7: ( 'be' )
+            // InternalBoilerplateText.g:19:9: 'be'
+            {
+            match("be"); 
+
+
+            }
+
+            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;
+            // InternalBoilerplateText.g:20:7: ( 'able' )
+            // InternalBoilerplateText.g:20:9: 'able'
+            {
+            match("able"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__20"
+
+    // $ANTLR start "RULE_ID"
+    public final void mRULE_ID() throws RecognitionException {
+        try {
+            int _type = RULE_ID;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalBoilerplateText.g:1731:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
+            // InternalBoilerplateText.g:1731:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+            {
+            // InternalBoilerplateText.g:1731:11: ( '^' )?
+            int alt1=2;
+            int LA1_0 = input.LA(1);
+
+            if ( (LA1_0=='^') ) {
+                alt1=1;
+            }
+            switch (alt1) {
+                case 1 :
+                    // InternalBoilerplateText.g:1731: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;}
+
+            // InternalBoilerplateText.g:1731:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+            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=='_'||(LA2_0>='a' && LA2_0<='z')) ) {
+                    alt2=1;
+                }
+
+
+                switch (alt2) {
+            	case 1 :
+            	    // InternalBoilerplateText.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 loop2;
+                }
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ID"
+
+    // $ANTLR start "RULE_INT"
+    public final void mRULE_INT() throws RecognitionException {
+        try {
+            int _type = RULE_INT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalBoilerplateText.g:1733:10: ( ( '0' .. '9' )+ )
+            // InternalBoilerplateText.g:1733:12: ( '0' .. '9' )+
+            {
+            // InternalBoilerplateText.g:1733:12: ( '0' .. '9' )+
+            int cnt3=0;
+            loop3:
+            do {
+                int alt3=2;
+                int LA3_0 = input.LA(1);
+
+                if ( ((LA3_0>='0' && LA3_0<='9')) ) {
+                    alt3=1;
+                }
+
+
+                switch (alt3) {
+            	case 1 :
+            	    // InternalBoilerplateText.g:1733:13: '0' .. '9'
+            	    {
+            	    matchRange('0','9'); 
+
+            	    }
+            	    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_INT"
+
+    // $ANTLR start "RULE_STRING"
+    public final void mRULE_STRING() throws RecognitionException {
+        try {
+            int _type = RULE_STRING;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalBoilerplateText.g:1735:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) )
+            // InternalBoilerplateText.g:1735:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+            {
+            // InternalBoilerplateText.g:1735:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+            int alt6=2;
+            int LA6_0 = input.LA(1);
+
+            if ( (LA6_0=='\"') ) {
+                alt6=1;
+            }
+            else if ( (LA6_0=='\'') ) {
+                alt6=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 6, 0, input);
+
+                throw nvae;
+            }
+            switch (alt6) {
+                case 1 :
+                    // InternalBoilerplateText.g:1735:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"'
+                    {
+                    match('\"'); 
+                    // InternalBoilerplateText.g:1735:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+                    loop4:
+                    do {
+                        int alt4=3;
+                        int LA4_0 = input.LA(1);
+
+                        if ( (LA4_0=='\\') ) {
+                            alt4=1;
+                        }
+                        else if ( ((LA4_0>='\u0000' && LA4_0<='!')||(LA4_0>='#' && LA4_0<='[')||(LA4_0>=']' && LA4_0<='\uFFFF')) ) {
+                            alt4=2;
+                        }
+
+
+                        switch (alt4) {
+                    	case 1 :
+                    	    // InternalBoilerplateText.g:1735:21: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // InternalBoilerplateText.g:1735: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 loop4;
+                        }
+                    } while (true);
+
+                    match('\"'); 
+
+                    }
+                    break;
+                case 2 :
+                    // InternalBoilerplateText.g:1735:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\''
+                    {
+                    match('\''); 
+                    // InternalBoilerplateText.g:1735:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    loop5:
+                    do {
+                        int alt5=3;
+                        int LA5_0 = input.LA(1);
+
+                        if ( (LA5_0=='\\') ) {
+                            alt5=1;
+                        }
+                        else if ( ((LA5_0>='\u0000' && LA5_0<='&')||(LA5_0>='(' && LA5_0<='[')||(LA5_0>=']' && LA5_0<='\uFFFF')) ) {
+                            alt5=2;
+                        }
+
+
+                        switch (alt5) {
+                    	case 1 :
+                    	    // InternalBoilerplateText.g:1735:54: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // InternalBoilerplateText.g:1735: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 loop5;
+                        }
+                    } 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;
+            // InternalBoilerplateText.g:1737:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // InternalBoilerplateText.g:1737:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // InternalBoilerplateText.g:1737:24: ( options {greedy=false; } : . )*
+            loop7:
+            do {
+                int alt7=2;
+                int LA7_0 = input.LA(1);
+
+                if ( (LA7_0=='*') ) {
+                    int LA7_1 = input.LA(2);
+
+                    if ( (LA7_1=='/') ) {
+                        alt7=2;
+                    }
+                    else if ( ((LA7_1>='\u0000' && LA7_1<='.')||(LA7_1>='0' && LA7_1<='\uFFFF')) ) {
+                        alt7=1;
+                    }
+
+
+                }
+                else if ( ((LA7_0>='\u0000' && LA7_0<=')')||(LA7_0>='+' && LA7_0<='\uFFFF')) ) {
+                    alt7=1;
+                }
+
+
+                switch (alt7) {
+            	case 1 :
+            	    // InternalBoilerplateText.g:1737:52: .
+            	    {
+            	    matchAny(); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop7;
+                }
+            } 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;
+            // InternalBoilerplateText.g:1739:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // InternalBoilerplateText.g:1739:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // InternalBoilerplateText.g:1739:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            loop8:
+            do {
+                int alt8=2;
+                int LA8_0 = input.LA(1);
+
+                if ( ((LA8_0>='\u0000' && LA8_0<='\t')||(LA8_0>='\u000B' && LA8_0<='\f')||(LA8_0>='\u000E' && LA8_0<='\uFFFF')) ) {
+                    alt8=1;
+                }
+
+
+                switch (alt8) {
+            	case 1 :
+            	    // InternalBoilerplateText.g:1739: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 loop8;
+                }
+            } while (true);
+
+            // InternalBoilerplateText.g:1739:40: ( ( '\\r' )? '\\n' )?
+            int alt10=2;
+            int LA10_0 = input.LA(1);
+
+            if ( (LA10_0=='\n'||LA10_0=='\r') ) {
+                alt10=1;
+            }
+            switch (alt10) {
+                case 1 :
+                    // InternalBoilerplateText.g:1739:41: ( '\\r' )? '\\n'
+                    {
+                    // InternalBoilerplateText.g:1739:41: ( '\\r' )?
+                    int alt9=2;
+                    int LA9_0 = input.LA(1);
+
+                    if ( (LA9_0=='\r') ) {
+                        alt9=1;
+                    }
+                    switch (alt9) {
+                        case 1 :
+                            // InternalBoilerplateText.g:1739: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;
+            // InternalBoilerplateText.g:1741:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // InternalBoilerplateText.g:1741:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // InternalBoilerplateText.g:1741:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            int cnt11=0;
+            loop11:
+            do {
+                int alt11=2;
+                int LA11_0 = input.LA(1);
+
+                if ( ((LA11_0>='\t' && LA11_0<='\n')||LA11_0=='\r'||LA11_0==' ') ) {
+                    alt11=1;
+                }
+
+
+                switch (alt11) {
+            	case 1 :
+            	    // InternalBoilerplateText.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 ( 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_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;
+            // InternalBoilerplateText.g:1743:16: ( . )
+            // InternalBoilerplateText.g:1743:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // InternalBoilerplateText.g:1:8: ( T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt12=17;
+        alt12 = dfa12.predict(input);
+        switch (alt12) {
+            case 1 :
+                // InternalBoilerplateText.g:1:10: T__11
+                {
+                mT__11(); 
+
+                }
+                break;
+            case 2 :
+                // InternalBoilerplateText.g:1:16: T__12
+                {
+                mT__12(); 
+
+                }
+                break;
+            case 3 :
+                // InternalBoilerplateText.g:1:22: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 4 :
+                // InternalBoilerplateText.g:1:28: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 5 :
+                // InternalBoilerplateText.g:1:34: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 6 :
+                // InternalBoilerplateText.g:1:40: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 7 :
+                // InternalBoilerplateText.g:1:46: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 8 :
+                // InternalBoilerplateText.g:1:52: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 9 :
+                // InternalBoilerplateText.g:1:58: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 10 :
+                // InternalBoilerplateText.g:1:64: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 11 :
+                // InternalBoilerplateText.g:1:70: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 12 :
+                // InternalBoilerplateText.g:1:78: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 13 :
+                // InternalBoilerplateText.g:1:87: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 14 :
+                // InternalBoilerplateText.g:1:99: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 15 :
+                // InternalBoilerplateText.g:1:115: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 16 :
+                // InternalBoilerplateText.g:1:131: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 17 :
+                // InternalBoilerplateText.g:1:139: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA12 dfa12 = new DFA12(this);
+    static final String DFA12_eotS =
+        "\2\uffff\7\23\1\20\2\uffff\3\20\3\uffff\1\41\1\uffff\6\23\1\50\1\51\6\uffff\1\52\4\23\1\57\3\uffff\1\23\1\61\2\23\1\uffff\1\64\1\uffff\1\65\1\66\3\uffff";
+    static final String DFA12_eofS =
+        "\67\uffff";
+    static final String DFA12_minS =
+        "\1\0\1\uffff\1\146\1\142\2\150\2\157\1\145\1\101\2\uffff\2\0\1\52\3\uffff\1\60\1\uffff\1\144\2\154\1\151\1\141\1\164\2\60\6\uffff\1\60\1\157\1\145\2\154\1\60\3\uffff\1\167\1\60\1\145\1\154\1\uffff\1\60\1\uffff\2\60\3\uffff";
+    static final String DFA12_maxS =
+        "\1\uffff\1\uffff\1\146\1\156\2\150\2\157\1\145\1\172\2\uffff\2\uffff\1\57\3\uffff\1\172\1\uffff\1\144\2\154\1\151\1\141\1\164\2\172\6\uffff\1\172\1\157\1\145\2\154\1\172\3\uffff\1\167\1\172\1\145\1\154\1\uffff\1\172\1\uffff\2\172\3\uffff";
+    static final String DFA12_acceptS =
+        "\1\uffff\1\1\10\uffff\1\13\1\14\3\uffff\1\20\1\21\1\1\1\uffff\1\13\10\uffff\1\14\1\15\1\16\1\17\1\20\1\2\6\uffff\1\10\1\11\1\3\4\uffff\1\6\1\uffff\1\12\2\uffff\1\7\1\4\1\5";
+    static final String DFA12_specialS =
+        "\1\0\13\uffff\1\1\1\2\51\uffff}>";
+    static final String[] DFA12_transitionS = {
+            "\11\20\2\17\2\20\1\17\22\20\1\17\1\20\1\14\4\20\1\15\4\20\1\1\2\20\1\16\12\13\7\20\32\12\3\20\1\11\1\12\1\20\1\3\1\10\6\12\1\2\4\12\1\6\4\12\1\5\1\7\2\12\1\4\3\12\uff85\20",
+            "",
+            "\1\22",
+            "\1\26\11\uffff\1\25\1\uffff\1\24",
+            "\1\27",
+            "\1\30",
+            "\1\31",
+            "\1\32",
+            "\1\33",
+            "\32\23\4\uffff\1\23\1\uffff\32\23",
+            "",
+            "",
+            "\0\35",
+            "\0\35",
+            "\1\36\4\uffff\1\37",
+            "",
+            "",
+            "",
+            "\12\23\7\uffff\32\23\4\uffff\1\23\1\uffff\32\23",
+            "",
+            "\1\42",
+            "\1\43",
+            "\1\44",
+            "\1\45",
+            "\1\46",
+            "\1\47",
+            "\12\23\7\uffff\32\23\4\uffff\1\23\1\uffff\32\23",
+            "\12\23\7\uffff\32\23\4\uffff\1\23\1\uffff\32\23",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\12\23\7\uffff\32\23\4\uffff\1\23\1\uffff\32\23",
+            "\1\53",
+            "\1\54",
+            "\1\55",
+            "\1\56",
+            "\12\23\7\uffff\32\23\4\uffff\1\23\1\uffff\32\23",
+            "",
+            "",
+            "",
+            "\1\60",
+            "\12\23\7\uffff\32\23\4\uffff\1\23\1\uffff\32\23",
+            "\1\62",
+            "\1\63",
+            "",
+            "\12\23\7\uffff\32\23\4\uffff\1\23\1\uffff\32\23",
+            "",
+            "\12\23\7\uffff\32\23\4\uffff\1\23\1\uffff\32\23",
+            "\12\23\7\uffff\32\23\4\uffff\1\23\1\uffff\32\23",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA12_eot = DFA.unpackEncodedString(DFA12_eotS);
+    static final short[] DFA12_eof = DFA.unpackEncodedString(DFA12_eofS);
+    static final char[] DFA12_min = DFA.unpackEncodedStringToUnsignedChars(DFA12_minS);
+    static final char[] DFA12_max = DFA.unpackEncodedStringToUnsignedChars(DFA12_maxS);
+    static final short[] DFA12_accept = DFA.unpackEncodedString(DFA12_acceptS);
+    static final short[] DFA12_special = DFA.unpackEncodedString(DFA12_specialS);
+    static final short[][] DFA12_transition;
+
+    static {
+        int numStates = DFA12_transitionS.length;
+        DFA12_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA12_transition[i] = DFA.unpackEncodedString(DFA12_transitionS[i]);
+        }
+    }
+
+    class DFA12 extends DFA {
+
+        public DFA12(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 12;
+            this.eot = DFA12_eot;
+            this.eof = DFA12_eof;
+            this.min = DFA12_min;
+            this.max = DFA12_max;
+            this.accept = DFA12_accept;
+            this.special = DFA12_special;
+            this.transition = DFA12_transition;
+        }
+        public String getDescription() {
+            return "1:1: Tokens : ( T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | RULE_ID | RULE_INT | 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 LA12_0 = input.LA(1);
+
+                        s = -1;
+                        if ( (LA12_0==',') ) {s = 1;}
+
+                        else if ( (LA12_0=='i') ) {s = 2;}
+
+                        else if ( (LA12_0=='a') ) {s = 3;}
+
+                        else if ( (LA12_0=='w') ) {s = 4;}
+
+                        else if ( (LA12_0=='s') ) {s = 5;}
+
+                        else if ( (LA12_0=='n') ) {s = 6;}
+
+                        else if ( (LA12_0=='t') ) {s = 7;}
+
+                        else if ( (LA12_0=='b') ) {s = 8;}
+
+                        else if ( (LA12_0=='^') ) {s = 9;}
+
+                        else if ( ((LA12_0>='A' && LA12_0<='Z')||LA12_0=='_'||(LA12_0>='c' && LA12_0<='h')||(LA12_0>='j' && LA12_0<='m')||(LA12_0>='o' && LA12_0<='r')||(LA12_0>='u' && LA12_0<='v')||(LA12_0>='x' && LA12_0<='z')) ) {s = 10;}
+
+                        else if ( ((LA12_0>='0' && LA12_0<='9')) ) {s = 11;}
+
+                        else if ( (LA12_0=='\"') ) {s = 12;}
+
+                        else if ( (LA12_0=='\'') ) {s = 13;}
+
+                        else if ( (LA12_0=='/') ) {s = 14;}
+
+                        else if ( ((LA12_0>='\t' && LA12_0<='\n')||LA12_0=='\r'||LA12_0==' ') ) {s = 15;}
+
+                        else if ( ((LA12_0>='\u0000' && LA12_0<='\b')||(LA12_0>='\u000B' && LA12_0<='\f')||(LA12_0>='\u000E' && LA12_0<='\u001F')||LA12_0=='!'||(LA12_0>='#' && LA12_0<='&')||(LA12_0>='(' && LA12_0<='+')||(LA12_0>='-' && LA12_0<='.')||(LA12_0>=':' && LA12_0<='@')||(LA12_0>='[' && LA12_0<=']')||LA12_0=='`'||(LA12_0>='{' && LA12_0<='\uFFFF')) ) {s = 16;}
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA12_12 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA12_12>='\u0000' && LA12_12<='\uFFFF')) ) {s = 29;}
+
+                        else s = 16;
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA12_13 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA12_13>='\u0000' && LA12_13<='\uFFFF')) ) {s = 29;}
+
+                        else s = 16;
+
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 12, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+}
\ No newline at end of file
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/src-gen/org/eclipse/papyrus/requirements/sysml14/ide/contentassist/antlr/internal/InternalBoilerplateTextParser.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/src-gen/org/eclipse/papyrus/requirements/sysml14/ide/contentassist/antlr/internal/InternalBoilerplateTextParser.java
new file mode 100644
index 0000000..19571b2
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/src-gen/org/eclipse/papyrus/requirements/sysml14/ide/contentassist/antlr/internal/InternalBoilerplateTextParser.java
@@ -0,0 +1,5499 @@
+package org.eclipse.papyrus.requirements.sysml14.ide.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.ide.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.DFA;
+import org.eclipse.papyrus.requirements.sysml14.services.BoilerplateTextGrammarAccess;
+
+
+
+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) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+@SuppressWarnings("all")
+public class InternalBoilerplateTextParser extends AbstractInternalContentAssistParser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "','", "'if'", "'and'", "'while'", "'shall'", "'not'", "'allow'", "'to'", "'be'", "'able'"
+    };
+    public static final int RULE_STRING=4;
+    public static final int RULE_SL_COMMENT=8;
+    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 T__11=11;
+    public static final int T__12=12;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int EOF=-1;
+    public static final int RULE_ID=5;
+    public static final int RULE_WS=9;
+    public static final int RULE_ANY_OTHER=10;
+    public static final int RULE_INT=6;
+    public static final int RULE_ML_COMMENT=7;
+    public static final int T__20=20;
+
+    // delegates
+    // delegators
+
+
+        public InternalBoilerplateTextParser(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public InternalBoilerplateTextParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+
+    public String[] getTokenNames() { return InternalBoilerplateTextParser.tokenNames; }
+    public String getGrammarFileName() { return "InternalBoilerplateText.g"; }
+
+
+    	private BoilerplateTextGrammarAccess grammarAccess;
+
+    	public void setGrammarAccess(BoilerplateTextGrammarAccess grammarAccess) {
+    		this.grammarAccess = grammarAccess;
+    	}
+
+    	@Override
+    	protected Grammar getGrammar() {
+    		return grammarAccess.getGrammar();
+    	}
+
+    	@Override
+    	protected String getValueForTokenName(String tokenName) {
+    		return tokenName;
+    	}
+
+
+
+    // $ANTLR start "entryRuleModel"
+    // InternalBoilerplateText.g:68:1: entryRuleModel : ruleModel EOF ;
+    public final void entryRuleModel() throws RecognitionException {
+        try {
+            // InternalBoilerplateText.g:69:1: ( ruleModel EOF )
+            // InternalBoilerplateText.g:70:1: ruleModel EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getModelRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleModel();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getModelRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleModel"
+
+
+    // $ANTLR start "ruleModel"
+    // InternalBoilerplateText.g:77:1: ruleModel : ( ( rule__Model__ModelAssignment ) ) ;
+    public final void ruleModel() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:81:2: ( ( ( rule__Model__ModelAssignment ) ) )
+            // InternalBoilerplateText.g:82:2: ( ( rule__Model__ModelAssignment ) )
+            {
+            // InternalBoilerplateText.g:82:2: ( ( rule__Model__ModelAssignment ) )
+            // InternalBoilerplateText.g:83:3: ( rule__Model__ModelAssignment )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getModelAccess().getModelAssignment()); 
+            }
+            // InternalBoilerplateText.g:84:3: ( rule__Model__ModelAssignment )
+            // InternalBoilerplateText.g:84:4: rule__Model__ModelAssignment
+            {
+            pushFollow(FOLLOW_2);
+            rule__Model__ModelAssignment();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getModelAccess().getModelAssignment()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleModel"
+
+
+    // $ANTLR start "entryRuleRequirement"
+    // InternalBoilerplateText.g:93:1: entryRuleRequirement : ruleRequirement EOF ;
+    public final void entryRuleRequirement() throws RecognitionException {
+        try {
+            // InternalBoilerplateText.g:94:1: ( ruleRequirement EOF )
+            // InternalBoilerplateText.g:95:1: ruleRequirement EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRequirementRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleRequirement();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRequirementRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleRequirement"
+
+
+    // $ANTLR start "ruleRequirement"
+    // InternalBoilerplateText.g:102:1: ruleRequirement : ( ( rule__Requirement__Group__0 ) ) ;
+    public final void ruleRequirement() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:106:2: ( ( ( rule__Requirement__Group__0 ) ) )
+            // InternalBoilerplateText.g:107:2: ( ( rule__Requirement__Group__0 ) )
+            {
+            // InternalBoilerplateText.g:107:2: ( ( rule__Requirement__Group__0 ) )
+            // InternalBoilerplateText.g:108:3: ( rule__Requirement__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRequirementAccess().getGroup()); 
+            }
+            // InternalBoilerplateText.g:109:3: ( rule__Requirement__Group__0 )
+            // InternalBoilerplateText.g:109:4: rule__Requirement__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__Requirement__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRequirementAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleRequirement"
+
+
+    // $ANTLR start "entryRuleSubject"
+    // InternalBoilerplateText.g:118:1: entryRuleSubject : ruleSubject EOF ;
+    public final void entryRuleSubject() throws RecognitionException {
+        try {
+            // InternalBoilerplateText.g:119:1: ( ruleSubject EOF )
+            // InternalBoilerplateText.g:120:1: ruleSubject EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSubjectRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleSubject();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSubjectRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleSubject"
+
+
+    // $ANTLR start "ruleSubject"
+    // InternalBoilerplateText.g:127:1: ruleSubject : ( ( rule__Subject__SystemAssignment ) ) ;
+    public final void ruleSubject() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:131:2: ( ( ( rule__Subject__SystemAssignment ) ) )
+            // InternalBoilerplateText.g:132:2: ( ( rule__Subject__SystemAssignment ) )
+            {
+            // InternalBoilerplateText.g:132:2: ( ( rule__Subject__SystemAssignment ) )
+            // InternalBoilerplateText.g:133:3: ( rule__Subject__SystemAssignment )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSubjectAccess().getSystemAssignment()); 
+            }
+            // InternalBoilerplateText.g:134:3: ( rule__Subject__SystemAssignment )
+            // InternalBoilerplateText.g:134:4: rule__Subject__SystemAssignment
+            {
+            pushFollow(FOLLOW_2);
+            rule__Subject__SystemAssignment();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSubjectAccess().getSystemAssignment()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleSubject"
+
+
+    // $ANTLR start "entryRulePrefix"
+    // InternalBoilerplateText.g:143:1: entryRulePrefix : rulePrefix EOF ;
+    public final void entryRulePrefix() throws RecognitionException {
+        try {
+            // InternalBoilerplateText.g:144:1: ( rulePrefix EOF )
+            // InternalBoilerplateText.g:145:1: rulePrefix EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPrefixRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            rulePrefix();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPrefixRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePrefix"
+
+
+    // $ANTLR start "rulePrefix"
+    // InternalBoilerplateText.g:152:1: rulePrefix : ( ( rule__Prefix__Alternatives ) ) ;
+    public final void rulePrefix() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:156:2: ( ( ( rule__Prefix__Alternatives ) ) )
+            // InternalBoilerplateText.g:157:2: ( ( rule__Prefix__Alternatives ) )
+            {
+            // InternalBoilerplateText.g:157:2: ( ( rule__Prefix__Alternatives ) )
+            // InternalBoilerplateText.g:158:3: ( rule__Prefix__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPrefixAccess().getAlternatives()); 
+            }
+            // InternalBoilerplateText.g:159:3: ( rule__Prefix__Alternatives )
+            // InternalBoilerplateText.g:159:4: rule__Prefix__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__Prefix__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPrefixAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePrefix"
+
+
+    // $ANTLR start "entryRuleIf"
+    // InternalBoilerplateText.g:168:1: entryRuleIf : ruleIf EOF ;
+    public final void entryRuleIf() throws RecognitionException {
+        try {
+            // InternalBoilerplateText.g:169:1: ( ruleIf EOF )
+            // InternalBoilerplateText.g:170:1: ruleIf EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getIfRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleIf();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getIfRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleIf"
+
+
+    // $ANTLR start "ruleIf"
+    // InternalBoilerplateText.g:177:1: ruleIf : ( ( rule__If__Group__0 ) ) ;
+    public final void ruleIf() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:181:2: ( ( ( rule__If__Group__0 ) ) )
+            // InternalBoilerplateText.g:182:2: ( ( rule__If__Group__0 ) )
+            {
+            // InternalBoilerplateText.g:182:2: ( ( rule__If__Group__0 ) )
+            // InternalBoilerplateText.g:183:3: ( rule__If__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getIfAccess().getGroup()); 
+            }
+            // InternalBoilerplateText.g:184:3: ( rule__If__Group__0 )
+            // InternalBoilerplateText.g:184:4: rule__If__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__If__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getIfAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleIf"
+
+
+    // $ANTLR start "entryRuleWhile"
+    // InternalBoilerplateText.g:193:1: entryRuleWhile : ruleWhile EOF ;
+    public final void entryRuleWhile() throws RecognitionException {
+        try {
+            // InternalBoilerplateText.g:194:1: ( ruleWhile EOF )
+            // InternalBoilerplateText.g:195:1: ruleWhile EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWhileRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleWhile();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWhileRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleWhile"
+
+
+    // $ANTLR start "ruleWhile"
+    // InternalBoilerplateText.g:202:1: ruleWhile : ( ( rule__While__Group__0 ) ) ;
+    public final void ruleWhile() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:206:2: ( ( ( rule__While__Group__0 ) ) )
+            // InternalBoilerplateText.g:207:2: ( ( rule__While__Group__0 ) )
+            {
+            // InternalBoilerplateText.g:207:2: ( ( rule__While__Group__0 ) )
+            // InternalBoilerplateText.g:208:3: ( rule__While__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWhileAccess().getGroup()); 
+            }
+            // InternalBoilerplateText.g:209:3: ( rule__While__Group__0 )
+            // InternalBoilerplateText.g:209:4: rule__While__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__While__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWhileAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleWhile"
+
+
+    // $ANTLR start "entryRulePredicate"
+    // InternalBoilerplateText.g:218:1: entryRulePredicate : rulePredicate EOF ;
+    public final void entryRulePredicate() throws RecognitionException {
+        try {
+            // InternalBoilerplateText.g:219:1: ( rulePredicate EOF )
+            // InternalBoilerplateText.g:220:1: rulePredicate EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPredicateRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            rulePredicate();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPredicateRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRulePredicate"
+
+
+    // $ANTLR start "rulePredicate"
+    // InternalBoilerplateText.g:227:1: rulePredicate : ( ( rule__Predicate__Alternatives ) ) ;
+    public final void rulePredicate() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:231:2: ( ( ( rule__Predicate__Alternatives ) ) )
+            // InternalBoilerplateText.g:232:2: ( ( rule__Predicate__Alternatives ) )
+            {
+            // InternalBoilerplateText.g:232:2: ( ( rule__Predicate__Alternatives ) )
+            // InternalBoilerplateText.g:233:3: ( rule__Predicate__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getPredicateAccess().getAlternatives()); 
+            }
+            // InternalBoilerplateText.g:234:3: ( rule__Predicate__Alternatives )
+            // InternalBoilerplateText.g:234:4: rule__Predicate__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__Predicate__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getPredicateAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rulePredicate"
+
+
+    // $ANTLR start "entryRuleShallNotAllow"
+    // InternalBoilerplateText.g:243:1: entryRuleShallNotAllow : ruleShallNotAllow EOF ;
+    public final void entryRuleShallNotAllow() throws RecognitionException {
+        try {
+            // InternalBoilerplateText.g:244:1: ( ruleShallNotAllow EOF )
+            // InternalBoilerplateText.g:245:1: ruleShallNotAllow EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallNotAllowRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleShallNotAllow();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallNotAllowRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleShallNotAllow"
+
+
+    // $ANTLR start "ruleShallNotAllow"
+    // InternalBoilerplateText.g:252:1: ruleShallNotAllow : ( ( rule__ShallNotAllow__Group__0 ) ) ;
+    public final void ruleShallNotAllow() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:256:2: ( ( ( rule__ShallNotAllow__Group__0 ) ) )
+            // InternalBoilerplateText.g:257:2: ( ( rule__ShallNotAllow__Group__0 ) )
+            {
+            // InternalBoilerplateText.g:257:2: ( ( rule__ShallNotAllow__Group__0 ) )
+            // InternalBoilerplateText.g:258:3: ( rule__ShallNotAllow__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallNotAllowAccess().getGroup()); 
+            }
+            // InternalBoilerplateText.g:259:3: ( rule__ShallNotAllow__Group__0 )
+            // InternalBoilerplateText.g:259:4: rule__ShallNotAllow__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ShallNotAllow__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallNotAllowAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleShallNotAllow"
+
+
+    // $ANTLR start "entryRuleShallAllow"
+    // InternalBoilerplateText.g:268:1: entryRuleShallAllow : ruleShallAllow EOF ;
+    public final void entryRuleShallAllow() throws RecognitionException {
+        try {
+            // InternalBoilerplateText.g:269:1: ( ruleShallAllow EOF )
+            // InternalBoilerplateText.g:270:1: ruleShallAllow EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallAllowRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleShallAllow();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallAllowRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleShallAllow"
+
+
+    // $ANTLR start "ruleShallAllow"
+    // InternalBoilerplateText.g:277:1: ruleShallAllow : ( ( rule__ShallAllow__Group__0 ) ) ;
+    public final void ruleShallAllow() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:281:2: ( ( ( rule__ShallAllow__Group__0 ) ) )
+            // InternalBoilerplateText.g:282:2: ( ( rule__ShallAllow__Group__0 ) )
+            {
+            // InternalBoilerplateText.g:282:2: ( ( rule__ShallAllow__Group__0 ) )
+            // InternalBoilerplateText.g:283:3: ( rule__ShallAllow__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallAllowAccess().getGroup()); 
+            }
+            // InternalBoilerplateText.g:284:3: ( rule__ShallAllow__Group__0 )
+            // InternalBoilerplateText.g:284:4: rule__ShallAllow__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ShallAllow__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallAllowAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleShallAllow"
+
+
+    // $ANTLR start "entryRuleShallNot"
+    // InternalBoilerplateText.g:293:1: entryRuleShallNot : ruleShallNot EOF ;
+    public final void entryRuleShallNot() throws RecognitionException {
+        try {
+            // InternalBoilerplateText.g:294:1: ( ruleShallNot EOF )
+            // InternalBoilerplateText.g:295:1: ruleShallNot EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallNotRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleShallNot();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallNotRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleShallNot"
+
+
+    // $ANTLR start "ruleShallNot"
+    // InternalBoilerplateText.g:302:1: ruleShallNot : ( ( rule__ShallNot__Group__0 ) ) ;
+    public final void ruleShallNot() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:306:2: ( ( ( rule__ShallNot__Group__0 ) ) )
+            // InternalBoilerplateText.g:307:2: ( ( rule__ShallNot__Group__0 ) )
+            {
+            // InternalBoilerplateText.g:307:2: ( ( rule__ShallNot__Group__0 ) )
+            // InternalBoilerplateText.g:308:3: ( rule__ShallNot__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallNotAccess().getGroup()); 
+            }
+            // InternalBoilerplateText.g:309:3: ( rule__ShallNot__Group__0 )
+            // InternalBoilerplateText.g:309:4: rule__ShallNot__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ShallNot__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallNotAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleShallNot"
+
+
+    // $ANTLR start "entryRuleShall"
+    // InternalBoilerplateText.g:318:1: entryRuleShall : ruleShall EOF ;
+    public final void entryRuleShall() throws RecognitionException {
+        try {
+            // InternalBoilerplateText.g:319:1: ( ruleShall EOF )
+            // InternalBoilerplateText.g:320:1: ruleShall EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleShall();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleShall"
+
+
+    // $ANTLR start "ruleShall"
+    // InternalBoilerplateText.g:327:1: ruleShall : ( ( rule__Shall__Group__0 ) ) ;
+    public final void ruleShall() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:331:2: ( ( ( rule__Shall__Group__0 ) ) )
+            // InternalBoilerplateText.g:332:2: ( ( rule__Shall__Group__0 ) )
+            {
+            // InternalBoilerplateText.g:332:2: ( ( rule__Shall__Group__0 ) )
+            // InternalBoilerplateText.g:333:3: ( rule__Shall__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallAccess().getGroup()); 
+            }
+            // InternalBoilerplateText.g:334:3: ( rule__Shall__Group__0 )
+            // InternalBoilerplateText.g:334:4: rule__Shall__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__Shall__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleShall"
+
+
+    // $ANTLR start "rule__Prefix__Alternatives"
+    // InternalBoilerplateText.g:342:1: rule__Prefix__Alternatives : ( ( ruleIf ) | ( ruleWhile ) );
+    public final void rule__Prefix__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:346:1: ( ( ruleIf ) | ( ruleWhile ) )
+            int alt1=2;
+            int LA1_0 = input.LA(1);
+
+            if ( (LA1_0==12) ) {
+                alt1=1;
+            }
+            else if ( (LA1_0==14) ) {
+                alt1=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 1, 0, input);
+
+                throw nvae;
+            }
+            switch (alt1) {
+                case 1 :
+                    // InternalBoilerplateText.g:347:2: ( ruleIf )
+                    {
+                    // InternalBoilerplateText.g:347:2: ( ruleIf )
+                    // InternalBoilerplateText.g:348:3: ruleIf
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPrefixAccess().getIfParserRuleCall_0()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleIf();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPrefixAccess().getIfParserRuleCall_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalBoilerplateText.g:353:2: ( ruleWhile )
+                    {
+                    // InternalBoilerplateText.g:353:2: ( ruleWhile )
+                    // InternalBoilerplateText.g:354:3: ruleWhile
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPrefixAccess().getWhileParserRuleCall_1()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleWhile();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPrefixAccess().getWhileParserRuleCall_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Prefix__Alternatives"
+
+
+    // $ANTLR start "rule__Predicate__Alternatives"
+    // InternalBoilerplateText.g:363:1: rule__Predicate__Alternatives : ( ( ruleShall ) | ( ruleShallNot ) | ( ruleShallAllow ) | ( ruleShallNotAllow ) );
+    public final void rule__Predicate__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:367:1: ( ( ruleShall ) | ( ruleShallNot ) | ( ruleShallAllow ) | ( ruleShallNotAllow ) )
+            int alt2=4;
+            int LA2_0 = input.LA(1);
+
+            if ( (LA2_0==15) ) {
+                switch ( input.LA(2) ) {
+                case 16:
+                    {
+                    int LA2_2 = input.LA(3);
+
+                    if ( (LA2_2==RULE_STRING||LA2_2==19) ) {
+                        alt2=2;
+                    }
+                    else if ( (LA2_2==17) ) {
+                        alt2=4;
+                    }
+                    else {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 2, 2, input);
+
+                        throw nvae;
+                    }
+                    }
+                    break;
+                case 17:
+                    {
+                    alt2=3;
+                    }
+                    break;
+                case RULE_STRING:
+                case 19:
+                    {
+                    alt2=1;
+                    }
+                    break;
+                default:
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 2, 1, input);
+
+                    throw nvae;
+                }
+
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 2, 0, input);
+
+                throw nvae;
+            }
+            switch (alt2) {
+                case 1 :
+                    // InternalBoilerplateText.g:368:2: ( ruleShall )
+                    {
+                    // InternalBoilerplateText.g:368:2: ( ruleShall )
+                    // InternalBoilerplateText.g:369:3: ruleShall
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPredicateAccess().getShallParserRuleCall_0()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleShall();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPredicateAccess().getShallParserRuleCall_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalBoilerplateText.g:374:2: ( ruleShallNot )
+                    {
+                    // InternalBoilerplateText.g:374:2: ( ruleShallNot )
+                    // InternalBoilerplateText.g:375:3: ruleShallNot
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPredicateAccess().getShallNotParserRuleCall_1()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleShallNot();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPredicateAccess().getShallNotParserRuleCall_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalBoilerplateText.g:380:2: ( ruleShallAllow )
+                    {
+                    // InternalBoilerplateText.g:380:2: ( ruleShallAllow )
+                    // InternalBoilerplateText.g:381:3: ruleShallAllow
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPredicateAccess().getShallAllowParserRuleCall_2()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleShallAllow();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPredicateAccess().getShallAllowParserRuleCall_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalBoilerplateText.g:386:2: ( ruleShallNotAllow )
+                    {
+                    // InternalBoilerplateText.g:386:2: ( ruleShallNotAllow )
+                    // InternalBoilerplateText.g:387:3: ruleShallNotAllow
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getPredicateAccess().getShallNotAllowParserRuleCall_3()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleShallNotAllow();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getPredicateAccess().getShallNotAllowParserRuleCall_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Predicate__Alternatives"
+
+
+    // $ANTLR start "rule__ShallNotAllow__Alternatives_3"
+    // InternalBoilerplateText.g:396:1: rule__ShallNotAllow__Alternatives_3 : ( ( ( rule__ShallNotAllow__ActionAssignment_3_0 ) ) | ( ( rule__ShallNotAllow__Group_3_1__0 ) ) );
+    public final void rule__ShallNotAllow__Alternatives_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:400:1: ( ( ( rule__ShallNotAllow__ActionAssignment_3_0 ) ) | ( ( rule__ShallNotAllow__Group_3_1__0 ) ) )
+            int alt3=2;
+            int LA3_0 = input.LA(1);
+
+            if ( (LA3_0==RULE_STRING) ) {
+                int LA3_1 = input.LA(2);
+
+                if ( (LA3_1==18) ) {
+                    alt3=2;
+                }
+                else if ( (LA3_1==EOF) ) {
+                    alt3=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 3, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 3, 0, input);
+
+                throw nvae;
+            }
+            switch (alt3) {
+                case 1 :
+                    // InternalBoilerplateText.g:401:2: ( ( rule__ShallNotAllow__ActionAssignment_3_0 ) )
+                    {
+                    // InternalBoilerplateText.g:401:2: ( ( rule__ShallNotAllow__ActionAssignment_3_0 ) )
+                    // InternalBoilerplateText.g:402:3: ( rule__ShallNotAllow__ActionAssignment_3_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getShallNotAllowAccess().getActionAssignment_3_0()); 
+                    }
+                    // InternalBoilerplateText.g:403:3: ( rule__ShallNotAllow__ActionAssignment_3_0 )
+                    // InternalBoilerplateText.g:403:4: rule__ShallNotAllow__ActionAssignment_3_0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ShallNotAllow__ActionAssignment_3_0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getShallNotAllowAccess().getActionAssignment_3_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalBoilerplateText.g:407:2: ( ( rule__ShallNotAllow__Group_3_1__0 ) )
+                    {
+                    // InternalBoilerplateText.g:407:2: ( ( rule__ShallNotAllow__Group_3_1__0 ) )
+                    // InternalBoilerplateText.g:408:3: ( rule__ShallNotAllow__Group_3_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getShallNotAllowAccess().getGroup_3_1()); 
+                    }
+                    // InternalBoilerplateText.g:409:3: ( rule__ShallNotAllow__Group_3_1__0 )
+                    // InternalBoilerplateText.g:409:4: rule__ShallNotAllow__Group_3_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ShallNotAllow__Group_3_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getShallNotAllowAccess().getGroup_3_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNotAllow__Alternatives_3"
+
+
+    // $ANTLR start "rule__ShallAllow__Alternatives_2"
+    // InternalBoilerplateText.g:417:1: rule__ShallAllow__Alternatives_2 : ( ( ( rule__ShallAllow__ActionAssignment_2_0 ) ) | ( ( rule__ShallAllow__Group_2_1__0 ) ) );
+    public final void rule__ShallAllow__Alternatives_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:421:1: ( ( ( rule__ShallAllow__ActionAssignment_2_0 ) ) | ( ( rule__ShallAllow__Group_2_1__0 ) ) )
+            int alt4=2;
+            int LA4_0 = input.LA(1);
+
+            if ( (LA4_0==RULE_STRING) ) {
+                int LA4_1 = input.LA(2);
+
+                if ( (LA4_1==EOF) ) {
+                    alt4=1;
+                }
+                else if ( (LA4_1==18) ) {
+                    alt4=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 4, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 4, 0, input);
+
+                throw nvae;
+            }
+            switch (alt4) {
+                case 1 :
+                    // InternalBoilerplateText.g:422:2: ( ( rule__ShallAllow__ActionAssignment_2_0 ) )
+                    {
+                    // InternalBoilerplateText.g:422:2: ( ( rule__ShallAllow__ActionAssignment_2_0 ) )
+                    // InternalBoilerplateText.g:423:3: ( rule__ShallAllow__ActionAssignment_2_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getShallAllowAccess().getActionAssignment_2_0()); 
+                    }
+                    // InternalBoilerplateText.g:424:3: ( rule__ShallAllow__ActionAssignment_2_0 )
+                    // InternalBoilerplateText.g:424:4: rule__ShallAllow__ActionAssignment_2_0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ShallAllow__ActionAssignment_2_0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getShallAllowAccess().getActionAssignment_2_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalBoilerplateText.g:428:2: ( ( rule__ShallAllow__Group_2_1__0 ) )
+                    {
+                    // InternalBoilerplateText.g:428:2: ( ( rule__ShallAllow__Group_2_1__0 ) )
+                    // InternalBoilerplateText.g:429:3: ( rule__ShallAllow__Group_2_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getShallAllowAccess().getGroup_2_1()); 
+                    }
+                    // InternalBoilerplateText.g:430:3: ( rule__ShallAllow__Group_2_1__0 )
+                    // InternalBoilerplateText.g:430:4: rule__ShallAllow__Group_2_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ShallAllow__Group_2_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getShallAllowAccess().getGroup_2_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallAllow__Alternatives_2"
+
+
+    // $ANTLR start "rule__Requirement__Group__0"
+    // InternalBoilerplateText.g:438:1: rule__Requirement__Group__0 : rule__Requirement__Group__0__Impl rule__Requirement__Group__1 ;
+    public final void rule__Requirement__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:442:1: ( rule__Requirement__Group__0__Impl rule__Requirement__Group__1 )
+            // InternalBoilerplateText.g:443:2: rule__Requirement__Group__0__Impl rule__Requirement__Group__1
+            {
+            pushFollow(FOLLOW_3);
+            rule__Requirement__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Requirement__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Requirement__Group__0"
+
+
+    // $ANTLR start "rule__Requirement__Group__0__Impl"
+    // InternalBoilerplateText.g:450:1: rule__Requirement__Group__0__Impl : ( ( rule__Requirement__Group_0__0 )? ) ;
+    public final void rule__Requirement__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:454:1: ( ( ( rule__Requirement__Group_0__0 )? ) )
+            // InternalBoilerplateText.g:455:1: ( ( rule__Requirement__Group_0__0 )? )
+            {
+            // InternalBoilerplateText.g:455:1: ( ( rule__Requirement__Group_0__0 )? )
+            // InternalBoilerplateText.g:456:2: ( rule__Requirement__Group_0__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRequirementAccess().getGroup_0()); 
+            }
+            // InternalBoilerplateText.g:457:2: ( rule__Requirement__Group_0__0 )?
+            int alt5=2;
+            int LA5_0 = input.LA(1);
+
+            if ( (LA5_0==12||LA5_0==14) ) {
+                alt5=1;
+            }
+            switch (alt5) {
+                case 1 :
+                    // InternalBoilerplateText.g:457:3: rule__Requirement__Group_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__Requirement__Group_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRequirementAccess().getGroup_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Requirement__Group__0__Impl"
+
+
+    // $ANTLR start "rule__Requirement__Group__1"
+    // InternalBoilerplateText.g:465:1: rule__Requirement__Group__1 : rule__Requirement__Group__1__Impl rule__Requirement__Group__2 ;
+    public final void rule__Requirement__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:469:1: ( rule__Requirement__Group__1__Impl rule__Requirement__Group__2 )
+            // InternalBoilerplateText.g:470:2: rule__Requirement__Group__1__Impl rule__Requirement__Group__2
+            {
+            pushFollow(FOLLOW_4);
+            rule__Requirement__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Requirement__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Requirement__Group__1"
+
+
+    // $ANTLR start "rule__Requirement__Group__1__Impl"
+    // InternalBoilerplateText.g:477:1: rule__Requirement__Group__1__Impl : ( ( rule__Requirement__SystemAssignment_1 ) ) ;
+    public final void rule__Requirement__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:481:1: ( ( ( rule__Requirement__SystemAssignment_1 ) ) )
+            // InternalBoilerplateText.g:482:1: ( ( rule__Requirement__SystemAssignment_1 ) )
+            {
+            // InternalBoilerplateText.g:482:1: ( ( rule__Requirement__SystemAssignment_1 ) )
+            // InternalBoilerplateText.g:483:2: ( rule__Requirement__SystemAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRequirementAccess().getSystemAssignment_1()); 
+            }
+            // InternalBoilerplateText.g:484:2: ( rule__Requirement__SystemAssignment_1 )
+            // InternalBoilerplateText.g:484:3: rule__Requirement__SystemAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__Requirement__SystemAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRequirementAccess().getSystemAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Requirement__Group__1__Impl"
+
+
+    // $ANTLR start "rule__Requirement__Group__2"
+    // InternalBoilerplateText.g:492:1: rule__Requirement__Group__2 : rule__Requirement__Group__2__Impl ;
+    public final void rule__Requirement__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:496:1: ( rule__Requirement__Group__2__Impl )
+            // InternalBoilerplateText.g:497:2: rule__Requirement__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__Requirement__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Requirement__Group__2"
+
+
+    // $ANTLR start "rule__Requirement__Group__2__Impl"
+    // InternalBoilerplateText.g:503:1: rule__Requirement__Group__2__Impl : ( ( rule__Requirement__PredicateAssignment_2 ) ) ;
+    public final void rule__Requirement__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:507:1: ( ( ( rule__Requirement__PredicateAssignment_2 ) ) )
+            // InternalBoilerplateText.g:508:1: ( ( rule__Requirement__PredicateAssignment_2 ) )
+            {
+            // InternalBoilerplateText.g:508:1: ( ( rule__Requirement__PredicateAssignment_2 ) )
+            // InternalBoilerplateText.g:509:2: ( rule__Requirement__PredicateAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRequirementAccess().getPredicateAssignment_2()); 
+            }
+            // InternalBoilerplateText.g:510:2: ( rule__Requirement__PredicateAssignment_2 )
+            // InternalBoilerplateText.g:510:3: rule__Requirement__PredicateAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__Requirement__PredicateAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRequirementAccess().getPredicateAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Requirement__Group__2__Impl"
+
+
+    // $ANTLR start "rule__Requirement__Group_0__0"
+    // InternalBoilerplateText.g:519:1: rule__Requirement__Group_0__0 : rule__Requirement__Group_0__0__Impl rule__Requirement__Group_0__1 ;
+    public final void rule__Requirement__Group_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:523:1: ( rule__Requirement__Group_0__0__Impl rule__Requirement__Group_0__1 )
+            // InternalBoilerplateText.g:524:2: rule__Requirement__Group_0__0__Impl rule__Requirement__Group_0__1
+            {
+            pushFollow(FOLLOW_5);
+            rule__Requirement__Group_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Requirement__Group_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Requirement__Group_0__0"
+
+
+    // $ANTLR start "rule__Requirement__Group_0__0__Impl"
+    // InternalBoilerplateText.g:531:1: rule__Requirement__Group_0__0__Impl : ( ( rule__Requirement__PrefixAssignment_0_0 ) ) ;
+    public final void rule__Requirement__Group_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:535:1: ( ( ( rule__Requirement__PrefixAssignment_0_0 ) ) )
+            // InternalBoilerplateText.g:536:1: ( ( rule__Requirement__PrefixAssignment_0_0 ) )
+            {
+            // InternalBoilerplateText.g:536:1: ( ( rule__Requirement__PrefixAssignment_0_0 ) )
+            // InternalBoilerplateText.g:537:2: ( rule__Requirement__PrefixAssignment_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRequirementAccess().getPrefixAssignment_0_0()); 
+            }
+            // InternalBoilerplateText.g:538:2: ( rule__Requirement__PrefixAssignment_0_0 )
+            // InternalBoilerplateText.g:538:3: rule__Requirement__PrefixAssignment_0_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__Requirement__PrefixAssignment_0_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRequirementAccess().getPrefixAssignment_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Requirement__Group_0__0__Impl"
+
+
+    // $ANTLR start "rule__Requirement__Group_0__1"
+    // InternalBoilerplateText.g:546:1: rule__Requirement__Group_0__1 : rule__Requirement__Group_0__1__Impl ;
+    public final void rule__Requirement__Group_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:550:1: ( rule__Requirement__Group_0__1__Impl )
+            // InternalBoilerplateText.g:551:2: rule__Requirement__Group_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__Requirement__Group_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Requirement__Group_0__1"
+
+
+    // $ANTLR start "rule__Requirement__Group_0__1__Impl"
+    // InternalBoilerplateText.g:557:1: rule__Requirement__Group_0__1__Impl : ( ',' ) ;
+    public final void rule__Requirement__Group_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:561:1: ( ( ',' ) )
+            // InternalBoilerplateText.g:562:1: ( ',' )
+            {
+            // InternalBoilerplateText.g:562:1: ( ',' )
+            // InternalBoilerplateText.g:563:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRequirementAccess().getCommaKeyword_0_1()); 
+            }
+            match(input,11,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRequirementAccess().getCommaKeyword_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Requirement__Group_0__1__Impl"
+
+
+    // $ANTLR start "rule__If__Group__0"
+    // InternalBoilerplateText.g:573:1: rule__If__Group__0 : rule__If__Group__0__Impl rule__If__Group__1 ;
+    public final void rule__If__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:577:1: ( rule__If__Group__0__Impl rule__If__Group__1 )
+            // InternalBoilerplateText.g:578:2: rule__If__Group__0__Impl rule__If__Group__1
+            {
+            pushFollow(FOLLOW_3);
+            rule__If__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__If__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__If__Group__0"
+
+
+    // $ANTLR start "rule__If__Group__0__Impl"
+    // InternalBoilerplateText.g:585:1: rule__If__Group__0__Impl : ( 'if' ) ;
+    public final void rule__If__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:589:1: ( ( 'if' ) )
+            // InternalBoilerplateText.g:590:1: ( 'if' )
+            {
+            // InternalBoilerplateText.g:590:1: ( 'if' )
+            // InternalBoilerplateText.g:591:2: 'if'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getIfAccess().getIfKeyword_0()); 
+            }
+            match(input,12,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getIfAccess().getIfKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__If__Group__0__Impl"
+
+
+    // $ANTLR start "rule__If__Group__1"
+    // InternalBoilerplateText.g:600:1: rule__If__Group__1 : rule__If__Group__1__Impl rule__If__Group__2 ;
+    public final void rule__If__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:604:1: ( rule__If__Group__1__Impl rule__If__Group__2 )
+            // InternalBoilerplateText.g:605:2: rule__If__Group__1__Impl rule__If__Group__2
+            {
+            pushFollow(FOLLOW_6);
+            rule__If__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__If__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__If__Group__1"
+
+
+    // $ANTLR start "rule__If__Group__1__Impl"
+    // InternalBoilerplateText.g:612:1: rule__If__Group__1__Impl : ( ( rule__If__EventAssignment_1 ) ) ;
+    public final void rule__If__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:616:1: ( ( ( rule__If__EventAssignment_1 ) ) )
+            // InternalBoilerplateText.g:617:1: ( ( rule__If__EventAssignment_1 ) )
+            {
+            // InternalBoilerplateText.g:617:1: ( ( rule__If__EventAssignment_1 ) )
+            // InternalBoilerplateText.g:618:2: ( rule__If__EventAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getIfAccess().getEventAssignment_1()); 
+            }
+            // InternalBoilerplateText.g:619:2: ( rule__If__EventAssignment_1 )
+            // InternalBoilerplateText.g:619:3: rule__If__EventAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__If__EventAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getIfAccess().getEventAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__If__Group__1__Impl"
+
+
+    // $ANTLR start "rule__If__Group__2"
+    // InternalBoilerplateText.g:627:1: rule__If__Group__2 : rule__If__Group__2__Impl ;
+    public final void rule__If__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:631:1: ( rule__If__Group__2__Impl )
+            // InternalBoilerplateText.g:632:2: rule__If__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__If__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__If__Group__2"
+
+
+    // $ANTLR start "rule__If__Group__2__Impl"
+    // InternalBoilerplateText.g:638:1: rule__If__Group__2__Impl : ( ( rule__If__Group_2__0 )* ) ;
+    public final void rule__If__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:642:1: ( ( ( rule__If__Group_2__0 )* ) )
+            // InternalBoilerplateText.g:643:1: ( ( rule__If__Group_2__0 )* )
+            {
+            // InternalBoilerplateText.g:643:1: ( ( rule__If__Group_2__0 )* )
+            // InternalBoilerplateText.g:644:2: ( rule__If__Group_2__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getIfAccess().getGroup_2()); 
+            }
+            // InternalBoilerplateText.g:645:2: ( rule__If__Group_2__0 )*
+            loop6:
+            do {
+                int alt6=2;
+                int LA6_0 = input.LA(1);
+
+                if ( (LA6_0==13) ) {
+                    alt6=1;
+                }
+
+
+                switch (alt6) {
+            	case 1 :
+            	    // InternalBoilerplateText.g:645:3: rule__If__Group_2__0
+            	    {
+            	    pushFollow(FOLLOW_7);
+            	    rule__If__Group_2__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop6;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getIfAccess().getGroup_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__If__Group__2__Impl"
+
+
+    // $ANTLR start "rule__If__Group_2__0"
+    // InternalBoilerplateText.g:654:1: rule__If__Group_2__0 : rule__If__Group_2__0__Impl rule__If__Group_2__1 ;
+    public final void rule__If__Group_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:658:1: ( rule__If__Group_2__0__Impl rule__If__Group_2__1 )
+            // InternalBoilerplateText.g:659:2: rule__If__Group_2__0__Impl rule__If__Group_2__1
+            {
+            pushFollow(FOLLOW_3);
+            rule__If__Group_2__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__If__Group_2__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__If__Group_2__0"
+
+
+    // $ANTLR start "rule__If__Group_2__0__Impl"
+    // InternalBoilerplateText.g:666:1: rule__If__Group_2__0__Impl : ( 'and' ) ;
+    public final void rule__If__Group_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:670:1: ( ( 'and' ) )
+            // InternalBoilerplateText.g:671:1: ( 'and' )
+            {
+            // InternalBoilerplateText.g:671:1: ( 'and' )
+            // InternalBoilerplateText.g:672:2: 'and'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getIfAccess().getAndKeyword_2_0()); 
+            }
+            match(input,13,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getIfAccess().getAndKeyword_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__If__Group_2__0__Impl"
+
+
+    // $ANTLR start "rule__If__Group_2__1"
+    // InternalBoilerplateText.g:681:1: rule__If__Group_2__1 : rule__If__Group_2__1__Impl ;
+    public final void rule__If__Group_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:685:1: ( rule__If__Group_2__1__Impl )
+            // InternalBoilerplateText.g:686:2: rule__If__Group_2__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__If__Group_2__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__If__Group_2__1"
+
+
+    // $ANTLR start "rule__If__Group_2__1__Impl"
+    // InternalBoilerplateText.g:692:1: rule__If__Group_2__1__Impl : ( ( rule__If__EventAssignment_2_1 ) ) ;
+    public final void rule__If__Group_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:696:1: ( ( ( rule__If__EventAssignment_2_1 ) ) )
+            // InternalBoilerplateText.g:697:1: ( ( rule__If__EventAssignment_2_1 ) )
+            {
+            // InternalBoilerplateText.g:697:1: ( ( rule__If__EventAssignment_2_1 ) )
+            // InternalBoilerplateText.g:698:2: ( rule__If__EventAssignment_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getIfAccess().getEventAssignment_2_1()); 
+            }
+            // InternalBoilerplateText.g:699:2: ( rule__If__EventAssignment_2_1 )
+            // InternalBoilerplateText.g:699:3: rule__If__EventAssignment_2_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__If__EventAssignment_2_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getIfAccess().getEventAssignment_2_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__If__Group_2__1__Impl"
+
+
+    // $ANTLR start "rule__While__Group__0"
+    // InternalBoilerplateText.g:708:1: rule__While__Group__0 : rule__While__Group__0__Impl rule__While__Group__1 ;
+    public final void rule__While__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:712:1: ( rule__While__Group__0__Impl rule__While__Group__1 )
+            // InternalBoilerplateText.g:713:2: rule__While__Group__0__Impl rule__While__Group__1
+            {
+            pushFollow(FOLLOW_3);
+            rule__While__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__While__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__While__Group__0"
+
+
+    // $ANTLR start "rule__While__Group__0__Impl"
+    // InternalBoilerplateText.g:720:1: rule__While__Group__0__Impl : ( 'while' ) ;
+    public final void rule__While__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:724:1: ( ( 'while' ) )
+            // InternalBoilerplateText.g:725:1: ( 'while' )
+            {
+            // InternalBoilerplateText.g:725:1: ( 'while' )
+            // InternalBoilerplateText.g:726:2: 'while'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWhileAccess().getWhileKeyword_0()); 
+            }
+            match(input,14,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWhileAccess().getWhileKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__While__Group__0__Impl"
+
+
+    // $ANTLR start "rule__While__Group__1"
+    // InternalBoilerplateText.g:735:1: rule__While__Group__1 : rule__While__Group__1__Impl ;
+    public final void rule__While__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:739:1: ( rule__While__Group__1__Impl )
+            // InternalBoilerplateText.g:740:2: rule__While__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__While__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__While__Group__1"
+
+
+    // $ANTLR start "rule__While__Group__1__Impl"
+    // InternalBoilerplateText.g:746:1: rule__While__Group__1__Impl : ( ( rule__While__StateAssignment_1 ) ) ;
+    public final void rule__While__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:750:1: ( ( ( rule__While__StateAssignment_1 ) ) )
+            // InternalBoilerplateText.g:751:1: ( ( rule__While__StateAssignment_1 ) )
+            {
+            // InternalBoilerplateText.g:751:1: ( ( rule__While__StateAssignment_1 ) )
+            // InternalBoilerplateText.g:752:2: ( rule__While__StateAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWhileAccess().getStateAssignment_1()); 
+            }
+            // InternalBoilerplateText.g:753:2: ( rule__While__StateAssignment_1 )
+            // InternalBoilerplateText.g:753:3: rule__While__StateAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__While__StateAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWhileAccess().getStateAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__While__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ShallNotAllow__Group__0"
+    // InternalBoilerplateText.g:762:1: rule__ShallNotAllow__Group__0 : rule__ShallNotAllow__Group__0__Impl rule__ShallNotAllow__Group__1 ;
+    public final void rule__ShallNotAllow__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:766:1: ( rule__ShallNotAllow__Group__0__Impl rule__ShallNotAllow__Group__1 )
+            // InternalBoilerplateText.g:767:2: rule__ShallNotAllow__Group__0__Impl rule__ShallNotAllow__Group__1
+            {
+            pushFollow(FOLLOW_8);
+            rule__ShallNotAllow__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ShallNotAllow__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNotAllow__Group__0"
+
+
+    // $ANTLR start "rule__ShallNotAllow__Group__0__Impl"
+    // InternalBoilerplateText.g:774:1: rule__ShallNotAllow__Group__0__Impl : ( 'shall' ) ;
+    public final void rule__ShallNotAllow__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:778:1: ( ( 'shall' ) )
+            // InternalBoilerplateText.g:779:1: ( 'shall' )
+            {
+            // InternalBoilerplateText.g:779:1: ( 'shall' )
+            // InternalBoilerplateText.g:780:2: 'shall'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallNotAllowAccess().getShallKeyword_0()); 
+            }
+            match(input,15,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallNotAllowAccess().getShallKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNotAllow__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ShallNotAllow__Group__1"
+    // InternalBoilerplateText.g:789:1: rule__ShallNotAllow__Group__1 : rule__ShallNotAllow__Group__1__Impl rule__ShallNotAllow__Group__2 ;
+    public final void rule__ShallNotAllow__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:793:1: ( rule__ShallNotAllow__Group__1__Impl rule__ShallNotAllow__Group__2 )
+            // InternalBoilerplateText.g:794:2: rule__ShallNotAllow__Group__1__Impl rule__ShallNotAllow__Group__2
+            {
+            pushFollow(FOLLOW_9);
+            rule__ShallNotAllow__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ShallNotAllow__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNotAllow__Group__1"
+
+
+    // $ANTLR start "rule__ShallNotAllow__Group__1__Impl"
+    // InternalBoilerplateText.g:801:1: rule__ShallNotAllow__Group__1__Impl : ( ( 'not' ) ) ;
+    public final void rule__ShallNotAllow__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:805:1: ( ( ( 'not' ) ) )
+            // InternalBoilerplateText.g:806:1: ( ( 'not' ) )
+            {
+            // InternalBoilerplateText.g:806:1: ( ( 'not' ) )
+            // InternalBoilerplateText.g:807:2: ( 'not' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallNotAllowAccess().getNotKeyword_1()); 
+            }
+            // InternalBoilerplateText.g:808:2: ( 'not' )
+            // InternalBoilerplateText.g:808:3: 'not'
+            {
+            match(input,16,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallNotAllowAccess().getNotKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNotAllow__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ShallNotAllow__Group__2"
+    // InternalBoilerplateText.g:816:1: rule__ShallNotAllow__Group__2 : rule__ShallNotAllow__Group__2__Impl rule__ShallNotAllow__Group__3 ;
+    public final void rule__ShallNotAllow__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:820:1: ( rule__ShallNotAllow__Group__2__Impl rule__ShallNotAllow__Group__3 )
+            // InternalBoilerplateText.g:821:2: rule__ShallNotAllow__Group__2__Impl rule__ShallNotAllow__Group__3
+            {
+            pushFollow(FOLLOW_3);
+            rule__ShallNotAllow__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ShallNotAllow__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNotAllow__Group__2"
+
+
+    // $ANTLR start "rule__ShallNotAllow__Group__2__Impl"
+    // InternalBoilerplateText.g:828:1: rule__ShallNotAllow__Group__2__Impl : ( ( 'allow' ) ) ;
+    public final void rule__ShallNotAllow__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:832:1: ( ( ( 'allow' ) ) )
+            // InternalBoilerplateText.g:833:1: ( ( 'allow' ) )
+            {
+            // InternalBoilerplateText.g:833:1: ( ( 'allow' ) )
+            // InternalBoilerplateText.g:834:2: ( 'allow' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallNotAllowAccess().getAllowKeyword_2()); 
+            }
+            // InternalBoilerplateText.g:835:2: ( 'allow' )
+            // InternalBoilerplateText.g:835:3: 'allow'
+            {
+            match(input,17,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallNotAllowAccess().getAllowKeyword_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNotAllow__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ShallNotAllow__Group__3"
+    // InternalBoilerplateText.g:843:1: rule__ShallNotAllow__Group__3 : rule__ShallNotAllow__Group__3__Impl ;
+    public final void rule__ShallNotAllow__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:847:1: ( rule__ShallNotAllow__Group__3__Impl )
+            // InternalBoilerplateText.g:848:2: rule__ShallNotAllow__Group__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ShallNotAllow__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNotAllow__Group__3"
+
+
+    // $ANTLR start "rule__ShallNotAllow__Group__3__Impl"
+    // InternalBoilerplateText.g:854:1: rule__ShallNotAllow__Group__3__Impl : ( ( rule__ShallNotAllow__Alternatives_3 ) ) ;
+    public final void rule__ShallNotAllow__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:858:1: ( ( ( rule__ShallNotAllow__Alternatives_3 ) ) )
+            // InternalBoilerplateText.g:859:1: ( ( rule__ShallNotAllow__Alternatives_3 ) )
+            {
+            // InternalBoilerplateText.g:859:1: ( ( rule__ShallNotAllow__Alternatives_3 ) )
+            // InternalBoilerplateText.g:860:2: ( rule__ShallNotAllow__Alternatives_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallNotAllowAccess().getAlternatives_3()); 
+            }
+            // InternalBoilerplateText.g:861:2: ( rule__ShallNotAllow__Alternatives_3 )
+            // InternalBoilerplateText.g:861:3: rule__ShallNotAllow__Alternatives_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__ShallNotAllow__Alternatives_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallNotAllowAccess().getAlternatives_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNotAllow__Group__3__Impl"
+
+
+    // $ANTLR start "rule__ShallNotAllow__Group_3_1__0"
+    // InternalBoilerplateText.g:870:1: rule__ShallNotAllow__Group_3_1__0 : rule__ShallNotAllow__Group_3_1__0__Impl rule__ShallNotAllow__Group_3_1__1 ;
+    public final void rule__ShallNotAllow__Group_3_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:874:1: ( rule__ShallNotAllow__Group_3_1__0__Impl rule__ShallNotAllow__Group_3_1__1 )
+            // InternalBoilerplateText.g:875:2: rule__ShallNotAllow__Group_3_1__0__Impl rule__ShallNotAllow__Group_3_1__1
+            {
+            pushFollow(FOLLOW_10);
+            rule__ShallNotAllow__Group_3_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ShallNotAllow__Group_3_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNotAllow__Group_3_1__0"
+
+
+    // $ANTLR start "rule__ShallNotAllow__Group_3_1__0__Impl"
+    // InternalBoilerplateText.g:882:1: rule__ShallNotAllow__Group_3_1__0__Impl : ( ( rule__ShallNotAllow__EntityAssignment_3_1_0 ) ) ;
+    public final void rule__ShallNotAllow__Group_3_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:886:1: ( ( ( rule__ShallNotAllow__EntityAssignment_3_1_0 ) ) )
+            // InternalBoilerplateText.g:887:1: ( ( rule__ShallNotAllow__EntityAssignment_3_1_0 ) )
+            {
+            // InternalBoilerplateText.g:887:1: ( ( rule__ShallNotAllow__EntityAssignment_3_1_0 ) )
+            // InternalBoilerplateText.g:888:2: ( rule__ShallNotAllow__EntityAssignment_3_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallNotAllowAccess().getEntityAssignment_3_1_0()); 
+            }
+            // InternalBoilerplateText.g:889:2: ( rule__ShallNotAllow__EntityAssignment_3_1_0 )
+            // InternalBoilerplateText.g:889:3: rule__ShallNotAllow__EntityAssignment_3_1_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ShallNotAllow__EntityAssignment_3_1_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallNotAllowAccess().getEntityAssignment_3_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNotAllow__Group_3_1__0__Impl"
+
+
+    // $ANTLR start "rule__ShallNotAllow__Group_3_1__1"
+    // InternalBoilerplateText.g:897:1: rule__ShallNotAllow__Group_3_1__1 : rule__ShallNotAllow__Group_3_1__1__Impl rule__ShallNotAllow__Group_3_1__2 ;
+    public final void rule__ShallNotAllow__Group_3_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:901:1: ( rule__ShallNotAllow__Group_3_1__1__Impl rule__ShallNotAllow__Group_3_1__2 )
+            // InternalBoilerplateText.g:902:2: rule__ShallNotAllow__Group_3_1__1__Impl rule__ShallNotAllow__Group_3_1__2
+            {
+            pushFollow(FOLLOW_3);
+            rule__ShallNotAllow__Group_3_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ShallNotAllow__Group_3_1__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNotAllow__Group_3_1__1"
+
+
+    // $ANTLR start "rule__ShallNotAllow__Group_3_1__1__Impl"
+    // InternalBoilerplateText.g:909:1: rule__ShallNotAllow__Group_3_1__1__Impl : ( 'to' ) ;
+    public final void rule__ShallNotAllow__Group_3_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:913:1: ( ( 'to' ) )
+            // InternalBoilerplateText.g:914:1: ( 'to' )
+            {
+            // InternalBoilerplateText.g:914:1: ( 'to' )
+            // InternalBoilerplateText.g:915:2: 'to'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallNotAllowAccess().getToKeyword_3_1_1()); 
+            }
+            match(input,18,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallNotAllowAccess().getToKeyword_3_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNotAllow__Group_3_1__1__Impl"
+
+
+    // $ANTLR start "rule__ShallNotAllow__Group_3_1__2"
+    // InternalBoilerplateText.g:924:1: rule__ShallNotAllow__Group_3_1__2 : rule__ShallNotAllow__Group_3_1__2__Impl ;
+    public final void rule__ShallNotAllow__Group_3_1__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:928:1: ( rule__ShallNotAllow__Group_3_1__2__Impl )
+            // InternalBoilerplateText.g:929:2: rule__ShallNotAllow__Group_3_1__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ShallNotAllow__Group_3_1__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNotAllow__Group_3_1__2"
+
+
+    // $ANTLR start "rule__ShallNotAllow__Group_3_1__2__Impl"
+    // InternalBoilerplateText.g:935:1: rule__ShallNotAllow__Group_3_1__2__Impl : ( ( rule__ShallNotAllow__ActionPerformedByEntityAssignment_3_1_2 ) ) ;
+    public final void rule__ShallNotAllow__Group_3_1__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:939:1: ( ( ( rule__ShallNotAllow__ActionPerformedByEntityAssignment_3_1_2 ) ) )
+            // InternalBoilerplateText.g:940:1: ( ( rule__ShallNotAllow__ActionPerformedByEntityAssignment_3_1_2 ) )
+            {
+            // InternalBoilerplateText.g:940:1: ( ( rule__ShallNotAllow__ActionPerformedByEntityAssignment_3_1_2 ) )
+            // InternalBoilerplateText.g:941:2: ( rule__ShallNotAllow__ActionPerformedByEntityAssignment_3_1_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallNotAllowAccess().getActionPerformedByEntityAssignment_3_1_2()); 
+            }
+            // InternalBoilerplateText.g:942:2: ( rule__ShallNotAllow__ActionPerformedByEntityAssignment_3_1_2 )
+            // InternalBoilerplateText.g:942:3: rule__ShallNotAllow__ActionPerformedByEntityAssignment_3_1_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__ShallNotAllow__ActionPerformedByEntityAssignment_3_1_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallNotAllowAccess().getActionPerformedByEntityAssignment_3_1_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNotAllow__Group_3_1__2__Impl"
+
+
+    // $ANTLR start "rule__ShallAllow__Group__0"
+    // InternalBoilerplateText.g:951:1: rule__ShallAllow__Group__0 : rule__ShallAllow__Group__0__Impl rule__ShallAllow__Group__1 ;
+    public final void rule__ShallAllow__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:955:1: ( rule__ShallAllow__Group__0__Impl rule__ShallAllow__Group__1 )
+            // InternalBoilerplateText.g:956:2: rule__ShallAllow__Group__0__Impl rule__ShallAllow__Group__1
+            {
+            pushFollow(FOLLOW_9);
+            rule__ShallAllow__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ShallAllow__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallAllow__Group__0"
+
+
+    // $ANTLR start "rule__ShallAllow__Group__0__Impl"
+    // InternalBoilerplateText.g:963:1: rule__ShallAllow__Group__0__Impl : ( 'shall' ) ;
+    public final void rule__ShallAllow__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:967:1: ( ( 'shall' ) )
+            // InternalBoilerplateText.g:968:1: ( 'shall' )
+            {
+            // InternalBoilerplateText.g:968:1: ( 'shall' )
+            // InternalBoilerplateText.g:969:2: 'shall'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallAllowAccess().getShallKeyword_0()); 
+            }
+            match(input,15,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallAllowAccess().getShallKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallAllow__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ShallAllow__Group__1"
+    // InternalBoilerplateText.g:978:1: rule__ShallAllow__Group__1 : rule__ShallAllow__Group__1__Impl rule__ShallAllow__Group__2 ;
+    public final void rule__ShallAllow__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:982:1: ( rule__ShallAllow__Group__1__Impl rule__ShallAllow__Group__2 )
+            // InternalBoilerplateText.g:983:2: rule__ShallAllow__Group__1__Impl rule__ShallAllow__Group__2
+            {
+            pushFollow(FOLLOW_3);
+            rule__ShallAllow__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ShallAllow__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallAllow__Group__1"
+
+
+    // $ANTLR start "rule__ShallAllow__Group__1__Impl"
+    // InternalBoilerplateText.g:990:1: rule__ShallAllow__Group__1__Impl : ( ( 'allow' ) ) ;
+    public final void rule__ShallAllow__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:994:1: ( ( ( 'allow' ) ) )
+            // InternalBoilerplateText.g:995:1: ( ( 'allow' ) )
+            {
+            // InternalBoilerplateText.g:995:1: ( ( 'allow' ) )
+            // InternalBoilerplateText.g:996:2: ( 'allow' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallAllowAccess().getAllowKeyword_1()); 
+            }
+            // InternalBoilerplateText.g:997:2: ( 'allow' )
+            // InternalBoilerplateText.g:997:3: 'allow'
+            {
+            match(input,17,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallAllowAccess().getAllowKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallAllow__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ShallAllow__Group__2"
+    // InternalBoilerplateText.g:1005:1: rule__ShallAllow__Group__2 : rule__ShallAllow__Group__2__Impl ;
+    public final void rule__ShallAllow__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1009:1: ( rule__ShallAllow__Group__2__Impl )
+            // InternalBoilerplateText.g:1010:2: rule__ShallAllow__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ShallAllow__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallAllow__Group__2"
+
+
+    // $ANTLR start "rule__ShallAllow__Group__2__Impl"
+    // InternalBoilerplateText.g:1016:1: rule__ShallAllow__Group__2__Impl : ( ( rule__ShallAllow__Alternatives_2 ) ) ;
+    public final void rule__ShallAllow__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1020:1: ( ( ( rule__ShallAllow__Alternatives_2 ) ) )
+            // InternalBoilerplateText.g:1021:1: ( ( rule__ShallAllow__Alternatives_2 ) )
+            {
+            // InternalBoilerplateText.g:1021:1: ( ( rule__ShallAllow__Alternatives_2 ) )
+            // InternalBoilerplateText.g:1022:2: ( rule__ShallAllow__Alternatives_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallAllowAccess().getAlternatives_2()); 
+            }
+            // InternalBoilerplateText.g:1023:2: ( rule__ShallAllow__Alternatives_2 )
+            // InternalBoilerplateText.g:1023:3: rule__ShallAllow__Alternatives_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__ShallAllow__Alternatives_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallAllowAccess().getAlternatives_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallAllow__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ShallAllow__Group_2_1__0"
+    // InternalBoilerplateText.g:1032:1: rule__ShallAllow__Group_2_1__0 : rule__ShallAllow__Group_2_1__0__Impl rule__ShallAllow__Group_2_1__1 ;
+    public final void rule__ShallAllow__Group_2_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1036:1: ( rule__ShallAllow__Group_2_1__0__Impl rule__ShallAllow__Group_2_1__1 )
+            // InternalBoilerplateText.g:1037:2: rule__ShallAllow__Group_2_1__0__Impl rule__ShallAllow__Group_2_1__1
+            {
+            pushFollow(FOLLOW_10);
+            rule__ShallAllow__Group_2_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ShallAllow__Group_2_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallAllow__Group_2_1__0"
+
+
+    // $ANTLR start "rule__ShallAllow__Group_2_1__0__Impl"
+    // InternalBoilerplateText.g:1044:1: rule__ShallAllow__Group_2_1__0__Impl : ( ( rule__ShallAllow__EntityAssignment_2_1_0 ) ) ;
+    public final void rule__ShallAllow__Group_2_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1048:1: ( ( ( rule__ShallAllow__EntityAssignment_2_1_0 ) ) )
+            // InternalBoilerplateText.g:1049:1: ( ( rule__ShallAllow__EntityAssignment_2_1_0 ) )
+            {
+            // InternalBoilerplateText.g:1049:1: ( ( rule__ShallAllow__EntityAssignment_2_1_0 ) )
+            // InternalBoilerplateText.g:1050:2: ( rule__ShallAllow__EntityAssignment_2_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallAllowAccess().getEntityAssignment_2_1_0()); 
+            }
+            // InternalBoilerplateText.g:1051:2: ( rule__ShallAllow__EntityAssignment_2_1_0 )
+            // InternalBoilerplateText.g:1051:3: rule__ShallAllow__EntityAssignment_2_1_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ShallAllow__EntityAssignment_2_1_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallAllowAccess().getEntityAssignment_2_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallAllow__Group_2_1__0__Impl"
+
+
+    // $ANTLR start "rule__ShallAllow__Group_2_1__1"
+    // InternalBoilerplateText.g:1059:1: rule__ShallAllow__Group_2_1__1 : rule__ShallAllow__Group_2_1__1__Impl rule__ShallAllow__Group_2_1__2 ;
+    public final void rule__ShallAllow__Group_2_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1063:1: ( rule__ShallAllow__Group_2_1__1__Impl rule__ShallAllow__Group_2_1__2 )
+            // InternalBoilerplateText.g:1064:2: rule__ShallAllow__Group_2_1__1__Impl rule__ShallAllow__Group_2_1__2
+            {
+            pushFollow(FOLLOW_3);
+            rule__ShallAllow__Group_2_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ShallAllow__Group_2_1__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallAllow__Group_2_1__1"
+
+
+    // $ANTLR start "rule__ShallAllow__Group_2_1__1__Impl"
+    // InternalBoilerplateText.g:1071:1: rule__ShallAllow__Group_2_1__1__Impl : ( 'to' ) ;
+    public final void rule__ShallAllow__Group_2_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1075:1: ( ( 'to' ) )
+            // InternalBoilerplateText.g:1076:1: ( 'to' )
+            {
+            // InternalBoilerplateText.g:1076:1: ( 'to' )
+            // InternalBoilerplateText.g:1077:2: 'to'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallAllowAccess().getToKeyword_2_1_1()); 
+            }
+            match(input,18,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallAllowAccess().getToKeyword_2_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallAllow__Group_2_1__1__Impl"
+
+
+    // $ANTLR start "rule__ShallAllow__Group_2_1__2"
+    // InternalBoilerplateText.g:1086:1: rule__ShallAllow__Group_2_1__2 : rule__ShallAllow__Group_2_1__2__Impl ;
+    public final void rule__ShallAllow__Group_2_1__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1090:1: ( rule__ShallAllow__Group_2_1__2__Impl )
+            // InternalBoilerplateText.g:1091:2: rule__ShallAllow__Group_2_1__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ShallAllow__Group_2_1__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallAllow__Group_2_1__2"
+
+
+    // $ANTLR start "rule__ShallAllow__Group_2_1__2__Impl"
+    // InternalBoilerplateText.g:1097:1: rule__ShallAllow__Group_2_1__2__Impl : ( ( rule__ShallAllow__ActionPerformedByEntityAssignment_2_1_2 ) ) ;
+    public final void rule__ShallAllow__Group_2_1__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1101:1: ( ( ( rule__ShallAllow__ActionPerformedByEntityAssignment_2_1_2 ) ) )
+            // InternalBoilerplateText.g:1102:1: ( ( rule__ShallAllow__ActionPerformedByEntityAssignment_2_1_2 ) )
+            {
+            // InternalBoilerplateText.g:1102:1: ( ( rule__ShallAllow__ActionPerformedByEntityAssignment_2_1_2 ) )
+            // InternalBoilerplateText.g:1103:2: ( rule__ShallAllow__ActionPerformedByEntityAssignment_2_1_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallAllowAccess().getActionPerformedByEntityAssignment_2_1_2()); 
+            }
+            // InternalBoilerplateText.g:1104:2: ( rule__ShallAllow__ActionPerformedByEntityAssignment_2_1_2 )
+            // InternalBoilerplateText.g:1104:3: rule__ShallAllow__ActionPerformedByEntityAssignment_2_1_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__ShallAllow__ActionPerformedByEntityAssignment_2_1_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallAllowAccess().getActionPerformedByEntityAssignment_2_1_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallAllow__Group_2_1__2__Impl"
+
+
+    // $ANTLR start "rule__ShallNot__Group__0"
+    // InternalBoilerplateText.g:1113:1: rule__ShallNot__Group__0 : rule__ShallNot__Group__0__Impl rule__ShallNot__Group__1 ;
+    public final void rule__ShallNot__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1117:1: ( rule__ShallNot__Group__0__Impl rule__ShallNot__Group__1 )
+            // InternalBoilerplateText.g:1118:2: rule__ShallNot__Group__0__Impl rule__ShallNot__Group__1
+            {
+            pushFollow(FOLLOW_8);
+            rule__ShallNot__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ShallNot__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNot__Group__0"
+
+
+    // $ANTLR start "rule__ShallNot__Group__0__Impl"
+    // InternalBoilerplateText.g:1125:1: rule__ShallNot__Group__0__Impl : ( 'shall' ) ;
+    public final void rule__ShallNot__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1129:1: ( ( 'shall' ) )
+            // InternalBoilerplateText.g:1130:1: ( 'shall' )
+            {
+            // InternalBoilerplateText.g:1130:1: ( 'shall' )
+            // InternalBoilerplateText.g:1131:2: 'shall'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallNotAccess().getShallKeyword_0()); 
+            }
+            match(input,15,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallNotAccess().getShallKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNot__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ShallNot__Group__1"
+    // InternalBoilerplateText.g:1140:1: rule__ShallNot__Group__1 : rule__ShallNot__Group__1__Impl rule__ShallNot__Group__2 ;
+    public final void rule__ShallNot__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1144:1: ( rule__ShallNot__Group__1__Impl rule__ShallNot__Group__2 )
+            // InternalBoilerplateText.g:1145:2: rule__ShallNot__Group__1__Impl rule__ShallNot__Group__2
+            {
+            pushFollow(FOLLOW_11);
+            rule__ShallNot__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ShallNot__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNot__Group__1"
+
+
+    // $ANTLR start "rule__ShallNot__Group__1__Impl"
+    // InternalBoilerplateText.g:1152:1: rule__ShallNot__Group__1__Impl : ( ( 'not' ) ) ;
+    public final void rule__ShallNot__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1156:1: ( ( ( 'not' ) ) )
+            // InternalBoilerplateText.g:1157:1: ( ( 'not' ) )
+            {
+            // InternalBoilerplateText.g:1157:1: ( ( 'not' ) )
+            // InternalBoilerplateText.g:1158:2: ( 'not' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallNotAccess().getNotKeyword_1()); 
+            }
+            // InternalBoilerplateText.g:1159:2: ( 'not' )
+            // InternalBoilerplateText.g:1159:3: 'not'
+            {
+            match(input,16,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallNotAccess().getNotKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNot__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ShallNot__Group__2"
+    // InternalBoilerplateText.g:1167:1: rule__ShallNot__Group__2 : rule__ShallNot__Group__2__Impl rule__ShallNot__Group__3 ;
+    public final void rule__ShallNot__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1171:1: ( rule__ShallNot__Group__2__Impl rule__ShallNot__Group__3 )
+            // InternalBoilerplateText.g:1172:2: rule__ShallNot__Group__2__Impl rule__ShallNot__Group__3
+            {
+            pushFollow(FOLLOW_11);
+            rule__ShallNot__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ShallNot__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNot__Group__2"
+
+
+    // $ANTLR start "rule__ShallNot__Group__2__Impl"
+    // InternalBoilerplateText.g:1179:1: rule__ShallNot__Group__2__Impl : ( ( rule__ShallNot__Group_2__0 )? ) ;
+    public final void rule__ShallNot__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1183:1: ( ( ( rule__ShallNot__Group_2__0 )? ) )
+            // InternalBoilerplateText.g:1184:1: ( ( rule__ShallNot__Group_2__0 )? )
+            {
+            // InternalBoilerplateText.g:1184:1: ( ( rule__ShallNot__Group_2__0 )? )
+            // InternalBoilerplateText.g:1185:2: ( rule__ShallNot__Group_2__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallNotAccess().getGroup_2()); 
+            }
+            // InternalBoilerplateText.g:1186:2: ( rule__ShallNot__Group_2__0 )?
+            int alt7=2;
+            int LA7_0 = input.LA(1);
+
+            if ( (LA7_0==19) ) {
+                alt7=1;
+            }
+            switch (alt7) {
+                case 1 :
+                    // InternalBoilerplateText.g:1186:3: rule__ShallNot__Group_2__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ShallNot__Group_2__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallNotAccess().getGroup_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNot__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ShallNot__Group__3"
+    // InternalBoilerplateText.g:1194:1: rule__ShallNot__Group__3 : rule__ShallNot__Group__3__Impl ;
+    public final void rule__ShallNot__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1198:1: ( rule__ShallNot__Group__3__Impl )
+            // InternalBoilerplateText.g:1199:2: rule__ShallNot__Group__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ShallNot__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNot__Group__3"
+
+
+    // $ANTLR start "rule__ShallNot__Group__3__Impl"
+    // InternalBoilerplateText.g:1205:1: rule__ShallNot__Group__3__Impl : ( ( rule__ShallNot__ActionAssignment_3 ) ) ;
+    public final void rule__ShallNot__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1209:1: ( ( ( rule__ShallNot__ActionAssignment_3 ) ) )
+            // InternalBoilerplateText.g:1210:1: ( ( rule__ShallNot__ActionAssignment_3 ) )
+            {
+            // InternalBoilerplateText.g:1210:1: ( ( rule__ShallNot__ActionAssignment_3 ) )
+            // InternalBoilerplateText.g:1211:2: ( rule__ShallNot__ActionAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallNotAccess().getActionAssignment_3()); 
+            }
+            // InternalBoilerplateText.g:1212:2: ( rule__ShallNot__ActionAssignment_3 )
+            // InternalBoilerplateText.g:1212:3: rule__ShallNot__ActionAssignment_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__ShallNot__ActionAssignment_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallNotAccess().getActionAssignment_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNot__Group__3__Impl"
+
+
+    // $ANTLR start "rule__ShallNot__Group_2__0"
+    // InternalBoilerplateText.g:1221:1: rule__ShallNot__Group_2__0 : rule__ShallNot__Group_2__0__Impl rule__ShallNot__Group_2__1 ;
+    public final void rule__ShallNot__Group_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1225:1: ( rule__ShallNot__Group_2__0__Impl rule__ShallNot__Group_2__1 )
+            // InternalBoilerplateText.g:1226:2: rule__ShallNot__Group_2__0__Impl rule__ShallNot__Group_2__1
+            {
+            pushFollow(FOLLOW_12);
+            rule__ShallNot__Group_2__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ShallNot__Group_2__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNot__Group_2__0"
+
+
+    // $ANTLR start "rule__ShallNot__Group_2__0__Impl"
+    // InternalBoilerplateText.g:1233:1: rule__ShallNot__Group_2__0__Impl : ( 'be' ) ;
+    public final void rule__ShallNot__Group_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1237:1: ( ( 'be' ) )
+            // InternalBoilerplateText.g:1238:1: ( 'be' )
+            {
+            // InternalBoilerplateText.g:1238:1: ( 'be' )
+            // InternalBoilerplateText.g:1239:2: 'be'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallNotAccess().getBeKeyword_2_0()); 
+            }
+            match(input,19,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallNotAccess().getBeKeyword_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNot__Group_2__0__Impl"
+
+
+    // $ANTLR start "rule__ShallNot__Group_2__1"
+    // InternalBoilerplateText.g:1248:1: rule__ShallNot__Group_2__1 : rule__ShallNot__Group_2__1__Impl rule__ShallNot__Group_2__2 ;
+    public final void rule__ShallNot__Group_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1252:1: ( rule__ShallNot__Group_2__1__Impl rule__ShallNot__Group_2__2 )
+            // InternalBoilerplateText.g:1253:2: rule__ShallNot__Group_2__1__Impl rule__ShallNot__Group_2__2
+            {
+            pushFollow(FOLLOW_10);
+            rule__ShallNot__Group_2__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ShallNot__Group_2__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNot__Group_2__1"
+
+
+    // $ANTLR start "rule__ShallNot__Group_2__1__Impl"
+    // InternalBoilerplateText.g:1260:1: rule__ShallNot__Group_2__1__Impl : ( ( 'able' ) ) ;
+    public final void rule__ShallNot__Group_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1264:1: ( ( ( 'able' ) ) )
+            // InternalBoilerplateText.g:1265:1: ( ( 'able' ) )
+            {
+            // InternalBoilerplateText.g:1265:1: ( ( 'able' ) )
+            // InternalBoilerplateText.g:1266:2: ( 'able' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallNotAccess().getAbleKeyword_2_1()); 
+            }
+            // InternalBoilerplateText.g:1267:2: ( 'able' )
+            // InternalBoilerplateText.g:1267:3: 'able'
+            {
+            match(input,20,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallNotAccess().getAbleKeyword_2_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNot__Group_2__1__Impl"
+
+
+    // $ANTLR start "rule__ShallNot__Group_2__2"
+    // InternalBoilerplateText.g:1275:1: rule__ShallNot__Group_2__2 : rule__ShallNot__Group_2__2__Impl ;
+    public final void rule__ShallNot__Group_2__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1279:1: ( rule__ShallNot__Group_2__2__Impl )
+            // InternalBoilerplateText.g:1280:2: rule__ShallNot__Group_2__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ShallNot__Group_2__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNot__Group_2__2"
+
+
+    // $ANTLR start "rule__ShallNot__Group_2__2__Impl"
+    // InternalBoilerplateText.g:1286:1: rule__ShallNot__Group_2__2__Impl : ( ( 'to' ) ) ;
+    public final void rule__ShallNot__Group_2__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1290:1: ( ( ( 'to' ) ) )
+            // InternalBoilerplateText.g:1291:1: ( ( 'to' ) )
+            {
+            // InternalBoilerplateText.g:1291:1: ( ( 'to' ) )
+            // InternalBoilerplateText.g:1292:2: ( 'to' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallNotAccess().getToKeyword_2_2()); 
+            }
+            // InternalBoilerplateText.g:1293:2: ( 'to' )
+            // InternalBoilerplateText.g:1293:3: 'to'
+            {
+            match(input,18,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallNotAccess().getToKeyword_2_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNot__Group_2__2__Impl"
+
+
+    // $ANTLR start "rule__Shall__Group__0"
+    // InternalBoilerplateText.g:1302:1: rule__Shall__Group__0 : rule__Shall__Group__0__Impl rule__Shall__Group__1 ;
+    public final void rule__Shall__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1306:1: ( rule__Shall__Group__0__Impl rule__Shall__Group__1 )
+            // InternalBoilerplateText.g:1307:2: rule__Shall__Group__0__Impl rule__Shall__Group__1
+            {
+            pushFollow(FOLLOW_11);
+            rule__Shall__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Shall__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Shall__Group__0"
+
+
+    // $ANTLR start "rule__Shall__Group__0__Impl"
+    // InternalBoilerplateText.g:1314:1: rule__Shall__Group__0__Impl : ( 'shall' ) ;
+    public final void rule__Shall__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1318:1: ( ( 'shall' ) )
+            // InternalBoilerplateText.g:1319:1: ( 'shall' )
+            {
+            // InternalBoilerplateText.g:1319:1: ( 'shall' )
+            // InternalBoilerplateText.g:1320:2: 'shall'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallAccess().getShallKeyword_0()); 
+            }
+            match(input,15,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallAccess().getShallKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Shall__Group__0__Impl"
+
+
+    // $ANTLR start "rule__Shall__Group__1"
+    // InternalBoilerplateText.g:1329:1: rule__Shall__Group__1 : rule__Shall__Group__1__Impl rule__Shall__Group__2 ;
+    public final void rule__Shall__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1333:1: ( rule__Shall__Group__1__Impl rule__Shall__Group__2 )
+            // InternalBoilerplateText.g:1334:2: rule__Shall__Group__1__Impl rule__Shall__Group__2
+            {
+            pushFollow(FOLLOW_11);
+            rule__Shall__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Shall__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Shall__Group__1"
+
+
+    // $ANTLR start "rule__Shall__Group__1__Impl"
+    // InternalBoilerplateText.g:1341:1: rule__Shall__Group__1__Impl : ( ( rule__Shall__Group_1__0 )? ) ;
+    public final void rule__Shall__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1345:1: ( ( ( rule__Shall__Group_1__0 )? ) )
+            // InternalBoilerplateText.g:1346:1: ( ( rule__Shall__Group_1__0 )? )
+            {
+            // InternalBoilerplateText.g:1346:1: ( ( rule__Shall__Group_1__0 )? )
+            // InternalBoilerplateText.g:1347:2: ( rule__Shall__Group_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallAccess().getGroup_1()); 
+            }
+            // InternalBoilerplateText.g:1348:2: ( rule__Shall__Group_1__0 )?
+            int alt8=2;
+            int LA8_0 = input.LA(1);
+
+            if ( (LA8_0==19) ) {
+                alt8=1;
+            }
+            switch (alt8) {
+                case 1 :
+                    // InternalBoilerplateText.g:1348:3: rule__Shall__Group_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__Shall__Group_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallAccess().getGroup_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Shall__Group__1__Impl"
+
+
+    // $ANTLR start "rule__Shall__Group__2"
+    // InternalBoilerplateText.g:1356:1: rule__Shall__Group__2 : rule__Shall__Group__2__Impl ;
+    public final void rule__Shall__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1360:1: ( rule__Shall__Group__2__Impl )
+            // InternalBoilerplateText.g:1361:2: rule__Shall__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__Shall__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Shall__Group__2"
+
+
+    // $ANTLR start "rule__Shall__Group__2__Impl"
+    // InternalBoilerplateText.g:1367:1: rule__Shall__Group__2__Impl : ( ( rule__Shall__ActionAssignment_2 ) ) ;
+    public final void rule__Shall__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1371:1: ( ( ( rule__Shall__ActionAssignment_2 ) ) )
+            // InternalBoilerplateText.g:1372:1: ( ( rule__Shall__ActionAssignment_2 ) )
+            {
+            // InternalBoilerplateText.g:1372:1: ( ( rule__Shall__ActionAssignment_2 ) )
+            // InternalBoilerplateText.g:1373:2: ( rule__Shall__ActionAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallAccess().getActionAssignment_2()); 
+            }
+            // InternalBoilerplateText.g:1374:2: ( rule__Shall__ActionAssignment_2 )
+            // InternalBoilerplateText.g:1374:3: rule__Shall__ActionAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__Shall__ActionAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallAccess().getActionAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Shall__Group__2__Impl"
+
+
+    // $ANTLR start "rule__Shall__Group_1__0"
+    // InternalBoilerplateText.g:1383:1: rule__Shall__Group_1__0 : rule__Shall__Group_1__0__Impl ;
+    public final void rule__Shall__Group_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1387:1: ( rule__Shall__Group_1__0__Impl )
+            // InternalBoilerplateText.g:1388:2: rule__Shall__Group_1__0__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__Shall__Group_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Shall__Group_1__0"
+
+
+    // $ANTLR start "rule__Shall__Group_1__0__Impl"
+    // InternalBoilerplateText.g:1394:1: rule__Shall__Group_1__0__Impl : ( ( rule__Shall__Group_1_0__0 ) ) ;
+    public final void rule__Shall__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1398:1: ( ( ( rule__Shall__Group_1_0__0 ) ) )
+            // InternalBoilerplateText.g:1399:1: ( ( rule__Shall__Group_1_0__0 ) )
+            {
+            // InternalBoilerplateText.g:1399:1: ( ( rule__Shall__Group_1_0__0 ) )
+            // InternalBoilerplateText.g:1400:2: ( rule__Shall__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallAccess().getGroup_1_0()); 
+            }
+            // InternalBoilerplateText.g:1401:2: ( rule__Shall__Group_1_0__0 )
+            // InternalBoilerplateText.g:1401:3: rule__Shall__Group_1_0__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__Shall__Group_1_0__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallAccess().getGroup_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Shall__Group_1__0__Impl"
+
+
+    // $ANTLR start "rule__Shall__Group_1_0__0"
+    // InternalBoilerplateText.g:1410:1: rule__Shall__Group_1_0__0 : rule__Shall__Group_1_0__0__Impl rule__Shall__Group_1_0__1 ;
+    public final void rule__Shall__Group_1_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1414:1: ( rule__Shall__Group_1_0__0__Impl rule__Shall__Group_1_0__1 )
+            // InternalBoilerplateText.g:1415:2: rule__Shall__Group_1_0__0__Impl rule__Shall__Group_1_0__1
+            {
+            pushFollow(FOLLOW_12);
+            rule__Shall__Group_1_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Shall__Group_1_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Shall__Group_1_0__0"
+
+
+    // $ANTLR start "rule__Shall__Group_1_0__0__Impl"
+    // InternalBoilerplateText.g:1422:1: rule__Shall__Group_1_0__0__Impl : ( 'be' ) ;
+    public final void rule__Shall__Group_1_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1426:1: ( ( 'be' ) )
+            // InternalBoilerplateText.g:1427:1: ( 'be' )
+            {
+            // InternalBoilerplateText.g:1427:1: ( 'be' )
+            // InternalBoilerplateText.g:1428:2: 'be'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallAccess().getBeKeyword_1_0_0()); 
+            }
+            match(input,19,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallAccess().getBeKeyword_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Shall__Group_1_0__0__Impl"
+
+
+    // $ANTLR start "rule__Shall__Group_1_0__1"
+    // InternalBoilerplateText.g:1437:1: rule__Shall__Group_1_0__1 : rule__Shall__Group_1_0__1__Impl rule__Shall__Group_1_0__2 ;
+    public final void rule__Shall__Group_1_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1441:1: ( rule__Shall__Group_1_0__1__Impl rule__Shall__Group_1_0__2 )
+            // InternalBoilerplateText.g:1442:2: rule__Shall__Group_1_0__1__Impl rule__Shall__Group_1_0__2
+            {
+            pushFollow(FOLLOW_10);
+            rule__Shall__Group_1_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Shall__Group_1_0__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Shall__Group_1_0__1"
+
+
+    // $ANTLR start "rule__Shall__Group_1_0__1__Impl"
+    // InternalBoilerplateText.g:1449:1: rule__Shall__Group_1_0__1__Impl : ( ( 'able' ) ) ;
+    public final void rule__Shall__Group_1_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1453:1: ( ( ( 'able' ) ) )
+            // InternalBoilerplateText.g:1454:1: ( ( 'able' ) )
+            {
+            // InternalBoilerplateText.g:1454:1: ( ( 'able' ) )
+            // InternalBoilerplateText.g:1455:2: ( 'able' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallAccess().getAbleKeyword_1_0_1()); 
+            }
+            // InternalBoilerplateText.g:1456:2: ( 'able' )
+            // InternalBoilerplateText.g:1456:3: 'able'
+            {
+            match(input,20,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallAccess().getAbleKeyword_1_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Shall__Group_1_0__1__Impl"
+
+
+    // $ANTLR start "rule__Shall__Group_1_0__2"
+    // InternalBoilerplateText.g:1464:1: rule__Shall__Group_1_0__2 : rule__Shall__Group_1_0__2__Impl ;
+    public final void rule__Shall__Group_1_0__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1468:1: ( rule__Shall__Group_1_0__2__Impl )
+            // InternalBoilerplateText.g:1469:2: rule__Shall__Group_1_0__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__Shall__Group_1_0__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Shall__Group_1_0__2"
+
+
+    // $ANTLR start "rule__Shall__Group_1_0__2__Impl"
+    // InternalBoilerplateText.g:1475:1: rule__Shall__Group_1_0__2__Impl : ( ( 'to' ) ) ;
+    public final void rule__Shall__Group_1_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1479:1: ( ( ( 'to' ) ) )
+            // InternalBoilerplateText.g:1480:1: ( ( 'to' ) )
+            {
+            // InternalBoilerplateText.g:1480:1: ( ( 'to' ) )
+            // InternalBoilerplateText.g:1481:2: ( 'to' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallAccess().getToKeyword_1_0_2()); 
+            }
+            // InternalBoilerplateText.g:1482:2: ( 'to' )
+            // InternalBoilerplateText.g:1482:3: 'to'
+            {
+            match(input,18,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallAccess().getToKeyword_1_0_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Shall__Group_1_0__2__Impl"
+
+
+    // $ANTLR start "rule__Model__ModelAssignment"
+    // InternalBoilerplateText.g:1491:1: rule__Model__ModelAssignment : ( ruleRequirement ) ;
+    public final void rule__Model__ModelAssignment() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1495:1: ( ( ruleRequirement ) )
+            // InternalBoilerplateText.g:1496:2: ( ruleRequirement )
+            {
+            // InternalBoilerplateText.g:1496:2: ( ruleRequirement )
+            // InternalBoilerplateText.g:1497:3: ruleRequirement
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getModelAccess().getModelRequirementParserRuleCall_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleRequirement();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getModelAccess().getModelRequirementParserRuleCall_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Model__ModelAssignment"
+
+
+    // $ANTLR start "rule__Requirement__PrefixAssignment_0_0"
+    // InternalBoilerplateText.g:1506:1: rule__Requirement__PrefixAssignment_0_0 : ( rulePrefix ) ;
+    public final void rule__Requirement__PrefixAssignment_0_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1510:1: ( ( rulePrefix ) )
+            // InternalBoilerplateText.g:1511:2: ( rulePrefix )
+            {
+            // InternalBoilerplateText.g:1511:2: ( rulePrefix )
+            // InternalBoilerplateText.g:1512:3: rulePrefix
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRequirementAccess().getPrefixPrefixParserRuleCall_0_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            rulePrefix();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRequirementAccess().getPrefixPrefixParserRuleCall_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Requirement__PrefixAssignment_0_0"
+
+
+    // $ANTLR start "rule__Requirement__SystemAssignment_1"
+    // InternalBoilerplateText.g:1521:1: rule__Requirement__SystemAssignment_1 : ( ruleSubject ) ;
+    public final void rule__Requirement__SystemAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1525:1: ( ( ruleSubject ) )
+            // InternalBoilerplateText.g:1526:2: ( ruleSubject )
+            {
+            // InternalBoilerplateText.g:1526:2: ( ruleSubject )
+            // InternalBoilerplateText.g:1527:3: ruleSubject
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRequirementAccess().getSystemSubjectParserRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleSubject();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRequirementAccess().getSystemSubjectParserRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Requirement__SystemAssignment_1"
+
+
+    // $ANTLR start "rule__Requirement__PredicateAssignment_2"
+    // InternalBoilerplateText.g:1536:1: rule__Requirement__PredicateAssignment_2 : ( rulePredicate ) ;
+    public final void rule__Requirement__PredicateAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1540:1: ( ( rulePredicate ) )
+            // InternalBoilerplateText.g:1541:2: ( rulePredicate )
+            {
+            // InternalBoilerplateText.g:1541:2: ( rulePredicate )
+            // InternalBoilerplateText.g:1542:3: rulePredicate
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRequirementAccess().getPredicatePredicateParserRuleCall_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            rulePredicate();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRequirementAccess().getPredicatePredicateParserRuleCall_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Requirement__PredicateAssignment_2"
+
+
+    // $ANTLR start "rule__Subject__SystemAssignment"
+    // InternalBoilerplateText.g:1551:1: rule__Subject__SystemAssignment : ( RULE_STRING ) ;
+    public final void rule__Subject__SystemAssignment() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1555:1: ( ( RULE_STRING ) )
+            // InternalBoilerplateText.g:1556:2: ( RULE_STRING )
+            {
+            // InternalBoilerplateText.g:1556:2: ( RULE_STRING )
+            // InternalBoilerplateText.g:1557:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSubjectAccess().getSystemSTRINGTerminalRuleCall_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSubjectAccess().getSystemSTRINGTerminalRuleCall_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Subject__SystemAssignment"
+
+
+    // $ANTLR start "rule__If__EventAssignment_1"
+    // InternalBoilerplateText.g:1566:1: rule__If__EventAssignment_1 : ( RULE_STRING ) ;
+    public final void rule__If__EventAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1570:1: ( ( RULE_STRING ) )
+            // InternalBoilerplateText.g:1571:2: ( RULE_STRING )
+            {
+            // InternalBoilerplateText.g:1571:2: ( RULE_STRING )
+            // InternalBoilerplateText.g:1572:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getIfAccess().getEventSTRINGTerminalRuleCall_1_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getIfAccess().getEventSTRINGTerminalRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__If__EventAssignment_1"
+
+
+    // $ANTLR start "rule__If__EventAssignment_2_1"
+    // InternalBoilerplateText.g:1581:1: rule__If__EventAssignment_2_1 : ( RULE_STRING ) ;
+    public final void rule__If__EventAssignment_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1585:1: ( ( RULE_STRING ) )
+            // InternalBoilerplateText.g:1586:2: ( RULE_STRING )
+            {
+            // InternalBoilerplateText.g:1586:2: ( RULE_STRING )
+            // InternalBoilerplateText.g:1587:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getIfAccess().getEventSTRINGTerminalRuleCall_2_1_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getIfAccess().getEventSTRINGTerminalRuleCall_2_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__If__EventAssignment_2_1"
+
+
+    // $ANTLR start "rule__While__StateAssignment_1"
+    // InternalBoilerplateText.g:1596:1: rule__While__StateAssignment_1 : ( RULE_STRING ) ;
+    public final void rule__While__StateAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1600:1: ( ( RULE_STRING ) )
+            // InternalBoilerplateText.g:1601:2: ( RULE_STRING )
+            {
+            // InternalBoilerplateText.g:1601:2: ( RULE_STRING )
+            // InternalBoilerplateText.g:1602:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWhileAccess().getStateSTRINGTerminalRuleCall_1_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWhileAccess().getStateSTRINGTerminalRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__While__StateAssignment_1"
+
+
+    // $ANTLR start "rule__ShallNotAllow__ActionAssignment_3_0"
+    // InternalBoilerplateText.g:1611:1: rule__ShallNotAllow__ActionAssignment_3_0 : ( RULE_STRING ) ;
+    public final void rule__ShallNotAllow__ActionAssignment_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1615:1: ( ( RULE_STRING ) )
+            // InternalBoilerplateText.g:1616:2: ( RULE_STRING )
+            {
+            // InternalBoilerplateText.g:1616:2: ( RULE_STRING )
+            // InternalBoilerplateText.g:1617:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallNotAllowAccess().getActionSTRINGTerminalRuleCall_3_0_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallNotAllowAccess().getActionSTRINGTerminalRuleCall_3_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNotAllow__ActionAssignment_3_0"
+
+
+    // $ANTLR start "rule__ShallNotAllow__EntityAssignment_3_1_0"
+    // InternalBoilerplateText.g:1626:1: rule__ShallNotAllow__EntityAssignment_3_1_0 : ( RULE_STRING ) ;
+    public final void rule__ShallNotAllow__EntityAssignment_3_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1630:1: ( ( RULE_STRING ) )
+            // InternalBoilerplateText.g:1631:2: ( RULE_STRING )
+            {
+            // InternalBoilerplateText.g:1631:2: ( RULE_STRING )
+            // InternalBoilerplateText.g:1632:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallNotAllowAccess().getEntitySTRINGTerminalRuleCall_3_1_0_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallNotAllowAccess().getEntitySTRINGTerminalRuleCall_3_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNotAllow__EntityAssignment_3_1_0"
+
+
+    // $ANTLR start "rule__ShallNotAllow__ActionPerformedByEntityAssignment_3_1_2"
+    // InternalBoilerplateText.g:1641:1: rule__ShallNotAllow__ActionPerformedByEntityAssignment_3_1_2 : ( RULE_STRING ) ;
+    public final void rule__ShallNotAllow__ActionPerformedByEntityAssignment_3_1_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1645:1: ( ( RULE_STRING ) )
+            // InternalBoilerplateText.g:1646:2: ( RULE_STRING )
+            {
+            // InternalBoilerplateText.g:1646:2: ( RULE_STRING )
+            // InternalBoilerplateText.g:1647:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallNotAllowAccess().getActionPerformedByEntitySTRINGTerminalRuleCall_3_1_2_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallNotAllowAccess().getActionPerformedByEntitySTRINGTerminalRuleCall_3_1_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNotAllow__ActionPerformedByEntityAssignment_3_1_2"
+
+
+    // $ANTLR start "rule__ShallAllow__ActionAssignment_2_0"
+    // InternalBoilerplateText.g:1656:1: rule__ShallAllow__ActionAssignment_2_0 : ( RULE_STRING ) ;
+    public final void rule__ShallAllow__ActionAssignment_2_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1660:1: ( ( RULE_STRING ) )
+            // InternalBoilerplateText.g:1661:2: ( RULE_STRING )
+            {
+            // InternalBoilerplateText.g:1661:2: ( RULE_STRING )
+            // InternalBoilerplateText.g:1662:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallAllowAccess().getActionSTRINGTerminalRuleCall_2_0_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallAllowAccess().getActionSTRINGTerminalRuleCall_2_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallAllow__ActionAssignment_2_0"
+
+
+    // $ANTLR start "rule__ShallAllow__EntityAssignment_2_1_0"
+    // InternalBoilerplateText.g:1671:1: rule__ShallAllow__EntityAssignment_2_1_0 : ( RULE_STRING ) ;
+    public final void rule__ShallAllow__EntityAssignment_2_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1675:1: ( ( RULE_STRING ) )
+            // InternalBoilerplateText.g:1676:2: ( RULE_STRING )
+            {
+            // InternalBoilerplateText.g:1676:2: ( RULE_STRING )
+            // InternalBoilerplateText.g:1677:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallAllowAccess().getEntitySTRINGTerminalRuleCall_2_1_0_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallAllowAccess().getEntitySTRINGTerminalRuleCall_2_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallAllow__EntityAssignment_2_1_0"
+
+
+    // $ANTLR start "rule__ShallAllow__ActionPerformedByEntityAssignment_2_1_2"
+    // InternalBoilerplateText.g:1686:1: rule__ShallAllow__ActionPerformedByEntityAssignment_2_1_2 : ( RULE_STRING ) ;
+    public final void rule__ShallAllow__ActionPerformedByEntityAssignment_2_1_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1690:1: ( ( RULE_STRING ) )
+            // InternalBoilerplateText.g:1691:2: ( RULE_STRING )
+            {
+            // InternalBoilerplateText.g:1691:2: ( RULE_STRING )
+            // InternalBoilerplateText.g:1692:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallAllowAccess().getActionPerformedByEntitySTRINGTerminalRuleCall_2_1_2_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallAllowAccess().getActionPerformedByEntitySTRINGTerminalRuleCall_2_1_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallAllow__ActionPerformedByEntityAssignment_2_1_2"
+
+
+    // $ANTLR start "rule__ShallNot__ActionAssignment_3"
+    // InternalBoilerplateText.g:1701:1: rule__ShallNot__ActionAssignment_3 : ( RULE_STRING ) ;
+    public final void rule__ShallNot__ActionAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1705:1: ( ( RULE_STRING ) )
+            // InternalBoilerplateText.g:1706:2: ( RULE_STRING )
+            {
+            // InternalBoilerplateText.g:1706:2: ( RULE_STRING )
+            // InternalBoilerplateText.g:1707:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallNotAccess().getActionSTRINGTerminalRuleCall_3_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallNotAccess().getActionSTRINGTerminalRuleCall_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ShallNot__ActionAssignment_3"
+
+
+    // $ANTLR start "rule__Shall__ActionAssignment_2"
+    // InternalBoilerplateText.g:1716:1: rule__Shall__ActionAssignment_2 : ( RULE_STRING ) ;
+    public final void rule__Shall__ActionAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalBoilerplateText.g:1720:1: ( ( RULE_STRING ) )
+            // InternalBoilerplateText.g:1721:2: ( RULE_STRING )
+            {
+            // InternalBoilerplateText.g:1721:2: ( RULE_STRING )
+            // InternalBoilerplateText.g:1722:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getShallAccess().getActionSTRINGTerminalRuleCall_2_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getShallAccess().getActionSTRINGTerminalRuleCall_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Shall__ActionAssignment_2"
+
+    // Delegated rules
+
+
+ 
+
+    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[]{0x0000000000008000L});
+    public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000000000000800L});
+    public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000000002002L});
+    public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0000000000010000L});
+    public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000020000L});
+    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000040000L});
+    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000080010L});
+    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000000100000L});
+
+}
\ No newline at end of file
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/src/org/eclipse/papyrus/requirements/sysml14/ide/BoilerplateTextIdeModule.xtend b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/src/org/eclipse/papyrus/requirements/sysml14/ide/BoilerplateTextIdeModule.xtend
new file mode 100644
index 0000000..ff5d80c
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/src/org/eclipse/papyrus/requirements/sysml14/ide/BoilerplateTextIdeModule.xtend
@@ -0,0 +1,11 @@
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.ide
+
+
+/**
+ * Use this class to register ide components.
+ */
+class BoilerplateTextIdeModule extends AbstractBoilerplateTextIdeModule {
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/src/org/eclipse/papyrus/requirements/sysml14/ide/BoilerplateTextIdeSetup.xtend b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/src/org/eclipse/papyrus/requirements/sysml14/ide/BoilerplateTextIdeSetup.xtend
new file mode 100644
index 0000000..7ad84ce
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/src/org/eclipse/papyrus/requirements/sysml14/ide/BoilerplateTextIdeSetup.xtend
@@ -0,0 +1,20 @@
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.ide
+
+import com.google.inject.Guice
+import org.eclipse.papyrus.requirements.sysml14.BoilerplateTextRuntimeModule
+import org.eclipse.papyrus.requirements.sysml14.BoilerplateTextStandaloneSetup
+import org.eclipse.xtext.util.Modules2
+
+/**
+ * Initialization support for running Xtext languages as language servers.
+ */
+class BoilerplateTextIdeSetup extends BoilerplateTextStandaloneSetup {
+
+	override createInjector() {
+		Guice.createInjector(Modules2.mixin(new BoilerplateTextRuntimeModule, new BoilerplateTextIdeModule))
+	}
+	
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/xtend-gen/org/eclipse/papyrus/requirements/sysml14/ide/.gitignore b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/xtend-gen/org/eclipse/papyrus/requirements/sysml14/ide/.gitignore
new file mode 100644
index 0000000..0994b8d
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide/xtend-gen/org/eclipse/papyrus/requirements/sysml14/ide/.gitignore
@@ -0,0 +1,4 @@
+/.BoilerplateTextIdeModule.java._trace
+/.BoilerplateTextIdeSetup.java._trace
+/BoilerplateTextIdeModule.java
+/BoilerplateTextIdeSetup.java
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/.classpath b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/.classpath
new file mode 100644
index 0000000..9081d4f
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.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/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/.gitignore b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/.project b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/.project
new file mode 100644
index 0000000..2ac0243
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui</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.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/.settings/org.eclipse.core.resources.prefs b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..68a0304
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=windows-1252
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/.settings/org.eclipse.jdt.core.prefs b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.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
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/META-INF/MANIFEST.MF b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..44940d6
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,39 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui
+Bundle-Vendor: Eclipse Modelling Project
+Bundle-Version: 0.7.0.qualifier
+Bundle-SymbolicName: org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui; singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.papyrus.requirements.sysml14.boilerplatetext,
+ org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ide,
+ org.eclipse.xtext.ui,
+ org.eclipse.xtext.ui.shared,
+ org.eclipse.xtext.ui.codetemplates.ui,
+ org.eclipse.compare,
+ org.eclipse.xtext.builder,
+ org.eclipse.xtend.lib;resolution:=optional,
+ org.eclipse.papyrus.uml.properties,
+ org.eclipse.ui,
+ org.eclipse.ui.editors,
+ org.eclipse.xtext.xbase.lib,
+ org.eclipse.xtext
+Import-Package: org.apache.log4j,
+ org.eclipse.gmf.runtime.common.core.command,
+ org.eclipse.papyrus.extensionpoints.editors.configuration,
+ org.eclipse.papyrus.extensionpoints.editors.ui,
+ org.eclipse.papyrus.infra.properties.ui.modelelement,
+ org.eclipse.papyrus.sysml14.requirements,
+ org.eclipse.papyrus.uml.xtext.integration,
+ org.eclipse.papyrus.uml.xtext.integration.core,
+ org.eclipse.uml2.uml
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui.internal,
+ org.eclipse.papyrus.requirements.sysml14.ui,
+ org.eclipse.papyrus.requirements.sysml14.ui.contentassist,
+ org.eclipse.papyrus.requirements.sysml14.ui.contribution,
+ org.eclipse.papyrus.requirements.sysml14.ui.editor,
+ org.eclipse.papyrus.requirements.sysml14.ui.labeling,
+ org.eclipse.papyrus.requirements.sysml14.ui.outline,
+ org.eclipse.papyrus.requirements.sysml14.ui.quickfix
+Bundle-Activator: org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui.internal.BoilerplatetextActivator
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/about.html b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/about.html
new file mode 100644
index 0000000..d35d5ae
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 5, 2007</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/build.properties b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/build.properties
new file mode 100644
index 0000000..251422d
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/build.properties
@@ -0,0 +1,9 @@
+source.. = src/,\
+           src-gen/,\
+           xtend-gen/
+bin.includes = .,\
+               META-INF/,\
+               plugin.xml,\
+               about.html
+src.includes = about.html,\
+               src/
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/plugin.xml b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/plugin.xml
new file mode 100644
index 0000000..0c657ab
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/plugin.xml
@@ -0,0 +1,431 @@
+<?xml version="1.0" encoding="windows-1252"?>
+<?eclipse version="3.0"?>
+<plugin>
+	<extension
+		point="org.eclipse.ui.editors">
+		<editor
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+			contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+			default="true"
+			extensions="boil"
+			id="org.eclipse.papyrus.requirements.sysml14.BoilerplateText"
+			name="BoilerplateText Editor">
+		</editor>
+	</extension>
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+			commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+		<handler
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+			commandId="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.validate">
+		<activeWhen>
+			<reference
+					definitionId="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.Editor.opened">
+			</reference>
+		</activeWhen>
+		</handler>
+		<!-- copy qualified name -->
+		<handler
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedNameHandler"
+			commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName">
+			<activeWhen>
+				<reference definitionId="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.Editor.opened" />
+			</activeWhen>
+		</handler>
+		<handler
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
+			commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
+			<activeWhen>
+				<and>
+					<reference definitionId="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.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.requirements.sysml14.BoilerplateText.Editor.opened">
+			<and>
+				<reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+				<with variable="activeEditor">
+					<test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+						value="org.eclipse.papyrus.requirements.sysml14.BoilerplateText" 
+						forcePluginActivation="true"/>
+				</with>		
+			</and>
+		</definition>
+		<definition id="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.XtextEditor.opened">
+			<and>
+				<reference definitionId="isXtextEditorActive"/>
+				<with variable="activeEditor">
+					<test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+						value="org.eclipse.papyrus.requirements.sysml14.BoilerplateText" 
+						forcePluginActivation="true"/>
+				</with>		
+			</and>
+		</definition>
+	</extension>
+	<extension
+			point="org.eclipse.ui.preferencePages">
+		<page
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+			id="org.eclipse.papyrus.requirements.sysml14.BoilerplateText"
+			name="BoilerplateText">
+			<keywordReference id="org.eclipse.papyrus.requirements.sysml14.ui.keyword_BoilerplateText"/>
+		</page>
+		<page
+			category="org.eclipse.papyrus.requirements.sysml14.BoilerplateText"
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+			id="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.coloring"
+			name="Syntax Coloring">
+			<keywordReference id="org.eclipse.papyrus.requirements.sysml14.ui.keyword_BoilerplateText"/>
+		</page>
+		<page
+			category="org.eclipse.papyrus.requirements.sysml14.BoilerplateText"
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+			id="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.templates"
+			name="Templates">
+			<keywordReference id="org.eclipse.papyrus.requirements.sysml14.ui.keyword_BoilerplateText"/>
+		</page>
+	</extension>
+	<extension
+			point="org.eclipse.ui.propertyPages">
+		<page
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+			id="org.eclipse.papyrus.requirements.sysml14.BoilerplateText"
+			name="BoilerplateText">
+			<keywordReference id="org.eclipse.papyrus.requirements.sysml14.ui.keyword_BoilerplateText"/>
+			<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.requirements.sysml14.ui.keyword_BoilerplateText"
+			label="BoilerplateText"/>
+	</extension>
+	<extension
+		point="org.eclipse.ui.commands">
+	<command
+			description="Trigger expensive validation"
+			id="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.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.requirements.sysml14.BoilerplateText.validate"
+				 style="push"
+				 tooltip="Trigger expensive validation">
+			<visibleWhen checkEnabled="false">
+				<reference
+					definitionId="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.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.requirements.sysml14.BoilerplateText.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.requirements.sysml14.BoilerplateText.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.requirements.sysml14.BoilerplateText.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.requirements.sysml14.BoilerplateText.Editor.opened">
+					</reference>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+		<handler
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+			commandId="org.eclipse.xtext.ui.editor.FindReferences">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+	<!-- adding resource factories -->
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="boil">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+		<resourceServiceProvider
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+			uriExtension="boil">
+		</resourceServiceProvider>
+	</extension>
+	<!-- marker definitions for org.eclipse.papyrus.requirements.sysml14.BoilerplateText -->
+	<extension
+			id="boilerplatetext.check.fast"
+			name="BoilerplateText Problem"
+			point="org.eclipse.core.resources.markers">
+		<super type="org.eclipse.xtext.ui.check.fast"/>
+		<persistent value="true"/>
+	</extension>
+	<extension
+			id="boilerplatetext.check.normal"
+			name="BoilerplateText Problem"
+			point="org.eclipse.core.resources.markers">
+		<super type="org.eclipse.xtext.ui.check.normal"/>
+		<persistent value="true"/>
+	</extension>
+	<extension
+			id="boilerplatetext.check.expensive"
+			name="BoilerplateText 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.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant"
+			fileExtensions="boil"/>
+	</extension>
+	<extension point="org.eclipse.ui.preferencePages">
+		<page
+			category="org.eclipse.papyrus.requirements.sysml14.BoilerplateText"
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+			id="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.compiler.preferencePage"
+			name="Compiler">
+			<keywordReference id="org.eclipse.papyrus.requirements.sysml14.ui.keyword_BoilerplateText"/>
+		</page>
+	</extension>
+	<extension point="org.eclipse.ui.propertyPages">
+		<page
+			category="org.eclipse.papyrus.requirements.sysml14.BoilerplateText"
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+			id="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.compiler.propertyPage"
+			name="Compiler">
+			<keywordReference id="org.eclipse.papyrus.requirements.sysml14.ui.keyword_BoilerplateText"/>
+			<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.requirements.sysml14.BoilerplateText.OpenGeneratedCode"
+				style="push">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.Editor.opened" />
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+		<handler
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.generator.trace.OpenGeneratedFileHandler"
+			commandId="org.eclipse.xtext.ui.OpenGeneratedFileCommand">
+			<activeWhen>
+				<reference definitionId="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.Editor.opened" />
+			</activeWhen>
+		</handler>
+	</extension>
+	<!-- Quick Outline -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.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.requirements.sysml14.BoilerplateText.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<!-- quickfix marker resolution generator for org.eclipse.papyrus.requirements.sysml14.BoilerplateText -->
+	<extension
+			point="org.eclipse.ui.ide.markerResolution">
+		<markerResolutionGenerator
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+			markerType="org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui.boilerplatetext.check.fast">
+			<attribute
+				name="FIXABLE_KEY"
+				value="true">
+			</attribute>
+		</markerResolutionGenerator>
+		<markerResolutionGenerator
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+			markerType="org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui.boilerplatetext.check.normal">
+			<attribute
+				name="FIXABLE_KEY"
+				value="true">
+			</attribute>
+		</markerResolutionGenerator>
+		<markerResolutionGenerator
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+			markerType="org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui.boilerplatetext.check.expensive">
+			<attribute
+				name="FIXABLE_KEY"
+				value="true">
+			</attribute>
+		</markerResolutionGenerator>
+	</extension>
+	<!-- Rename Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.DefaultRenameElementHandler"
+			commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.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.requirements.sysml14.BoilerplateText.Editor.opened">
+					</reference>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.preferencePages">
+		<page
+			category="org.eclipse.papyrus.requirements.sysml14.BoilerplateText"
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+			id="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.refactoring"
+			name="Refactoring">
+			<keywordReference id="org.eclipse.papyrus.requirements.sysml14.ui.keyword_BoilerplateText"/>
+		</page>
+	</extension>
+	<extension point="org.eclipse.compare.contentViewers">
+		<viewer id="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.compare.contentViewers"
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+			extensions="boil">
+		</viewer>
+	</extension>
+	<extension point="org.eclipse.compare.contentMergeViewers">
+		<viewer id="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.compare.contentMergeViewers"
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+			extensions="boil" label="BoilerplateText Compare">
+		</viewer>
+	</extension>
+	<extension point="org.eclipse.ui.editors.documentProviders">
+		<provider id="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.editors.documentProviders"
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+			extensions="boil">
+		</provider>
+	</extension>
+	<extension point="org.eclipse.team.core.fileTypes">
+		<fileTypes
+			extension="boil"
+			type="text">
+		</fileTypes>
+	</extension>
+ <extension
+       point="org.eclipse.papyrus.uml.properties.languageEditor">
+    <editor
+          editor="org.eclipse.papyrus.requirements.sysml14.ui.editor.RequirementsTextBoilerplatesLanguageEditor"
+          language="Req Text">
+    </editor>
+ </extension>
+ <extension
+       point="org.eclipse.papyrus.extensionpoints.editors.DirectEditor">
+    <DirectEditor
+          additionalConstraint="org.eclipse.papyrus.requirements.sysml14.ui.contribution.RequirementConstraint"
+          language="Requirements Text Boilerplates Editor"
+          objectToEdit="org.eclipse.uml2.uml.Class">
+       <popupeditor
+             editorConfiguration="org.eclipse.papyrus.requirements.sysml14.ui.contribution.RequirementsTextBoilerplatesXtextDirectEditorConfiguration">
+       </popupeditor>
+       <Priority
+             name="Highest">
+       </Priority>
+    </DirectEditor>
+ </extension>
+</plugin>
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/plugin.xml_gen b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/plugin.xml_gen
new file mode 100644
index 0000000..902c522
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/plugin.xml_gen
@@ -0,0 +1,410 @@
+<?xml version="1.0" encoding="windows-1252"?>
+<?eclipse version="3.0"?>
+<plugin>
+	<extension
+		point="org.eclipse.ui.editors">
+		<editor
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+			contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+			default="true"
+			extensions="boil"
+			id="org.eclipse.papyrus.requirements.sysml14.BoilerplateText"
+			name="BoilerplateText Editor">
+		</editor>
+	</extension>
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+			commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+		<handler
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+			commandId="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.validate">
+		<activeWhen>
+			<reference
+					definitionId="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.Editor.opened">
+			</reference>
+		</activeWhen>
+		</handler>
+		<!-- copy qualified name -->
+		<handler
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedNameHandler"
+			commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName">
+			<activeWhen>
+				<reference definitionId="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.Editor.opened" />
+			</activeWhen>
+		</handler>
+		<handler
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
+			commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
+			<activeWhen>
+				<and>
+					<reference definitionId="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.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.requirements.sysml14.BoilerplateText.Editor.opened">
+			<and>
+				<reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+				<with variable="activeEditor">
+					<test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName"
+						value="org.eclipse.papyrus.requirements.sysml14.BoilerplateText"
+						forcePluginActivation="true"/>
+				</with>
+			</and>
+		</definition>
+		<definition id="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.XtextEditor.opened">
+			<and>
+				<reference definitionId="isXtextEditorActive"/>
+				<with variable="activeEditor">
+					<test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName"
+						value="org.eclipse.papyrus.requirements.sysml14.BoilerplateText"
+						forcePluginActivation="true"/>
+				</with>
+			</and>
+		</definition>
+	</extension>
+	<extension
+			point="org.eclipse.ui.preferencePages">
+		<page
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+			id="org.eclipse.papyrus.requirements.sysml14.BoilerplateText"
+			name="BoilerplateText">
+			<keywordReference id="org.eclipse.papyrus.requirements.sysml14.ui.keyword_BoilerplateText"/>
+		</page>
+		<page
+			category="org.eclipse.papyrus.requirements.sysml14.BoilerplateText"
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+			id="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.coloring"
+			name="Syntax Coloring">
+			<keywordReference id="org.eclipse.papyrus.requirements.sysml14.ui.keyword_BoilerplateText"/>
+		</page>
+		<page
+			category="org.eclipse.papyrus.requirements.sysml14.BoilerplateText"
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+			id="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.templates"
+			name="Templates">
+			<keywordReference id="org.eclipse.papyrus.requirements.sysml14.ui.keyword_BoilerplateText"/>
+		</page>
+	</extension>
+	<extension
+			point="org.eclipse.ui.propertyPages">
+		<page
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+			id="org.eclipse.papyrus.requirements.sysml14.BoilerplateText"
+			name="BoilerplateText">
+			<keywordReference id="org.eclipse.papyrus.requirements.sysml14.ui.keyword_BoilerplateText"/>
+			<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.requirements.sysml14.ui.keyword_BoilerplateText"
+			label="BoilerplateText"/>
+	</extension>
+	<extension
+		point="org.eclipse.ui.commands">
+	<command
+			description="Trigger expensive validation"
+			id="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.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.requirements.sysml14.BoilerplateText.validate"
+				 style="push"
+				 tooltip="Trigger expensive validation">
+			<visibleWhen checkEnabled="false">
+				<reference
+					definitionId="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.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.requirements.sysml14.BoilerplateText.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.requirements.sysml14.BoilerplateText.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.requirements.sysml14.BoilerplateText.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.requirements.sysml14.BoilerplateText.Editor.opened">
+					</reference>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+		<handler
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+			commandId="org.eclipse.xtext.ui.editor.FindReferences">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+	</extension>
+	<!-- adding resource factories -->
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="boil">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+		<resourceServiceProvider
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+			uriExtension="boil">
+		</resourceServiceProvider>
+	</extension>
+	<!-- marker definitions for org.eclipse.papyrus.requirements.sysml14.BoilerplateText -->
+	<extension
+			id="boilerplatetext.check.fast"
+			name="BoilerplateText Problem"
+			point="org.eclipse.core.resources.markers">
+		<super type="org.eclipse.xtext.ui.check.fast"/>
+		<persistent value="true"/>
+	</extension>
+	<extension
+			id="boilerplatetext.check.normal"
+			name="BoilerplateText Problem"
+			point="org.eclipse.core.resources.markers">
+		<super type="org.eclipse.xtext.ui.check.normal"/>
+		<persistent value="true"/>
+	</extension>
+	<extension
+			id="boilerplatetext.check.expensive"
+			name="BoilerplateText 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.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant"
+			fileExtensions="boil"/>
+	</extension>
+	<extension point="org.eclipse.ui.preferencePages">
+		<page
+			category="org.eclipse.papyrus.requirements.sysml14.BoilerplateText"
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+			id="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.compiler.preferencePage"
+			name="Compiler">
+			<keywordReference id="org.eclipse.papyrus.requirements.sysml14.ui.keyword_BoilerplateText"/>
+		</page>
+	</extension>
+	<extension point="org.eclipse.ui.propertyPages">
+		<page
+			category="org.eclipse.papyrus.requirements.sysml14.BoilerplateText"
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+			id="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.compiler.propertyPage"
+			name="Compiler">
+			<keywordReference id="org.eclipse.papyrus.requirements.sysml14.ui.keyword_BoilerplateText"/>
+			<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.requirements.sysml14.BoilerplateText.OpenGeneratedCode"
+				style="push">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.Editor.opened" />
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+		<handler
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.generator.trace.OpenGeneratedFileHandler"
+			commandId="org.eclipse.xtext.ui.OpenGeneratedFileCommand">
+			<activeWhen>
+				<reference definitionId="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.Editor.opened" />
+			</activeWhen>
+		</handler>
+	</extension>
+	<!-- Quick Outline -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.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.requirements.sysml14.BoilerplateText.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<!-- quickfix marker resolution generator for org.eclipse.papyrus.requirements.sysml14.BoilerplateText -->
+	<extension
+			point="org.eclipse.ui.ide.markerResolution">
+		<markerResolutionGenerator
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+			markerType="org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui.boilerplatetext.check.fast">
+			<attribute
+				name="FIXABLE_KEY"
+				value="true">
+			</attribute>
+		</markerResolutionGenerator>
+		<markerResolutionGenerator
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+			markerType="org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui.boilerplatetext.check.normal">
+			<attribute
+				name="FIXABLE_KEY"
+				value="true">
+			</attribute>
+		</markerResolutionGenerator>
+		<markerResolutionGenerator
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+			markerType="org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui.boilerplatetext.check.expensive">
+			<attribute
+				name="FIXABLE_KEY"
+				value="true">
+			</attribute>
+		</markerResolutionGenerator>
+	</extension>
+	<!-- Rename Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.DefaultRenameElementHandler"
+			commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.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.requirements.sysml14.BoilerplateText.Editor.opened">
+					</reference>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.preferencePages">
+		<page
+			category="org.eclipse.papyrus.requirements.sysml14.BoilerplateText"
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+			id="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.refactoring"
+			name="Refactoring">
+			<keywordReference id="org.eclipse.papyrus.requirements.sysml14.ui.keyword_BoilerplateText"/>
+		</page>
+	</extension>
+	<extension point="org.eclipse.compare.contentViewers">
+		<viewer id="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.compare.contentViewers"
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+			extensions="boil">
+		</viewer>
+	</extension>
+	<extension point="org.eclipse.compare.contentMergeViewers">
+		<viewer id="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.compare.contentMergeViewers"
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+			extensions="boil" label="BoilerplateText Compare">
+		</viewer>
+	</extension>
+	<extension point="org.eclipse.ui.editors.documentProviders">
+		<provider id="org.eclipse.papyrus.requirements.sysml14.BoilerplateText.editors.documentProviders"
+			class="org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+			extensions="boil">
+		</provider>
+	</extension>
+	<extension point="org.eclipse.team.core.fileTypes">
+		<fileTypes
+			extension="boil"
+			type="text">
+		</fileTypes>
+	</extension>
+</plugin>
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplatetext/ui/internal/BoilerplatetextActivator.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplatetext/ui/internal/BoilerplatetextActivator.java
new file mode 100644
index 0000000..cfc4ac7
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplatetext/ui/internal/BoilerplatetextActivator.java
@@ -0,0 +1,107 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui.internal;
+
+import com.google.common.collect.Maps;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.Module;
+import java.util.Collections;
+import java.util.Map;
+import org.apache.log4j.Logger;
+import org.eclipse.papyrus.requirements.sysml14.BoilerplateTextRuntimeModule;
+import org.eclipse.papyrus.requirements.sysml14.ui.BoilerplateTextUiModule;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.xtext.ui.shared.SharedStateModule;
+import org.eclipse.xtext.util.Modules2;
+import org.osgi.framework.BundleContext;
+
+/**
+ * This class was generated. Customizations should only happen in a newly
+ * introduced subclass. 
+ */
+public class BoilerplatetextActivator extends AbstractUIPlugin {
+
+	public static final String ORG_ECLIPSE_PAPYRUS_REQUIREMENTS_SYSML14_BOILERPLATETEXT = "org.eclipse.papyrus.requirements.sysml14.BoilerplateText";
+	
+	private static final Logger logger = Logger.getLogger(BoilerplatetextActivator.class);
+	
+	private static BoilerplatetextActivator 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 BoilerplatetextActivator 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_REQUIREMENTS_SYSML14_BOILERPLATETEXT.equals(grammar)) {
+			return new BoilerplateTextRuntimeModule();
+		}
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getUiModule(String grammar) {
+		if (ORG_ECLIPSE_PAPYRUS_REQUIREMENTS_SYSML14_BOILERPLATETEXT.equals(grammar)) {
+			return new BoilerplateTextUiModule(this);
+		}
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getSharedStateModule() {
+		return new SharedStateModule();
+	}
+	
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src-gen/org/eclipse/papyrus/requirements/sysml14/ui/AbstractBoilerplateTextUiModule.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src-gen/org/eclipse/papyrus/requirements/sysml14/ui/AbstractBoilerplateTextUiModule.java
new file mode 100644
index 0000000..08893fc
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src-gen/org/eclipse/papyrus/requirements/sysml14/ui/AbstractBoilerplateTextUiModule.java
@@ -0,0 +1,294 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.ui;
+
+import com.google.inject.Binder;
+import com.google.inject.Provider;
+import com.google.inject.name.Names;
+import org.eclipse.compare.IViewerCreator;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.papyrus.requirements.sysml14.ide.contentassist.antlr.BoilerplateTextParser;
+import org.eclipse.papyrus.requirements.sysml14.ide.contentassist.antlr.PartialBoilerplateTextContentAssistParser;
+import org.eclipse.papyrus.requirements.sysml14.ide.contentassist.antlr.internal.InternalBoilerplateTextLexer;
+import org.eclipse.papyrus.requirements.sysml14.ui.contentassist.BoilerplateTextProposalProvider;
+import org.eclipse.papyrus.requirements.sysml14.ui.labeling.BoilerplateTextDescriptionLabelProvider;
+import org.eclipse.papyrus.requirements.sysml14.ui.labeling.BoilerplateTextLabelProvider;
+import org.eclipse.papyrus.requirements.sysml14.ui.outline.BoilerplateTextOutlineTreeProvider;
+import org.eclipse.papyrus.requirements.sysml14.ui.quickfix.BoilerplateTextQuickfixProvider;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.xtext.builder.BuilderParticipant;
+import org.eclipse.xtext.builder.EclipseOutputConfigurationProvider;
+import org.eclipse.xtext.builder.IXtextBuilderParticipant;
+import org.eclipse.xtext.builder.builderState.IBuilderState;
+import org.eclipse.xtext.builder.clustering.CurrentDescriptions;
+import org.eclipse.xtext.builder.impl.PersistentDataAwareDirtyResource;
+import org.eclipse.xtext.builder.nature.NatureAddingEditorCallback;
+import org.eclipse.xtext.builder.preferences.BuilderPreferenceAccess;
+import org.eclipse.xtext.generator.IContextualOutputConfigurationProvider;
+import org.eclipse.xtext.ide.LexerIdeBindings;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.IContentAssistParser;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.internal.Lexer;
+import org.eclipse.xtext.ide.editor.partialEditing.IPartialEditingContentAssistParser;
+import org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider;
+import org.eclipse.xtext.parser.antlr.ITokenDefProvider;
+import org.eclipse.xtext.parser.antlr.LexerProvider;
+import org.eclipse.xtext.resource.IResourceDescriptions;
+import org.eclipse.xtext.resource.containers.IAllContainersState;
+import org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider;
+import org.eclipse.xtext.service.SingletonBinding;
+import org.eclipse.xtext.ui.DefaultUiModule;
+import org.eclipse.xtext.ui.codetemplates.ui.AccessibleCodetemplatesActivator;
+import org.eclipse.xtext.ui.codetemplates.ui.partialEditing.IPartialEditingContentAssistContextFactory;
+import org.eclipse.xtext.ui.codetemplates.ui.partialEditing.PartialEditingContentAssistContextFactory;
+import org.eclipse.xtext.ui.codetemplates.ui.preferences.AdvancedTemplatesPreferencePage;
+import org.eclipse.xtext.ui.codetemplates.ui.preferences.TemplatesLanguageConfiguration;
+import org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistrar;
+import org.eclipse.xtext.ui.codetemplates.ui.registry.LanguageRegistry;
+import org.eclipse.xtext.ui.compare.DefaultViewerCreator;
+import org.eclipse.xtext.ui.editor.DocumentBasedDirtyResource;
+import org.eclipse.xtext.ui.editor.IXtextEditorCallback;
+import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
+import org.eclipse.xtext.ui.editor.contentassist.FQNPrefixMatcher;
+import org.eclipse.xtext.ui.editor.contentassist.IContentProposalProvider;
+import org.eclipse.xtext.ui.editor.contentassist.IProposalConflictHelper;
+import org.eclipse.xtext.ui.editor.contentassist.PrefixMatcher;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.AntlrProposalConflictHelper;
+import org.eclipse.xtext.ui.editor.contentassist.antlr.DelegatingContentAssistContextFactory;
+import org.eclipse.xtext.ui.editor.outline.IOutlineTreeProvider;
+import org.eclipse.xtext.ui.editor.outline.impl.IOutlineTreeStructureProvider;
+import org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreInitializer;
+import org.eclipse.xtext.ui.editor.quickfix.IssueResolutionProvider;
+import org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage;
+import org.eclipse.xtext.ui.refactoring.IDependentElementsCalculator;
+import org.eclipse.xtext.ui.refactoring.IReferenceUpdater;
+import org.eclipse.xtext.ui.refactoring.IRenameRefactoringProvider;
+import org.eclipse.xtext.ui.refactoring.IRenameStrategy;
+import org.eclipse.xtext.ui.refactoring.impl.DefaultDependentElementsCalculator;
+import org.eclipse.xtext.ui.refactoring.impl.DefaultReferenceUpdater;
+import org.eclipse.xtext.ui.refactoring.impl.DefaultRenameRefactoringProvider;
+import org.eclipse.xtext.ui.refactoring.impl.DefaultRenameStrategy;
+import org.eclipse.xtext.ui.refactoring.ui.DefaultRenameSupport;
+import org.eclipse.xtext.ui.refactoring.ui.IRenameSupport;
+import org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferences;
+import org.eclipse.xtext.ui.resource.ResourceServiceDescriptionLabelProvider;
+import org.eclipse.xtext.ui.shared.Access;
+
+/**
+ * Manual modifications go to {@link BoilerplateTextUiModule}.
+ */
+@SuppressWarnings("all")
+public abstract class AbstractBoilerplateTextUiModule extends DefaultUiModule {
+
+	public AbstractBoilerplateTextUiModule(AbstractUIPlugin plugin) {
+		super(plugin);
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ImplicitFragment
+	public Provider<? extends IAllContainersState> provideIAllContainersState() {
+		return Access.getJavaProjectsState();
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Class<? extends IProposalConflictHelper> bindIProposalConflictHelper() {
+		return AntlrProposalConflictHelper.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public void configureContentAssistLexer(Binder binder) {
+		binder.bind(Lexer.class)
+			.annotatedWith(Names.named(LexerIdeBindings.CONTENT_ASSIST))
+			.to(InternalBoilerplateTextLexer.class);
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public void configureHighlightingLexer(Binder binder) {
+		binder.bind(org.eclipse.xtext.parser.antlr.Lexer.class)
+			.annotatedWith(Names.named(LexerIdeBindings.HIGHLIGHTING))
+			.to(org.eclipse.papyrus.requirements.sysml14.parser.antlr.internal.InternalBoilerplateTextLexer.class);
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public void configureHighlightingTokenDefProvider(Binder binder) {
+		binder.bind(ITokenDefProvider.class)
+			.annotatedWith(Names.named(LexerIdeBindings.HIGHLIGHTING))
+			.to(AntlrTokenDefProvider.class);
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Class<? extends ContentAssistContext.Factory> bindContentAssistContext$Factory() {
+		return DelegatingContentAssistContextFactory.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Class<? extends IContentAssistParser> bindIContentAssistParser() {
+		return BoilerplateTextParser.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public void configureContentAssistLexerProvider(Binder binder) {
+		binder.bind(InternalBoilerplateTextLexer.class).toProvider(LexerProvider.create(InternalBoilerplateTextLexer.class));
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.exporting.QualifiedNamesFragment2
+	public Class<? extends PrefixMatcher> bindPrefixMatcher() {
+		return FQNPrefixMatcher.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.exporting.QualifiedNamesFragment2
+	public Class<? extends IDependentElementsCalculator> bindIDependentElementsCalculator() {
+		return DefaultDependentElementsCalculator.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2
+	public void configureIResourceDescriptionsBuilderScope(Binder binder) {
+		binder.bind(IResourceDescriptions.class).annotatedWith(Names.named(ResourceDescriptionsProvider.NAMED_BUILDER_SCOPE)).to(CurrentDescriptions.ResourceSetAware.class);
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2
+	public Class<? extends IXtextEditorCallback> bindIXtextEditorCallback() {
+		return NatureAddingEditorCallback.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2
+	public Class<? extends IContextualOutputConfigurationProvider> bindIContextualOutputConfigurationProvider() {
+		return EclipseOutputConfigurationProvider.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2
+	public void configureIResourceDescriptionsPersisted(Binder binder) {
+		binder.bind(IResourceDescriptions.class).annotatedWith(Names.named(ResourceDescriptionsProvider.PERSISTED_DESCRIPTIONS)).to(IBuilderState.class);
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2
+	public Class<? extends DocumentBasedDirtyResource> bindDocumentBasedDirtyResource() {
+		return PersistentDataAwareDirtyResource.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.generator.GeneratorFragment2
+	public Class<? extends IXtextBuilderParticipant> bindIXtextBuilderParticipant() {
+		return BuilderParticipant.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.generator.GeneratorFragment2
+	public IWorkspaceRoot bindIWorkspaceRootToInstance() {
+		return ResourcesPlugin.getWorkspace().getRoot();
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.generator.GeneratorFragment2
+	public void configureBuilderPreferenceStoreInitializer(Binder binder) {
+		binder.bind(IPreferenceStoreInitializer.class)
+			.annotatedWith(Names.named("builderPreferenceInitializer"))
+			.to(BuilderPreferenceAccess.Initializer.class);
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.labeling.LabelProviderFragment2
+	public Class<? extends ILabelProvider> bindILabelProvider() {
+		return BoilerplateTextLabelProvider.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.labeling.LabelProviderFragment2
+	public void configureResourceUIServiceLabelProvider(Binder binder) {
+		binder.bind(ILabelProvider.class).annotatedWith(ResourceServiceDescriptionLabelProvider.class).to(BoilerplateTextDescriptionLabelProvider.class);
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.outline.OutlineTreeProviderFragment2
+	public Class<? extends IOutlineTreeProvider> bindIOutlineTreeProvider() {
+		return BoilerplateTextOutlineTreeProvider.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.outline.OutlineTreeProviderFragment2
+	public Class<? extends IOutlineTreeStructureProvider> bindIOutlineTreeStructureProvider() {
+		return BoilerplateTextOutlineTreeProvider.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.quickfix.QuickfixProviderFragment2
+	public Class<? extends IssueResolutionProvider> bindIssueResolutionProvider() {
+		return BoilerplateTextQuickfixProvider.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.contentAssist.ContentAssistFragment2
+	public Class<? extends IContentProposalProvider> bindIContentProposalProvider() {
+		return BoilerplateTextProposalProvider.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2
+	public Class<? extends IRenameStrategy> bindIRenameStrategy() {
+		return DefaultRenameStrategy.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2
+	public Class<? extends IReferenceUpdater> bindIReferenceUpdater() {
+		return DefaultReferenceUpdater.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2
+	public void configureIPreferenceStoreInitializer(Binder binder) {
+		binder.bind(IPreferenceStoreInitializer.class)
+			.annotatedWith(Names.named("RefactoringPreferences"))
+			.to(RefactoringPreferences.Initializer.class);
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2
+	public Class<? extends IRenameRefactoringProvider> bindIRenameRefactoringProvider() {
+		return DefaultRenameRefactoringProvider.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.refactoring.RefactorElementNameFragment2
+	public Class<? extends IRenameSupport.Factory> bindIRenameSupport$Factory() {
+		return DefaultRenameSupport.Factory.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.templates.CodetemplatesGeneratorFragment2
+	public Provider<? extends TemplatesLanguageConfiguration> provideTemplatesLanguageConfiguration() {
+		return AccessibleCodetemplatesActivator.getTemplatesLanguageConfigurationProvider();
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.templates.CodetemplatesGeneratorFragment2
+	public Provider<? extends LanguageRegistry> provideLanguageRegistry() {
+		return AccessibleCodetemplatesActivator.getLanguageRegistry();
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.templates.CodetemplatesGeneratorFragment2
+	@SingletonBinding(eager=true)
+	public Class<? extends LanguageRegistrar> bindLanguageRegistrar() {
+		return LanguageRegistrar.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.templates.CodetemplatesGeneratorFragment2
+	public Class<? extends XtextTemplatePreferencePage> bindXtextTemplatePreferencePage() {
+		return AdvancedTemplatesPreferencePage.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.templates.CodetemplatesGeneratorFragment2
+	public Class<? extends IPartialEditingContentAssistParser> bindIPartialEditingContentAssistParser() {
+		return PartialBoilerplateTextContentAssistParser.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.templates.CodetemplatesGeneratorFragment2
+	public Class<? extends IPartialEditingContentAssistContextFactory> bindIPartialEditingContentAssistContextFactory() {
+		return PartialEditingContentAssistContextFactory.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.compare.CompareFragment2
+	public Class<? extends IViewerCreator> bindIViewerCreator() {
+		return DefaultViewerCreator.class;
+	}
+	
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src-gen/org/eclipse/papyrus/requirements/sysml14/ui/BoilerplateTextExecutableExtensionFactory.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src-gen/org/eclipse/papyrus/requirements/sysml14/ui/BoilerplateTextExecutableExtensionFactory.java
new file mode 100644
index 0000000..1d247a7
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src-gen/org/eclipse/papyrus/requirements/sysml14/ui/BoilerplateTextExecutableExtensionFactory.java
@@ -0,0 +1,41 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.ui;
+
+import com.google.inject.Injector;
+import org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui.internal.BoilerplatetextActivator;
+import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory;
+import org.osgi.framework.Bundle;
+
+/**
+ * This class was generated. Customizations should only happen in a newly
+ * introduced subclass. 
+ */
+public class BoilerplateTextExecutableExtensionFactory extends AbstractGuiceAwareExecutableExtensionFactory {
+
+	@Override
+	protected Bundle getBundle() {
+		return BoilerplatetextActivator.getInstance().getBundle();
+	}
+	
+	@Override
+	protected Injector getInjector() {
+		return BoilerplatetextActivator.getInstance().getInjector(BoilerplatetextActivator.ORG_ECLIPSE_PAPYRUS_REQUIREMENTS_SYSML14_BOILERPLATETEXT);
+	}
+	
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src-gen/org/eclipse/papyrus/requirements/sysml14/ui/contentassist/AbstractBoilerplateTextProposalProvider.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src-gen/org/eclipse/papyrus/requirements/sysml14/ui/contentassist/AbstractBoilerplateTextProposalProvider.java
new file mode 100644
index 0000000..143a982
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src-gen/org/eclipse/papyrus/requirements/sysml14/ui/contentassist/AbstractBoilerplateTextProposalProvider.java
@@ -0,0 +1,113 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.ui.contentassist;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.Assignment;
+import org.eclipse.xtext.RuleCall;
+import org.eclipse.xtext.common.ui.contentassist.TerminalsProposalProvider;
+import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
+import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor;
+
+/**
+ * Represents a generated, default implementation of superclass {@link TerminalsProposalProvider}.
+ * Methods are dynamically dispatched on the first parameter, i.e., you can override them 
+ * with a more concrete subtype. 
+ */
+public abstract class AbstractBoilerplateTextProposalProvider extends TerminalsProposalProvider {
+
+	public void completeModel_Model(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRequirement_Prefix(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRequirement_System(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeRequirement_Predicate(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeSubject_System(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeIf_Event(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeWhile_State(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeShallNotAllow_Action(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeShallNotAllow_Entity(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeShallNotAllow_ActionPerformedByEntity(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeShallAllow_Action(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeShallAllow_Entity(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeShallAllow_ActionPerformedByEntity(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeShallNot_Action(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeShall_Action(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+
+	public void complete_Model(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Requirement(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Subject(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Prefix(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_If(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_While(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Predicate(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ShallNotAllow(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ShallAllow(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ShallNot(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Shall(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/BoilerplateTextUiModule.xtend b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/BoilerplateTextUiModule.xtend
new file mode 100644
index 0000000..589938b
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/BoilerplateTextUiModule.xtend
@@ -0,0 +1,13 @@
+/*
+ * generated by Xtext 2.10.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.ui
+
+import org.eclipse.xtend.lib.annotations.FinalFieldsConstructor
+
+/**
+ * Use this class to register components to be used within the Eclipse IDE.
+ */
+@FinalFieldsConstructor
+class BoilerplateTextUiModule extends AbstractBoilerplateTextUiModule {
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/contentassist/BoilerplateTextProposalProvider.xtend b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/contentassist/BoilerplateTextProposalProvider.xtend
new file mode 100644
index 0000000..9e3b8f7
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/contentassist/BoilerplateTextProposalProvider.xtend
@@ -0,0 +1,12 @@
+/*
+ * generated by Xtext 2.10.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.ui.contentassist
+
+
+/**
+ * See https://www.eclipse.org/Xtext/documentation/304_ide_concepts.html#content-assist
+ * on how to customize the content assistant.
+ */
+class BoilerplateTextProposalProvider extends AbstractBoilerplateTextProposalProvider {
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/contribution/RequirementConstraint.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/contribution/RequirementConstraint.java
new file mode 100644
index 0000000..6e37f63
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/contribution/RequirementConstraint.java
@@ -0,0 +1,49 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.requirements.sysml14.ui.contribution;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.extensionpoints.editors.configuration.IDirectEditorConstraint;
+import org.eclipse.papyrus.infra.emf.utils.EMFHelper;
+import org.eclipse.papyrus.sysml14.requirements.Requirement;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.util.UMLUtil;
+
+public class RequirementConstraint implements IDirectEditorConstraint {
+	private static final String REQ_TEXT_BOILERPLATES_LANGUAGE_NAME = "Text boilerplates";
+	public RequirementConstraint() {
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.papyrus.extensionpoints.editors.configuration.IDirectEditorConstraint#getLabel()
+	 */
+	@Override
+	public String getLabel() {
+		return REQ_TEXT_BOILERPLATES_LANGUAGE_NAME;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.papyrus.extensionpoints.editors.configuration.IDirectEditorConstraint#appliesTo(java.lang.Object)
+	 */
+	@Override
+	public boolean appliesTo(Object selection) {
+		EObject resolveEobject = EMFHelper.getEObject(selection);
+		if (resolveEobject instanceof Class) {
+			Class klass = (Class) resolveEobject;
+			return (null != UMLUtil.getStereotypeApplication(klass, Requirement.class));
+		}
+		return false;
+	}
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/contribution/RequirementsTextBoilerplatesXtextDirectEditorConfiguration.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/contribution/RequirementsTextBoilerplatesXtextDirectEditorConfiguration.java
new file mode 100644
index 0000000..36831b1
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/contribution/RequirementsTextBoilerplatesXtextDirectEditorConfiguration.java
@@ -0,0 +1,159 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.requirements.sysml14.ui.contribution;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.gmf.runtime.common.core.command.CommandResult;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand;
+import org.eclipse.jface.dialogs.IInputValidator;
+import org.eclipse.papyrus.extensionpoints.editors.configuration.IPopupEditorConfiguration;
+import org.eclipse.papyrus.extensionpoints.editors.ui.IPopupEditorHelper;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.emf.Activator;
+import org.eclipse.papyrus.infra.emf.utils.ServiceUtilsForEObject;
+import org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui.internal.BoilerplatetextActivator;
+import org.eclipse.papyrus.requirements.sysml14.visitor.RequirementsPrinter;
+import org.eclipse.papyrus.sysml14.requirements.Requirement;
+import org.eclipse.papyrus.uml.xtext.integration.DefaultXtextDirectEditorConfiguration;
+import org.eclipse.swt.SWT;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.util.UMLUtil;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.Model;
+
+import com.google.inject.Injector;
+
+public class RequirementsTextBoilerplatesXtextDirectEditorConfiguration extends DefaultXtextDirectEditorConfiguration implements IPopupEditorConfiguration  {
+
+	public static final String REQ_TEXT_BOILERPLATES_LANGUAGE_NAME = "Text boilerplates";
+	
+	public RequirementsTextBoilerplatesXtextDirectEditorConfiguration() {
+		// TODO Auto-generated constructor stub
+	}
+
+	@Override
+	public Injector getInjector() {
+		return BoilerplatetextActivator.getInstance().getInjector(BoilerplatetextActivator.ORG_ECLIPSE_PAPYRUS_REQUIREMENTS_SYSML14_BOILERPLATETEXT);
+	}
+
+	@Override
+	public int getStyle() {
+		return SWT.MULTI;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.papyrus.infra.gmfdiag.xtext.glue.PopupEditorConfiguration#getTextToEdit(java.lang.Object)
+	 */
+	@SuppressWarnings("nls")
+	@Override
+	public String getTextToEdit(Object editedObject) {
+		if (editedObject instanceof Class) {
+			Class c = (Class)editedObject ;
+			if (null != UMLUtil.getStereotypeApplication(c, Requirement.class)){
+				Requirement req = UMLUtil.getStereotypeApplication(c, Requirement.class);
+				return req.getText();				
+			}else 
+				return "Not a Requirement";
+		}
+		return "Not a class";
+	}
+	@Override
+	public IInputValidator getInputValidator() {
+		return super.getInputValidator();
+	}
+	
+	@Override
+	protected String getTextToEditInternal(EObject semanticObject) {
+		return super.getTextToEditInternal(semanticObject);
+	}
+	
+	/**
+	 * @author CEA LIST
+	 *
+	 *         A command for updating the context UML model
+	 */
+	protected class UpdateSysMLReqTextActionCommand extends AbstractTransactionalCommand {
+
+		private final Requirement requirement;
+		
+		private EObject xtextObject;
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see
+		 * org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand#doExecuteWithResult(org.eclipse.core.runtime.IProgressMonitor
+		 * , org.eclipse.core.runtime.IAdaptable)
+		 */
+		@Override
+		protected CommandResult doExecuteWithResult(IProgressMonitor arg0, IAdaptable arg1) throws ExecutionException {
+			boolean result = updateTextValue(requirement, xtextObject);
+			return result ? CommandResult.newOKCommandResult(requirement) : CommandResult.newErrorCommandResult("Value error");
+		}
+		
+		private boolean updateTextValue(Requirement requirement2, EObject xtextObject2) {
+			if (xtextObject2 instanceof Model){
+				Model xtextModel = (Model) xtextObject2;
+				
+				String xtextReqString = new RequirementsPrinter().print(xtextModel);
+				requirement2.setText (xtextReqString);
+				return true;
+			}
+			return false;
+		}
+		
+		public UpdateSysMLReqTextActionCommand(TransactionalEditingDomain domain, Requirement requirement, final EObject xtextObject) {
+			super(domain, "Transition Update", getWorkspaceFiles(requirement)); //$NON-NLS-1$
+			this.requirement = requirement;
+			this.xtextObject = xtextObject;
+		}
+	}
+	
+	@Override
+	protected ICommand getParseCommand(EObject modelObject, EObject xtextObject) {
+		
+		if (!(modelObject instanceof Class)) {
+			return null;
+		}
+		if (null == UMLUtil.getStereotypeApplication((Class)modelObject, Requirement.class)){
+			return null;
+		}
+		Requirement req = UMLUtil.getStereotypeApplication((Class)modelObject, Requirement.class);
+
+		// transitionRuleObject may be null, if we have no input left
+
+		// Creates and executes the update command
+		try {
+			TransactionalEditingDomain dom = ServiceUtilsForEObject.getInstance().getTransactionalEditingDomain(req);
+			UpdateSysMLReqTextActionCommand updateCommand = new UpdateSysMLReqTextActionCommand(dom, req, xtextObject);
+			return updateCommand;
+		} catch (ServiceException ex) {
+			Activator.log.error(ex);
+			return null;
+		}
+	}
+
+	@Override
+	public IPopupEditorHelper createPopupEditorHelper(Object editPart) {
+		return null;
+	}
+
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/editor/RequirementsTextBoilerplatesLanguageEditor.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/editor/RequirementsTextBoilerplatesLanguageEditor.java
new file mode 100644
index 0000000..f7b18b3
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/editor/RequirementsTextBoilerplatesLanguageEditor.java
@@ -0,0 +1,40 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.requirements.sysml14.ui.editor;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.papyrus.extensionpoints.editors.Activator;
+import org.eclipse.papyrus.extensionpoints.editors.utils.IDirectEditorsIds;
+import org.eclipse.papyrus.requirements.sysml14.ui.contribution.RequirementsTextBoilerplatesXtextDirectEditorConfiguration;
+import org.eclipse.papyrus.uml.xtext.integration.DefaultXtextDirectEditorConfiguration;
+
+public class RequirementsTextBoilerplatesLanguageEditor extends XtextLanguageEditor {
+	@Override
+	protected DefaultXtextDirectEditorConfiguration getConfigurationFromSelection() {
+		EObject semanticElement = getEObject();
+		if (semanticElement != null) {
+			IPreferenceStore store = Activator.getDefault().getPreferenceStore();
+			String semanticClassName = semanticElement.eClass().getInstanceClassName();
+			String key = IDirectEditorsIds.EDITOR_FOR_ELEMENT + semanticClassName;
+			if (key.endsWith("org.eclipse.uml2.uml.Class")) {
+				RequirementsTextBoilerplatesXtextDirectEditorConfiguration cfg = new RequirementsTextBoilerplatesXtextDirectEditorConfiguration();
+				cfg.preEditAction(semanticElement);
+				return cfg;
+			}
+		}
+		return super.getConfigurationFromSelection();
+	}
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/editor/UndoRedoStack.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/editor/UndoRedoStack.java
new file mode 100644
index 0000000..4faf0b5
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/editor/UndoRedoStack.java
@@ -0,0 +1,62 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 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.requirements.sysml14.ui.editor;
+
+import java.util.Stack;
+
+public class UndoRedoStack<T> {
+
+	private Stack<T> undo;
+	private Stack<T> redo;
+
+	public UndoRedoStack() {
+		undo = new Stack<T>();
+		redo = new Stack<T>();
+	}
+
+	public void pushUndo(T delta) {
+		undo.add(delta);
+	}
+
+	public void pushRedo(T delta) {
+		redo.add(delta);
+	}
+
+	public T popUndo() {
+		T res = undo.pop();
+		return res;
+	}
+
+	public T popRedo() {
+		T res = redo.pop();
+		return res;
+	}
+
+	public void clearUndo() {
+		undo.clear();
+	}
+
+	public void clearRedo() {
+		redo.clear();
+	}
+
+	public boolean hasUndo() {
+		return !undo.isEmpty();
+	}
+
+	public boolean hasRedo() {
+		return !redo.isEmpty();
+	}
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/editor/XtextLanguageEditor.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/editor/XtextLanguageEditor.java
new file mode 100644
index 0000000..370a200
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/editor/XtextLanguageEditor.java
@@ -0,0 +1,297 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 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.requirements.sysml14.ui.editor;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.emf.transaction.util.TransactionUtil;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.common.ui.services.parser.IParser;
+import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.papyrus.extensionpoints.editors.Activator;
+import org.eclipse.papyrus.extensionpoints.editors.configuration.IDirectEditorConfiguration;
+import org.eclipse.papyrus.extensionpoints.editors.utils.DirectEditorsUtil;
+import org.eclipse.papyrus.extensionpoints.editors.utils.IDirectEditorsIds;
+import org.eclipse.papyrus.infra.emf.gmf.command.GMFtoEMFCommandWrapper;
+import org.eclipse.papyrus.infra.properties.ui.modelelement.ModelElement;
+import org.eclipse.papyrus.infra.ui.emf.dialog.NestedEditingDialogContext;
+import org.eclipse.papyrus.uml.properties.modelelement.UMLModelElement;
+import org.eclipse.papyrus.uml.properties.widgets.BodyEditor;
+import org.eclipse.papyrus.uml.xtext.integration.DefaultXtextDirectEditorConfiguration;
+import org.eclipse.papyrus.uml.xtext.integration.StyledTextXtextAdapter;
+import org.eclipse.papyrus.uml.xtext.integration.core.ContextElementAdapter;
+import org.eclipse.papyrus.uml.xtext.integration.core.ContextElementAdapter.IContextElementProvider;
+import org.eclipse.papyrus.uml.xtext.integration.core.ContextElementAdapter.IContextElementProviderWithInit;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ExtendedModifyEvent;
+import org.eclipse.swt.custom.ExtendedModifyListener;
+import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.FocusListener;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Listener;
+
+public class XtextLanguageEditor implements BodyEditor, IContextElementProvider {
+
+	protected StyledText textControl;
+
+	UndoRedoStack<ExtendedModifyEvent> undoRedoStack;
+
+	protected boolean isUndo;
+
+	protected boolean isRedo;
+
+	private DefaultXtextDirectEditorConfiguration configuration;
+
+	private StyledTextXtextAdapter xtextAdapter;
+
+	protected EObject currentEObj;
+
+	final private ContextElementAdapter contextElementAdapter = new ContextElementAdapter(this);
+
+	public void createWidget(Composite parent, int style) {
+		undoRedoStack = new UndoRedoStack<ExtendedModifyEvent>();
+		createTextControl(parent);
+	}
+
+	protected void createTextControl(final Composite parent) {
+
+		textControl = new StyledText(parent, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.WRAP);
+
+		textControl.addFocusListener(new FocusListener() {
+
+			public void focusLost(FocusEvent e) {
+				IParser parser = getParser();
+				if (xtextAdapter == null) { // May happen under specific circumstances (See Bug 433647)
+					return;
+				}
+
+				if (xtextAdapter.getCompletionProposalAdapter().delayedIsPopupOpen()) {
+					// ignore focus lost
+					return;
+				}
+				if ((parser != null) && !parser.getEditString(null, 0).equals(textControl.getText())) {
+					ICommand command = parser.getParseCommand(new EObjectAdapter(getEObject()), textControl.getText(), 0);
+
+					TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(getEObject());
+					if (domain == null) {
+						// can be null for opaque expression that have been created but have not been added to parent
+						// try to get resource set from nested dialog context
+						ResourceSet rs = NestedEditingDialogContext.getInstance().getResourceSet();
+						domain = TransactionUtil.getEditingDomain(rs);
+					}
+					if (domain != null) {
+						domain.getCommandStack().execute(new GMFtoEMFCommandWrapper(command));
+					}
+				}
+			}
+
+			public void focusGained(FocusEvent e) {
+				// Nothing
+			}
+		});
+
+		textControl.setAlwaysShowScrollBars(false);
+		textControl.setLayout(new GridLayout());
+
+		// GridDataFactory.fillDefaults().grab(true, true).hint(parent.getSize()).applyTo(textControl);
+		textControl.addExtendedModifyListener(new ExtendedModifyListener() {
+
+			public void modifyText(ExtendedModifyEvent event) {
+				if (isUndo) {
+					undoRedoStack.pushRedo(event);
+				} else { // is Redo or a normal user action
+					undoRedoStack.pushUndo(event);
+					if (!isRedo) {
+						undoRedoStack.clearRedo();
+						// TODO Switch to treat consecutive characters as one event?
+					}
+				}
+			}
+		});
+
+		textControl.addKeyListener(new KeyAdapter() {
+
+			@Override
+			public void keyPressed(KeyEvent e) {
+				boolean isCtrl = (e.stateMask & SWT.CTRL) > 0;
+				boolean isAlt = (e.stateMask & SWT.ALT) > 0;
+				if (isCtrl && !isAlt) {
+					boolean isShift = (e.stateMask & SWT.SHIFT) > 0;
+					if (e.keyCode == 'z') {
+						if (isShift) {
+							redo();
+						} else {
+							undo();
+						}
+					}
+				}
+			}
+		});
+	}
+
+	protected void undo() {
+		if (undoRedoStack.hasUndo()) {
+			isUndo = true;
+			revertEvent(undoRedoStack.popUndo());
+			isUndo = false;
+		}
+	}
+
+	protected void redo() {
+		if (undoRedoStack.hasRedo()) {
+			isRedo = true;
+			revertEvent(undoRedoStack.popRedo());
+			isRedo = false;
+		}
+	}
+
+	/**
+	 * Reverts the given modify event, in the way as the Eclipse text editor
+	 * does it.
+	 *
+	 * @param event
+	 */
+	protected void revertEvent(ExtendedModifyEvent event) {
+		textControl.replaceTextRange(event.start, event.length, event.replacedText);
+		// (causes the modifyText() listener method to be called)
+
+		textControl.setSelectionRange(event.start, event.replacedText.length());
+	}
+
+	protected IParser getParser() {
+		final EObject semanticElement = getEObject();
+		if (configuration != null && semanticElement != null) {
+			return configuration.createParser(semanticElement);
+		}
+		return null;
+	}
+
+	protected void updateXtextAdapters(Control styledText) {
+		final Object oldObjectToEdit = configuration != null ? configuration.getObjectToEdit() : null;
+
+		final DefaultXtextDirectEditorConfiguration newConfiguration = getConfigurationFromSelection();
+		// Check if configuration has changed and update adapters
+		if (newConfiguration != null && newConfiguration != configuration) {
+			if (xtextAdapter != null) {
+				xtextAdapter.getFakeResourceContext().getFakeResource().eAdapters().remove(contextElementAdapter);
+			}
+			configuration = newConfiguration;
+			xtextAdapter = new StyledTextXtextAdapter(configuration.getInjector());
+
+			EObject semanticElement = getEObject();
+			if (semanticElement != null) {
+				newConfiguration.preEditAction(semanticElement);
+			}
+
+			xtextAdapter.getFakeResourceContext().getFakeResource().eAdapters().add(contextElementAdapter);
+			xtextAdapter.adapt((StyledText) styledText);
+		}
+
+		if (configuration != null && configuration.getObjectToEdit() != oldObjectToEdit) {
+			IContextElementProvider provider = configuration.getContextProvider();
+			if (provider instanceof IContextElementProviderWithInit) {
+				// update resource, if required by text editor
+				if (xtextAdapter != null) {
+					((IContextElementProviderWithInit) provider).initResource(xtextAdapter.getFakeResourceContext().getFakeResource());
+				}
+			}
+			Object semanticObject = configuration.getObjectToEdit();
+			if (semanticObject instanceof EObject) {
+				currentEObj = (EObject) semanticObject;
+			}
+		}
+	}
+
+	protected DefaultXtextDirectEditorConfiguration getConfigurationFromSelection() {
+		EObject semanticElement = getEObject();
+		if (semanticElement != null) {
+			IPreferenceStore store = Activator.getDefault().getPreferenceStore();
+			String semanticClassName = semanticElement.eClass().getInstanceClassName();
+			String key = IDirectEditorsIds.EDITOR_FOR_ELEMENT + semanticClassName;
+			String languagePreferred = store.getString(key);
+
+			if (languagePreferred != null && !languagePreferred.equals("")) { //$NON-NLS-1$
+				IDirectEditorConfiguration configuration = DirectEditorsUtil.findEditorConfiguration(languagePreferred, semanticClassName);
+				if (configuration instanceof DefaultXtextDirectEditorConfiguration) {
+
+					DefaultXtextDirectEditorConfiguration xtextConfiguration = (DefaultXtextDirectEditorConfiguration) configuration;
+					xtextConfiguration.preEditAction(semanticElement);
+					return xtextConfiguration;
+				}
+			}
+		}
+		return null;
+	}
+
+	public EObject getContextObject() {
+		return getEObject();
+	}
+
+	public void setInput(String value) {
+		if (value != null) {
+			textControl.setText(value);
+			// clear undo redo/stack, since we do not want to give the user the possibility
+			// to undo the initial input.
+			undoRedoStack.clearUndo();
+			undoRedoStack.clearRedo();
+		}
+	}
+
+	public void dispose() {
+		// dispose resources to avoid memory leaks
+		if (textControl != null) {
+			textControl.dispose();
+		}
+		if (xtextAdapter != null) {
+			xtextAdapter.getFakeResourceContext().getFakeResource().eAdapters().remove(contextElementAdapter);
+			xtextAdapter.dispose();
+			xtextAdapter = null;
+		}
+	}
+
+	public void addChangeListener(Listener listener) {
+	}
+
+	public void removeChangeListener(Listener listener) {
+	}
+
+	public String getValue() {
+		return null;
+	}
+
+	public void setReadOnly(boolean readOnly) {
+	}
+
+	public void setContext(ModelElement context) {
+		if (context instanceof UMLModelElement) {
+			currentEObj = ((UMLModelElement) context).getSource();
+			updateXtextAdapters(textControl);
+		}
+	}
+
+	/**
+	 * @return Returns the eObject.
+	 */
+	protected EObject getEObject() {
+		return currentEObj;
+	}
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/labeling/BoilerplateTextDescriptionLabelProvider.xtend b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/labeling/BoilerplateTextDescriptionLabelProvider.xtend
new file mode 100644
index 0000000..4a5cc5c
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/labeling/BoilerplateTextDescriptionLabelProvider.xtend
@@ -0,0 +1,24 @@
+/*
+ * generated by Xtext 2.10.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.ui.labeling
+
+import org.eclipse.xtext.ui.label.DefaultDescriptionLabelProvider
+
+/**
+ * Provides labels for IEObjectDescriptions and IResourceDescriptions.
+ * 
+ * See https://www.eclipse.org/Xtext/documentation/304_ide_concepts.html#label-provider
+ */
+class BoilerplateTextDescriptionLabelProvider extends 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/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/labeling/BoilerplateTextLabelProvider.xtend b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/labeling/BoilerplateTextLabelProvider.xtend
new file mode 100644
index 0000000..97b2101
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/labeling/BoilerplateTextLabelProvider.xtend
@@ -0,0 +1,31 @@
+/*
+ * generated by Xtext 2.10.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.ui.labeling
+
+import com.google.inject.Inject
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider
+import org.eclipse.xtext.ui.label.DefaultEObjectLabelProvider
+
+/**
+ * Provides labels for EObjects.
+ * 
+ * See https://www.eclipse.org/Xtext/documentation/304_ide_concepts.html#label-provider
+ */
+class BoilerplateTextLabelProvider extends DefaultEObjectLabelProvider {
+
+	@Inject
+	new(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/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/outline/BoilerplateTextOutlineTreeProvider.xtend b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/outline/BoilerplateTextOutlineTreeProvider.xtend
new file mode 100644
index 0000000..a34d822
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/outline/BoilerplateTextOutlineTreeProvider.xtend
@@ -0,0 +1,15 @@
+/*
+ * generated by Xtext 2.10.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.ui.outline
+
+import org.eclipse.xtext.ui.editor.outline.impl.DefaultOutlineTreeProvider
+
+/**
+ * Customization of the default outline structure.
+ *
+ * See https://www.eclipse.org/Xtext/documentation/304_ide_concepts.html#outline
+ */
+class BoilerplateTextOutlineTreeProvider extends DefaultOutlineTreeProvider {
+
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/quickfix/BoilerplateTextQuickfixProvider.xtend b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/quickfix/BoilerplateTextQuickfixProvider.xtend
new file mode 100644
index 0000000..f5b548c
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/src/org/eclipse/papyrus/requirements/sysml14/ui/quickfix/BoilerplateTextQuickfixProvider.xtend
@@ -0,0 +1,24 @@
+/*
+ * generated by Xtext 2.10.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.ui.quickfix
+
+import org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider
+
+/**
+ * Custom quickfixes.
+ *
+ * See https://www.eclipse.org/Xtext/documentation/310_eclipse_support.html#quick-fixes
+ */
+class BoilerplateTextQuickfixProvider extends DefaultQuickfixProvider {
+
+//	@Fix(BoilerplateTextValidator.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/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/xtend-gen/org/eclipse/papyrus/requirements/sysml14/ui/.gitignore b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/xtend-gen/org/eclipse/papyrus/requirements/sysml14/ui/.gitignore
new file mode 100644
index 0000000..c2a02ae
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/xtend-gen/org/eclipse/papyrus/requirements/sysml14/ui/.gitignore
@@ -0,0 +1,3 @@
+/.BoilerplateTextUiModule.java._trace
+/.BoilerplateTextUiModule.xtendbin
+/BoilerplateTextUiModule.java
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/xtend-gen/org/eclipse/papyrus/requirements/sysml14/ui/contentassist/.gitignore b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/xtend-gen/org/eclipse/papyrus/requirements/sysml14/ui/contentassist/.gitignore
new file mode 100644
index 0000000..09fcf18
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/xtend-gen/org/eclipse/papyrus/requirements/sysml14/ui/contentassist/.gitignore
@@ -0,0 +1,3 @@
+/.BoilerplateTextProposalProvider.java._trace
+/.BoilerplateTextProposalProvider.xtendbin
+/BoilerplateTextProposalProvider.java
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/xtend-gen/org/eclipse/papyrus/requirements/sysml14/ui/labeling/.gitignore b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/xtend-gen/org/eclipse/papyrus/requirements/sysml14/ui/labeling/.gitignore
new file mode 100644
index 0000000..10bff8b
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/xtend-gen/org/eclipse/papyrus/requirements/sysml14/ui/labeling/.gitignore
@@ -0,0 +1,6 @@
+/.BoilerplateTextDescriptionLabelProvider.java._trace
+/.BoilerplateTextDescriptionLabelProvider.xtendbin
+/.BoilerplateTextLabelProvider.java._trace
+/.BoilerplateTextLabelProvider.xtendbin
+/BoilerplateTextDescriptionLabelProvider.java
+/BoilerplateTextLabelProvider.java
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/xtend-gen/org/eclipse/papyrus/requirements/sysml14/ui/outline/.gitignore b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/xtend-gen/org/eclipse/papyrus/requirements/sysml14/ui/outline/.gitignore
new file mode 100644
index 0000000..2e7594f
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/xtend-gen/org/eclipse/papyrus/requirements/sysml14/ui/outline/.gitignore
@@ -0,0 +1,3 @@
+/.BoilerplateTextOutlineTreeProvider.java._trace
+/.BoilerplateTextOutlineTreeProvider.xtendbin
+/BoilerplateTextOutlineTreeProvider.java
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/xtend-gen/org/eclipse/papyrus/requirements/sysml14/ui/quickfix/.gitignore b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/xtend-gen/org/eclipse/papyrus/requirements/sysml14/ui/quickfix/.gitignore
new file mode 100644
index 0000000..90f1437
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext.ui/xtend-gen/org/eclipse/papyrus/requirements/sysml14/ui/quickfix/.gitignore
@@ -0,0 +1,3 @@
+/.BoilerplateTextQuickfixProvider.java._trace
+/.BoilerplateTextQuickfixProvider.xtendbin
+/BoilerplateTextQuickfixProvider.java
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/.antlr-generator-3.2.0-patch.jar b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/.antlr-generator-3.2.0-patch.jar
new file mode 100644
index 0000000..90516fd
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/.antlr-generator-3.2.0-patch.jar
Binary files differ
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/.classpath b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/.classpath
new file mode 100644
index 0000000..9081d4f
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/.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/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/.gitignore b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/.project b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/.project
new file mode 100644
index 0000000..aee71a7
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.requirements.sysml14.boilerplatetext</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.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/.settings/org.eclipse.core.resources.prefs b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..68a0304
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=windows-1252
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/.settings/org.eclipse.jdt.core.prefs b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.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
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/META-INF/MANIFEST.MF b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..bbefaed
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/META-INF/MANIFEST.MF
@@ -0,0 +1,35 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.papyrus.requirements.sysml14.boilerplatetext
+Bundle-Vendor: Eclipse Modelling Project
+Bundle-Version: 0.7.0.qualifier
+Bundle-SymbolicName: org.eclipse.papyrus.requirements.sysml14.boilerplatetext; singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.xtext,
+ org.eclipse.xtext.xbase,
+ org.eclipse.equinox.common;bundle-version="3.5.0",
+ org.eclipse.emf.ecore,
+ org.eclipse.xtext.xbase.lib,
+ org.antlr.runtime,
+ org.eclipse.xtext.util,
+ org.eclipse.xtend.lib,
+ org.eclipse.emf.common,
+ org.eclipse.papyrus.extensionpoints.editors,
+ org.eclipse.uml2.uml,
+ org.eclipse.papyrus.sysml14;bundle-version="0.10.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.papyrus.requirements.sysml14,
+ org.eclipse.papyrus.requirements.sysml14.boilerplateText,
+ org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl,
+ org.eclipse.papyrus.requirements.sysml14.boilerplateText.util,
+ org.eclipse.papyrus.requirements.sysml14.generator,
+ org.eclipse.papyrus.requirements.sysml14.parser.antlr,
+ org.eclipse.papyrus.requirements.sysml14.parser.antlr.internal,
+ org.eclipse.papyrus.requirements.sysml14.scoping,
+ org.eclipse.papyrus.requirements.sysml14.serializer,
+ org.eclipse.papyrus.requirements.sysml14.services,
+ org.eclipse.papyrus.requirements.sysml14.validation,
+ org.eclipse.papyrus.requirements.sysml14.visitor
+Import-Package: org.apache.log4j,
+ org.eclipse.papyrus.infra.emf.utils,
+ org.eclipse.papyrus.uml.tools.utils
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/about.html b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/about.html
new file mode 100644
index 0000000..d35d5ae
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 5, 2007</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/build.properties b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/build.properties
new file mode 100644
index 0000000..2b24043
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/build.properties
@@ -0,0 +1,21 @@
+source.. = src/,\
+           src-gen/,\
+           xtend-gen/
+bin.includes = model/generated/,\
+               .,\
+               META-INF/,\
+               plugin.xml,\
+               about.html
+additional.bundles = org.eclipse.xtext.xbase,\
+                     org.eclipse.xtext.common.types,\
+                     org.eclipse.xtext.xtext.generator,\
+                     org.eclipse.emf.codegen.ecore,\
+                     org.eclipse.emf.mwe.utils,\
+                     org.eclipse.emf.mwe2.launch,\
+                     org.eclipse.emf.mwe2.lib,\
+                     org.objectweb.asm,\
+                     org.apache.commons.logging,\
+                     org.apache.log4j,\
+                     com.ibm.icu
+src.includes = about.html,\
+               model/
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/model/generated/BoilerplateText.ecore b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/model/generated/BoilerplateText.ecore
new file mode 100644
index 0000000..672aca1
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/model/generated/BoilerplateText.ecore
@@ -0,0 +1,43 @@
+<?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="boilerplateText" nsURI="http://www.eclipse.org/papyrus/requirements/sysml14/BoilerplateText"
+    nsPrefix="boilerplateText">
+  <eClassifiers xsi:type="ecore:EClass" name="Model">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="model" eType="#//Requirement"
+        containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Requirement">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="prefix" eType="#//Prefix"
+        containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="system" eType="#//Subject"
+        containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="predicate" eType="#//Predicate"
+        containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Subject">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="system" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Prefix"/>
+  <eClassifiers xsi:type="ecore:EClass" name="If" eSuperTypes="#//Prefix">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="event" unique="false" upperBound="-1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="While" eSuperTypes="#//Prefix">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="state" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Predicate">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="action" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ShallNotAllow" eSuperTypes="#//Predicate">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="entity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="actionPerformedByEntity"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ShallAllow" eSuperTypes="#//Predicate">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="entity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="actionPerformedByEntity"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ShallNot" eSuperTypes="#//Predicate"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Shall" eSuperTypes="#//Predicate"/>
+</ecore:EPackage>
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/model/generated/BoilerplateText.genmodel b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/model/generated/BoilerplateText.genmodel
new file mode 100644
index 0000000..2c95204
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/model/generated/BoilerplateText.genmodel
@@ -0,0 +1,42 @@
+<?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="****************************************************************************&#xD;&#xA;Copyright (c) 2017 CEA LIST.&#xD;&#xA; *&#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;&#xD;&#xA;&#x9;&#x9;Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation&#xD;&#xA; *&#xD;&#xA; ****************************************************************************&#xD;&#xA;&#xA;generated by Xtext 2.11.0"
+    modelDirectory="/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen"
+    modelPluginID="org.eclipse.papyrus.requirements.sysml14.boilerplatetext" forceOverwrite="true"
+    modelName="BoilerplateText" updateClasspath="false" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+    complianceLevel="6.0" copyrightFields="false" runtimeVersion="2.12">
+  <genPackages prefix="BoilerplateText" basePackage="org.eclipse.papyrus.requirements.sysml14"
+      disposableProviderFactory="true" fileExtensions="boil" ecorePackage="BoilerplateText.ecore#/">
+    <genClasses ecoreClass="BoilerplateText.ecore#//Model">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference BoilerplateText.ecore#//Model/model"/>
+    </genClasses>
+    <genClasses ecoreClass="BoilerplateText.ecore#//Requirement">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference BoilerplateText.ecore#//Requirement/prefix"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference BoilerplateText.ecore#//Requirement/system"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference BoilerplateText.ecore#//Requirement/predicate"/>
+    </genClasses>
+    <genClasses ecoreClass="BoilerplateText.ecore#//Subject">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute BoilerplateText.ecore#//Subject/system"/>
+    </genClasses>
+    <genClasses ecoreClass="BoilerplateText.ecore#//Prefix"/>
+    <genClasses ecoreClass="BoilerplateText.ecore#//If">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute BoilerplateText.ecore#//If/event"/>
+    </genClasses>
+    <genClasses ecoreClass="BoilerplateText.ecore#//While">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute BoilerplateText.ecore#//While/state"/>
+    </genClasses>
+    <genClasses ecoreClass="BoilerplateText.ecore#//Predicate">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute BoilerplateText.ecore#//Predicate/action"/>
+    </genClasses>
+    <genClasses ecoreClass="BoilerplateText.ecore#//ShallNotAllow">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute BoilerplateText.ecore#//ShallNotAllow/entity"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute BoilerplateText.ecore#//ShallNotAllow/actionPerformedByEntity"/>
+    </genClasses>
+    <genClasses ecoreClass="BoilerplateText.ecore#//ShallAllow">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute BoilerplateText.ecore#//ShallAllow/entity"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute BoilerplateText.ecore#//ShallAllow/actionPerformedByEntity"/>
+    </genClasses>
+    <genClasses ecoreClass="BoilerplateText.ecore#//ShallNot"/>
+    <genClasses ecoreClass="BoilerplateText.ecore#//Shall"/>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/plugin.xml b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/plugin.xml
new file mode 100644
index 0000000..29b80fa
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/plugin.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="windows-1252"?>
+<?eclipse version="3.0"?>
+<plugin>
+	<extension point="org.eclipse.emf.ecore.generated_package">
+		<package 
+			uri = "http://www.eclipse.org/papyrus/requirements/sysml14/BoilerplateText"
+			class = "org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage"
+			genModel = "model/generated/BoilerplateText.genmodel" />
+	</extension>
+</plugin>
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/plugin.xml_gen b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/plugin.xml_gen
new file mode 100644
index 0000000..29b80fa
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/plugin.xml_gen
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="windows-1252"?>
+<?eclipse version="3.0"?>
+<plugin>
+	<extension point="org.eclipse.emf.ecore.generated_package">
+		<package 
+			uri = "http://www.eclipse.org/papyrus/requirements/sysml14/BoilerplateText"
+			class = "org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage"
+			genModel = "model/generated/BoilerplateText.genmodel" />
+	</extension>
+</plugin>
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/AbstractBoilerplateTextRuntimeModule.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/AbstractBoilerplateTextRuntimeModule.java
new file mode 100644
index 0000000..4c8377a
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/AbstractBoilerplateTextRuntimeModule.java
@@ -0,0 +1,208 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14;
+
+import com.google.inject.Binder;
+import com.google.inject.Provider;
+import com.google.inject.name.Names;
+import java.util.Properties;
+import org.eclipse.papyrus.requirements.sysml14.generator.BoilerplateTextGenerator;
+import org.eclipse.papyrus.requirements.sysml14.parser.antlr.BoilerplateTextAntlrTokenFileProvider;
+import org.eclipse.papyrus.requirements.sysml14.parser.antlr.BoilerplateTextParser;
+import org.eclipse.papyrus.requirements.sysml14.parser.antlr.internal.InternalBoilerplateTextLexer;
+import org.eclipse.papyrus.requirements.sysml14.scoping.BoilerplateTextScopeProvider;
+import org.eclipse.papyrus.requirements.sysml14.serializer.BoilerplateTextSemanticSequencer;
+import org.eclipse.papyrus.requirements.sysml14.serializer.BoilerplateTextSyntacticSequencer;
+import org.eclipse.papyrus.requirements.sysml14.services.BoilerplateTextGrammarAccess;
+import org.eclipse.papyrus.requirements.sysml14.validation.BoilerplateTextValidator;
+import org.eclipse.xtext.Constants;
+import org.eclipse.xtext.IGrammarAccess;
+import org.eclipse.xtext.generator.IGenerator2;
+import org.eclipse.xtext.naming.DefaultDeclarativeQualifiedNameProvider;
+import org.eclipse.xtext.naming.IQualifiedNameProvider;
+import org.eclipse.xtext.parser.IParser;
+import org.eclipse.xtext.parser.ITokenToStringConverter;
+import org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider;
+import org.eclipse.xtext.parser.antlr.AntlrTokenToStringConverter;
+import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider;
+import org.eclipse.xtext.parser.antlr.ITokenDefProvider;
+import org.eclipse.xtext.parser.antlr.Lexer;
+import org.eclipse.xtext.parser.antlr.LexerBindings;
+import org.eclipse.xtext.parser.antlr.LexerProvider;
+import org.eclipse.xtext.resource.IContainer;
+import org.eclipse.xtext.resource.IResourceDescriptions;
+import org.eclipse.xtext.resource.containers.IAllContainersState;
+import org.eclipse.xtext.resource.containers.ResourceSetBasedAllContainersStateProvider;
+import org.eclipse.xtext.resource.containers.StateBasedContainerManager;
+import org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider;
+import org.eclipse.xtext.resource.impl.ResourceSetBasedResourceDescriptions;
+import org.eclipse.xtext.scoping.IGlobalScopeProvider;
+import org.eclipse.xtext.scoping.IScopeProvider;
+import org.eclipse.xtext.scoping.IgnoreCaseLinking;
+import org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider;
+import org.eclipse.xtext.scoping.impl.DefaultGlobalScopeProvider;
+import org.eclipse.xtext.scoping.impl.ImportedNamespaceAwareLocalScopeProvider;
+import org.eclipse.xtext.serializer.ISerializer;
+import org.eclipse.xtext.serializer.impl.Serializer;
+import org.eclipse.xtext.serializer.sequencer.ISemanticSequencer;
+import org.eclipse.xtext.serializer.sequencer.ISyntacticSequencer;
+import org.eclipse.xtext.service.DefaultRuntimeModule;
+import org.eclipse.xtext.service.SingletonBinding;
+
+/**
+ * Manual modifications go to {@link BoilerplateTextRuntimeModule}.
+ */
+@SuppressWarnings("all")
+public abstract class AbstractBoilerplateTextRuntimeModule extends DefaultRuntimeModule {
+
+	protected Properties properties = null;
+
+	@Override
+	public void configure(Binder binder) {
+		properties = tryBindProperties(binder, "org/eclipse/papyrus/requirements/sysml14/BoilerplateText.properties");
+		super.configure(binder);
+	}
+	
+	public void configureLanguageName(Binder binder) {
+		binder.bind(String.class).annotatedWith(Names.named(Constants.LANGUAGE_NAME)).toInstance("org.eclipse.papyrus.requirements.sysml14.BoilerplateText");
+	}
+	
+	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("boil");
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.grammarAccess.GrammarAccessFragment2
+	public ClassLoader bindClassLoaderToInstance() {
+		return getClass().getClassLoader();
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.grammarAccess.GrammarAccessFragment2
+	public Class<? extends IGrammarAccess> bindIGrammarAccess() {
+		return BoilerplateTextGrammarAccess.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.serializer.SerializerFragment2
+	public Class<? extends ISemanticSequencer> bindISemanticSequencer() {
+		return BoilerplateTextSemanticSequencer.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.serializer.SerializerFragment2
+	public Class<? extends ISyntacticSequencer> bindISyntacticSequencer() {
+		return BoilerplateTextSyntacticSequencer.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.serializer.SerializerFragment2
+	public Class<? extends ISerializer> bindISerializer() {
+		return Serializer.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Class<? extends IParser> bindIParser() {
+		return BoilerplateTextParser.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Class<? extends ITokenToStringConverter> bindITokenToStringConverter() {
+		return AntlrTokenToStringConverter.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Class<? extends IAntlrTokenFileProvider> bindIAntlrTokenFileProvider() {
+		return BoilerplateTextAntlrTokenFileProvider.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Class<? extends Lexer> bindLexer() {
+		return InternalBoilerplateTextLexer.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Class<? extends ITokenDefProvider> bindITokenDefProvider() {
+		return AntlrTokenDefProvider.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Provider<? extends InternalBoilerplateTextLexer> provideInternalBoilerplateTextLexer() {
+		return LexerProvider.create(InternalBoilerplateTextLexer.class);
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public void configureRuntimeLexer(Binder binder) {
+		binder.bind(Lexer.class)
+			.annotatedWith(Names.named(LexerBindings.RUNTIME))
+			.to(InternalBoilerplateTextLexer.class);
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.validation.ValidatorFragment2
+	@SingletonBinding(eager=true)
+	public Class<? extends BoilerplateTextValidator> bindBoilerplateTextValidator() {
+		return BoilerplateTextValidator.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.scoping.ImportNamespacesScopingFragment2
+	public Class<? extends IScopeProvider> bindIScopeProvider() {
+		return BoilerplateTextScopeProvider.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.scoping.ImportNamespacesScopingFragment2
+	public void configureIScopeProviderDelegate(Binder binder) {
+		binder.bind(IScopeProvider.class).annotatedWith(Names.named(AbstractDeclarativeScopeProvider.NAMED_DELEGATE)).to(ImportedNamespaceAwareLocalScopeProvider.class);
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.scoping.ImportNamespacesScopingFragment2
+	public Class<? extends IGlobalScopeProvider> bindIGlobalScopeProvider() {
+		return DefaultGlobalScopeProvider.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.scoping.ImportNamespacesScopingFragment2
+	public void configureIgnoreCaseLinking(Binder binder) {
+		binder.bindConstant().annotatedWith(IgnoreCaseLinking.class).to(false);
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.exporting.QualifiedNamesFragment2
+	public Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() {
+		return DefaultDeclarativeQualifiedNameProvider.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2
+	public Class<? extends IContainer.Manager> bindIContainer$Manager() {
+		return StateBasedContainerManager.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2
+	public Class<? extends IAllContainersState.Provider> bindIAllContainersState$Provider() {
+		return ResourceSetBasedAllContainersStateProvider.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2
+	public void configureIResourceDescriptions(Binder binder) {
+		binder.bind(IResourceDescriptions.class).to(ResourceSetBasedResourceDescriptions.class);
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.builder.BuilderIntegrationFragment2
+	public void configureIResourceDescriptionsPersisted(Binder binder) {
+		binder.bind(IResourceDescriptions.class).annotatedWith(Names.named(ResourceDescriptionsProvider.PERSISTED_DESCRIPTIONS)).to(ResourceSetBasedResourceDescriptions.class);
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.generator.GeneratorFragment2
+	public Class<? extends IGenerator2> bindIGenerator2() {
+		return BoilerplateTextGenerator.class;
+	}
+	
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/BoilerplateText.xtextbin b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/BoilerplateText.xtextbin
new file mode 100644
index 0000000..79cdc61
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/BoilerplateText.xtextbin
Binary files differ
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/BoilerplateTextStandaloneSetupGenerated.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/BoilerplateTextStandaloneSetupGenerated.java
new file mode 100644
index 0000000..7e43021
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/BoilerplateTextStandaloneSetupGenerated.java
@@ -0,0 +1,56 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage;
+import org.eclipse.xtext.ISetup;
+import org.eclipse.xtext.common.TerminalsStandaloneSetup;
+import org.eclipse.xtext.resource.IResourceFactory;
+import org.eclipse.xtext.resource.IResourceServiceProvider;
+
+@SuppressWarnings("all")
+public class BoilerplateTextStandaloneSetupGenerated implements ISetup {
+
+	@Override
+	public Injector createInjectorAndDoEMFRegistration() {
+		TerminalsStandaloneSetup.doSetup();
+
+		Injector injector = createInjector();
+		register(injector);
+		return injector;
+	}
+	
+	public Injector createInjector() {
+		return Guice.createInjector(new BoilerplateTextRuntimeModule());
+	}
+	
+	public void register(Injector injector) {
+		if (!EPackage.Registry.INSTANCE.containsKey("http://www.eclipse.org/papyrus/requirements/sysml14/BoilerplateText")) {
+			EPackage.Registry.INSTANCE.put("http://www.eclipse.org/papyrus/requirements/sysml14/BoilerplateText", BoilerplateTextPackage.eINSTANCE);
+		}
+		IResourceFactory resourceFactory = injector.getInstance(IResourceFactory.class);
+		IResourceServiceProvider serviceProvider = injector.getInstance(IResourceServiceProvider.class);
+		
+		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("boil", resourceFactory);
+		IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("boil", serviceProvider);
+	}
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/BoilerplateTextFactory.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/BoilerplateTextFactory.java
new file mode 100644
index 0000000..6b4ef88
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/BoilerplateTextFactory.java
@@ -0,0 +1,149 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *  *
+ *  *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *  *
+ *  ****************************************************************************
+ * 
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.boilerplateText;
+
+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.requirements.sysml14.boilerplateText.BoilerplateTextPackage
+ * @generated
+ */
+public interface BoilerplateTextFactory extends EFactory
+{
+  /**
+   * The singleton instance of the factory.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  BoilerplateTextFactory eINSTANCE = org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.BoilerplateTextFactoryImpl.init();
+
+  /**
+   * Returns a new object of class '<em>Model</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Model</em>'.
+   * @generated
+   */
+  Model createModel();
+
+  /**
+   * Returns a new object of class '<em>Requirement</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Requirement</em>'.
+   * @generated
+   */
+  Requirement createRequirement();
+
+  /**
+   * Returns a new object of class '<em>Subject</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Subject</em>'.
+   * @generated
+   */
+  Subject createSubject();
+
+  /**
+   * Returns a new object of class '<em>Prefix</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Prefix</em>'.
+   * @generated
+   */
+  Prefix createPrefix();
+
+  /**
+   * Returns a new object of class '<em>If</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>If</em>'.
+   * @generated
+   */
+  If createIf();
+
+  /**
+   * Returns a new object of class '<em>While</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>While</em>'.
+   * @generated
+   */
+  While createWhile();
+
+  /**
+   * Returns a new object of class '<em>Predicate</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Predicate</em>'.
+   * @generated
+   */
+  Predicate createPredicate();
+
+  /**
+   * Returns a new object of class '<em>Shall Not Allow</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Shall Not Allow</em>'.
+   * @generated
+   */
+  ShallNotAllow createShallNotAllow();
+
+  /**
+   * Returns a new object of class '<em>Shall Allow</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Shall Allow</em>'.
+   * @generated
+   */
+  ShallAllow createShallAllow();
+
+  /**
+   * Returns a new object of class '<em>Shall Not</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Shall Not</em>'.
+   * @generated
+   */
+  ShallNot createShallNot();
+
+  /**
+   * Returns a new object of class '<em>Shall</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Shall</em>'.
+   * @generated
+   */
+  Shall createShall();
+
+  /**
+   * Returns the package supported by this factory.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the package supported by this factory.
+   * @generated
+   */
+  BoilerplateTextPackage getBoilerplateTextPackage();
+
+} //BoilerplateTextFactory
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/BoilerplateTextPackage.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/BoilerplateTextPackage.java
new file mode 100644
index 0000000..c18f708
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/BoilerplateTextPackage.java
@@ -0,0 +1,902 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *  *
+ *  *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *  *
+ *  ****************************************************************************
+ * 
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.boilerplateText;
+
+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.requirements.sysml14.boilerplateText.BoilerplateTextFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface BoilerplateTextPackage extends EPackage
+{
+  /**
+   * The package name.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  String eNAME = "boilerplateText";
+
+  /**
+   * The package namespace URI.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  String eNS_URI = "http://www.eclipse.org/papyrus/requirements/sysml14/BoilerplateText";
+
+  /**
+   * The package namespace name.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  String eNS_PREFIX = "boilerplateText";
+
+  /**
+   * The singleton instance of the package.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  BoilerplateTextPackage eINSTANCE = org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.BoilerplateTextPackageImpl.init();
+
+  /**
+   * The meta object id for the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.ModelImpl <em>Model</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.ModelImpl
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.BoilerplateTextPackageImpl#getModel()
+   * @generated
+   */
+  int MODEL = 0;
+
+  /**
+   * The feature id for the '<em><b>Model</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int MODEL__MODEL = 0;
+
+  /**
+   * The number of structural features of the '<em>Model</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int MODEL_FEATURE_COUNT = 1;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.RequirementImpl <em>Requirement</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.RequirementImpl
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.BoilerplateTextPackageImpl#getRequirement()
+   * @generated
+   */
+  int REQUIREMENT = 1;
+
+  /**
+   * The feature id for the '<em><b>Prefix</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int REQUIREMENT__PREFIX = 0;
+
+  /**
+   * The feature id for the '<em><b>System</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int REQUIREMENT__SYSTEM = 1;
+
+  /**
+   * The feature id for the '<em><b>Predicate</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int REQUIREMENT__PREDICATE = 2;
+
+  /**
+   * The number of structural features of the '<em>Requirement</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int REQUIREMENT_FEATURE_COUNT = 3;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.SubjectImpl <em>Subject</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.SubjectImpl
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.BoilerplateTextPackageImpl#getSubject()
+   * @generated
+   */
+  int SUBJECT = 2;
+
+  /**
+   * The feature id for the '<em><b>System</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int SUBJECT__SYSTEM = 0;
+
+  /**
+   * The number of structural features of the '<em>Subject</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int SUBJECT_FEATURE_COUNT = 1;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.PrefixImpl <em>Prefix</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.PrefixImpl
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.BoilerplateTextPackageImpl#getPrefix()
+   * @generated
+   */
+  int PREFIX = 3;
+
+  /**
+   * The number of structural features of the '<em>Prefix</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int PREFIX_FEATURE_COUNT = 0;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.IfImpl <em>If</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.IfImpl
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.BoilerplateTextPackageImpl#getIf()
+   * @generated
+   */
+  int IF = 4;
+
+  /**
+   * The feature id for the '<em><b>Event</b></em>' attribute list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int IF__EVENT = PREFIX_FEATURE_COUNT + 0;
+
+  /**
+   * The number of structural features of the '<em>If</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int IF_FEATURE_COUNT = PREFIX_FEATURE_COUNT + 1;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.WhileImpl <em>While</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.WhileImpl
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.BoilerplateTextPackageImpl#getWhile()
+   * @generated
+   */
+  int WHILE = 5;
+
+  /**
+   * The feature id for the '<em><b>State</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int WHILE__STATE = PREFIX_FEATURE_COUNT + 0;
+
+  /**
+   * The number of structural features of the '<em>While</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int WHILE_FEATURE_COUNT = PREFIX_FEATURE_COUNT + 1;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.PredicateImpl <em>Predicate</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.PredicateImpl
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.BoilerplateTextPackageImpl#getPredicate()
+   * @generated
+   */
+  int PREDICATE = 6;
+
+  /**
+   * The feature id for the '<em><b>Action</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int PREDICATE__ACTION = 0;
+
+  /**
+   * The number of structural features of the '<em>Predicate</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int PREDICATE_FEATURE_COUNT = 1;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.ShallNotAllowImpl <em>Shall Not Allow</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.ShallNotAllowImpl
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.BoilerplateTextPackageImpl#getShallNotAllow()
+   * @generated
+   */
+  int SHALL_NOT_ALLOW = 7;
+
+  /**
+   * The feature id for the '<em><b>Action</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int SHALL_NOT_ALLOW__ACTION = PREDICATE__ACTION;
+
+  /**
+   * The feature id for the '<em><b>Entity</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int SHALL_NOT_ALLOW__ENTITY = PREDICATE_FEATURE_COUNT + 0;
+
+  /**
+   * The feature id for the '<em><b>Action Performed By Entity</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int SHALL_NOT_ALLOW__ACTION_PERFORMED_BY_ENTITY = PREDICATE_FEATURE_COUNT + 1;
+
+  /**
+   * The number of structural features of the '<em>Shall Not Allow</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int SHALL_NOT_ALLOW_FEATURE_COUNT = PREDICATE_FEATURE_COUNT + 2;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.ShallAllowImpl <em>Shall Allow</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.ShallAllowImpl
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.BoilerplateTextPackageImpl#getShallAllow()
+   * @generated
+   */
+  int SHALL_ALLOW = 8;
+
+  /**
+   * The feature id for the '<em><b>Action</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int SHALL_ALLOW__ACTION = PREDICATE__ACTION;
+
+  /**
+   * The feature id for the '<em><b>Entity</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int SHALL_ALLOW__ENTITY = PREDICATE_FEATURE_COUNT + 0;
+
+  /**
+   * The feature id for the '<em><b>Action Performed By Entity</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int SHALL_ALLOW__ACTION_PERFORMED_BY_ENTITY = PREDICATE_FEATURE_COUNT + 1;
+
+  /**
+   * The number of structural features of the '<em>Shall Allow</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int SHALL_ALLOW_FEATURE_COUNT = PREDICATE_FEATURE_COUNT + 2;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.ShallNotImpl <em>Shall Not</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.ShallNotImpl
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.BoilerplateTextPackageImpl#getShallNot()
+   * @generated
+   */
+  int SHALL_NOT = 9;
+
+  /**
+   * The feature id for the '<em><b>Action</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int SHALL_NOT__ACTION = PREDICATE__ACTION;
+
+  /**
+   * The number of structural features of the '<em>Shall Not</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int SHALL_NOT_FEATURE_COUNT = PREDICATE_FEATURE_COUNT + 0;
+
+  /**
+   * The meta object id for the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.ShallImpl <em>Shall</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.ShallImpl
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.BoilerplateTextPackageImpl#getShall()
+   * @generated
+   */
+  int SHALL = 10;
+
+  /**
+   * The feature id for the '<em><b>Action</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int SHALL__ACTION = PREDICATE__ACTION;
+
+  /**
+   * The number of structural features of the '<em>Shall</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int SHALL_FEATURE_COUNT = PREDICATE_FEATURE_COUNT + 0;
+
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.Model <em>Model</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Model</em>'.
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.Model
+   * @generated
+   */
+  EClass getModel();
+
+  /**
+   * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.Model#getModel <em>Model</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference '<em>Model</em>'.
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.Model#getModel()
+   * @see #getModel()
+   * @generated
+   */
+  EReference getModel_Model();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.Requirement <em>Requirement</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Requirement</em>'.
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.Requirement
+   * @generated
+   */
+  EClass getRequirement();
+
+  /**
+   * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.Requirement#getPrefix <em>Prefix</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference '<em>Prefix</em>'.
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.Requirement#getPrefix()
+   * @see #getRequirement()
+   * @generated
+   */
+  EReference getRequirement_Prefix();
+
+  /**
+   * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.Requirement#getSystem <em>System</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference '<em>System</em>'.
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.Requirement#getSystem()
+   * @see #getRequirement()
+   * @generated
+   */
+  EReference getRequirement_System();
+
+  /**
+   * Returns the meta object for the containment reference '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.Requirement#getPredicate <em>Predicate</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the containment reference '<em>Predicate</em>'.
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.Requirement#getPredicate()
+   * @see #getRequirement()
+   * @generated
+   */
+  EReference getRequirement_Predicate();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.Subject <em>Subject</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Subject</em>'.
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.Subject
+   * @generated
+   */
+  EClass getSubject();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.Subject#getSystem <em>System</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>System</em>'.
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.Subject#getSystem()
+   * @see #getSubject()
+   * @generated
+   */
+  EAttribute getSubject_System();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.Prefix <em>Prefix</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Prefix</em>'.
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.Prefix
+   * @generated
+   */
+  EClass getPrefix();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.If <em>If</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>If</em>'.
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.If
+   * @generated
+   */
+  EClass getIf();
+
+  /**
+   * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.If#getEvent <em>Event</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute list '<em>Event</em>'.
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.If#getEvent()
+   * @see #getIf()
+   * @generated
+   */
+  EAttribute getIf_Event();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.While <em>While</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>While</em>'.
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.While
+   * @generated
+   */
+  EClass getWhile();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.While#getState <em>State</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>State</em>'.
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.While#getState()
+   * @see #getWhile()
+   * @generated
+   */
+  EAttribute getWhile_State();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.Predicate <em>Predicate</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Predicate</em>'.
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.Predicate
+   * @generated
+   */
+  EClass getPredicate();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.Predicate#getAction <em>Action</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Action</em>'.
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.Predicate#getAction()
+   * @see #getPredicate()
+   * @generated
+   */
+  EAttribute getPredicate_Action();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallNotAllow <em>Shall Not Allow</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Shall Not Allow</em>'.
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallNotAllow
+   * @generated
+   */
+  EClass getShallNotAllow();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallNotAllow#getEntity <em>Entity</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Entity</em>'.
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallNotAllow#getEntity()
+   * @see #getShallNotAllow()
+   * @generated
+   */
+  EAttribute getShallNotAllow_Entity();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallNotAllow#getActionPerformedByEntity <em>Action Performed By Entity</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Action Performed By Entity</em>'.
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallNotAllow#getActionPerformedByEntity()
+   * @see #getShallNotAllow()
+   * @generated
+   */
+  EAttribute getShallNotAllow_ActionPerformedByEntity();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallAllow <em>Shall Allow</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Shall Allow</em>'.
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallAllow
+   * @generated
+   */
+  EClass getShallAllow();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallAllow#getEntity <em>Entity</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Entity</em>'.
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallAllow#getEntity()
+   * @see #getShallAllow()
+   * @generated
+   */
+  EAttribute getShallAllow_Entity();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallAllow#getActionPerformedByEntity <em>Action Performed By Entity</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Action Performed By Entity</em>'.
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallAllow#getActionPerformedByEntity()
+   * @see #getShallAllow()
+   * @generated
+   */
+  EAttribute getShallAllow_ActionPerformedByEntity();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallNot <em>Shall Not</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Shall Not</em>'.
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallNot
+   * @generated
+   */
+  EClass getShallNot();
+
+  /**
+   * Returns the meta object for class '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.Shall <em>Shall</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Shall</em>'.
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.Shall
+   * @generated
+   */
+  EClass getShall();
+
+  /**
+   * 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
+   */
+  BoilerplateTextFactory getBoilerplateTextFactory();
+
+  /**
+   * <!-- 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.requirements.sysml14.boilerplateText.impl.ModelImpl <em>Model</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.ModelImpl
+     * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.BoilerplateTextPackageImpl#getModel()
+     * @generated
+     */
+    EClass MODEL = eINSTANCE.getModel();
+
+    /**
+     * The meta object literal for the '<em><b>Model</b></em>' containment reference feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EReference MODEL__MODEL = eINSTANCE.getModel_Model();
+
+    /**
+     * The meta object literal for the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.RequirementImpl <em>Requirement</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.RequirementImpl
+     * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.BoilerplateTextPackageImpl#getRequirement()
+     * @generated
+     */
+    EClass REQUIREMENT = eINSTANCE.getRequirement();
+
+    /**
+     * The meta object literal for the '<em><b>Prefix</b></em>' containment reference feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EReference REQUIREMENT__PREFIX = eINSTANCE.getRequirement_Prefix();
+
+    /**
+     * The meta object literal for the '<em><b>System</b></em>' containment reference feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EReference REQUIREMENT__SYSTEM = eINSTANCE.getRequirement_System();
+
+    /**
+     * The meta object literal for the '<em><b>Predicate</b></em>' containment reference feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EReference REQUIREMENT__PREDICATE = eINSTANCE.getRequirement_Predicate();
+
+    /**
+     * The meta object literal for the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.SubjectImpl <em>Subject</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.SubjectImpl
+     * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.BoilerplateTextPackageImpl#getSubject()
+     * @generated
+     */
+    EClass SUBJECT = eINSTANCE.getSubject();
+
+    /**
+     * The meta object literal for the '<em><b>System</b></em>' attribute feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EAttribute SUBJECT__SYSTEM = eINSTANCE.getSubject_System();
+
+    /**
+     * The meta object literal for the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.PrefixImpl <em>Prefix</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.PrefixImpl
+     * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.BoilerplateTextPackageImpl#getPrefix()
+     * @generated
+     */
+    EClass PREFIX = eINSTANCE.getPrefix();
+
+    /**
+     * The meta object literal for the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.IfImpl <em>If</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.IfImpl
+     * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.BoilerplateTextPackageImpl#getIf()
+     * @generated
+     */
+    EClass IF = eINSTANCE.getIf();
+
+    /**
+     * The meta object literal for the '<em><b>Event</b></em>' attribute list feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EAttribute IF__EVENT = eINSTANCE.getIf_Event();
+
+    /**
+     * The meta object literal for the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.WhileImpl <em>While</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.WhileImpl
+     * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.BoilerplateTextPackageImpl#getWhile()
+     * @generated
+     */
+    EClass WHILE = eINSTANCE.getWhile();
+
+    /**
+     * The meta object literal for the '<em><b>State</b></em>' attribute feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EAttribute WHILE__STATE = eINSTANCE.getWhile_State();
+
+    /**
+     * The meta object literal for the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.PredicateImpl <em>Predicate</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.PredicateImpl
+     * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.BoilerplateTextPackageImpl#getPredicate()
+     * @generated
+     */
+    EClass PREDICATE = eINSTANCE.getPredicate();
+
+    /**
+     * The meta object literal for the '<em><b>Action</b></em>' attribute feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EAttribute PREDICATE__ACTION = eINSTANCE.getPredicate_Action();
+
+    /**
+     * The meta object literal for the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.ShallNotAllowImpl <em>Shall Not Allow</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.ShallNotAllowImpl
+     * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.BoilerplateTextPackageImpl#getShallNotAllow()
+     * @generated
+     */
+    EClass SHALL_NOT_ALLOW = eINSTANCE.getShallNotAllow();
+
+    /**
+     * The meta object literal for the '<em><b>Entity</b></em>' attribute feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EAttribute SHALL_NOT_ALLOW__ENTITY = eINSTANCE.getShallNotAllow_Entity();
+
+    /**
+     * The meta object literal for the '<em><b>Action Performed By Entity</b></em>' attribute feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EAttribute SHALL_NOT_ALLOW__ACTION_PERFORMED_BY_ENTITY = eINSTANCE.getShallNotAllow_ActionPerformedByEntity();
+
+    /**
+     * The meta object literal for the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.ShallAllowImpl <em>Shall Allow</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.ShallAllowImpl
+     * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.BoilerplateTextPackageImpl#getShallAllow()
+     * @generated
+     */
+    EClass SHALL_ALLOW = eINSTANCE.getShallAllow();
+
+    /**
+     * The meta object literal for the '<em><b>Entity</b></em>' attribute feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EAttribute SHALL_ALLOW__ENTITY = eINSTANCE.getShallAllow_Entity();
+
+    /**
+     * The meta object literal for the '<em><b>Action Performed By Entity</b></em>' attribute feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EAttribute SHALL_ALLOW__ACTION_PERFORMED_BY_ENTITY = eINSTANCE.getShallAllow_ActionPerformedByEntity();
+
+    /**
+     * The meta object literal for the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.ShallNotImpl <em>Shall Not</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.ShallNotImpl
+     * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.BoilerplateTextPackageImpl#getShallNot()
+     * @generated
+     */
+    EClass SHALL_NOT = eINSTANCE.getShallNot();
+
+    /**
+     * The meta object literal for the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.ShallImpl <em>Shall</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.ShallImpl
+     * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.BoilerplateTextPackageImpl#getShall()
+     * @generated
+     */
+    EClass SHALL = eINSTANCE.getShall();
+
+  }
+
+} //BoilerplateTextPackage
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/If.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/If.java
new file mode 100644
index 0000000..7d44030
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/If.java
@@ -0,0 +1,57 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *  *
+ *  *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *  *
+ *  ****************************************************************************
+ * 
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.boilerplateText;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>If</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.If#getEvent <em>Event</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage#getIf()
+ * @model
+ * @generated
+ */
+public interface If extends Prefix
+{
+  /**
+   * Returns the value of the '<em><b>Event</b></em>' attribute list.
+   * The list contents are of type {@link java.lang.String}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Event</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>Event</em>' attribute list.
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage#getIf_Event()
+   * @model unique="false"
+   * @generated
+   */
+  EList<String> getEvent();
+
+} // If
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/Model.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/Model.java
new file mode 100644
index 0000000..80e172f
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/Model.java
@@ -0,0 +1,67 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *  *
+ *  *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *  *
+ *  ****************************************************************************
+ * 
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.boilerplateText;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Model</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.Model#getModel <em>Model</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage#getModel()
+ * @model
+ * @generated
+ */
+public interface Model extends EObject
+{
+  /**
+   * Returns the value of the '<em><b>Model</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Model</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>Model</em>' containment reference.
+   * @see #setModel(Requirement)
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage#getModel_Model()
+   * @model containment="true"
+   * @generated
+   */
+  Requirement getModel();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.Model#getModel <em>Model</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Model</em>' containment reference.
+   * @see #getModel()
+   * @generated
+   */
+  void setModel(Requirement value);
+
+} // Model
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/Predicate.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/Predicate.java
new file mode 100644
index 0000000..25aa7a1
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/Predicate.java
@@ -0,0 +1,67 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *  *
+ *  *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *  *
+ *  ****************************************************************************
+ * 
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.boilerplateText;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Predicate</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.Predicate#getAction <em>Action</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage#getPredicate()
+ * @model
+ * @generated
+ */
+public interface Predicate extends EObject
+{
+  /**
+   * Returns the value of the '<em><b>Action</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Action</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Action</em>' attribute.
+   * @see #setAction(String)
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage#getPredicate_Action()
+   * @model
+   * @generated
+   */
+  String getAction();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.Predicate#getAction <em>Action</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Action</em>' attribute.
+   * @see #getAction()
+   * @generated
+   */
+  void setAction(String value);
+
+} // Predicate
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/Prefix.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/Prefix.java
new file mode 100644
index 0000000..7aed452
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/Prefix.java
@@ -0,0 +1,35 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *  *
+ *  *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *  *
+ *  ****************************************************************************
+ * 
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.boilerplateText;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Prefix</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage#getPrefix()
+ * @model
+ * @generated
+ */
+public interface Prefix extends EObject
+{
+} // Prefix
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/Requirement.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/Requirement.java
new file mode 100644
index 0000000..c554d58
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/Requirement.java
@@ -0,0 +1,121 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *  *
+ *  *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *  *
+ *  ****************************************************************************
+ * 
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.boilerplateText;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Requirement</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.Requirement#getPrefix <em>Prefix</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.Requirement#getSystem <em>System</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.Requirement#getPredicate <em>Predicate</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage#getRequirement()
+ * @model
+ * @generated
+ */
+public interface Requirement extends EObject
+{
+  /**
+   * Returns the value of the '<em><b>Prefix</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Prefix</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>Prefix</em>' containment reference.
+   * @see #setPrefix(Prefix)
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage#getRequirement_Prefix()
+   * @model containment="true"
+   * @generated
+   */
+  Prefix getPrefix();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.Requirement#getPrefix <em>Prefix</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Prefix</em>' containment reference.
+   * @see #getPrefix()
+   * @generated
+   */
+  void setPrefix(Prefix value);
+
+  /**
+   * Returns the value of the '<em><b>System</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>System</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>System</em>' containment reference.
+   * @see #setSystem(Subject)
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage#getRequirement_System()
+   * @model containment="true"
+   * @generated
+   */
+  Subject getSystem();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.Requirement#getSystem <em>System</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>System</em>' containment reference.
+   * @see #getSystem()
+   * @generated
+   */
+  void setSystem(Subject value);
+
+  /**
+   * Returns the value of the '<em><b>Predicate</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Predicate</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>Predicate</em>' containment reference.
+   * @see #setPredicate(Predicate)
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage#getRequirement_Predicate()
+   * @model containment="true"
+   * @generated
+   */
+  Predicate getPredicate();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.Requirement#getPredicate <em>Predicate</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Predicate</em>' containment reference.
+   * @see #getPredicate()
+   * @generated
+   */
+  void setPredicate(Predicate value);
+
+} // Requirement
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/Shall.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/Shall.java
new file mode 100644
index 0000000..5f5510e
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/Shall.java
@@ -0,0 +1,34 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *  *
+ *  *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *  *
+ *  ****************************************************************************
+ * 
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.boilerplateText;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Shall</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage#getShall()
+ * @model
+ * @generated
+ */
+public interface Shall extends Predicate
+{
+} // Shall
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/ShallAllow.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/ShallAllow.java
new file mode 100644
index 0000000..094480b
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/ShallAllow.java
@@ -0,0 +1,93 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *  *
+ *  *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *  *
+ *  ****************************************************************************
+ * 
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.boilerplateText;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Shall Allow</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallAllow#getEntity <em>Entity</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallAllow#getActionPerformedByEntity <em>Action Performed By Entity</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage#getShallAllow()
+ * @model
+ * @generated
+ */
+public interface ShallAllow extends Predicate
+{
+  /**
+   * Returns the value of the '<em><b>Entity</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Entity</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Entity</em>' attribute.
+   * @see #setEntity(String)
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage#getShallAllow_Entity()
+   * @model
+   * @generated
+   */
+  String getEntity();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallAllow#getEntity <em>Entity</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Entity</em>' attribute.
+   * @see #getEntity()
+   * @generated
+   */
+  void setEntity(String value);
+
+  /**
+   * Returns the value of the '<em><b>Action Performed By Entity</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Action Performed By Entity</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Action Performed By Entity</em>' attribute.
+   * @see #setActionPerformedByEntity(String)
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage#getShallAllow_ActionPerformedByEntity()
+   * @model
+   * @generated
+   */
+  String getActionPerformedByEntity();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallAllow#getActionPerformedByEntity <em>Action Performed By Entity</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Action Performed By Entity</em>' attribute.
+   * @see #getActionPerformedByEntity()
+   * @generated
+   */
+  void setActionPerformedByEntity(String value);
+
+} // ShallAllow
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/ShallNot.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/ShallNot.java
new file mode 100644
index 0000000..54a0c61
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/ShallNot.java
@@ -0,0 +1,34 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *  *
+ *  *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *  *
+ *  ****************************************************************************
+ * 
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.boilerplateText;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Shall Not</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage#getShallNot()
+ * @model
+ * @generated
+ */
+public interface ShallNot extends Predicate
+{
+} // ShallNot
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/ShallNotAllow.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/ShallNotAllow.java
new file mode 100644
index 0000000..3bb159a
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/ShallNotAllow.java
@@ -0,0 +1,93 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *  *
+ *  *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *  *
+ *  ****************************************************************************
+ * 
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.boilerplateText;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Shall Not Allow</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallNotAllow#getEntity <em>Entity</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallNotAllow#getActionPerformedByEntity <em>Action Performed By Entity</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage#getShallNotAllow()
+ * @model
+ * @generated
+ */
+public interface ShallNotAllow extends Predicate
+{
+  /**
+   * Returns the value of the '<em><b>Entity</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Entity</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Entity</em>' attribute.
+   * @see #setEntity(String)
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage#getShallNotAllow_Entity()
+   * @model
+   * @generated
+   */
+  String getEntity();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallNotAllow#getEntity <em>Entity</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Entity</em>' attribute.
+   * @see #getEntity()
+   * @generated
+   */
+  void setEntity(String value);
+
+  /**
+   * Returns the value of the '<em><b>Action Performed By Entity</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Action Performed By Entity</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Action Performed By Entity</em>' attribute.
+   * @see #setActionPerformedByEntity(String)
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage#getShallNotAllow_ActionPerformedByEntity()
+   * @model
+   * @generated
+   */
+  String getActionPerformedByEntity();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallNotAllow#getActionPerformedByEntity <em>Action Performed By Entity</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Action Performed By Entity</em>' attribute.
+   * @see #getActionPerformedByEntity()
+   * @generated
+   */
+  void setActionPerformedByEntity(String value);
+
+} // ShallNotAllow
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/Subject.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/Subject.java
new file mode 100644
index 0000000..0a2e84f
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/Subject.java
@@ -0,0 +1,67 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *  *
+ *  *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *  *
+ *  ****************************************************************************
+ * 
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.boilerplateText;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Subject</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.Subject#getSystem <em>System</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage#getSubject()
+ * @model
+ * @generated
+ */
+public interface Subject extends EObject
+{
+  /**
+   * Returns the value of the '<em><b>System</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>System</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>System</em>' attribute.
+   * @see #setSystem(String)
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage#getSubject_System()
+   * @model
+   * @generated
+   */
+  String getSystem();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.Subject#getSystem <em>System</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>System</em>' attribute.
+   * @see #getSystem()
+   * @generated
+   */
+  void setSystem(String value);
+
+} // Subject
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/While.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/While.java
new file mode 100644
index 0000000..129d2a9
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/While.java
@@ -0,0 +1,66 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *  *
+ *  *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *  *
+ *  ****************************************************************************
+ * 
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.boilerplateText;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>While</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.While#getState <em>State</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage#getWhile()
+ * @model
+ * @generated
+ */
+public interface While extends Prefix
+{
+  /**
+   * Returns the value of the '<em><b>State</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>State</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>State</em>' attribute.
+   * @see #setState(String)
+   * @see org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage#getWhile_State()
+   * @model
+   * @generated
+   */
+  String getState();
+
+  /**
+   * Sets the value of the '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.While#getState <em>State</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>State</em>' attribute.
+   * @see #getState()
+   * @generated
+   */
+  void setState(String value);
+
+} // While
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/BoilerplateTextFactoryImpl.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/BoilerplateTextFactoryImpl.java
new file mode 100644
index 0000000..c055f9a
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/BoilerplateTextFactoryImpl.java
@@ -0,0 +1,242 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *  *
+ *  *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *  *
+ *  ****************************************************************************
+ * 
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.boilerplateText.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.requirements.sysml14.boilerplateText.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BoilerplateTextFactoryImpl extends EFactoryImpl implements BoilerplateTextFactory
+{
+  /**
+   * Creates the default factory implementation.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public static BoilerplateTextFactory init()
+  {
+    try
+    {
+      BoilerplateTextFactory theBoilerplateTextFactory = (BoilerplateTextFactory)EPackage.Registry.INSTANCE.getEFactory(BoilerplateTextPackage.eNS_URI);
+      if (theBoilerplateTextFactory != null)
+      {
+        return theBoilerplateTextFactory;
+      }
+    }
+    catch (Exception exception)
+    {
+      EcorePlugin.INSTANCE.log(exception);
+    }
+    return new BoilerplateTextFactoryImpl();
+  }
+
+  /**
+   * Creates an instance of the factory.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public BoilerplateTextFactoryImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public EObject create(EClass eClass)
+  {
+    switch (eClass.getClassifierID())
+    {
+      case BoilerplateTextPackage.MODEL: return createModel();
+      case BoilerplateTextPackage.REQUIREMENT: return createRequirement();
+      case BoilerplateTextPackage.SUBJECT: return createSubject();
+      case BoilerplateTextPackage.PREFIX: return createPrefix();
+      case BoilerplateTextPackage.IF: return createIf();
+      case BoilerplateTextPackage.WHILE: return createWhile();
+      case BoilerplateTextPackage.PREDICATE: return createPredicate();
+      case BoilerplateTextPackage.SHALL_NOT_ALLOW: return createShallNotAllow();
+      case BoilerplateTextPackage.SHALL_ALLOW: return createShallAllow();
+      case BoilerplateTextPackage.SHALL_NOT: return createShallNot();
+      case BoilerplateTextPackage.SHALL: return createShall();
+      default:
+        throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+    }
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Model createModel()
+  {
+    ModelImpl model = new ModelImpl();
+    return model;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Requirement createRequirement()
+  {
+    RequirementImpl requirement = new RequirementImpl();
+    return requirement;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Subject createSubject()
+  {
+    SubjectImpl subject = new SubjectImpl();
+    return subject;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Prefix createPrefix()
+  {
+    PrefixImpl prefix = new PrefixImpl();
+    return prefix;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public If createIf()
+  {
+    IfImpl if_ = new IfImpl();
+    return if_;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public While createWhile()
+  {
+    WhileImpl while_ = new WhileImpl();
+    return while_;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Predicate createPredicate()
+  {
+    PredicateImpl predicate = new PredicateImpl();
+    return predicate;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ShallNotAllow createShallNotAllow()
+  {
+    ShallNotAllowImpl shallNotAllow = new ShallNotAllowImpl();
+    return shallNotAllow;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ShallAllow createShallAllow()
+  {
+    ShallAllowImpl shallAllow = new ShallAllowImpl();
+    return shallAllow;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ShallNot createShallNot()
+  {
+    ShallNotImpl shallNot = new ShallNotImpl();
+    return shallNot;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Shall createShall()
+  {
+    ShallImpl shall = new ShallImpl();
+    return shall;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public BoilerplateTextPackage getBoilerplateTextPackage()
+  {
+    return (BoilerplateTextPackage)getEPackage();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @deprecated
+   * @generated
+   */
+  @Deprecated
+  public static BoilerplateTextPackage getPackage()
+  {
+    return BoilerplateTextPackage.eINSTANCE;
+  }
+
+} //BoilerplateTextFactoryImpl
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/BoilerplateTextPackageImpl.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/BoilerplateTextPackageImpl.java
new file mode 100644
index 0000000..24f5db2
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/BoilerplateTextPackageImpl.java
@@ -0,0 +1,560 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *  *
+ *  *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *  *
+ *  ****************************************************************************
+ * 
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.boilerplateText.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.requirements.sysml14.boilerplateText.BoilerplateTextFactory;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.If;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.Model;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.Predicate;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.Prefix;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.Requirement;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.Shall;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallAllow;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallNot;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallNotAllow;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.Subject;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.While;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class BoilerplateTextPackageImpl extends EPackageImpl implements BoilerplateTextPackage
+{
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass modelEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass requirementEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass subjectEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass prefixEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass ifEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass whileEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass predicateEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass shallNotAllowEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass shallAllowEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass shallNotEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass shallEClass = 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.requirements.sysml14.boilerplateText.BoilerplateTextPackage#eNS_URI
+   * @see #init()
+   * @generated
+   */
+  private BoilerplateTextPackageImpl()
+  {
+    super(eNS_URI, BoilerplateTextFactory.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 BoilerplateTextPackage#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 BoilerplateTextPackage init()
+  {
+    if (isInited) return (BoilerplateTextPackage)EPackage.Registry.INSTANCE.getEPackage(BoilerplateTextPackage.eNS_URI);
+
+    // Obtain or create and register package
+    BoilerplateTextPackageImpl theBoilerplateTextPackage = (BoilerplateTextPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof BoilerplateTextPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new BoilerplateTextPackageImpl());
+
+    isInited = true;
+
+    // Create package meta-data objects
+    theBoilerplateTextPackage.createPackageContents();
+
+    // Initialize created meta-data
+    theBoilerplateTextPackage.initializePackageContents();
+
+    // Mark meta-data to indicate it can't be changed
+    theBoilerplateTextPackage.freeze();
+
+  
+    // Update the registry and return the package
+    EPackage.Registry.INSTANCE.put(BoilerplateTextPackage.eNS_URI, theBoilerplateTextPackage);
+    return theBoilerplateTextPackage;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getModel()
+  {
+    return modelEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getModel_Model()
+  {
+    return (EReference)modelEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getRequirement()
+  {
+    return requirementEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getRequirement_Prefix()
+  {
+    return (EReference)requirementEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getRequirement_System()
+  {
+    return (EReference)requirementEClass.getEStructuralFeatures().get(1);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EReference getRequirement_Predicate()
+  {
+    return (EReference)requirementEClass.getEStructuralFeatures().get(2);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getSubject()
+  {
+    return subjectEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getSubject_System()
+  {
+    return (EAttribute)subjectEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getPrefix()
+  {
+    return prefixEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getIf()
+  {
+    return ifEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getIf_Event()
+  {
+    return (EAttribute)ifEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getWhile()
+  {
+    return whileEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getWhile_State()
+  {
+    return (EAttribute)whileEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getPredicate()
+  {
+    return predicateEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getPredicate_Action()
+  {
+    return (EAttribute)predicateEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getShallNotAllow()
+  {
+    return shallNotAllowEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getShallNotAllow_Entity()
+  {
+    return (EAttribute)shallNotAllowEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getShallNotAllow_ActionPerformedByEntity()
+  {
+    return (EAttribute)shallNotAllowEClass.getEStructuralFeatures().get(1);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getShallAllow()
+  {
+    return shallAllowEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getShallAllow_Entity()
+  {
+    return (EAttribute)shallAllowEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getShallAllow_ActionPerformedByEntity()
+  {
+    return (EAttribute)shallAllowEClass.getEStructuralFeatures().get(1);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getShallNot()
+  {
+    return shallNotEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getShall()
+  {
+    return shallEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public BoilerplateTextFactory getBoilerplateTextFactory()
+  {
+    return (BoilerplateTextFactory)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
+    modelEClass = createEClass(MODEL);
+    createEReference(modelEClass, MODEL__MODEL);
+
+    requirementEClass = createEClass(REQUIREMENT);
+    createEReference(requirementEClass, REQUIREMENT__PREFIX);
+    createEReference(requirementEClass, REQUIREMENT__SYSTEM);
+    createEReference(requirementEClass, REQUIREMENT__PREDICATE);
+
+    subjectEClass = createEClass(SUBJECT);
+    createEAttribute(subjectEClass, SUBJECT__SYSTEM);
+
+    prefixEClass = createEClass(PREFIX);
+
+    ifEClass = createEClass(IF);
+    createEAttribute(ifEClass, IF__EVENT);
+
+    whileEClass = createEClass(WHILE);
+    createEAttribute(whileEClass, WHILE__STATE);
+
+    predicateEClass = createEClass(PREDICATE);
+    createEAttribute(predicateEClass, PREDICATE__ACTION);
+
+    shallNotAllowEClass = createEClass(SHALL_NOT_ALLOW);
+    createEAttribute(shallNotAllowEClass, SHALL_NOT_ALLOW__ENTITY);
+    createEAttribute(shallNotAllowEClass, SHALL_NOT_ALLOW__ACTION_PERFORMED_BY_ENTITY);
+
+    shallAllowEClass = createEClass(SHALL_ALLOW);
+    createEAttribute(shallAllowEClass, SHALL_ALLOW__ENTITY);
+    createEAttribute(shallAllowEClass, SHALL_ALLOW__ACTION_PERFORMED_BY_ENTITY);
+
+    shallNotEClass = createEClass(SHALL_NOT);
+
+    shallEClass = createEClass(SHALL);
+  }
+
+  /**
+   * <!-- 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
+    ifEClass.getESuperTypes().add(this.getPrefix());
+    whileEClass.getESuperTypes().add(this.getPrefix());
+    shallNotAllowEClass.getESuperTypes().add(this.getPredicate());
+    shallAllowEClass.getESuperTypes().add(this.getPredicate());
+    shallNotEClass.getESuperTypes().add(this.getPredicate());
+    shallEClass.getESuperTypes().add(this.getPredicate());
+
+    // Initialize classes and features; add operations and parameters
+    initEClass(modelEClass, Model.class, "Model", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEReference(getModel_Model(), this.getRequirement(), null, "model", null, 0, 1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(requirementEClass, Requirement.class, "Requirement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEReference(getRequirement_Prefix(), this.getPrefix(), null, "prefix", null, 0, 1, Requirement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEReference(getRequirement_System(), this.getSubject(), null, "system", null, 0, 1, Requirement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEReference(getRequirement_Predicate(), this.getPredicate(), null, "predicate", null, 0, 1, Requirement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(subjectEClass, Subject.class, "Subject", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEAttribute(getSubject_System(), ecorePackage.getEString(), "system", null, 0, 1, Subject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(prefixEClass, Prefix.class, "Prefix", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+    initEClass(ifEClass, If.class, "If", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEAttribute(getIf_Event(), ecorePackage.getEString(), "event", null, 0, -1, If.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(whileEClass, While.class, "While", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEAttribute(getWhile_State(), ecorePackage.getEString(), "state", null, 0, 1, While.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(predicateEClass, Predicate.class, "Predicate", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEAttribute(getPredicate_Action(), ecorePackage.getEString(), "action", null, 0, 1, Predicate.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(shallNotAllowEClass, ShallNotAllow.class, "ShallNotAllow", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEAttribute(getShallNotAllow_Entity(), ecorePackage.getEString(), "entity", null, 0, 1, ShallNotAllow.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getShallNotAllow_ActionPerformedByEntity(), ecorePackage.getEString(), "actionPerformedByEntity", null, 0, 1, ShallNotAllow.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(shallAllowEClass, ShallAllow.class, "ShallAllow", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEAttribute(getShallAllow_Entity(), ecorePackage.getEString(), "entity", null, 0, 1, ShallAllow.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+    initEAttribute(getShallAllow_ActionPerformedByEntity(), ecorePackage.getEString(), "actionPerformedByEntity", null, 0, 1, ShallAllow.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(shallNotEClass, ShallNot.class, "ShallNot", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+    initEClass(shallEClass, Shall.class, "Shall", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+    // Create resource
+    createResource(eNS_URI);
+  }
+
+} //BoilerplateTextPackageImpl
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/IfImpl.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/IfImpl.java
new file mode 100644
index 0000000..1c38013
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/IfImpl.java
@@ -0,0 +1,177 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *  *
+ *  *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *  *
+ *  ****************************************************************************
+ * 
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.util.EDataTypeEList;
+
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.If;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>If</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.IfImpl#getEvent <em>Event</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class IfImpl extends PrefixImpl implements If
+{
+  /**
+   * The cached value of the '{@link #getEvent() <em>Event</em>}' attribute list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getEvent()
+   * @generated
+   * @ordered
+   */
+  protected EList<String> event;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected IfImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return BoilerplateTextPackage.Literals.IF;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EList<String> getEvent()
+  {
+    if (event == null)
+    {
+      event = new EDataTypeEList<String>(String.class, this, BoilerplateTextPackage.IF__EVENT);
+    }
+    return event;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object eGet(int featureID, boolean resolve, boolean coreType)
+  {
+    switch (featureID)
+    {
+      case BoilerplateTextPackage.IF__EVENT:
+        return getEvent();
+    }
+    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 BoilerplateTextPackage.IF__EVENT:
+        getEvent().clear();
+        getEvent().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 BoilerplateTextPackage.IF__EVENT:
+        getEvent().clear();
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case BoilerplateTextPackage.IF__EVENT:
+        return event != null && !event.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(" (event: ");
+    result.append(event);
+    result.append(')');
+    return result.toString();
+  }
+
+} //IfImpl
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/ModelImpl.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/ModelImpl.java
new file mode 100644
index 0000000..11b35d6
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/ModelImpl.java
@@ -0,0 +1,210 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *  *
+ *  *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *  *
+ *  ****************************************************************************
+ * 
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.Model;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.Requirement;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Model</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.ModelImpl#getModel <em>Model</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ModelImpl extends MinimalEObjectImpl.Container implements Model
+{
+  /**
+   * The cached value of the '{@link #getModel() <em>Model</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getModel()
+   * @generated
+   * @ordered
+   */
+  protected Requirement model;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected ModelImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return BoilerplateTextPackage.Literals.MODEL;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Requirement getModel()
+  {
+    return model;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetModel(Requirement newModel, NotificationChain msgs)
+  {
+    Requirement oldModel = model;
+    model = newModel;
+    if (eNotificationRequired())
+    {
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, BoilerplateTextPackage.MODEL__MODEL, oldModel, newModel);
+      if (msgs == null) msgs = notification; else msgs.add(notification);
+    }
+    return msgs;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setModel(Requirement newModel)
+  {
+    if (newModel != model)
+    {
+      NotificationChain msgs = null;
+      if (model != null)
+        msgs = ((InternalEObject)model).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - BoilerplateTextPackage.MODEL__MODEL, null, msgs);
+      if (newModel != null)
+        msgs = ((InternalEObject)newModel).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - BoilerplateTextPackage.MODEL__MODEL, null, msgs);
+      msgs = basicSetModel(newModel, msgs);
+      if (msgs != null) msgs.dispatch();
+    }
+    else if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, BoilerplateTextPackage.MODEL__MODEL, newModel, newModel));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+  {
+    switch (featureID)
+    {
+      case BoilerplateTextPackage.MODEL__MODEL:
+        return basicSetModel(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 BoilerplateTextPackage.MODEL__MODEL:
+        return getModel();
+    }
+    return super.eGet(featureID, resolve, coreType);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eSet(int featureID, Object newValue)
+  {
+    switch (featureID)
+    {
+      case BoilerplateTextPackage.MODEL__MODEL:
+        setModel((Requirement)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case BoilerplateTextPackage.MODEL__MODEL:
+        setModel((Requirement)null);
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case BoilerplateTextPackage.MODEL__MODEL:
+        return model != null;
+    }
+    return super.eIsSet(featureID);
+  }
+
+} //ModelImpl
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/PredicateImpl.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/PredicateImpl.java
new file mode 100644
index 0000000..eb5ba7a
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/PredicateImpl.java
@@ -0,0 +1,193 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *  *
+ *  *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *  *
+ *  ****************************************************************************
+ * 
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.boilerplateText.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.requirements.sysml14.boilerplateText.BoilerplateTextPackage;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.Predicate;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Predicate</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.PredicateImpl#getAction <em>Action</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class PredicateImpl extends MinimalEObjectImpl.Container implements Predicate
+{
+  /**
+   * The default value of the '{@link #getAction() <em>Action</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getAction()
+   * @generated
+   * @ordered
+   */
+  protected static final String ACTION_EDEFAULT = null;
+
+  /**
+   * The cached value of the '{@link #getAction() <em>Action</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getAction()
+   * @generated
+   * @ordered
+   */
+  protected String action = ACTION_EDEFAULT;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected PredicateImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return BoilerplateTextPackage.Literals.PREDICATE;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String getAction()
+  {
+    return action;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setAction(String newAction)
+  {
+    String oldAction = action;
+    action = newAction;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, BoilerplateTextPackage.PREDICATE__ACTION, oldAction, action));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object eGet(int featureID, boolean resolve, boolean coreType)
+  {
+    switch (featureID)
+    {
+      case BoilerplateTextPackage.PREDICATE__ACTION:
+        return getAction();
+    }
+    return super.eGet(featureID, resolve, coreType);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eSet(int featureID, Object newValue)
+  {
+    switch (featureID)
+    {
+      case BoilerplateTextPackage.PREDICATE__ACTION:
+        setAction((String)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case BoilerplateTextPackage.PREDICATE__ACTION:
+        setAction(ACTION_EDEFAULT);
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case BoilerplateTextPackage.PREDICATE__ACTION:
+        return ACTION_EDEFAULT == null ? action != null : !ACTION_EDEFAULT.equals(action);
+    }
+    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(" (action: ");
+    result.append(action);
+    result.append(')');
+    return result.toString();
+  }
+
+} //PredicateImpl
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/PrefixImpl.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/PrefixImpl.java
new file mode 100644
index 0000000..230c5a2
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/PrefixImpl.java
@@ -0,0 +1,58 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *  *
+ *  *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *  *
+ *  ****************************************************************************
+ * 
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.Prefix;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Prefix</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class PrefixImpl extends MinimalEObjectImpl.Container implements Prefix
+{
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected PrefixImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return BoilerplateTextPackage.Literals.PREFIX;
+  }
+
+} //PrefixImpl
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/RequirementImpl.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/RequirementImpl.java
new file mode 100644
index 0000000..6048b83
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/RequirementImpl.java
@@ -0,0 +1,354 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *  *
+ *  *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *  *
+ *  ****************************************************************************
+ * 
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.Predicate;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.Prefix;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.Requirement;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.Subject;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Requirement</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.RequirementImpl#getPrefix <em>Prefix</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.RequirementImpl#getSystem <em>System</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.RequirementImpl#getPredicate <em>Predicate</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class RequirementImpl extends MinimalEObjectImpl.Container implements Requirement
+{
+  /**
+   * The cached value of the '{@link #getPrefix() <em>Prefix</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getPrefix()
+   * @generated
+   * @ordered
+   */
+  protected Prefix prefix;
+
+  /**
+   * The cached value of the '{@link #getSystem() <em>System</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getSystem()
+   * @generated
+   * @ordered
+   */
+  protected Subject system;
+
+  /**
+   * The cached value of the '{@link #getPredicate() <em>Predicate</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getPredicate()
+   * @generated
+   * @ordered
+   */
+  protected Predicate predicate;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected RequirementImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return BoilerplateTextPackage.Literals.REQUIREMENT;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Prefix getPrefix()
+  {
+    return prefix;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetPrefix(Prefix newPrefix, NotificationChain msgs)
+  {
+    Prefix oldPrefix = prefix;
+    prefix = newPrefix;
+    if (eNotificationRequired())
+    {
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, BoilerplateTextPackage.REQUIREMENT__PREFIX, oldPrefix, newPrefix);
+      if (msgs == null) msgs = notification; else msgs.add(notification);
+    }
+    return msgs;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setPrefix(Prefix newPrefix)
+  {
+    if (newPrefix != prefix)
+    {
+      NotificationChain msgs = null;
+      if (prefix != null)
+        msgs = ((InternalEObject)prefix).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - BoilerplateTextPackage.REQUIREMENT__PREFIX, null, msgs);
+      if (newPrefix != null)
+        msgs = ((InternalEObject)newPrefix).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - BoilerplateTextPackage.REQUIREMENT__PREFIX, null, msgs);
+      msgs = basicSetPrefix(newPrefix, msgs);
+      if (msgs != null) msgs.dispatch();
+    }
+    else if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, BoilerplateTextPackage.REQUIREMENT__PREFIX, newPrefix, newPrefix));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Subject getSystem()
+  {
+    return system;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetSystem(Subject newSystem, NotificationChain msgs)
+  {
+    Subject oldSystem = system;
+    system = newSystem;
+    if (eNotificationRequired())
+    {
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, BoilerplateTextPackage.REQUIREMENT__SYSTEM, oldSystem, newSystem);
+      if (msgs == null) msgs = notification; else msgs.add(notification);
+    }
+    return msgs;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setSystem(Subject newSystem)
+  {
+    if (newSystem != system)
+    {
+      NotificationChain msgs = null;
+      if (system != null)
+        msgs = ((InternalEObject)system).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - BoilerplateTextPackage.REQUIREMENT__SYSTEM, null, msgs);
+      if (newSystem != null)
+        msgs = ((InternalEObject)newSystem).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - BoilerplateTextPackage.REQUIREMENT__SYSTEM, null, msgs);
+      msgs = basicSetSystem(newSystem, msgs);
+      if (msgs != null) msgs.dispatch();
+    }
+    else if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, BoilerplateTextPackage.REQUIREMENT__SYSTEM, newSystem, newSystem));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public Predicate getPredicate()
+  {
+    return predicate;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetPredicate(Predicate newPredicate, NotificationChain msgs)
+  {
+    Predicate oldPredicate = predicate;
+    predicate = newPredicate;
+    if (eNotificationRequired())
+    {
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, BoilerplateTextPackage.REQUIREMENT__PREDICATE, oldPredicate, newPredicate);
+      if (msgs == null) msgs = notification; else msgs.add(notification);
+    }
+    return msgs;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setPredicate(Predicate newPredicate)
+  {
+    if (newPredicate != predicate)
+    {
+      NotificationChain msgs = null;
+      if (predicate != null)
+        msgs = ((InternalEObject)predicate).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - BoilerplateTextPackage.REQUIREMENT__PREDICATE, null, msgs);
+      if (newPredicate != null)
+        msgs = ((InternalEObject)newPredicate).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - BoilerplateTextPackage.REQUIREMENT__PREDICATE, null, msgs);
+      msgs = basicSetPredicate(newPredicate, msgs);
+      if (msgs != null) msgs.dispatch();
+    }
+    else if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, BoilerplateTextPackage.REQUIREMENT__PREDICATE, newPredicate, newPredicate));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+  {
+    switch (featureID)
+    {
+      case BoilerplateTextPackage.REQUIREMENT__PREFIX:
+        return basicSetPrefix(null, msgs);
+      case BoilerplateTextPackage.REQUIREMENT__SYSTEM:
+        return basicSetSystem(null, msgs);
+      case BoilerplateTextPackage.REQUIREMENT__PREDICATE:
+        return basicSetPredicate(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 BoilerplateTextPackage.REQUIREMENT__PREFIX:
+        return getPrefix();
+      case BoilerplateTextPackage.REQUIREMENT__SYSTEM:
+        return getSystem();
+      case BoilerplateTextPackage.REQUIREMENT__PREDICATE:
+        return getPredicate();
+    }
+    return super.eGet(featureID, resolve, coreType);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eSet(int featureID, Object newValue)
+  {
+    switch (featureID)
+    {
+      case BoilerplateTextPackage.REQUIREMENT__PREFIX:
+        setPrefix((Prefix)newValue);
+        return;
+      case BoilerplateTextPackage.REQUIREMENT__SYSTEM:
+        setSystem((Subject)newValue);
+        return;
+      case BoilerplateTextPackage.REQUIREMENT__PREDICATE:
+        setPredicate((Predicate)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case BoilerplateTextPackage.REQUIREMENT__PREFIX:
+        setPrefix((Prefix)null);
+        return;
+      case BoilerplateTextPackage.REQUIREMENT__SYSTEM:
+        setSystem((Subject)null);
+        return;
+      case BoilerplateTextPackage.REQUIREMENT__PREDICATE:
+        setPredicate((Predicate)null);
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case BoilerplateTextPackage.REQUIREMENT__PREFIX:
+        return prefix != null;
+      case BoilerplateTextPackage.REQUIREMENT__SYSTEM:
+        return system != null;
+      case BoilerplateTextPackage.REQUIREMENT__PREDICATE:
+        return predicate != null;
+    }
+    return super.eIsSet(featureID);
+  }
+
+} //RequirementImpl
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/ShallAllowImpl.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/ShallAllowImpl.java
new file mode 100644
index 0000000..a68bf1f
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/ShallAllowImpl.java
@@ -0,0 +1,248 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *  *
+ *  *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *  *
+ *  ****************************************************************************
+ * 
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.boilerplateText.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.requirements.sysml14.boilerplateText.BoilerplateTextPackage;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallAllow;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Shall Allow</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.ShallAllowImpl#getEntity <em>Entity</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.ShallAllowImpl#getActionPerformedByEntity <em>Action Performed By Entity</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ShallAllowImpl extends PredicateImpl implements ShallAllow
+{
+  /**
+   * The default value of the '{@link #getEntity() <em>Entity</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getEntity()
+   * @generated
+   * @ordered
+   */
+  protected static final String ENTITY_EDEFAULT = null;
+
+  /**
+   * The cached value of the '{@link #getEntity() <em>Entity</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getEntity()
+   * @generated
+   * @ordered
+   */
+  protected String entity = ENTITY_EDEFAULT;
+
+  /**
+   * The default value of the '{@link #getActionPerformedByEntity() <em>Action Performed By Entity</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getActionPerformedByEntity()
+   * @generated
+   * @ordered
+   */
+  protected static final String ACTION_PERFORMED_BY_ENTITY_EDEFAULT = null;
+
+  /**
+   * The cached value of the '{@link #getActionPerformedByEntity() <em>Action Performed By Entity</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getActionPerformedByEntity()
+   * @generated
+   * @ordered
+   */
+  protected String actionPerformedByEntity = ACTION_PERFORMED_BY_ENTITY_EDEFAULT;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected ShallAllowImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return BoilerplateTextPackage.Literals.SHALL_ALLOW;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String getEntity()
+  {
+    return entity;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setEntity(String newEntity)
+  {
+    String oldEntity = entity;
+    entity = newEntity;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, BoilerplateTextPackage.SHALL_ALLOW__ENTITY, oldEntity, entity));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String getActionPerformedByEntity()
+  {
+    return actionPerformedByEntity;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setActionPerformedByEntity(String newActionPerformedByEntity)
+  {
+    String oldActionPerformedByEntity = actionPerformedByEntity;
+    actionPerformedByEntity = newActionPerformedByEntity;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, BoilerplateTextPackage.SHALL_ALLOW__ACTION_PERFORMED_BY_ENTITY, oldActionPerformedByEntity, actionPerformedByEntity));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object eGet(int featureID, boolean resolve, boolean coreType)
+  {
+    switch (featureID)
+    {
+      case BoilerplateTextPackage.SHALL_ALLOW__ENTITY:
+        return getEntity();
+      case BoilerplateTextPackage.SHALL_ALLOW__ACTION_PERFORMED_BY_ENTITY:
+        return getActionPerformedByEntity();
+    }
+    return super.eGet(featureID, resolve, coreType);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eSet(int featureID, Object newValue)
+  {
+    switch (featureID)
+    {
+      case BoilerplateTextPackage.SHALL_ALLOW__ENTITY:
+        setEntity((String)newValue);
+        return;
+      case BoilerplateTextPackage.SHALL_ALLOW__ACTION_PERFORMED_BY_ENTITY:
+        setActionPerformedByEntity((String)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case BoilerplateTextPackage.SHALL_ALLOW__ENTITY:
+        setEntity(ENTITY_EDEFAULT);
+        return;
+      case BoilerplateTextPackage.SHALL_ALLOW__ACTION_PERFORMED_BY_ENTITY:
+        setActionPerformedByEntity(ACTION_PERFORMED_BY_ENTITY_EDEFAULT);
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case BoilerplateTextPackage.SHALL_ALLOW__ENTITY:
+        return ENTITY_EDEFAULT == null ? entity != null : !ENTITY_EDEFAULT.equals(entity);
+      case BoilerplateTextPackage.SHALL_ALLOW__ACTION_PERFORMED_BY_ENTITY:
+        return ACTION_PERFORMED_BY_ENTITY_EDEFAULT == null ? actionPerformedByEntity != null : !ACTION_PERFORMED_BY_ENTITY_EDEFAULT.equals(actionPerformedByEntity);
+    }
+    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(" (entity: ");
+    result.append(entity);
+    result.append(", actionPerformedByEntity: ");
+    result.append(actionPerformedByEntity);
+    result.append(')');
+    return result.toString();
+  }
+
+} //ShallAllowImpl
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/ShallImpl.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/ShallImpl.java
new file mode 100644
index 0000000..e1e7364
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/ShallImpl.java
@@ -0,0 +1,56 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *  *
+ *  *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *  *
+ *  ****************************************************************************
+ * 
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.Shall;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Shall</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ShallImpl extends PredicateImpl implements Shall
+{
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected ShallImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return BoilerplateTextPackage.Literals.SHALL;
+  }
+
+} //ShallImpl
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/ShallNotAllowImpl.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/ShallNotAllowImpl.java
new file mode 100644
index 0000000..5af70de
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/ShallNotAllowImpl.java
@@ -0,0 +1,248 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *  *
+ *  *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *  *
+ *  ****************************************************************************
+ * 
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.boilerplateText.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.requirements.sysml14.boilerplateText.BoilerplateTextPackage;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallNotAllow;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Shall Not Allow</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.ShallNotAllowImpl#getEntity <em>Entity</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.ShallNotAllowImpl#getActionPerformedByEntity <em>Action Performed By Entity</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ShallNotAllowImpl extends PredicateImpl implements ShallNotAllow
+{
+  /**
+   * The default value of the '{@link #getEntity() <em>Entity</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getEntity()
+   * @generated
+   * @ordered
+   */
+  protected static final String ENTITY_EDEFAULT = null;
+
+  /**
+   * The cached value of the '{@link #getEntity() <em>Entity</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getEntity()
+   * @generated
+   * @ordered
+   */
+  protected String entity = ENTITY_EDEFAULT;
+
+  /**
+   * The default value of the '{@link #getActionPerformedByEntity() <em>Action Performed By Entity</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getActionPerformedByEntity()
+   * @generated
+   * @ordered
+   */
+  protected static final String ACTION_PERFORMED_BY_ENTITY_EDEFAULT = null;
+
+  /**
+   * The cached value of the '{@link #getActionPerformedByEntity() <em>Action Performed By Entity</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getActionPerformedByEntity()
+   * @generated
+   * @ordered
+   */
+  protected String actionPerformedByEntity = ACTION_PERFORMED_BY_ENTITY_EDEFAULT;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected ShallNotAllowImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return BoilerplateTextPackage.Literals.SHALL_NOT_ALLOW;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String getEntity()
+  {
+    return entity;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setEntity(String newEntity)
+  {
+    String oldEntity = entity;
+    entity = newEntity;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, BoilerplateTextPackage.SHALL_NOT_ALLOW__ENTITY, oldEntity, entity));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String getActionPerformedByEntity()
+  {
+    return actionPerformedByEntity;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setActionPerformedByEntity(String newActionPerformedByEntity)
+  {
+    String oldActionPerformedByEntity = actionPerformedByEntity;
+    actionPerformedByEntity = newActionPerformedByEntity;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, BoilerplateTextPackage.SHALL_NOT_ALLOW__ACTION_PERFORMED_BY_ENTITY, oldActionPerformedByEntity, actionPerformedByEntity));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object eGet(int featureID, boolean resolve, boolean coreType)
+  {
+    switch (featureID)
+    {
+      case BoilerplateTextPackage.SHALL_NOT_ALLOW__ENTITY:
+        return getEntity();
+      case BoilerplateTextPackage.SHALL_NOT_ALLOW__ACTION_PERFORMED_BY_ENTITY:
+        return getActionPerformedByEntity();
+    }
+    return super.eGet(featureID, resolve, coreType);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eSet(int featureID, Object newValue)
+  {
+    switch (featureID)
+    {
+      case BoilerplateTextPackage.SHALL_NOT_ALLOW__ENTITY:
+        setEntity((String)newValue);
+        return;
+      case BoilerplateTextPackage.SHALL_NOT_ALLOW__ACTION_PERFORMED_BY_ENTITY:
+        setActionPerformedByEntity((String)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case BoilerplateTextPackage.SHALL_NOT_ALLOW__ENTITY:
+        setEntity(ENTITY_EDEFAULT);
+        return;
+      case BoilerplateTextPackage.SHALL_NOT_ALLOW__ACTION_PERFORMED_BY_ENTITY:
+        setActionPerformedByEntity(ACTION_PERFORMED_BY_ENTITY_EDEFAULT);
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case BoilerplateTextPackage.SHALL_NOT_ALLOW__ENTITY:
+        return ENTITY_EDEFAULT == null ? entity != null : !ENTITY_EDEFAULT.equals(entity);
+      case BoilerplateTextPackage.SHALL_NOT_ALLOW__ACTION_PERFORMED_BY_ENTITY:
+        return ACTION_PERFORMED_BY_ENTITY_EDEFAULT == null ? actionPerformedByEntity != null : !ACTION_PERFORMED_BY_ENTITY_EDEFAULT.equals(actionPerformedByEntity);
+    }
+    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(" (entity: ");
+    result.append(entity);
+    result.append(", actionPerformedByEntity: ");
+    result.append(actionPerformedByEntity);
+    result.append(')');
+    return result.toString();
+  }
+
+} //ShallNotAllowImpl
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/ShallNotImpl.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/ShallNotImpl.java
new file mode 100644
index 0000000..7e2661d
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/ShallNotImpl.java
@@ -0,0 +1,56 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *  *
+ *  *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *  *
+ *  ****************************************************************************
+ * 
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallNot;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Shall Not</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ShallNotImpl extends PredicateImpl implements ShallNot
+{
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected ShallNotImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return BoilerplateTextPackage.Literals.SHALL_NOT;
+  }
+
+} //ShallNotImpl
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/SubjectImpl.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/SubjectImpl.java
new file mode 100644
index 0000000..2a81372
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/SubjectImpl.java
@@ -0,0 +1,193 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *  *
+ *  *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *  *
+ *  ****************************************************************************
+ * 
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.boilerplateText.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.requirements.sysml14.boilerplateText.BoilerplateTextPackage;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.Subject;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Subject</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.SubjectImpl#getSystem <em>System</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class SubjectImpl extends MinimalEObjectImpl.Container implements Subject
+{
+  /**
+   * The default value of the '{@link #getSystem() <em>System</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getSystem()
+   * @generated
+   * @ordered
+   */
+  protected static final String SYSTEM_EDEFAULT = null;
+
+  /**
+   * The cached value of the '{@link #getSystem() <em>System</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getSystem()
+   * @generated
+   * @ordered
+   */
+  protected String system = SYSTEM_EDEFAULT;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected SubjectImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return BoilerplateTextPackage.Literals.SUBJECT;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String getSystem()
+  {
+    return system;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setSystem(String newSystem)
+  {
+    String oldSystem = system;
+    system = newSystem;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, BoilerplateTextPackage.SUBJECT__SYSTEM, oldSystem, system));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object eGet(int featureID, boolean resolve, boolean coreType)
+  {
+    switch (featureID)
+    {
+      case BoilerplateTextPackage.SUBJECT__SYSTEM:
+        return getSystem();
+    }
+    return super.eGet(featureID, resolve, coreType);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eSet(int featureID, Object newValue)
+  {
+    switch (featureID)
+    {
+      case BoilerplateTextPackage.SUBJECT__SYSTEM:
+        setSystem((String)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case BoilerplateTextPackage.SUBJECT__SYSTEM:
+        setSystem(SYSTEM_EDEFAULT);
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case BoilerplateTextPackage.SUBJECT__SYSTEM:
+        return SYSTEM_EDEFAULT == null ? system != null : !SYSTEM_EDEFAULT.equals(system);
+    }
+    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(" (system: ");
+    result.append(system);
+    result.append(')');
+    return result.toString();
+  }
+
+} //SubjectImpl
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/WhileImpl.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/WhileImpl.java
new file mode 100644
index 0000000..1c5837e
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/impl/WhileImpl.java
@@ -0,0 +1,192 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *  *
+ *  *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *  *
+ *  ****************************************************************************
+ * 
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.boilerplateText.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.requirements.sysml14.boilerplateText.BoilerplateTextPackage;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.While;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>While</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.impl.WhileImpl#getState <em>State</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class WhileImpl extends PrefixImpl implements While
+{
+  /**
+   * The default value of the '{@link #getState() <em>State</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getState()
+   * @generated
+   * @ordered
+   */
+  protected static final String STATE_EDEFAULT = null;
+
+  /**
+   * The cached value of the '{@link #getState() <em>State</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getState()
+   * @generated
+   * @ordered
+   */
+  protected String state = STATE_EDEFAULT;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected WhileImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return BoilerplateTextPackage.Literals.WHILE;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String getState()
+  {
+    return state;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setState(String newState)
+  {
+    String oldState = state;
+    state = newState;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, BoilerplateTextPackage.WHILE__STATE, oldState, state));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object eGet(int featureID, boolean resolve, boolean coreType)
+  {
+    switch (featureID)
+    {
+      case BoilerplateTextPackage.WHILE__STATE:
+        return getState();
+    }
+    return super.eGet(featureID, resolve, coreType);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eSet(int featureID, Object newValue)
+  {
+    switch (featureID)
+    {
+      case BoilerplateTextPackage.WHILE__STATE:
+        setState((String)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case BoilerplateTextPackage.WHILE__STATE:
+        setState(STATE_EDEFAULT);
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case BoilerplateTextPackage.WHILE__STATE:
+        return STATE_EDEFAULT == null ? state != null : !STATE_EDEFAULT.equals(state);
+    }
+    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(" (state: ");
+    result.append(state);
+    result.append(')');
+    return result.toString();
+  }
+
+} //WhileImpl
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/util/BoilerplateTextAdapterFactory.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/util/BoilerplateTextAdapterFactory.java
new file mode 100644
index 0000000..fec94d9
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/util/BoilerplateTextAdapterFactory.java
@@ -0,0 +1,348 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *  *
+ *  *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *  *
+ *  ****************************************************************************
+ * 
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.boilerplateText.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.requirements.sysml14.boilerplateText.*;
+
+/**
+ * <!-- 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.requirements.sysml14.boilerplateText.BoilerplateTextPackage
+ * @generated
+ */
+public class BoilerplateTextAdapterFactory extends AdapterFactoryImpl
+{
+  /**
+   * The cached model package.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected static BoilerplateTextPackage modelPackage;
+
+  /**
+   * Creates an instance of the adapter factory.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public BoilerplateTextAdapterFactory()
+  {
+    if (modelPackage == null)
+    {
+      modelPackage = BoilerplateTextPackage.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 BoilerplateTextSwitch<Adapter> modelSwitch =
+    new BoilerplateTextSwitch<Adapter>()
+    {
+      @Override
+      public Adapter caseModel(Model object)
+      {
+        return createModelAdapter();
+      }
+      @Override
+      public Adapter caseRequirement(Requirement object)
+      {
+        return createRequirementAdapter();
+      }
+      @Override
+      public Adapter caseSubject(Subject object)
+      {
+        return createSubjectAdapter();
+      }
+      @Override
+      public Adapter casePrefix(Prefix object)
+      {
+        return createPrefixAdapter();
+      }
+      @Override
+      public Adapter caseIf(If object)
+      {
+        return createIfAdapter();
+      }
+      @Override
+      public Adapter caseWhile(While object)
+      {
+        return createWhileAdapter();
+      }
+      @Override
+      public Adapter casePredicate(Predicate object)
+      {
+        return createPredicateAdapter();
+      }
+      @Override
+      public Adapter caseShallNotAllow(ShallNotAllow object)
+      {
+        return createShallNotAllowAdapter();
+      }
+      @Override
+      public Adapter caseShallAllow(ShallAllow object)
+      {
+        return createShallAllowAdapter();
+      }
+      @Override
+      public Adapter caseShallNot(ShallNot object)
+      {
+        return createShallNotAdapter();
+      }
+      @Override
+      public Adapter caseShall(Shall object)
+      {
+        return createShallAdapter();
+      }
+      @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.requirements.sysml14.boilerplateText.Model <em>Model</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.requirements.sysml14.boilerplateText.Model
+   * @generated
+   */
+  public Adapter createModelAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.Requirement <em>Requirement</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.requirements.sysml14.boilerplateText.Requirement
+   * @generated
+   */
+  public Adapter createRequirementAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.Subject <em>Subject</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.requirements.sysml14.boilerplateText.Subject
+   * @generated
+   */
+  public Adapter createSubjectAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.Prefix <em>Prefix</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.requirements.sysml14.boilerplateText.Prefix
+   * @generated
+   */
+  public Adapter createPrefixAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.If <em>If</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.requirements.sysml14.boilerplateText.If
+   * @generated
+   */
+  public Adapter createIfAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.While <em>While</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.requirements.sysml14.boilerplateText.While
+   * @generated
+   */
+  public Adapter createWhileAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.Predicate <em>Predicate</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.requirements.sysml14.boilerplateText.Predicate
+   * @generated
+   */
+  public Adapter createPredicateAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallNotAllow <em>Shall Not Allow</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.requirements.sysml14.boilerplateText.ShallNotAllow
+   * @generated
+   */
+  public Adapter createShallNotAllowAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallAllow <em>Shall Allow</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.requirements.sysml14.boilerplateText.ShallAllow
+   * @generated
+   */
+  public Adapter createShallAllowAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallNot <em>Shall Not</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.requirements.sysml14.boilerplateText.ShallNot
+   * @generated
+   */
+  public Adapter createShallNotAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.requirements.sysml14.boilerplateText.Shall <em>Shall</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.requirements.sysml14.boilerplateText.Shall
+   * @generated
+   */
+  public Adapter createShallAdapter()
+  {
+    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;
+  }
+
+} //BoilerplateTextAdapterFactory
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/util/BoilerplateTextSwitch.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/util/BoilerplateTextSwitch.java
new file mode 100644
index 0000000..5788bf5
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/boilerplateText/util/BoilerplateTextSwitch.java
@@ -0,0 +1,371 @@
+/**
+ * ****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *  *
+ *  *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *  *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *  *
+ *  ****************************************************************************
+ * 
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.boilerplateText.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.*;
+
+/**
+ * <!-- 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.requirements.sysml14.boilerplateText.BoilerplateTextPackage
+ * @generated
+ */
+public class BoilerplateTextSwitch<T> extends Switch<T>
+{
+  /**
+   * The cached model package
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected static BoilerplateTextPackage modelPackage;
+
+  /**
+   * Creates an instance of the switch.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public BoilerplateTextSwitch()
+  {
+    if (modelPackage == null)
+    {
+      modelPackage = BoilerplateTextPackage.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 BoilerplateTextPackage.MODEL:
+      {
+        Model model = (Model)theEObject;
+        T result = caseModel(model);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case BoilerplateTextPackage.REQUIREMENT:
+      {
+        Requirement requirement = (Requirement)theEObject;
+        T result = caseRequirement(requirement);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case BoilerplateTextPackage.SUBJECT:
+      {
+        Subject subject = (Subject)theEObject;
+        T result = caseSubject(subject);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case BoilerplateTextPackage.PREFIX:
+      {
+        Prefix prefix = (Prefix)theEObject;
+        T result = casePrefix(prefix);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case BoilerplateTextPackage.IF:
+      {
+        If if_ = (If)theEObject;
+        T result = caseIf(if_);
+        if (result == null) result = casePrefix(if_);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case BoilerplateTextPackage.WHILE:
+      {
+        While while_ = (While)theEObject;
+        T result = caseWhile(while_);
+        if (result == null) result = casePrefix(while_);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case BoilerplateTextPackage.PREDICATE:
+      {
+        Predicate predicate = (Predicate)theEObject;
+        T result = casePredicate(predicate);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case BoilerplateTextPackage.SHALL_NOT_ALLOW:
+      {
+        ShallNotAllow shallNotAllow = (ShallNotAllow)theEObject;
+        T result = caseShallNotAllow(shallNotAllow);
+        if (result == null) result = casePredicate(shallNotAllow);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case BoilerplateTextPackage.SHALL_ALLOW:
+      {
+        ShallAllow shallAllow = (ShallAllow)theEObject;
+        T result = caseShallAllow(shallAllow);
+        if (result == null) result = casePredicate(shallAllow);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case BoilerplateTextPackage.SHALL_NOT:
+      {
+        ShallNot shallNot = (ShallNot)theEObject;
+        T result = caseShallNot(shallNot);
+        if (result == null) result = casePredicate(shallNot);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case BoilerplateTextPackage.SHALL:
+      {
+        Shall shall = (Shall)theEObject;
+        T result = caseShall(shall);
+        if (result == null) result = casePredicate(shall);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      default: return defaultCase(theEObject);
+    }
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Model</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>Model</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseModel(Model object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Requirement</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>Requirement</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseRequirement(Requirement object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Subject</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>Subject</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseSubject(Subject object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Prefix</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>Prefix</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T casePrefix(Prefix object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>If</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>If</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseIf(If object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>While</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>While</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseWhile(While object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Predicate</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>Predicate</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T casePredicate(Predicate object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Shall Not Allow</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>Shall Not Allow</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseShallNotAllow(ShallNotAllow object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Shall Allow</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>Shall Allow</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseShallAllow(ShallAllow object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Shall Not</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>Shall Not</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseShallNot(ShallNot object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Shall</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>Shall</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseShall(Shall 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;
+  }
+
+} //BoilerplateTextSwitch
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/parser/antlr/BoilerplateTextAntlrTokenFileProvider.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/parser/antlr/BoilerplateTextAntlrTokenFileProvider.java
new file mode 100644
index 0000000..c79d689
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/parser/antlr/BoilerplateTextAntlrTokenFileProvider.java
@@ -0,0 +1,30 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.parser.antlr;
+
+import java.io.InputStream;
+import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider;
+
+public class BoilerplateTextAntlrTokenFileProvider implements IAntlrTokenFileProvider {
+
+	@Override
+	public InputStream getAntlrTokenFile() {
+		ClassLoader classLoader = getClass().getClassLoader();
+		return classLoader.getResourceAsStream("org/eclipse/papyrus/requirements/sysml14/parser/antlr/internal/InternalBoilerplateText.tokens");
+	}
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/parser/antlr/BoilerplateTextParser.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/parser/antlr/BoilerplateTextParser.java
new file mode 100644
index 0000000..c17382a
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/parser/antlr/BoilerplateTextParser.java
@@ -0,0 +1,54 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.parser.antlr;
+
+import com.google.inject.Inject;
+import org.eclipse.papyrus.requirements.sysml14.parser.antlr.internal.InternalBoilerplateTextParser;
+import org.eclipse.papyrus.requirements.sysml14.services.BoilerplateTextGrammarAccess;
+import org.eclipse.xtext.parser.antlr.AbstractAntlrParser;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+
+public class BoilerplateTextParser extends AbstractAntlrParser {
+
+	@Inject
+	private BoilerplateTextGrammarAccess grammarAccess;
+
+	@Override
+	protected void setInitialHiddenTokens(XtextTokenStream tokenStream) {
+		tokenStream.setInitialHiddenTokens("RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT");
+	}
+	
+
+	@Override
+	protected InternalBoilerplateTextParser createParser(XtextTokenStream stream) {
+		return new InternalBoilerplateTextParser(stream, getGrammarAccess());
+	}
+
+	@Override 
+	protected String getDefaultRuleName() {
+		return "Model";
+	}
+
+	public BoilerplateTextGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+
+	public void setGrammarAccess(BoilerplateTextGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/parser/antlr/internal/InternalBoilerplateText.g b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/parser/antlr/internal/InternalBoilerplateText.g
new file mode 100644
index 0000000..6ab4e27
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/parser/antlr/internal/InternalBoilerplateText.g
@@ -0,0 +1,763 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+/*
+ * generated by Xtext 2.11.0
+ */
+grammar InternalBoilerplateText;
+
+options {
+	superClass=AbstractInternalAntlrParser;
+}
+
+@lexer::header {
+package org.eclipse.papyrus.requirements.sysml14.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.requirements.sysml14.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.requirements.sysml14.services.BoilerplateTextGrammarAccess;
+
+}
+
+@parser::members {
+
+ 	private BoilerplateTextGrammarAccess grammarAccess;
+
+    public InternalBoilerplateTextParser(TokenStream input, BoilerplateTextGrammarAccess grammarAccess) {
+        this(input);
+        this.grammarAccess = grammarAccess;
+        registerRules(grammarAccess.getGrammar());
+    }
+
+    @Override
+    protected String getFirstRuleName() {
+    	return "Model";
+   	}
+
+   	@Override
+   	protected BoilerplateTextGrammarAccess getGrammarAccess() {
+   		return grammarAccess;
+   	}
+
+}
+
+@rulecatch {
+    catch (RecognitionException re) {
+        recover(input,re);
+        appendSkippedTokens();
+    }
+}
+
+// Entry rule entryRuleModel
+entryRuleModel returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getModelRule()); }
+	iv_ruleModel=ruleModel
+	{ $current=$iv_ruleModel.current; }
+	EOF;
+
+// Rule Model
+ruleModel returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				newCompositeNode(grammarAccess.getModelAccess().getModelRequirementParserRuleCall_0());
+			}
+			lv_model_0_0=ruleRequirement
+			{
+				if ($current==null) {
+					$current = createModelElementForParent(grammarAccess.getModelRule());
+				}
+				set(
+					$current,
+					"model",
+					lv_model_0_0,
+					"org.eclipse.papyrus.requirements.sysml14.BoilerplateText.Requirement");
+				afterParserOrEnumRuleCall();
+			}
+		)
+	)
+;
+
+// Entry rule entryRuleRequirement
+entryRuleRequirement returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getRequirementRule()); }
+	iv_ruleRequirement=ruleRequirement
+	{ $current=$iv_ruleRequirement.current; }
+	EOF;
+
+// Rule Requirement
+ruleRequirement returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getRequirementAccess().getPrefixPrefixParserRuleCall_0_0_0());
+					}
+					lv_prefix_0_0=rulePrefix
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getRequirementRule());
+						}
+						set(
+							$current,
+							"prefix",
+							lv_prefix_0_0,
+							"org.eclipse.papyrus.requirements.sysml14.BoilerplateText.Prefix");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+			otherlv_1=','
+			{
+				newLeafNode(otherlv_1, grammarAccess.getRequirementAccess().getCommaKeyword_0_1());
+			}
+		)?
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getRequirementAccess().getSystemSubjectParserRuleCall_1_0());
+				}
+				lv_system_2_0=ruleSubject
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getRequirementRule());
+					}
+					set(
+						$current,
+						"system",
+						lv_system_2_0,
+						"org.eclipse.papyrus.requirements.sysml14.BoilerplateText.Subject");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getRequirementAccess().getPredicatePredicateParserRuleCall_2_0());
+				}
+				lv_predicate_3_0=rulePredicate
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getRequirementRule());
+					}
+					set(
+						$current,
+						"predicate",
+						lv_predicate_3_0,
+						"org.eclipse.papyrus.requirements.sysml14.BoilerplateText.Predicate");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
+;
+
+// Entry rule entryRuleSubject
+entryRuleSubject returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getSubjectRule()); }
+	iv_ruleSubject=ruleSubject
+	{ $current=$iv_ruleSubject.current; }
+	EOF;
+
+// Rule Subject
+ruleSubject returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			lv_system_0_0=RULE_STRING
+			{
+				newLeafNode(lv_system_0_0, grammarAccess.getSubjectAccess().getSystemSTRINGTerminalRuleCall_0());
+			}
+			{
+				if ($current==null) {
+					$current = createModelElement(grammarAccess.getSubjectRule());
+				}
+				setWithLastConsumed(
+					$current,
+					"system",
+					lv_system_0_0,
+					"org.eclipse.xtext.common.Terminals.STRING");
+			}
+		)
+	)
+;
+
+// Entry rule entryRulePrefix
+entryRulePrefix returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getPrefixRule()); }
+	iv_rulePrefix=rulePrefix
+	{ $current=$iv_rulePrefix.current; }
+	EOF;
+
+// Rule Prefix
+rulePrefix returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getPrefixAccess().getIfParserRuleCall_0());
+		}
+		this_If_0=ruleIf
+		{
+			$current = $this_If_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getPrefixAccess().getWhileParserRuleCall_1());
+		}
+		this_While_1=ruleWhile
+		{
+			$current = $this_While_1.current;
+			afterParserOrEnumRuleCall();
+		}
+	)
+;
+
+// Entry rule entryRuleIf
+entryRuleIf returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getIfRule()); }
+	iv_ruleIf=ruleIf
+	{ $current=$iv_ruleIf.current; }
+	EOF;
+
+// Rule If
+ruleIf returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='if'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getIfAccess().getIfKeyword_0());
+		}
+		(
+			(
+				lv_event_1_0=RULE_STRING
+				{
+					newLeafNode(lv_event_1_0, grammarAccess.getIfAccess().getEventSTRINGTerminalRuleCall_1_0());
+				}
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getIfRule());
+					}
+					addWithLastConsumed(
+						$current,
+						"event",
+						lv_event_1_0,
+						"org.eclipse.xtext.common.Terminals.STRING");
+				}
+			)
+		)
+		(
+			otherlv_2='and'
+			{
+				newLeafNode(otherlv_2, grammarAccess.getIfAccess().getAndKeyword_2_0());
+			}
+			(
+				(
+					lv_event_3_0=RULE_STRING
+					{
+						newLeafNode(lv_event_3_0, grammarAccess.getIfAccess().getEventSTRINGTerminalRuleCall_2_1_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getIfRule());
+						}
+						addWithLastConsumed(
+							$current,
+							"event",
+							lv_event_3_0,
+							"org.eclipse.xtext.common.Terminals.STRING");
+					}
+				)
+			)
+		)*
+	)
+;
+
+// Entry rule entryRuleWhile
+entryRuleWhile returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getWhileRule()); }
+	iv_ruleWhile=ruleWhile
+	{ $current=$iv_ruleWhile.current; }
+	EOF;
+
+// Rule While
+ruleWhile returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='while'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getWhileAccess().getWhileKeyword_0());
+		}
+		(
+			(
+				lv_state_1_0=RULE_STRING
+				{
+					newLeafNode(lv_state_1_0, grammarAccess.getWhileAccess().getStateSTRINGTerminalRuleCall_1_0());
+				}
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getWhileRule());
+					}
+					setWithLastConsumed(
+						$current,
+						"state",
+						lv_state_1_0,
+						"org.eclipse.xtext.common.Terminals.STRING");
+				}
+			)
+		)
+	)
+;
+
+// Entry rule entryRulePredicate
+entryRulePredicate returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getPredicateRule()); }
+	iv_rulePredicate=rulePredicate
+	{ $current=$iv_rulePredicate.current; }
+	EOF;
+
+// Rule Predicate
+rulePredicate returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getPredicateAccess().getShallParserRuleCall_0());
+		}
+		this_Shall_0=ruleShall
+		{
+			$current = $this_Shall_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getPredicateAccess().getShallNotParserRuleCall_1());
+		}
+		this_ShallNot_1=ruleShallNot
+		{
+			$current = $this_ShallNot_1.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getPredicateAccess().getShallAllowParserRuleCall_2());
+		}
+		this_ShallAllow_2=ruleShallAllow
+		{
+			$current = $this_ShallAllow_2.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getPredicateAccess().getShallNotAllowParserRuleCall_3());
+		}
+		this_ShallNotAllow_3=ruleShallNotAllow
+		{
+			$current = $this_ShallNotAllow_3.current;
+			afterParserOrEnumRuleCall();
+		}
+	)
+;
+
+// Entry rule entryRuleShallNotAllow
+entryRuleShallNotAllow returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getShallNotAllowRule()); }
+	iv_ruleShallNotAllow=ruleShallNotAllow
+	{ $current=$iv_ruleShallNotAllow.current; }
+	EOF;
+
+// Rule ShallNotAllow
+ruleShallNotAllow returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='shall'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getShallNotAllowAccess().getShallKeyword_0());
+		}
+		(
+			('not')=>
+			otherlv_1='not'
+			{
+				newLeafNode(otherlv_1, grammarAccess.getShallNotAllowAccess().getNotKeyword_1());
+			}
+		)
+		(
+			('allow')=>
+			otherlv_2='allow'
+			{
+				newLeafNode(otherlv_2, grammarAccess.getShallNotAllowAccess().getAllowKeyword_2());
+			}
+		)
+		(
+			(
+				(
+					lv_action_3_0=RULE_STRING
+					{
+						newLeafNode(lv_action_3_0, grammarAccess.getShallNotAllowAccess().getActionSTRINGTerminalRuleCall_3_0_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getShallNotAllowRule());
+						}
+						setWithLastConsumed(
+							$current,
+							"action",
+							lv_action_3_0,
+							"org.eclipse.xtext.common.Terminals.STRING");
+					}
+				)
+			)
+			    |
+			(
+				(
+					(
+						lv_entity_4_0=RULE_STRING
+						{
+							newLeafNode(lv_entity_4_0, grammarAccess.getShallNotAllowAccess().getEntitySTRINGTerminalRuleCall_3_1_0_0());
+						}
+						{
+							if ($current==null) {
+								$current = createModelElement(grammarAccess.getShallNotAllowRule());
+							}
+							setWithLastConsumed(
+								$current,
+								"entity",
+								lv_entity_4_0,
+								"org.eclipse.xtext.common.Terminals.STRING");
+						}
+					)
+				)
+				otherlv_5='to'
+				{
+					newLeafNode(otherlv_5, grammarAccess.getShallNotAllowAccess().getToKeyword_3_1_1());
+				}
+				(
+					(
+						lv_actionPerformedByEntity_6_0=RULE_STRING
+						{
+							newLeafNode(lv_actionPerformedByEntity_6_0, grammarAccess.getShallNotAllowAccess().getActionPerformedByEntitySTRINGTerminalRuleCall_3_1_2_0());
+						}
+						{
+							if ($current==null) {
+								$current = createModelElement(grammarAccess.getShallNotAllowRule());
+							}
+							setWithLastConsumed(
+								$current,
+								"actionPerformedByEntity",
+								lv_actionPerformedByEntity_6_0,
+								"org.eclipse.xtext.common.Terminals.STRING");
+						}
+					)
+				)
+			)
+		)
+	)
+;
+
+// Entry rule entryRuleShallAllow
+entryRuleShallAllow returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getShallAllowRule()); }
+	iv_ruleShallAllow=ruleShallAllow
+	{ $current=$iv_ruleShallAllow.current; }
+	EOF;
+
+// Rule ShallAllow
+ruleShallAllow returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='shall'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getShallAllowAccess().getShallKeyword_0());
+		}
+		(
+			('allow')=>
+			otherlv_1='allow'
+			{
+				newLeafNode(otherlv_1, grammarAccess.getShallAllowAccess().getAllowKeyword_1());
+			}
+		)
+		(
+			(
+				(
+					lv_action_2_0=RULE_STRING
+					{
+						newLeafNode(lv_action_2_0, grammarAccess.getShallAllowAccess().getActionSTRINGTerminalRuleCall_2_0_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getShallAllowRule());
+						}
+						setWithLastConsumed(
+							$current,
+							"action",
+							lv_action_2_0,
+							"org.eclipse.xtext.common.Terminals.STRING");
+					}
+				)
+			)
+			    |
+			(
+				(
+					(
+						lv_entity_3_0=RULE_STRING
+						{
+							newLeafNode(lv_entity_3_0, grammarAccess.getShallAllowAccess().getEntitySTRINGTerminalRuleCall_2_1_0_0());
+						}
+						{
+							if ($current==null) {
+								$current = createModelElement(grammarAccess.getShallAllowRule());
+							}
+							setWithLastConsumed(
+								$current,
+								"entity",
+								lv_entity_3_0,
+								"org.eclipse.xtext.common.Terminals.STRING");
+						}
+					)
+				)
+				otherlv_4='to'
+				{
+					newLeafNode(otherlv_4, grammarAccess.getShallAllowAccess().getToKeyword_2_1_1());
+				}
+				(
+					(
+						lv_actionPerformedByEntity_5_0=RULE_STRING
+						{
+							newLeafNode(lv_actionPerformedByEntity_5_0, grammarAccess.getShallAllowAccess().getActionPerformedByEntitySTRINGTerminalRuleCall_2_1_2_0());
+						}
+						{
+							if ($current==null) {
+								$current = createModelElement(grammarAccess.getShallAllowRule());
+							}
+							setWithLastConsumed(
+								$current,
+								"actionPerformedByEntity",
+								lv_actionPerformedByEntity_5_0,
+								"org.eclipse.xtext.common.Terminals.STRING");
+						}
+					)
+				)
+			)
+		)
+	)
+;
+
+// Entry rule entryRuleShallNot
+entryRuleShallNot returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getShallNotRule()); }
+	iv_ruleShallNot=ruleShallNot
+	{ $current=$iv_ruleShallNot.current; }
+	EOF;
+
+// Rule ShallNot
+ruleShallNot returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='shall'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getShallNotAccess().getShallKeyword_0());
+		}
+		(
+			('not')=>
+			otherlv_1='not'
+			{
+				newLeafNode(otherlv_1, grammarAccess.getShallNotAccess().getNotKeyword_1());
+			}
+		)
+		(
+			otherlv_2='be'
+			{
+				newLeafNode(otherlv_2, grammarAccess.getShallNotAccess().getBeKeyword_2_0());
+			}
+			(
+				('able')=>
+				otherlv_3='able'
+				{
+					newLeafNode(otherlv_3, grammarAccess.getShallNotAccess().getAbleKeyword_2_1());
+				}
+			)
+			(
+				('to')=>
+				otherlv_4='to'
+				{
+					newLeafNode(otherlv_4, grammarAccess.getShallNotAccess().getToKeyword_2_2());
+				}
+			)
+		)?
+		(
+			(
+				lv_action_5_0=RULE_STRING
+				{
+					newLeafNode(lv_action_5_0, grammarAccess.getShallNotAccess().getActionSTRINGTerminalRuleCall_3_0());
+				}
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getShallNotRule());
+					}
+					setWithLastConsumed(
+						$current,
+						"action",
+						lv_action_5_0,
+						"org.eclipse.xtext.common.Terminals.STRING");
+				}
+			)
+		)
+	)
+;
+
+// Entry rule entryRuleShall
+entryRuleShall returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getShallRule()); }
+	iv_ruleShall=ruleShall
+	{ $current=$iv_ruleShall.current; }
+	EOF;
+
+// Rule Shall
+ruleShall returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='shall'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getShallAccess().getShallKeyword_0());
+		}
+		(
+			('be')=>
+			(
+				otherlv_1='be'
+				{
+					newLeafNode(otherlv_1, grammarAccess.getShallAccess().getBeKeyword_1_0_0());
+				}
+				(
+					('able')=>
+					otherlv_2='able'
+					{
+						newLeafNode(otherlv_2, grammarAccess.getShallAccess().getAbleKeyword_1_0_1());
+					}
+				)
+				(
+					('to')=>
+					otherlv_3='to'
+					{
+						newLeafNode(otherlv_3, grammarAccess.getShallAccess().getToKeyword_1_0_2());
+					}
+				)
+			)
+		)?
+		(
+			(
+				lv_action_4_0=RULE_STRING
+				{
+					newLeafNode(lv_action_4_0, grammarAccess.getShallAccess().getActionSTRINGTerminalRuleCall_2_0());
+				}
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getShallRule());
+					}
+					setWithLastConsumed(
+						$current,
+						"action",
+						lv_action_4_0,
+						"org.eclipse.xtext.common.Terminals.STRING");
+				}
+			)
+		)
+	)
+;
+
+RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
+
+RULE_INT : ('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/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/parser/antlr/internal/InternalBoilerplateText.tokens b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/parser/antlr/internal/InternalBoilerplateText.tokens
new file mode 100644
index 0000000..629db52
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/parser/antlr/internal/InternalBoilerplateText.tokens
@@ -0,0 +1,27 @@
+','=11
+'able'=20
+'allow'=17
+'and'=13
+'be'=19
+'if'=12
+'not'=16
+'shall'=15
+'to'=18
+'while'=14
+RULE_ANY_OTHER=10
+RULE_ID=5
+RULE_INT=6
+RULE_ML_COMMENT=7
+RULE_SL_COMMENT=8
+RULE_STRING=4
+RULE_WS=9
+T__11=11
+T__12=12
+T__13=13
+T__14=14
+T__15=15
+T__16=16
+T__17=17
+T__18=18
+T__19=19
+T__20=20
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/parser/antlr/internal/InternalBoilerplateTextLexer.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/parser/antlr/internal/InternalBoilerplateTextLexer.java
new file mode 100644
index 0000000..f17d3cc
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/parser/antlr/internal/InternalBoilerplateTextLexer.java
@@ -0,0 +1,1058 @@
+package org.eclipse.papyrus.requirements.sysml14.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 InternalBoilerplateTextLexer extends Lexer {
+    public static final int RULE_STRING=4;
+    public static final int RULE_SL_COMMENT=8;
+    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 T__11=11;
+    public static final int T__12=12;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int EOF=-1;
+    public static final int RULE_ID=5;
+    public static final int RULE_WS=9;
+    public static final int RULE_ANY_OTHER=10;
+    public static final int RULE_INT=6;
+    public static final int RULE_ML_COMMENT=7;
+    public static final int T__20=20;
+
+    // delegates
+    // delegators
+
+    public InternalBoilerplateTextLexer() {;} 
+    public InternalBoilerplateTextLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalBoilerplateTextLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "InternalBoilerplateText.g"; }
+
+    // $ANTLR start "T__11"
+    public final void mT__11() throws RecognitionException {
+        try {
+            int _type = T__11;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalBoilerplateText.g:11:7: ( ',' )
+            // InternalBoilerplateText.g:11:9: ','
+            {
+            match(','); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__11"
+
+    // $ANTLR start "T__12"
+    public final void mT__12() throws RecognitionException {
+        try {
+            int _type = T__12;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalBoilerplateText.g:12:7: ( 'if' )
+            // InternalBoilerplateText.g:12:9: 'if'
+            {
+            match("if"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__12"
+
+    // $ANTLR start "T__13"
+    public final void mT__13() throws RecognitionException {
+        try {
+            int _type = T__13;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalBoilerplateText.g:13:7: ( 'and' )
+            // InternalBoilerplateText.g:13:9: 'and'
+            {
+            match("and"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__13"
+
+    // $ANTLR start "T__14"
+    public final void mT__14() throws RecognitionException {
+        try {
+            int _type = T__14;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalBoilerplateText.g:14:7: ( 'while' )
+            // InternalBoilerplateText.g:14:9: 'while'
+            {
+            match("while"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__14"
+
+    // $ANTLR start "T__15"
+    public final void mT__15() throws RecognitionException {
+        try {
+            int _type = T__15;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalBoilerplateText.g:15:7: ( 'shall' )
+            // InternalBoilerplateText.g:15:9: 'shall'
+            {
+            match("shall"); 
+
+
+            }
+
+            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;
+            // InternalBoilerplateText.g:16:7: ( 'not' )
+            // InternalBoilerplateText.g:16:9: 'not'
+            {
+            match("not"); 
+
+
+            }
+
+            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;
+            // InternalBoilerplateText.g:17:7: ( 'allow' )
+            // InternalBoilerplateText.g:17:9: 'allow'
+            {
+            match("allow"); 
+
+
+            }
+
+            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;
+            // InternalBoilerplateText.g:18:7: ( 'to' )
+            // InternalBoilerplateText.g:18:9: 'to'
+            {
+            match("to"); 
+
+
+            }
+
+            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;
+            // InternalBoilerplateText.g:19:7: ( 'be' )
+            // InternalBoilerplateText.g:19:9: 'be'
+            {
+            match("be"); 
+
+
+            }
+
+            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;
+            // InternalBoilerplateText.g:20:7: ( 'able' )
+            // InternalBoilerplateText.g:20:9: 'able'
+            {
+            match("able"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__20"
+
+    // $ANTLR start "RULE_ID"
+    public final void mRULE_ID() throws RecognitionException {
+        try {
+            int _type = RULE_ID;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalBoilerplateText.g:751:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
+            // InternalBoilerplateText.g:751:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+            {
+            // InternalBoilerplateText.g:751:11: ( '^' )?
+            int alt1=2;
+            int LA1_0 = input.LA(1);
+
+            if ( (LA1_0=='^') ) {
+                alt1=1;
+            }
+            switch (alt1) {
+                case 1 :
+                    // InternalBoilerplateText.g:751: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;}
+
+            // InternalBoilerplateText.g:751:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
+            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=='_'||(LA2_0>='a' && LA2_0<='z')) ) {
+                    alt2=1;
+                }
+
+
+                switch (alt2) {
+            	case 1 :
+            	    // InternalBoilerplateText.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 loop2;
+                }
+            } while (true);
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ID"
+
+    // $ANTLR start "RULE_INT"
+    public final void mRULE_INT() throws RecognitionException {
+        try {
+            int _type = RULE_INT;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalBoilerplateText.g:753:10: ( ( '0' .. '9' )+ )
+            // InternalBoilerplateText.g:753:12: ( '0' .. '9' )+
+            {
+            // InternalBoilerplateText.g:753:12: ( '0' .. '9' )+
+            int cnt3=0;
+            loop3:
+            do {
+                int alt3=2;
+                int LA3_0 = input.LA(1);
+
+                if ( ((LA3_0>='0' && LA3_0<='9')) ) {
+                    alt3=1;
+                }
+
+
+                switch (alt3) {
+            	case 1 :
+            	    // InternalBoilerplateText.g:753:13: '0' .. '9'
+            	    {
+            	    matchRange('0','9'); 
+
+            	    }
+            	    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_INT"
+
+    // $ANTLR start "RULE_STRING"
+    public final void mRULE_STRING() throws RecognitionException {
+        try {
+            int _type = RULE_STRING;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalBoilerplateText.g:755:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) )
+            // InternalBoilerplateText.g:755:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+            {
+            // InternalBoilerplateText.g:755:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' )
+            int alt6=2;
+            int LA6_0 = input.LA(1);
+
+            if ( (LA6_0=='\"') ) {
+                alt6=1;
+            }
+            else if ( (LA6_0=='\'') ) {
+                alt6=2;
+            }
+            else {
+                NoViableAltException nvae =
+                    new NoViableAltException("", 6, 0, input);
+
+                throw nvae;
+            }
+            switch (alt6) {
+                case 1 :
+                    // InternalBoilerplateText.g:755:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"'
+                    {
+                    match('\"'); 
+                    // InternalBoilerplateText.g:755:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+                    loop4:
+                    do {
+                        int alt4=3;
+                        int LA4_0 = input.LA(1);
+
+                        if ( (LA4_0=='\\') ) {
+                            alt4=1;
+                        }
+                        else if ( ((LA4_0>='\u0000' && LA4_0<='!')||(LA4_0>='#' && LA4_0<='[')||(LA4_0>=']' && LA4_0<='\uFFFF')) ) {
+                            alt4=2;
+                        }
+
+
+                        switch (alt4) {
+                    	case 1 :
+                    	    // InternalBoilerplateText.g:755:21: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // InternalBoilerplateText.g:755: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 loop4;
+                        }
+                    } while (true);
+
+                    match('\"'); 
+
+                    }
+                    break;
+                case 2 :
+                    // InternalBoilerplateText.g:755:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\''
+                    {
+                    match('\''); 
+                    // InternalBoilerplateText.g:755:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    loop5:
+                    do {
+                        int alt5=3;
+                        int LA5_0 = input.LA(1);
+
+                        if ( (LA5_0=='\\') ) {
+                            alt5=1;
+                        }
+                        else if ( ((LA5_0>='\u0000' && LA5_0<='&')||(LA5_0>='(' && LA5_0<='[')||(LA5_0>=']' && LA5_0<='\uFFFF')) ) {
+                            alt5=2;
+                        }
+
+
+                        switch (alt5) {
+                    	case 1 :
+                    	    // InternalBoilerplateText.g:755:54: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // InternalBoilerplateText.g:755: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 loop5;
+                        }
+                    } 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;
+            // InternalBoilerplateText.g:757:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // InternalBoilerplateText.g:757:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // InternalBoilerplateText.g:757:24: ( options {greedy=false; } : . )*
+            loop7:
+            do {
+                int alt7=2;
+                int LA7_0 = input.LA(1);
+
+                if ( (LA7_0=='*') ) {
+                    int LA7_1 = input.LA(2);
+
+                    if ( (LA7_1=='/') ) {
+                        alt7=2;
+                    }
+                    else if ( ((LA7_1>='\u0000' && LA7_1<='.')||(LA7_1>='0' && LA7_1<='\uFFFF')) ) {
+                        alt7=1;
+                    }
+
+
+                }
+                else if ( ((LA7_0>='\u0000' && LA7_0<=')')||(LA7_0>='+' && LA7_0<='\uFFFF')) ) {
+                    alt7=1;
+                }
+
+
+                switch (alt7) {
+            	case 1 :
+            	    // InternalBoilerplateText.g:757:52: .
+            	    {
+            	    matchAny(); 
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop7;
+                }
+            } 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;
+            // InternalBoilerplateText.g:759:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // InternalBoilerplateText.g:759:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // InternalBoilerplateText.g:759:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            loop8:
+            do {
+                int alt8=2;
+                int LA8_0 = input.LA(1);
+
+                if ( ((LA8_0>='\u0000' && LA8_0<='\t')||(LA8_0>='\u000B' && LA8_0<='\f')||(LA8_0>='\u000E' && LA8_0<='\uFFFF')) ) {
+                    alt8=1;
+                }
+
+
+                switch (alt8) {
+            	case 1 :
+            	    // InternalBoilerplateText.g:759: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 loop8;
+                }
+            } while (true);
+
+            // InternalBoilerplateText.g:759:40: ( ( '\\r' )? '\\n' )?
+            int alt10=2;
+            int LA10_0 = input.LA(1);
+
+            if ( (LA10_0=='\n'||LA10_0=='\r') ) {
+                alt10=1;
+            }
+            switch (alt10) {
+                case 1 :
+                    // InternalBoilerplateText.g:759:41: ( '\\r' )? '\\n'
+                    {
+                    // InternalBoilerplateText.g:759:41: ( '\\r' )?
+                    int alt9=2;
+                    int LA9_0 = input.LA(1);
+
+                    if ( (LA9_0=='\r') ) {
+                        alt9=1;
+                    }
+                    switch (alt9) {
+                        case 1 :
+                            // InternalBoilerplateText.g:759: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;
+            // InternalBoilerplateText.g:761:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // InternalBoilerplateText.g:761:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // InternalBoilerplateText.g:761:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            int cnt11=0;
+            loop11:
+            do {
+                int alt11=2;
+                int LA11_0 = input.LA(1);
+
+                if ( ((LA11_0>='\t' && LA11_0<='\n')||LA11_0=='\r'||LA11_0==' ') ) {
+                    alt11=1;
+                }
+
+
+                switch (alt11) {
+            	case 1 :
+            	    // InternalBoilerplateText.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 ( 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_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;
+            // InternalBoilerplateText.g:763:16: ( . )
+            // InternalBoilerplateText.g:763:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // InternalBoilerplateText.g:1:8: ( T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | RULE_ID | RULE_INT | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt12=17;
+        alt12 = dfa12.predict(input);
+        switch (alt12) {
+            case 1 :
+                // InternalBoilerplateText.g:1:10: T__11
+                {
+                mT__11(); 
+
+                }
+                break;
+            case 2 :
+                // InternalBoilerplateText.g:1:16: T__12
+                {
+                mT__12(); 
+
+                }
+                break;
+            case 3 :
+                // InternalBoilerplateText.g:1:22: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 4 :
+                // InternalBoilerplateText.g:1:28: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 5 :
+                // InternalBoilerplateText.g:1:34: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 6 :
+                // InternalBoilerplateText.g:1:40: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 7 :
+                // InternalBoilerplateText.g:1:46: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 8 :
+                // InternalBoilerplateText.g:1:52: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 9 :
+                // InternalBoilerplateText.g:1:58: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 10 :
+                // InternalBoilerplateText.g:1:64: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 11 :
+                // InternalBoilerplateText.g:1:70: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 12 :
+                // InternalBoilerplateText.g:1:78: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 13 :
+                // InternalBoilerplateText.g:1:87: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 14 :
+                // InternalBoilerplateText.g:1:99: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 15 :
+                // InternalBoilerplateText.g:1:115: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 16 :
+                // InternalBoilerplateText.g:1:131: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 17 :
+                // InternalBoilerplateText.g:1:139: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA12 dfa12 = new DFA12(this);
+    static final String DFA12_eotS =
+        "\2\uffff\7\23\1\20\2\uffff\3\20\3\uffff\1\41\1\uffff\6\23\1\50\1\51\6\uffff\1\52\4\23\1\57\3\uffff\1\23\1\61\2\23\1\uffff\1\64\1\uffff\1\65\1\66\3\uffff";
+    static final String DFA12_eofS =
+        "\67\uffff";
+    static final String DFA12_minS =
+        "\1\0\1\uffff\1\146\1\142\2\150\2\157\1\145\1\101\2\uffff\2\0\1\52\3\uffff\1\60\1\uffff\1\144\2\154\1\151\1\141\1\164\2\60\6\uffff\1\60\1\157\1\145\2\154\1\60\3\uffff\1\167\1\60\1\145\1\154\1\uffff\1\60\1\uffff\2\60\3\uffff";
+    static final String DFA12_maxS =
+        "\1\uffff\1\uffff\1\146\1\156\2\150\2\157\1\145\1\172\2\uffff\2\uffff\1\57\3\uffff\1\172\1\uffff\1\144\2\154\1\151\1\141\1\164\2\172\6\uffff\1\172\1\157\1\145\2\154\1\172\3\uffff\1\167\1\172\1\145\1\154\1\uffff\1\172\1\uffff\2\172\3\uffff";
+    static final String DFA12_acceptS =
+        "\1\uffff\1\1\10\uffff\1\13\1\14\3\uffff\1\20\1\21\1\1\1\uffff\1\13\10\uffff\1\14\1\15\1\16\1\17\1\20\1\2\6\uffff\1\10\1\11\1\3\4\uffff\1\6\1\uffff\1\12\2\uffff\1\7\1\4\1\5";
+    static final String DFA12_specialS =
+        "\1\0\13\uffff\1\1\1\2\51\uffff}>";
+    static final String[] DFA12_transitionS = {
+            "\11\20\2\17\2\20\1\17\22\20\1\17\1\20\1\14\4\20\1\15\4\20\1\1\2\20\1\16\12\13\7\20\32\12\3\20\1\11\1\12\1\20\1\3\1\10\6\12\1\2\4\12\1\6\4\12\1\5\1\7\2\12\1\4\3\12\uff85\20",
+            "",
+            "\1\22",
+            "\1\26\11\uffff\1\25\1\uffff\1\24",
+            "\1\27",
+            "\1\30",
+            "\1\31",
+            "\1\32",
+            "\1\33",
+            "\32\23\4\uffff\1\23\1\uffff\32\23",
+            "",
+            "",
+            "\0\35",
+            "\0\35",
+            "\1\36\4\uffff\1\37",
+            "",
+            "",
+            "",
+            "\12\23\7\uffff\32\23\4\uffff\1\23\1\uffff\32\23",
+            "",
+            "\1\42",
+            "\1\43",
+            "\1\44",
+            "\1\45",
+            "\1\46",
+            "\1\47",
+            "\12\23\7\uffff\32\23\4\uffff\1\23\1\uffff\32\23",
+            "\12\23\7\uffff\32\23\4\uffff\1\23\1\uffff\32\23",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\12\23\7\uffff\32\23\4\uffff\1\23\1\uffff\32\23",
+            "\1\53",
+            "\1\54",
+            "\1\55",
+            "\1\56",
+            "\12\23\7\uffff\32\23\4\uffff\1\23\1\uffff\32\23",
+            "",
+            "",
+            "",
+            "\1\60",
+            "\12\23\7\uffff\32\23\4\uffff\1\23\1\uffff\32\23",
+            "\1\62",
+            "\1\63",
+            "",
+            "\12\23\7\uffff\32\23\4\uffff\1\23\1\uffff\32\23",
+            "",
+            "\12\23\7\uffff\32\23\4\uffff\1\23\1\uffff\32\23",
+            "\12\23\7\uffff\32\23\4\uffff\1\23\1\uffff\32\23",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA12_eot = DFA.unpackEncodedString(DFA12_eotS);
+    static final short[] DFA12_eof = DFA.unpackEncodedString(DFA12_eofS);
+    static final char[] DFA12_min = DFA.unpackEncodedStringToUnsignedChars(DFA12_minS);
+    static final char[] DFA12_max = DFA.unpackEncodedStringToUnsignedChars(DFA12_maxS);
+    static final short[] DFA12_accept = DFA.unpackEncodedString(DFA12_acceptS);
+    static final short[] DFA12_special = DFA.unpackEncodedString(DFA12_specialS);
+    static final short[][] DFA12_transition;
+
+    static {
+        int numStates = DFA12_transitionS.length;
+        DFA12_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA12_transition[i] = DFA.unpackEncodedString(DFA12_transitionS[i]);
+        }
+    }
+
+    class DFA12 extends DFA {
+
+        public DFA12(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 12;
+            this.eot = DFA12_eot;
+            this.eof = DFA12_eof;
+            this.min = DFA12_min;
+            this.max = DFA12_max;
+            this.accept = DFA12_accept;
+            this.special = DFA12_special;
+            this.transition = DFA12_transition;
+        }
+        public String getDescription() {
+            return "1:1: Tokens : ( T__11 | T__12 | T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | RULE_ID | RULE_INT | 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 LA12_0 = input.LA(1);
+
+                        s = -1;
+                        if ( (LA12_0==',') ) {s = 1;}
+
+                        else if ( (LA12_0=='i') ) {s = 2;}
+
+                        else if ( (LA12_0=='a') ) {s = 3;}
+
+                        else if ( (LA12_0=='w') ) {s = 4;}
+
+                        else if ( (LA12_0=='s') ) {s = 5;}
+
+                        else if ( (LA12_0=='n') ) {s = 6;}
+
+                        else if ( (LA12_0=='t') ) {s = 7;}
+
+                        else if ( (LA12_0=='b') ) {s = 8;}
+
+                        else if ( (LA12_0=='^') ) {s = 9;}
+
+                        else if ( ((LA12_0>='A' && LA12_0<='Z')||LA12_0=='_'||(LA12_0>='c' && LA12_0<='h')||(LA12_0>='j' && LA12_0<='m')||(LA12_0>='o' && LA12_0<='r')||(LA12_0>='u' && LA12_0<='v')||(LA12_0>='x' && LA12_0<='z')) ) {s = 10;}
+
+                        else if ( ((LA12_0>='0' && LA12_0<='9')) ) {s = 11;}
+
+                        else if ( (LA12_0=='\"') ) {s = 12;}
+
+                        else if ( (LA12_0=='\'') ) {s = 13;}
+
+                        else if ( (LA12_0=='/') ) {s = 14;}
+
+                        else if ( ((LA12_0>='\t' && LA12_0<='\n')||LA12_0=='\r'||LA12_0==' ') ) {s = 15;}
+
+                        else if ( ((LA12_0>='\u0000' && LA12_0<='\b')||(LA12_0>='\u000B' && LA12_0<='\f')||(LA12_0>='\u000E' && LA12_0<='\u001F')||LA12_0=='!'||(LA12_0>='#' && LA12_0<='&')||(LA12_0>='(' && LA12_0<='+')||(LA12_0>='-' && LA12_0<='.')||(LA12_0>=':' && LA12_0<='@')||(LA12_0>='[' && LA12_0<=']')||LA12_0=='`'||(LA12_0>='{' && LA12_0<='\uFFFF')) ) {s = 16;}
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA12_12 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA12_12>='\u0000' && LA12_12<='\uFFFF')) ) {s = 29;}
+
+                        else s = 16;
+
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA12_13 = input.LA(1);
+
+                        s = -1;
+                        if ( ((LA12_13>='\u0000' && LA12_13<='\uFFFF')) ) {s = 29;}
+
+                        else s = 16;
+
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 12, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+}
\ No newline at end of file
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/parser/antlr/internal/InternalBoilerplateTextParser.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/parser/antlr/internal/InternalBoilerplateTextParser.java
new file mode 100644
index 0000000..71a9a40
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/parser/antlr/internal/InternalBoilerplateTextParser.java
@@ -0,0 +1,2107 @@
+package org.eclipse.papyrus.requirements.sysml14.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.requirements.sysml14.services.BoilerplateTextGrammarAccess;
+
+
+
+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) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+@SuppressWarnings("all")
+public class InternalBoilerplateTextParser extends AbstractInternalAntlrParser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "','", "'if'", "'and'", "'while'", "'shall'", "'not'", "'allow'", "'to'", "'be'", "'able'"
+    };
+    public static final int RULE_STRING=4;
+    public static final int RULE_SL_COMMENT=8;
+    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 T__11=11;
+    public static final int T__12=12;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int EOF=-1;
+    public static final int RULE_ID=5;
+    public static final int RULE_WS=9;
+    public static final int RULE_ANY_OTHER=10;
+    public static final int RULE_INT=6;
+    public static final int RULE_ML_COMMENT=7;
+    public static final int T__20=20;
+
+    // delegates
+    // delegators
+
+
+        public InternalBoilerplateTextParser(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public InternalBoilerplateTextParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+
+    public String[] getTokenNames() { return InternalBoilerplateTextParser.tokenNames; }
+    public String getGrammarFileName() { return "InternalBoilerplateText.g"; }
+
+
+
+     	private BoilerplateTextGrammarAccess grammarAccess;
+
+        public InternalBoilerplateTextParser(TokenStream input, BoilerplateTextGrammarAccess grammarAccess) {
+            this(input);
+            this.grammarAccess = grammarAccess;
+            registerRules(grammarAccess.getGrammar());
+        }
+
+        @Override
+        protected String getFirstRuleName() {
+        	return "Model";
+       	}
+
+       	@Override
+       	protected BoilerplateTextGrammarAccess getGrammarAccess() {
+       		return grammarAccess;
+       	}
+
+
+
+
+    // $ANTLR start "entryRuleModel"
+    // InternalBoilerplateText.g:78:1: entryRuleModel returns [EObject current=null] : iv_ruleModel= ruleModel EOF ;
+    public final EObject entryRuleModel() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleModel = null;
+
+
+        try {
+            // InternalBoilerplateText.g:78:46: (iv_ruleModel= ruleModel EOF )
+            // InternalBoilerplateText.g:79:2: iv_ruleModel= ruleModel EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getModelRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleModel=ruleModel();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleModel; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleModel"
+
+
+    // $ANTLR start "ruleModel"
+    // InternalBoilerplateText.g:85:1: ruleModel returns [EObject current=null] : ( (lv_model_0_0= ruleRequirement ) ) ;
+    public final EObject ruleModel() throws RecognitionException {
+        EObject current = null;
+
+        EObject lv_model_0_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalBoilerplateText.g:91:2: ( ( (lv_model_0_0= ruleRequirement ) ) )
+            // InternalBoilerplateText.g:92:2: ( (lv_model_0_0= ruleRequirement ) )
+            {
+            // InternalBoilerplateText.g:92:2: ( (lv_model_0_0= ruleRequirement ) )
+            // InternalBoilerplateText.g:93:3: (lv_model_0_0= ruleRequirement )
+            {
+            // InternalBoilerplateText.g:93:3: (lv_model_0_0= ruleRequirement )
+            // InternalBoilerplateText.g:94:4: lv_model_0_0= ruleRequirement
+            {
+            if ( state.backtracking==0 ) {
+
+              				newCompositeNode(grammarAccess.getModelAccess().getModelRequirementParserRuleCall_0());
+              			
+            }
+            pushFollow(FOLLOW_2);
+            lv_model_0_0=ruleRequirement();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              				if (current==null) {
+              					current = createModelElementForParent(grammarAccess.getModelRule());
+              				}
+              				set(
+              					current,
+              					"model",
+              					lv_model_0_0,
+              					"org.eclipse.papyrus.requirements.sysml14.BoilerplateText.Requirement");
+              				afterParserOrEnumRuleCall();
+              			
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleModel"
+
+
+    // $ANTLR start "entryRuleRequirement"
+    // InternalBoilerplateText.g:114:1: entryRuleRequirement returns [EObject current=null] : iv_ruleRequirement= ruleRequirement EOF ;
+    public final EObject entryRuleRequirement() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleRequirement = null;
+
+
+        try {
+            // InternalBoilerplateText.g:114:52: (iv_ruleRequirement= ruleRequirement EOF )
+            // InternalBoilerplateText.g:115:2: iv_ruleRequirement= ruleRequirement EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getRequirementRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleRequirement=ruleRequirement();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleRequirement; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleRequirement"
+
+
+    // $ANTLR start "ruleRequirement"
+    // InternalBoilerplateText.g:121:1: ruleRequirement returns [EObject current=null] : ( ( ( (lv_prefix_0_0= rulePrefix ) ) otherlv_1= ',' )? ( (lv_system_2_0= ruleSubject ) ) ( (lv_predicate_3_0= rulePredicate ) ) ) ;
+    public final EObject ruleRequirement() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        EObject lv_prefix_0_0 = null;
+
+        EObject lv_system_2_0 = null;
+
+        EObject lv_predicate_3_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalBoilerplateText.g:127:2: ( ( ( ( (lv_prefix_0_0= rulePrefix ) ) otherlv_1= ',' )? ( (lv_system_2_0= ruleSubject ) ) ( (lv_predicate_3_0= rulePredicate ) ) ) )
+            // InternalBoilerplateText.g:128:2: ( ( ( (lv_prefix_0_0= rulePrefix ) ) otherlv_1= ',' )? ( (lv_system_2_0= ruleSubject ) ) ( (lv_predicate_3_0= rulePredicate ) ) )
+            {
+            // InternalBoilerplateText.g:128:2: ( ( ( (lv_prefix_0_0= rulePrefix ) ) otherlv_1= ',' )? ( (lv_system_2_0= ruleSubject ) ) ( (lv_predicate_3_0= rulePredicate ) ) )
+            // InternalBoilerplateText.g:129:3: ( ( (lv_prefix_0_0= rulePrefix ) ) otherlv_1= ',' )? ( (lv_system_2_0= ruleSubject ) ) ( (lv_predicate_3_0= rulePredicate ) )
+            {
+            // InternalBoilerplateText.g:129:3: ( ( (lv_prefix_0_0= rulePrefix ) ) otherlv_1= ',' )?
+            int alt1=2;
+            int LA1_0 = input.LA(1);
+
+            if ( (LA1_0==12||LA1_0==14) ) {
+                alt1=1;
+            }
+            switch (alt1) {
+                case 1 :
+                    // InternalBoilerplateText.g:130:4: ( (lv_prefix_0_0= rulePrefix ) ) otherlv_1= ','
+                    {
+                    // InternalBoilerplateText.g:130:4: ( (lv_prefix_0_0= rulePrefix ) )
+                    // InternalBoilerplateText.g:131:5: (lv_prefix_0_0= rulePrefix )
+                    {
+                    // InternalBoilerplateText.g:131:5: (lv_prefix_0_0= rulePrefix )
+                    // InternalBoilerplateText.g:132:6: lv_prefix_0_0= rulePrefix
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getRequirementAccess().getPrefixPrefixParserRuleCall_0_0_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_3);
+                    lv_prefix_0_0=rulePrefix();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						if (current==null) {
+                      							current = createModelElementForParent(grammarAccess.getRequirementRule());
+                      						}
+                      						set(
+                      							current,
+                      							"prefix",
+                      							lv_prefix_0_0,
+                      							"org.eclipse.papyrus.requirements.sysml14.BoilerplateText.Prefix");
+                      						afterParserOrEnumRuleCall();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    otherlv_1=(Token)match(input,11,FOLLOW_4); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_1, grammarAccess.getRequirementAccess().getCommaKeyword_0_1());
+                      			
+                    }
+
+                    }
+                    break;
+
+            }
+
+            // InternalBoilerplateText.g:154:3: ( (lv_system_2_0= ruleSubject ) )
+            // InternalBoilerplateText.g:155:4: (lv_system_2_0= ruleSubject )
+            {
+            // InternalBoilerplateText.g:155:4: (lv_system_2_0= ruleSubject )
+            // InternalBoilerplateText.g:156:5: lv_system_2_0= ruleSubject
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getRequirementAccess().getSystemSubjectParserRuleCall_1_0());
+              				
+            }
+            pushFollow(FOLLOW_5);
+            lv_system_2_0=ruleSubject();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getRequirementRule());
+              					}
+              					set(
+              						current,
+              						"system",
+              						lv_system_2_0,
+              						"org.eclipse.papyrus.requirements.sysml14.BoilerplateText.Subject");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalBoilerplateText.g:173:3: ( (lv_predicate_3_0= rulePredicate ) )
+            // InternalBoilerplateText.g:174:4: (lv_predicate_3_0= rulePredicate )
+            {
+            // InternalBoilerplateText.g:174:4: (lv_predicate_3_0= rulePredicate )
+            // InternalBoilerplateText.g:175:5: lv_predicate_3_0= rulePredicate
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getRequirementAccess().getPredicatePredicateParserRuleCall_2_0());
+              				
+            }
+            pushFollow(FOLLOW_2);
+            lv_predicate_3_0=rulePredicate();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getRequirementRule());
+              					}
+              					set(
+              						current,
+              						"predicate",
+              						lv_predicate_3_0,
+              						"org.eclipse.papyrus.requirements.sysml14.BoilerplateText.Predicate");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleRequirement"
+
+
+    // $ANTLR start "entryRuleSubject"
+    // InternalBoilerplateText.g:196:1: entryRuleSubject returns [EObject current=null] : iv_ruleSubject= ruleSubject EOF ;
+    public final EObject entryRuleSubject() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleSubject = null;
+
+
+        try {
+            // InternalBoilerplateText.g:196:48: (iv_ruleSubject= ruleSubject EOF )
+            // InternalBoilerplateText.g:197:2: iv_ruleSubject= ruleSubject EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getSubjectRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleSubject=ruleSubject();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleSubject; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleSubject"
+
+
+    // $ANTLR start "ruleSubject"
+    // InternalBoilerplateText.g:203:1: ruleSubject returns [EObject current=null] : ( (lv_system_0_0= RULE_STRING ) ) ;
+    public final EObject ruleSubject() throws RecognitionException {
+        EObject current = null;
+
+        Token lv_system_0_0=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalBoilerplateText.g:209:2: ( ( (lv_system_0_0= RULE_STRING ) ) )
+            // InternalBoilerplateText.g:210:2: ( (lv_system_0_0= RULE_STRING ) )
+            {
+            // InternalBoilerplateText.g:210:2: ( (lv_system_0_0= RULE_STRING ) )
+            // InternalBoilerplateText.g:211:3: (lv_system_0_0= RULE_STRING )
+            {
+            // InternalBoilerplateText.g:211:3: (lv_system_0_0= RULE_STRING )
+            // InternalBoilerplateText.g:212:4: lv_system_0_0= RULE_STRING
+            {
+            lv_system_0_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              				newLeafNode(lv_system_0_0, grammarAccess.getSubjectAccess().getSystemSTRINGTerminalRuleCall_0());
+              			
+            }
+            if ( state.backtracking==0 ) {
+
+              				if (current==null) {
+              					current = createModelElement(grammarAccess.getSubjectRule());
+              				}
+              				setWithLastConsumed(
+              					current,
+              					"system",
+              					lv_system_0_0,
+              					"org.eclipse.xtext.common.Terminals.STRING");
+              			
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleSubject"
+
+
+    // $ANTLR start "entryRulePrefix"
+    // InternalBoilerplateText.g:231:1: entryRulePrefix returns [EObject current=null] : iv_rulePrefix= rulePrefix EOF ;
+    public final EObject entryRulePrefix() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_rulePrefix = null;
+
+
+        try {
+            // InternalBoilerplateText.g:231:47: (iv_rulePrefix= rulePrefix EOF )
+            // InternalBoilerplateText.g:232:2: iv_rulePrefix= rulePrefix EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getPrefixRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_rulePrefix=rulePrefix();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_rulePrefix; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRulePrefix"
+
+
+    // $ANTLR start "rulePrefix"
+    // InternalBoilerplateText.g:238:1: rulePrefix returns [EObject current=null] : (this_If_0= ruleIf | this_While_1= ruleWhile ) ;
+    public final EObject rulePrefix() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_If_0 = null;
+
+        EObject this_While_1 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalBoilerplateText.g:244:2: ( (this_If_0= ruleIf | this_While_1= ruleWhile ) )
+            // InternalBoilerplateText.g:245:2: (this_If_0= ruleIf | this_While_1= ruleWhile )
+            {
+            // InternalBoilerplateText.g:245:2: (this_If_0= ruleIf | this_While_1= ruleWhile )
+            int alt2=2;
+            int LA2_0 = input.LA(1);
+
+            if ( (LA2_0==12) ) {
+                alt2=1;
+            }
+            else if ( (LA2_0==14) ) {
+                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 :
+                    // InternalBoilerplateText.g:246:3: this_If_0= ruleIf
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getPrefixAccess().getIfParserRuleCall_0());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_If_0=ruleIf();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_If_0;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalBoilerplateText.g:255:3: this_While_1= ruleWhile
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getPrefixAccess().getWhileParserRuleCall_1());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_While_1=ruleWhile();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_While_1;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "rulePrefix"
+
+
+    // $ANTLR start "entryRuleIf"
+    // InternalBoilerplateText.g:267:1: entryRuleIf returns [EObject current=null] : iv_ruleIf= ruleIf EOF ;
+    public final EObject entryRuleIf() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleIf = null;
+
+
+        try {
+            // InternalBoilerplateText.g:267:43: (iv_ruleIf= ruleIf EOF )
+            // InternalBoilerplateText.g:268:2: iv_ruleIf= ruleIf EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getIfRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleIf=ruleIf();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleIf; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleIf"
+
+
+    // $ANTLR start "ruleIf"
+    // InternalBoilerplateText.g:274:1: ruleIf returns [EObject current=null] : (otherlv_0= 'if' ( (lv_event_1_0= RULE_STRING ) ) (otherlv_2= 'and' ( (lv_event_3_0= RULE_STRING ) ) )* ) ;
+    public final EObject ruleIf() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token lv_event_1_0=null;
+        Token otherlv_2=null;
+        Token lv_event_3_0=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalBoilerplateText.g:280:2: ( (otherlv_0= 'if' ( (lv_event_1_0= RULE_STRING ) ) (otherlv_2= 'and' ( (lv_event_3_0= RULE_STRING ) ) )* ) )
+            // InternalBoilerplateText.g:281:2: (otherlv_0= 'if' ( (lv_event_1_0= RULE_STRING ) ) (otherlv_2= 'and' ( (lv_event_3_0= RULE_STRING ) ) )* )
+            {
+            // InternalBoilerplateText.g:281:2: (otherlv_0= 'if' ( (lv_event_1_0= RULE_STRING ) ) (otherlv_2= 'and' ( (lv_event_3_0= RULE_STRING ) ) )* )
+            // InternalBoilerplateText.g:282:3: otherlv_0= 'if' ( (lv_event_1_0= RULE_STRING ) ) (otherlv_2= 'and' ( (lv_event_3_0= RULE_STRING ) ) )*
+            {
+            otherlv_0=(Token)match(input,12,FOLLOW_4); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_0, grammarAccess.getIfAccess().getIfKeyword_0());
+              		
+            }
+            // InternalBoilerplateText.g:286:3: ( (lv_event_1_0= RULE_STRING ) )
+            // InternalBoilerplateText.g:287:4: (lv_event_1_0= RULE_STRING )
+            {
+            // InternalBoilerplateText.g:287:4: (lv_event_1_0= RULE_STRING )
+            // InternalBoilerplateText.g:288:5: lv_event_1_0= RULE_STRING
+            {
+            lv_event_1_0=(Token)match(input,RULE_STRING,FOLLOW_6); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(lv_event_1_0, grammarAccess.getIfAccess().getEventSTRINGTerminalRuleCall_1_0());
+              				
+            }
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getIfRule());
+              					}
+              					addWithLastConsumed(
+              						current,
+              						"event",
+              						lv_event_1_0,
+              						"org.eclipse.xtext.common.Terminals.STRING");
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalBoilerplateText.g:304:3: (otherlv_2= 'and' ( (lv_event_3_0= RULE_STRING ) ) )*
+            loop3:
+            do {
+                int alt3=2;
+                int LA3_0 = input.LA(1);
+
+                if ( (LA3_0==13) ) {
+                    alt3=1;
+                }
+
+
+                switch (alt3) {
+            	case 1 :
+            	    // InternalBoilerplateText.g:305:4: otherlv_2= 'and' ( (lv_event_3_0= RULE_STRING ) )
+            	    {
+            	    otherlv_2=(Token)match(input,13,FOLLOW_4); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      				newLeafNode(otherlv_2, grammarAccess.getIfAccess().getAndKeyword_2_0());
+            	      			
+            	    }
+            	    // InternalBoilerplateText.g:309:4: ( (lv_event_3_0= RULE_STRING ) )
+            	    // InternalBoilerplateText.g:310:5: (lv_event_3_0= RULE_STRING )
+            	    {
+            	    // InternalBoilerplateText.g:310:5: (lv_event_3_0= RULE_STRING )
+            	    // InternalBoilerplateText.g:311:6: lv_event_3_0= RULE_STRING
+            	    {
+            	    lv_event_3_0=(Token)match(input,RULE_STRING,FOLLOW_6); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      						newLeafNode(lv_event_3_0, grammarAccess.getIfAccess().getEventSTRINGTerminalRuleCall_2_1_0());
+            	      					
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      						if (current==null) {
+            	      							current = createModelElement(grammarAccess.getIfRule());
+            	      						}
+            	      						addWithLastConsumed(
+            	      							current,
+            	      							"event",
+            	      							lv_event_3_0,
+            	      							"org.eclipse.xtext.common.Terminals.STRING");
+            	      					
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop3;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleIf"
+
+
+    // $ANTLR start "entryRuleWhile"
+    // InternalBoilerplateText.g:332:1: entryRuleWhile returns [EObject current=null] : iv_ruleWhile= ruleWhile EOF ;
+    public final EObject entryRuleWhile() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleWhile = null;
+
+
+        try {
+            // InternalBoilerplateText.g:332:46: (iv_ruleWhile= ruleWhile EOF )
+            // InternalBoilerplateText.g:333:2: iv_ruleWhile= ruleWhile EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getWhileRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleWhile=ruleWhile();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleWhile; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleWhile"
+
+
+    // $ANTLR start "ruleWhile"
+    // InternalBoilerplateText.g:339:1: ruleWhile returns [EObject current=null] : (otherlv_0= 'while' ( (lv_state_1_0= RULE_STRING ) ) ) ;
+    public final EObject ruleWhile() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token lv_state_1_0=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalBoilerplateText.g:345:2: ( (otherlv_0= 'while' ( (lv_state_1_0= RULE_STRING ) ) ) )
+            // InternalBoilerplateText.g:346:2: (otherlv_0= 'while' ( (lv_state_1_0= RULE_STRING ) ) )
+            {
+            // InternalBoilerplateText.g:346:2: (otherlv_0= 'while' ( (lv_state_1_0= RULE_STRING ) ) )
+            // InternalBoilerplateText.g:347:3: otherlv_0= 'while' ( (lv_state_1_0= RULE_STRING ) )
+            {
+            otherlv_0=(Token)match(input,14,FOLLOW_4); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_0, grammarAccess.getWhileAccess().getWhileKeyword_0());
+              		
+            }
+            // InternalBoilerplateText.g:351:3: ( (lv_state_1_0= RULE_STRING ) )
+            // InternalBoilerplateText.g:352:4: (lv_state_1_0= RULE_STRING )
+            {
+            // InternalBoilerplateText.g:352:4: (lv_state_1_0= RULE_STRING )
+            // InternalBoilerplateText.g:353:5: lv_state_1_0= RULE_STRING
+            {
+            lv_state_1_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(lv_state_1_0, grammarAccess.getWhileAccess().getStateSTRINGTerminalRuleCall_1_0());
+              				
+            }
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getWhileRule());
+              					}
+              					setWithLastConsumed(
+              						current,
+              						"state",
+              						lv_state_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 "ruleWhile"
+
+
+    // $ANTLR start "entryRulePredicate"
+    // InternalBoilerplateText.g:373:1: entryRulePredicate returns [EObject current=null] : iv_rulePredicate= rulePredicate EOF ;
+    public final EObject entryRulePredicate() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_rulePredicate = null;
+
+
+        try {
+            // InternalBoilerplateText.g:373:50: (iv_rulePredicate= rulePredicate EOF )
+            // InternalBoilerplateText.g:374:2: iv_rulePredicate= rulePredicate EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getPredicateRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_rulePredicate=rulePredicate();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_rulePredicate; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRulePredicate"
+
+
+    // $ANTLR start "rulePredicate"
+    // InternalBoilerplateText.g:380:1: rulePredicate returns [EObject current=null] : (this_Shall_0= ruleShall | this_ShallNot_1= ruleShallNot | this_ShallAllow_2= ruleShallAllow | this_ShallNotAllow_3= ruleShallNotAllow ) ;
+    public final EObject rulePredicate() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_Shall_0 = null;
+
+        EObject this_ShallNot_1 = null;
+
+        EObject this_ShallAllow_2 = null;
+
+        EObject this_ShallNotAllow_3 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalBoilerplateText.g:386:2: ( (this_Shall_0= ruleShall | this_ShallNot_1= ruleShallNot | this_ShallAllow_2= ruleShallAllow | this_ShallNotAllow_3= ruleShallNotAllow ) )
+            // InternalBoilerplateText.g:387:2: (this_Shall_0= ruleShall | this_ShallNot_1= ruleShallNot | this_ShallAllow_2= ruleShallAllow | this_ShallNotAllow_3= ruleShallNotAllow )
+            {
+            // InternalBoilerplateText.g:387:2: (this_Shall_0= ruleShall | this_ShallNot_1= ruleShallNot | this_ShallAllow_2= ruleShallAllow | this_ShallNotAllow_3= ruleShallNotAllow )
+            int alt4=4;
+            int LA4_0 = input.LA(1);
+
+            if ( (LA4_0==15) ) {
+                switch ( input.LA(2) ) {
+                case 16:
+                    {
+                    int LA4_2 = input.LA(3);
+
+                    if ( (LA4_2==RULE_STRING||LA4_2==19) ) {
+                        alt4=2;
+                    }
+                    else if ( (LA4_2==17) ) {
+                        alt4=4;
+                    }
+                    else {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 4, 2, input);
+
+                        throw nvae;
+                    }
+                    }
+                    break;
+                case RULE_STRING:
+                case 19:
+                    {
+                    alt4=1;
+                    }
+                    break;
+                case 17:
+                    {
+                    alt4=3;
+                    }
+                    break;
+                default:
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 4, 1, input);
+
+                    throw nvae;
+                }
+
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 4, 0, input);
+
+                throw nvae;
+            }
+            switch (alt4) {
+                case 1 :
+                    // InternalBoilerplateText.g:388:3: this_Shall_0= ruleShall
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getPredicateAccess().getShallParserRuleCall_0());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_Shall_0=ruleShall();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_Shall_0;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalBoilerplateText.g:397:3: this_ShallNot_1= ruleShallNot
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getPredicateAccess().getShallNotParserRuleCall_1());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_ShallNot_1=ruleShallNot();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_ShallNot_1;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // InternalBoilerplateText.g:406:3: this_ShallAllow_2= ruleShallAllow
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getPredicateAccess().getShallAllowParserRuleCall_2());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_ShallAllow_2=ruleShallAllow();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_ShallAllow_2;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // InternalBoilerplateText.g:415:3: this_ShallNotAllow_3= ruleShallNotAllow
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getPredicateAccess().getShallNotAllowParserRuleCall_3());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_ShallNotAllow_3=ruleShallNotAllow();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_ShallNotAllow_3;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "rulePredicate"
+
+
+    // $ANTLR start "entryRuleShallNotAllow"
+    // InternalBoilerplateText.g:427:1: entryRuleShallNotAllow returns [EObject current=null] : iv_ruleShallNotAllow= ruleShallNotAllow EOF ;
+    public final EObject entryRuleShallNotAllow() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleShallNotAllow = null;
+
+
+        try {
+            // InternalBoilerplateText.g:427:54: (iv_ruleShallNotAllow= ruleShallNotAllow EOF )
+            // InternalBoilerplateText.g:428:2: iv_ruleShallNotAllow= ruleShallNotAllow EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getShallNotAllowRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleShallNotAllow=ruleShallNotAllow();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleShallNotAllow; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleShallNotAllow"
+
+
+    // $ANTLR start "ruleShallNotAllow"
+    // InternalBoilerplateText.g:434:1: ruleShallNotAllow returns [EObject current=null] : (otherlv_0= 'shall' ( ( 'not' )=>otherlv_1= 'not' ) ( ( 'allow' )=>otherlv_2= 'allow' ) ( ( (lv_action_3_0= RULE_STRING ) ) | ( ( (lv_entity_4_0= RULE_STRING ) ) otherlv_5= 'to' ( (lv_actionPerformedByEntity_6_0= RULE_STRING ) ) ) ) ) ;
+    public final EObject ruleShallNotAllow() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token lv_action_3_0=null;
+        Token lv_entity_4_0=null;
+        Token otherlv_5=null;
+        Token lv_actionPerformedByEntity_6_0=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalBoilerplateText.g:440:2: ( (otherlv_0= 'shall' ( ( 'not' )=>otherlv_1= 'not' ) ( ( 'allow' )=>otherlv_2= 'allow' ) ( ( (lv_action_3_0= RULE_STRING ) ) | ( ( (lv_entity_4_0= RULE_STRING ) ) otherlv_5= 'to' ( (lv_actionPerformedByEntity_6_0= RULE_STRING ) ) ) ) ) )
+            // InternalBoilerplateText.g:441:2: (otherlv_0= 'shall' ( ( 'not' )=>otherlv_1= 'not' ) ( ( 'allow' )=>otherlv_2= 'allow' ) ( ( (lv_action_3_0= RULE_STRING ) ) | ( ( (lv_entity_4_0= RULE_STRING ) ) otherlv_5= 'to' ( (lv_actionPerformedByEntity_6_0= RULE_STRING ) ) ) ) )
+            {
+            // InternalBoilerplateText.g:441:2: (otherlv_0= 'shall' ( ( 'not' )=>otherlv_1= 'not' ) ( ( 'allow' )=>otherlv_2= 'allow' ) ( ( (lv_action_3_0= RULE_STRING ) ) | ( ( (lv_entity_4_0= RULE_STRING ) ) otherlv_5= 'to' ( (lv_actionPerformedByEntity_6_0= RULE_STRING ) ) ) ) )
+            // InternalBoilerplateText.g:442:3: otherlv_0= 'shall' ( ( 'not' )=>otherlv_1= 'not' ) ( ( 'allow' )=>otherlv_2= 'allow' ) ( ( (lv_action_3_0= RULE_STRING ) ) | ( ( (lv_entity_4_0= RULE_STRING ) ) otherlv_5= 'to' ( (lv_actionPerformedByEntity_6_0= RULE_STRING ) ) ) )
+            {
+            otherlv_0=(Token)match(input,15,FOLLOW_7); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_0, grammarAccess.getShallNotAllowAccess().getShallKeyword_0());
+              		
+            }
+            // InternalBoilerplateText.g:446:3: ( ( 'not' )=>otherlv_1= 'not' )
+            // InternalBoilerplateText.g:447:4: ( 'not' )=>otherlv_1= 'not'
+            {
+            otherlv_1=(Token)match(input,16,FOLLOW_8); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              				newLeafNode(otherlv_1, grammarAccess.getShallNotAllowAccess().getNotKeyword_1());
+              			
+            }
+
+            }
+
+            // InternalBoilerplateText.g:453:3: ( ( 'allow' )=>otherlv_2= 'allow' )
+            // InternalBoilerplateText.g:454:4: ( 'allow' )=>otherlv_2= 'allow'
+            {
+            otherlv_2=(Token)match(input,17,FOLLOW_4); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              				newLeafNode(otherlv_2, grammarAccess.getShallNotAllowAccess().getAllowKeyword_2());
+              			
+            }
+
+            }
+
+            // InternalBoilerplateText.g:460:3: ( ( (lv_action_3_0= RULE_STRING ) ) | ( ( (lv_entity_4_0= RULE_STRING ) ) otherlv_5= 'to' ( (lv_actionPerformedByEntity_6_0= RULE_STRING ) ) ) )
+            int alt5=2;
+            int LA5_0 = input.LA(1);
+
+            if ( (LA5_0==RULE_STRING) ) {
+                int LA5_1 = input.LA(2);
+
+                if ( (LA5_1==18) ) {
+                    alt5=2;
+                }
+                else if ( (LA5_1==EOF) ) {
+                    alt5=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 5, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 5, 0, input);
+
+                throw nvae;
+            }
+            switch (alt5) {
+                case 1 :
+                    // InternalBoilerplateText.g:461:4: ( (lv_action_3_0= RULE_STRING ) )
+                    {
+                    // InternalBoilerplateText.g:461:4: ( (lv_action_3_0= RULE_STRING ) )
+                    // InternalBoilerplateText.g:462:5: (lv_action_3_0= RULE_STRING )
+                    {
+                    // InternalBoilerplateText.g:462:5: (lv_action_3_0= RULE_STRING )
+                    // InternalBoilerplateText.g:463:6: lv_action_3_0= RULE_STRING
+                    {
+                    lv_action_3_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						newLeafNode(lv_action_3_0, grammarAccess.getShallNotAllowAccess().getActionSTRINGTerminalRuleCall_3_0_0());
+                      					
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getShallNotAllowRule());
+                      						}
+                      						setWithLastConsumed(
+                      							current,
+                      							"action",
+                      							lv_action_3_0,
+                      							"org.eclipse.xtext.common.Terminals.STRING");
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalBoilerplateText.g:480:4: ( ( (lv_entity_4_0= RULE_STRING ) ) otherlv_5= 'to' ( (lv_actionPerformedByEntity_6_0= RULE_STRING ) ) )
+                    {
+                    // InternalBoilerplateText.g:480:4: ( ( (lv_entity_4_0= RULE_STRING ) ) otherlv_5= 'to' ( (lv_actionPerformedByEntity_6_0= RULE_STRING ) ) )
+                    // InternalBoilerplateText.g:481:5: ( (lv_entity_4_0= RULE_STRING ) ) otherlv_5= 'to' ( (lv_actionPerformedByEntity_6_0= RULE_STRING ) )
+                    {
+                    // InternalBoilerplateText.g:481:5: ( (lv_entity_4_0= RULE_STRING ) )
+                    // InternalBoilerplateText.g:482:6: (lv_entity_4_0= RULE_STRING )
+                    {
+                    // InternalBoilerplateText.g:482:6: (lv_entity_4_0= RULE_STRING )
+                    // InternalBoilerplateText.g:483:7: lv_entity_4_0= RULE_STRING
+                    {
+                    lv_entity_4_0=(Token)match(input,RULE_STRING,FOLLOW_9); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							newLeafNode(lv_entity_4_0, grammarAccess.getShallNotAllowAccess().getEntitySTRINGTerminalRuleCall_3_1_0_0());
+                      						
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      							if (current==null) {
+                      								current = createModelElement(grammarAccess.getShallNotAllowRule());
+                      							}
+                      							setWithLastConsumed(
+                      								current,
+                      								"entity",
+                      								lv_entity_4_0,
+                      								"org.eclipse.xtext.common.Terminals.STRING");
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    otherlv_5=(Token)match(input,18,FOLLOW_4); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					newLeafNode(otherlv_5, grammarAccess.getShallNotAllowAccess().getToKeyword_3_1_1());
+                      				
+                    }
+                    // InternalBoilerplateText.g:503:5: ( (lv_actionPerformedByEntity_6_0= RULE_STRING ) )
+                    // InternalBoilerplateText.g:504:6: (lv_actionPerformedByEntity_6_0= RULE_STRING )
+                    {
+                    // InternalBoilerplateText.g:504:6: (lv_actionPerformedByEntity_6_0= RULE_STRING )
+                    // InternalBoilerplateText.g:505:7: lv_actionPerformedByEntity_6_0= RULE_STRING
+                    {
+                    lv_actionPerformedByEntity_6_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							newLeafNode(lv_actionPerformedByEntity_6_0, grammarAccess.getShallNotAllowAccess().getActionPerformedByEntitySTRINGTerminalRuleCall_3_1_2_0());
+                      						
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      							if (current==null) {
+                      								current = createModelElement(grammarAccess.getShallNotAllowRule());
+                      							}
+                      							setWithLastConsumed(
+                      								current,
+                      								"actionPerformedByEntity",
+                      								lv_actionPerformedByEntity_6_0,
+                      								"org.eclipse.xtext.common.Terminals.STRING");
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleShallNotAllow"
+
+
+    // $ANTLR start "entryRuleShallAllow"
+    // InternalBoilerplateText.g:527:1: entryRuleShallAllow returns [EObject current=null] : iv_ruleShallAllow= ruleShallAllow EOF ;
+    public final EObject entryRuleShallAllow() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleShallAllow = null;
+
+
+        try {
+            // InternalBoilerplateText.g:527:51: (iv_ruleShallAllow= ruleShallAllow EOF )
+            // InternalBoilerplateText.g:528:2: iv_ruleShallAllow= ruleShallAllow EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getShallAllowRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleShallAllow=ruleShallAllow();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleShallAllow; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleShallAllow"
+
+
+    // $ANTLR start "ruleShallAllow"
+    // InternalBoilerplateText.g:534:1: ruleShallAllow returns [EObject current=null] : (otherlv_0= 'shall' ( ( 'allow' )=>otherlv_1= 'allow' ) ( ( (lv_action_2_0= RULE_STRING ) ) | ( ( (lv_entity_3_0= RULE_STRING ) ) otherlv_4= 'to' ( (lv_actionPerformedByEntity_5_0= RULE_STRING ) ) ) ) ) ;
+    public final EObject ruleShallAllow() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token lv_action_2_0=null;
+        Token lv_entity_3_0=null;
+        Token otherlv_4=null;
+        Token lv_actionPerformedByEntity_5_0=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalBoilerplateText.g:540:2: ( (otherlv_0= 'shall' ( ( 'allow' )=>otherlv_1= 'allow' ) ( ( (lv_action_2_0= RULE_STRING ) ) | ( ( (lv_entity_3_0= RULE_STRING ) ) otherlv_4= 'to' ( (lv_actionPerformedByEntity_5_0= RULE_STRING ) ) ) ) ) )
+            // InternalBoilerplateText.g:541:2: (otherlv_0= 'shall' ( ( 'allow' )=>otherlv_1= 'allow' ) ( ( (lv_action_2_0= RULE_STRING ) ) | ( ( (lv_entity_3_0= RULE_STRING ) ) otherlv_4= 'to' ( (lv_actionPerformedByEntity_5_0= RULE_STRING ) ) ) ) )
+            {
+            // InternalBoilerplateText.g:541:2: (otherlv_0= 'shall' ( ( 'allow' )=>otherlv_1= 'allow' ) ( ( (lv_action_2_0= RULE_STRING ) ) | ( ( (lv_entity_3_0= RULE_STRING ) ) otherlv_4= 'to' ( (lv_actionPerformedByEntity_5_0= RULE_STRING ) ) ) ) )
+            // InternalBoilerplateText.g:542:3: otherlv_0= 'shall' ( ( 'allow' )=>otherlv_1= 'allow' ) ( ( (lv_action_2_0= RULE_STRING ) ) | ( ( (lv_entity_3_0= RULE_STRING ) ) otherlv_4= 'to' ( (lv_actionPerformedByEntity_5_0= RULE_STRING ) ) ) )
+            {
+            otherlv_0=(Token)match(input,15,FOLLOW_8); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_0, grammarAccess.getShallAllowAccess().getShallKeyword_0());
+              		
+            }
+            // InternalBoilerplateText.g:546:3: ( ( 'allow' )=>otherlv_1= 'allow' )
+            // InternalBoilerplateText.g:547:4: ( 'allow' )=>otherlv_1= 'allow'
+            {
+            otherlv_1=(Token)match(input,17,FOLLOW_4); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              				newLeafNode(otherlv_1, grammarAccess.getShallAllowAccess().getAllowKeyword_1());
+              			
+            }
+
+            }
+
+            // InternalBoilerplateText.g:553:3: ( ( (lv_action_2_0= RULE_STRING ) ) | ( ( (lv_entity_3_0= RULE_STRING ) ) otherlv_4= 'to' ( (lv_actionPerformedByEntity_5_0= RULE_STRING ) ) ) )
+            int alt6=2;
+            int LA6_0 = input.LA(1);
+
+            if ( (LA6_0==RULE_STRING) ) {
+                int LA6_1 = input.LA(2);
+
+                if ( (LA6_1==EOF) ) {
+                    alt6=1;
+                }
+                else if ( (LA6_1==18) ) {
+                    alt6=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 6, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 6, 0, input);
+
+                throw nvae;
+            }
+            switch (alt6) {
+                case 1 :
+                    // InternalBoilerplateText.g:554:4: ( (lv_action_2_0= RULE_STRING ) )
+                    {
+                    // InternalBoilerplateText.g:554:4: ( (lv_action_2_0= RULE_STRING ) )
+                    // InternalBoilerplateText.g:555:5: (lv_action_2_0= RULE_STRING )
+                    {
+                    // InternalBoilerplateText.g:555:5: (lv_action_2_0= RULE_STRING )
+                    // InternalBoilerplateText.g:556:6: lv_action_2_0= RULE_STRING
+                    {
+                    lv_action_2_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						newLeafNode(lv_action_2_0, grammarAccess.getShallAllowAccess().getActionSTRINGTerminalRuleCall_2_0_0());
+                      					
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getShallAllowRule());
+                      						}
+                      						setWithLastConsumed(
+                      							current,
+                      							"action",
+                      							lv_action_2_0,
+                      							"org.eclipse.xtext.common.Terminals.STRING");
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalBoilerplateText.g:573:4: ( ( (lv_entity_3_0= RULE_STRING ) ) otherlv_4= 'to' ( (lv_actionPerformedByEntity_5_0= RULE_STRING ) ) )
+                    {
+                    // InternalBoilerplateText.g:573:4: ( ( (lv_entity_3_0= RULE_STRING ) ) otherlv_4= 'to' ( (lv_actionPerformedByEntity_5_0= RULE_STRING ) ) )
+                    // InternalBoilerplateText.g:574:5: ( (lv_entity_3_0= RULE_STRING ) ) otherlv_4= 'to' ( (lv_actionPerformedByEntity_5_0= RULE_STRING ) )
+                    {
+                    // InternalBoilerplateText.g:574:5: ( (lv_entity_3_0= RULE_STRING ) )
+                    // InternalBoilerplateText.g:575:6: (lv_entity_3_0= RULE_STRING )
+                    {
+                    // InternalBoilerplateText.g:575:6: (lv_entity_3_0= RULE_STRING )
+                    // InternalBoilerplateText.g:576:7: lv_entity_3_0= RULE_STRING
+                    {
+                    lv_entity_3_0=(Token)match(input,RULE_STRING,FOLLOW_9); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							newLeafNode(lv_entity_3_0, grammarAccess.getShallAllowAccess().getEntitySTRINGTerminalRuleCall_2_1_0_0());
+                      						
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      							if (current==null) {
+                      								current = createModelElement(grammarAccess.getShallAllowRule());
+                      							}
+                      							setWithLastConsumed(
+                      								current,
+                      								"entity",
+                      								lv_entity_3_0,
+                      								"org.eclipse.xtext.common.Terminals.STRING");
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    otherlv_4=(Token)match(input,18,FOLLOW_4); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					newLeafNode(otherlv_4, grammarAccess.getShallAllowAccess().getToKeyword_2_1_1());
+                      				
+                    }
+                    // InternalBoilerplateText.g:596:5: ( (lv_actionPerformedByEntity_5_0= RULE_STRING ) )
+                    // InternalBoilerplateText.g:597:6: (lv_actionPerformedByEntity_5_0= RULE_STRING )
+                    {
+                    // InternalBoilerplateText.g:597:6: (lv_actionPerformedByEntity_5_0= RULE_STRING )
+                    // InternalBoilerplateText.g:598:7: lv_actionPerformedByEntity_5_0= RULE_STRING
+                    {
+                    lv_actionPerformedByEntity_5_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							newLeafNode(lv_actionPerformedByEntity_5_0, grammarAccess.getShallAllowAccess().getActionPerformedByEntitySTRINGTerminalRuleCall_2_1_2_0());
+                      						
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      							if (current==null) {
+                      								current = createModelElement(grammarAccess.getShallAllowRule());
+                      							}
+                      							setWithLastConsumed(
+                      								current,
+                      								"actionPerformedByEntity",
+                      								lv_actionPerformedByEntity_5_0,
+                      								"org.eclipse.xtext.common.Terminals.STRING");
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleShallAllow"
+
+
+    // $ANTLR start "entryRuleShallNot"
+    // InternalBoilerplateText.g:620:1: entryRuleShallNot returns [EObject current=null] : iv_ruleShallNot= ruleShallNot EOF ;
+    public final EObject entryRuleShallNot() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleShallNot = null;
+
+
+        try {
+            // InternalBoilerplateText.g:620:49: (iv_ruleShallNot= ruleShallNot EOF )
+            // InternalBoilerplateText.g:621:2: iv_ruleShallNot= ruleShallNot EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getShallNotRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleShallNot=ruleShallNot();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleShallNot; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleShallNot"
+
+
+    // $ANTLR start "ruleShallNot"
+    // InternalBoilerplateText.g:627:1: ruleShallNot returns [EObject current=null] : (otherlv_0= 'shall' ( ( 'not' )=>otherlv_1= 'not' ) (otherlv_2= 'be' ( ( 'able' )=>otherlv_3= 'able' ) ( ( 'to' )=>otherlv_4= 'to' ) )? ( (lv_action_5_0= RULE_STRING ) ) ) ;
+    public final EObject ruleShallNot() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token lv_action_5_0=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalBoilerplateText.g:633:2: ( (otherlv_0= 'shall' ( ( 'not' )=>otherlv_1= 'not' ) (otherlv_2= 'be' ( ( 'able' )=>otherlv_3= 'able' ) ( ( 'to' )=>otherlv_4= 'to' ) )? ( (lv_action_5_0= RULE_STRING ) ) ) )
+            // InternalBoilerplateText.g:634:2: (otherlv_0= 'shall' ( ( 'not' )=>otherlv_1= 'not' ) (otherlv_2= 'be' ( ( 'able' )=>otherlv_3= 'able' ) ( ( 'to' )=>otherlv_4= 'to' ) )? ( (lv_action_5_0= RULE_STRING ) ) )
+            {
+            // InternalBoilerplateText.g:634:2: (otherlv_0= 'shall' ( ( 'not' )=>otherlv_1= 'not' ) (otherlv_2= 'be' ( ( 'able' )=>otherlv_3= 'able' ) ( ( 'to' )=>otherlv_4= 'to' ) )? ( (lv_action_5_0= RULE_STRING ) ) )
+            // InternalBoilerplateText.g:635:3: otherlv_0= 'shall' ( ( 'not' )=>otherlv_1= 'not' ) (otherlv_2= 'be' ( ( 'able' )=>otherlv_3= 'able' ) ( ( 'to' )=>otherlv_4= 'to' ) )? ( (lv_action_5_0= RULE_STRING ) )
+            {
+            otherlv_0=(Token)match(input,15,FOLLOW_7); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_0, grammarAccess.getShallNotAccess().getShallKeyword_0());
+              		
+            }
+            // InternalBoilerplateText.g:639:3: ( ( 'not' )=>otherlv_1= 'not' )
+            // InternalBoilerplateText.g:640:4: ( 'not' )=>otherlv_1= 'not'
+            {
+            otherlv_1=(Token)match(input,16,FOLLOW_10); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              				newLeafNode(otherlv_1, grammarAccess.getShallNotAccess().getNotKeyword_1());
+              			
+            }
+
+            }
+
+            // InternalBoilerplateText.g:646:3: (otherlv_2= 'be' ( ( 'able' )=>otherlv_3= 'able' ) ( ( 'to' )=>otherlv_4= 'to' ) )?
+            int alt7=2;
+            int LA7_0 = input.LA(1);
+
+            if ( (LA7_0==19) ) {
+                alt7=1;
+            }
+            switch (alt7) {
+                case 1 :
+                    // InternalBoilerplateText.g:647:4: otherlv_2= 'be' ( ( 'able' )=>otherlv_3= 'able' ) ( ( 'to' )=>otherlv_4= 'to' )
+                    {
+                    otherlv_2=(Token)match(input,19,FOLLOW_11); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_2, grammarAccess.getShallNotAccess().getBeKeyword_2_0());
+                      			
+                    }
+                    // InternalBoilerplateText.g:651:4: ( ( 'able' )=>otherlv_3= 'able' )
+                    // InternalBoilerplateText.g:652:5: ( 'able' )=>otherlv_3= 'able'
+                    {
+                    otherlv_3=(Token)match(input,20,FOLLOW_9); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					newLeafNode(otherlv_3, grammarAccess.getShallNotAccess().getAbleKeyword_2_1());
+                      				
+                    }
+
+                    }
+
+                    // InternalBoilerplateText.g:658:4: ( ( 'to' )=>otherlv_4= 'to' )
+                    // InternalBoilerplateText.g:659:5: ( 'to' )=>otherlv_4= 'to'
+                    {
+                    otherlv_4=(Token)match(input,18,FOLLOW_4); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					newLeafNode(otherlv_4, grammarAccess.getShallNotAccess().getToKeyword_2_2());
+                      				
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // InternalBoilerplateText.g:666:3: ( (lv_action_5_0= RULE_STRING ) )
+            // InternalBoilerplateText.g:667:4: (lv_action_5_0= RULE_STRING )
+            {
+            // InternalBoilerplateText.g:667:4: (lv_action_5_0= RULE_STRING )
+            // InternalBoilerplateText.g:668:5: lv_action_5_0= RULE_STRING
+            {
+            lv_action_5_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(lv_action_5_0, grammarAccess.getShallNotAccess().getActionSTRINGTerminalRuleCall_3_0());
+              				
+            }
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getShallNotRule());
+              					}
+              					setWithLastConsumed(
+              						current,
+              						"action",
+              						lv_action_5_0,
+              						"org.eclipse.xtext.common.Terminals.STRING");
+              				
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleShallNot"
+
+
+    // $ANTLR start "entryRuleShall"
+    // InternalBoilerplateText.g:688:1: entryRuleShall returns [EObject current=null] : iv_ruleShall= ruleShall EOF ;
+    public final EObject entryRuleShall() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleShall = null;
+
+
+        try {
+            // InternalBoilerplateText.g:688:46: (iv_ruleShall= ruleShall EOF )
+            // InternalBoilerplateText.g:689:2: iv_ruleShall= ruleShall EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getShallRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleShall=ruleShall();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleShall; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleShall"
+
+
+    // $ANTLR start "ruleShall"
+    // InternalBoilerplateText.g:695:1: ruleShall returns [EObject current=null] : (otherlv_0= 'shall' ( ( 'be' )=> (otherlv_1= 'be' ( ( 'able' )=>otherlv_2= 'able' ) ( ( 'to' )=>otherlv_3= 'to' ) ) )? ( (lv_action_4_0= RULE_STRING ) ) ) ;
+    public final EObject ruleShall() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_3=null;
+        Token lv_action_4_0=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalBoilerplateText.g:701:2: ( (otherlv_0= 'shall' ( ( 'be' )=> (otherlv_1= 'be' ( ( 'able' )=>otherlv_2= 'able' ) ( ( 'to' )=>otherlv_3= 'to' ) ) )? ( (lv_action_4_0= RULE_STRING ) ) ) )
+            // InternalBoilerplateText.g:702:2: (otherlv_0= 'shall' ( ( 'be' )=> (otherlv_1= 'be' ( ( 'able' )=>otherlv_2= 'able' ) ( ( 'to' )=>otherlv_3= 'to' ) ) )? ( (lv_action_4_0= RULE_STRING ) ) )
+            {
+            // InternalBoilerplateText.g:702:2: (otherlv_0= 'shall' ( ( 'be' )=> (otherlv_1= 'be' ( ( 'able' )=>otherlv_2= 'able' ) ( ( 'to' )=>otherlv_3= 'to' ) ) )? ( (lv_action_4_0= RULE_STRING ) ) )
+            // InternalBoilerplateText.g:703:3: otherlv_0= 'shall' ( ( 'be' )=> (otherlv_1= 'be' ( ( 'able' )=>otherlv_2= 'able' ) ( ( 'to' )=>otherlv_3= 'to' ) ) )? ( (lv_action_4_0= RULE_STRING ) )
+            {
+            otherlv_0=(Token)match(input,15,FOLLOW_10); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_0, grammarAccess.getShallAccess().getShallKeyword_0());
+              		
+            }
+            // InternalBoilerplateText.g:707:3: ( ( 'be' )=> (otherlv_1= 'be' ( ( 'able' )=>otherlv_2= 'able' ) ( ( 'to' )=>otherlv_3= 'to' ) ) )?
+            int alt8=2;
+            int LA8_0 = input.LA(1);
+
+            if ( (LA8_0==19) && (synpred7_InternalBoilerplateText())) {
+                alt8=1;
+            }
+            switch (alt8) {
+                case 1 :
+                    // InternalBoilerplateText.g:708:4: ( 'be' )=> (otherlv_1= 'be' ( ( 'able' )=>otherlv_2= 'able' ) ( ( 'to' )=>otherlv_3= 'to' ) )
+                    {
+                    // InternalBoilerplateText.g:709:4: (otherlv_1= 'be' ( ( 'able' )=>otherlv_2= 'able' ) ( ( 'to' )=>otherlv_3= 'to' ) )
+                    // InternalBoilerplateText.g:710:5: otherlv_1= 'be' ( ( 'able' )=>otherlv_2= 'able' ) ( ( 'to' )=>otherlv_3= 'to' )
+                    {
+                    otherlv_1=(Token)match(input,19,FOLLOW_11); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					newLeafNode(otherlv_1, grammarAccess.getShallAccess().getBeKeyword_1_0_0());
+                      				
+                    }
+                    // InternalBoilerplateText.g:714:5: ( ( 'able' )=>otherlv_2= 'able' )
+                    // InternalBoilerplateText.g:715:6: ( 'able' )=>otherlv_2= 'able'
+                    {
+                    otherlv_2=(Token)match(input,20,FOLLOW_9); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						newLeafNode(otherlv_2, grammarAccess.getShallAccess().getAbleKeyword_1_0_1());
+                      					
+                    }
+
+                    }
+
+                    // InternalBoilerplateText.g:721:5: ( ( 'to' )=>otherlv_3= 'to' )
+                    // InternalBoilerplateText.g:722:6: ( 'to' )=>otherlv_3= 'to'
+                    {
+                    otherlv_3=(Token)match(input,18,FOLLOW_4); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						newLeafNode(otherlv_3, grammarAccess.getShallAccess().getToKeyword_1_0_2());
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // InternalBoilerplateText.g:730:3: ( (lv_action_4_0= RULE_STRING ) )
+            // InternalBoilerplateText.g:731:4: (lv_action_4_0= RULE_STRING )
+            {
+            // InternalBoilerplateText.g:731:4: (lv_action_4_0= RULE_STRING )
+            // InternalBoilerplateText.g:732:5: lv_action_4_0= RULE_STRING
+            {
+            lv_action_4_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(lv_action_4_0, grammarAccess.getShallAccess().getActionSTRINGTerminalRuleCall_2_0());
+              				
+            }
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getShallRule());
+              					}
+              					setWithLastConsumed(
+              						current,
+              						"action",
+              						lv_action_4_0,
+              						"org.eclipse.xtext.common.Terminals.STRING");
+              				
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleShall"
+
+    // $ANTLR start synpred7_InternalBoilerplateText
+    public final void synpred7_InternalBoilerplateText_fragment() throws RecognitionException {   
+        // InternalBoilerplateText.g:708:4: ( 'be' )
+        // InternalBoilerplateText.g:708:5: 'be'
+        {
+        match(input,19,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred7_InternalBoilerplateText
+
+    // Delegated rules
+
+    public final boolean synpred7_InternalBoilerplateText() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred7_InternalBoilerplateText_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;
+    }
+
+
+ 
+
+    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[]{0x0000000000000800L});
+    public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000000000008000L});
+    public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000002002L});
+    public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000000010000L});
+    public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0000000000020000L});
+    public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000040000L});
+    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000080010L});
+    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000100000L});
+
+}
\ No newline at end of file
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/scoping/AbstractBoilerplateTextScopeProvider.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/scoping/AbstractBoilerplateTextScopeProvider.java
new file mode 100644
index 0000000..707cbd6
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/scoping/AbstractBoilerplateTextScopeProvider.java
@@ -0,0 +1,23 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.scoping;
+
+import org.eclipse.xtext.scoping.impl.DelegatingScopeProvider;
+
+public abstract class AbstractBoilerplateTextScopeProvider extends DelegatingScopeProvider {
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/serializer/BoilerplateTextSemanticSequencer.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/serializer/BoilerplateTextSemanticSequencer.java
new file mode 100644
index 0000000..9ee7d04
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/serializer/BoilerplateTextSemanticSequencer.java
@@ -0,0 +1,233 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.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.requirements.sysml14.boilerplateText.BoilerplateTextPackage;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.If;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.Model;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.Requirement;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.Shall;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallAllow;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallNot;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallNotAllow;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.Subject;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.While;
+import org.eclipse.papyrus.requirements.sysml14.services.BoilerplateTextGrammarAccess;
+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 BoilerplateTextSemanticSequencer extends AbstractDelegatingSemanticSequencer {
+
+	@Inject
+	private BoilerplateTextGrammarAccess 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 == BoilerplateTextPackage.eINSTANCE)
+			switch (semanticObject.eClass().getClassifierID()) {
+			case BoilerplateTextPackage.IF:
+				sequence_If(context, (If) semanticObject); 
+				return; 
+			case BoilerplateTextPackage.MODEL:
+				sequence_Model(context, (Model) semanticObject); 
+				return; 
+			case BoilerplateTextPackage.REQUIREMENT:
+				sequence_Requirement(context, (Requirement) semanticObject); 
+				return; 
+			case BoilerplateTextPackage.SHALL:
+				sequence_Shall(context, (Shall) semanticObject); 
+				return; 
+			case BoilerplateTextPackage.SHALL_ALLOW:
+				sequence_ShallAllow(context, (ShallAllow) semanticObject); 
+				return; 
+			case BoilerplateTextPackage.SHALL_NOT:
+				sequence_ShallNot(context, (ShallNot) semanticObject); 
+				return; 
+			case BoilerplateTextPackage.SHALL_NOT_ALLOW:
+				sequence_ShallNotAllow(context, (ShallNotAllow) semanticObject); 
+				return; 
+			case BoilerplateTextPackage.SUBJECT:
+				sequence_Subject(context, (Subject) semanticObject); 
+				return; 
+			case BoilerplateTextPackage.WHILE:
+				sequence_While(context, (While) semanticObject); 
+				return; 
+			}
+		if (errorAcceptor != null)
+			errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
+	}
+	
+	/**
+	 * Contexts:
+	 *     Prefix returns If
+	 *     If returns If
+	 *
+	 * Constraint:
+	 *     (event+=STRING event+=STRING*)
+	 */
+	protected void sequence_If(ISerializationContext context, If semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     Model returns Model
+	 *
+	 * Constraint:
+	 *     model=Requirement
+	 */
+	protected void sequence_Model(ISerializationContext context, Model semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, BoilerplateTextPackage.Literals.MODEL__MODEL) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, BoilerplateTextPackage.Literals.MODEL__MODEL));
+		}
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+		feeder.accept(grammarAccess.getModelAccess().getModelRequirementParserRuleCall_0(), semanticObject.getModel());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     Requirement returns Requirement
+	 *
+	 * Constraint:
+	 *     (prefix=Prefix? system=Subject predicate=Predicate)
+	 */
+	protected void sequence_Requirement(ISerializationContext context, Requirement semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     Predicate returns ShallAllow
+	 *     ShallAllow returns ShallAllow
+	 *
+	 * Constraint:
+	 *     (action=STRING | (entity=STRING actionPerformedByEntity=STRING))
+	 */
+	protected void sequence_ShallAllow(ISerializationContext context, ShallAllow semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     Predicate returns ShallNotAllow
+	 *     ShallNotAllow returns ShallNotAllow
+	 *
+	 * Constraint:
+	 *     (action=STRING | (entity=STRING actionPerformedByEntity=STRING))
+	 */
+	protected void sequence_ShallNotAllow(ISerializationContext context, ShallNotAllow semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     Predicate returns ShallNot
+	 *     ShallNot returns ShallNot
+	 *
+	 * Constraint:
+	 *     action=STRING
+	 */
+	protected void sequence_ShallNot(ISerializationContext context, ShallNot semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, BoilerplateTextPackage.Literals.PREDICATE__ACTION) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, BoilerplateTextPackage.Literals.PREDICATE__ACTION));
+		}
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+		feeder.accept(grammarAccess.getShallNotAccess().getActionSTRINGTerminalRuleCall_3_0(), semanticObject.getAction());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     Predicate returns Shall
+	 *     Shall returns Shall
+	 *
+	 * Constraint:
+	 *     action=STRING
+	 */
+	protected void sequence_Shall(ISerializationContext context, Shall semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, BoilerplateTextPackage.Literals.PREDICATE__ACTION) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, BoilerplateTextPackage.Literals.PREDICATE__ACTION));
+		}
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+		feeder.accept(grammarAccess.getShallAccess().getActionSTRINGTerminalRuleCall_2_0(), semanticObject.getAction());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     Subject returns Subject
+	 *
+	 * Constraint:
+	 *     system=STRING
+	 */
+	protected void sequence_Subject(ISerializationContext context, Subject semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, BoilerplateTextPackage.Literals.SUBJECT__SYSTEM) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, BoilerplateTextPackage.Literals.SUBJECT__SYSTEM));
+		}
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+		feeder.accept(grammarAccess.getSubjectAccess().getSystemSTRINGTerminalRuleCall_0(), semanticObject.getSystem());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     Prefix returns While
+	 *     While returns While
+	 *
+	 * Constraint:
+	 *     state=STRING
+	 */
+	protected void sequence_While(ISerializationContext context, While semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, BoilerplateTextPackage.Literals.WHILE__STATE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, BoilerplateTextPackage.Literals.WHILE__STATE));
+		}
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+		feeder.accept(grammarAccess.getWhileAccess().getStateSTRINGTerminalRuleCall_1_0(), semanticObject.getState());
+		feeder.finish();
+	}
+	
+	
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/serializer/BoilerplateTextSyntacticSequencer.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/serializer/BoilerplateTextSyntacticSequencer.java
new file mode 100644
index 0000000..312ed60
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/serializer/BoilerplateTextSyntacticSequencer.java
@@ -0,0 +1,90 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.serializer;
+
+import com.google.inject.Inject;
+import java.util.List;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.requirements.sysml14.services.BoilerplateTextGrammarAccess;
+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.GrammarAlias.GroupAlias;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.TokenAlias;
+import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynNavigable;
+import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynTransition;
+import org.eclipse.xtext.serializer.sequencer.AbstractSyntacticSequencer;
+
+@SuppressWarnings("all")
+public class BoilerplateTextSyntacticSequencer extends AbstractSyntacticSequencer {
+
+	protected BoilerplateTextGrammarAccess grammarAccess;
+	protected AbstractElementAlias match_ShallNot___BeKeyword_2_0_AbleKeyword_2_1_ToKeyword_2_2__q;
+	protected AbstractElementAlias match_Shall___BeKeyword_1_0_0_AbleKeyword_1_0_1_ToKeyword_1_0_2__q;
+	
+	@Inject
+	protected void init(IGrammarAccess access) {
+		grammarAccess = (BoilerplateTextGrammarAccess) access;
+		match_ShallNot___BeKeyword_2_0_AbleKeyword_2_1_ToKeyword_2_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getShallNotAccess().getBeKeyword_2_0()), new TokenAlias(false, false, grammarAccess.getShallNotAccess().getAbleKeyword_2_1()), new TokenAlias(false, false, grammarAccess.getShallNotAccess().getToKeyword_2_2()));
+		match_Shall___BeKeyword_1_0_0_AbleKeyword_1_0_1_ToKeyword_1_0_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getShallAccess().getBeKeyword_1_0_0()), new TokenAlias(false, false, grammarAccess.getShallAccess().getAbleKeyword_1_0_1()), new TokenAlias(false, false, grammarAccess.getShallAccess().getToKeyword_1_0_2()));
+	}
+	
+	@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);
+			if (match_ShallNot___BeKeyword_2_0_AbleKeyword_2_1_ToKeyword_2_2__q.equals(syntax))
+				emit_ShallNot___BeKeyword_2_0_AbleKeyword_2_1_ToKeyword_2_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if (match_Shall___BeKeyword_1_0_0_AbleKeyword_1_0_1_ToKeyword_1_0_2__q.equals(syntax))
+				emit_Shall___BeKeyword_1_0_0_AbleKeyword_1_0_1_ToKeyword_1_0_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else acceptNodes(getLastNavigableState(), syntaxNodes);
+		}
+	}
+
+	/**
+	 * Ambiguous syntax:
+	 *     ('be' 'able' 'to')?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     (rule start) 'shall' 'not' (ambiguity) action=STRING
+	 */
+	protected void emit_ShallNot___BeKeyword_2_0_AbleKeyword_2_1_ToKeyword_2_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Ambiguous syntax:
+	 *     ('be' 'able' 'to')?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     (rule start) 'shall' (ambiguity) action=STRING
+	 */
+	protected void emit_Shall___BeKeyword_1_0_0_AbleKeyword_1_0_1_ToKeyword_1_0_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/services/BoilerplateTextGrammarAccess.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/services/BoilerplateTextGrammarAccess.java
new file mode 100644
index 0000000..ba1e24f
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/services/BoilerplateTextGrammarAccess.java
@@ -0,0 +1,638 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.services;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import java.util.List;
+import org.eclipse.xtext.Alternatives;
+import org.eclipse.xtext.Assignment;
+import org.eclipse.xtext.Grammar;
+import org.eclipse.xtext.GrammarUtil;
+import org.eclipse.xtext.Group;
+import org.eclipse.xtext.Keyword;
+import org.eclipse.xtext.ParserRule;
+import org.eclipse.xtext.RuleCall;
+import org.eclipse.xtext.TerminalRule;
+import org.eclipse.xtext.common.services.TerminalsGrammarAccess;
+import org.eclipse.xtext.service.AbstractElementFinder.AbstractGrammarElementFinder;
+import org.eclipse.xtext.service.GrammarProvider;
+
+@Singleton
+public class BoilerplateTextGrammarAccess extends AbstractGrammarElementFinder {
+	
+	public class ModelElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.papyrus.requirements.sysml14.BoilerplateText.Model");
+		private final Assignment cModelAssignment = (Assignment)rule.eContents().get(1);
+		private final RuleCall cModelRequirementParserRuleCall_0 = (RuleCall)cModelAssignment.eContents().get(0);
+		
+		//Model:
+		//	model=Requirement;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//model=Requirement
+		public Assignment getModelAssignment() { return cModelAssignment; }
+		
+		//Requirement
+		public RuleCall getModelRequirementParserRuleCall_0() { return cModelRequirementParserRuleCall_0; }
+	}
+	public class RequirementElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.papyrus.requirements.sysml14.BoilerplateText.Requirement");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Group cGroup_0 = (Group)cGroup.eContents().get(0);
+		private final Assignment cPrefixAssignment_0_0 = (Assignment)cGroup_0.eContents().get(0);
+		private final RuleCall cPrefixPrefixParserRuleCall_0_0_0 = (RuleCall)cPrefixAssignment_0_0.eContents().get(0);
+		private final Keyword cCommaKeyword_0_1 = (Keyword)cGroup_0.eContents().get(1);
+		private final Assignment cSystemAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cSystemSubjectParserRuleCall_1_0 = (RuleCall)cSystemAssignment_1.eContents().get(0);
+		private final Assignment cPredicateAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cPredicatePredicateParserRuleCall_2_0 = (RuleCall)cPredicateAssignment_2.eContents().get(0);
+		
+		//Requirement:
+		//	(prefix=Prefix ",")?
+		//	system=Subject
+		//	predicate=Predicate;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//(prefix=Prefix ",")? system=Subject predicate=Predicate
+		public Group getGroup() { return cGroup; }
+		
+		//(prefix=Prefix ",")?
+		public Group getGroup_0() { return cGroup_0; }
+		
+		//prefix=Prefix
+		public Assignment getPrefixAssignment_0_0() { return cPrefixAssignment_0_0; }
+		
+		//Prefix
+		public RuleCall getPrefixPrefixParserRuleCall_0_0_0() { return cPrefixPrefixParserRuleCall_0_0_0; }
+		
+		//","
+		public Keyword getCommaKeyword_0_1() { return cCommaKeyword_0_1; }
+		
+		//system=Subject
+		public Assignment getSystemAssignment_1() { return cSystemAssignment_1; }
+		
+		//Subject
+		public RuleCall getSystemSubjectParserRuleCall_1_0() { return cSystemSubjectParserRuleCall_1_0; }
+		
+		//predicate=Predicate
+		public Assignment getPredicateAssignment_2() { return cPredicateAssignment_2; }
+		
+		//Predicate
+		public RuleCall getPredicatePredicateParserRuleCall_2_0() { return cPredicatePredicateParserRuleCall_2_0; }
+	}
+	public class SubjectElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.papyrus.requirements.sysml14.BoilerplateText.Subject");
+		private final Assignment cSystemAssignment = (Assignment)rule.eContents().get(1);
+		private final RuleCall cSystemSTRINGTerminalRuleCall_0 = (RuleCall)cSystemAssignment.eContents().get(0);
+		
+		//Subject:
+		//	system=STRING;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//system=STRING
+		public Assignment getSystemAssignment() { return cSystemAssignment; }
+		
+		//STRING
+		public RuleCall getSystemSTRINGTerminalRuleCall_0() { return cSystemSTRINGTerminalRuleCall_0; }
+	}
+	public class PrefixElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.papyrus.requirements.sysml14.BoilerplateText.Prefix");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cIfParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cWhileParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		
+		//Prefix:
+		//	If | While;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//If | While
+		public Alternatives getAlternatives() { return cAlternatives; }
+		
+		//If
+		public RuleCall getIfParserRuleCall_0() { return cIfParserRuleCall_0; }
+		
+		//While
+		public RuleCall getWhileParserRuleCall_1() { return cWhileParserRuleCall_1; }
+	}
+	public class IfElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.papyrus.requirements.sysml14.BoilerplateText.If");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cIfKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cEventAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cEventSTRINGTerminalRuleCall_1_0 = (RuleCall)cEventAssignment_1.eContents().get(0);
+		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+		private final Keyword cAndKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
+		private final Assignment cEventAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+		private final RuleCall cEventSTRINGTerminalRuleCall_2_1_0 = (RuleCall)cEventAssignment_2_1.eContents().get(0);
+		
+		//If:
+		//	"if" event+=STRING ("and" event+=STRING)*;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//"if" event+=STRING ("and" event+=STRING)*
+		public Group getGroup() { return cGroup; }
+		
+		//"if"
+		public Keyword getIfKeyword_0() { return cIfKeyword_0; }
+		
+		//event+=STRING
+		public Assignment getEventAssignment_1() { return cEventAssignment_1; }
+		
+		//STRING
+		public RuleCall getEventSTRINGTerminalRuleCall_1_0() { return cEventSTRINGTerminalRuleCall_1_0; }
+		
+		//("and" event+=STRING)*
+		public Group getGroup_2() { return cGroup_2; }
+		
+		//"and"
+		public Keyword getAndKeyword_2_0() { return cAndKeyword_2_0; }
+		
+		//event+=STRING
+		public Assignment getEventAssignment_2_1() { return cEventAssignment_2_1; }
+		
+		//STRING
+		public RuleCall getEventSTRINGTerminalRuleCall_2_1_0() { return cEventSTRINGTerminalRuleCall_2_1_0; }
+	}
+	public class WhileElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.papyrus.requirements.sysml14.BoilerplateText.While");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cWhileKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cStateAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cStateSTRINGTerminalRuleCall_1_0 = (RuleCall)cStateAssignment_1.eContents().get(0);
+		
+		//While:
+		//	"while" state=STRING;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//"while" state=STRING
+		public Group getGroup() { return cGroup; }
+		
+		//"while"
+		public Keyword getWhileKeyword_0() { return cWhileKeyword_0; }
+		
+		//state=STRING
+		public Assignment getStateAssignment_1() { return cStateAssignment_1; }
+		
+		//STRING
+		public RuleCall getStateSTRINGTerminalRuleCall_1_0() { return cStateSTRINGTerminalRuleCall_1_0; }
+	}
+	public class PredicateElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.papyrus.requirements.sysml14.BoilerplateText.Predicate");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cShallParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cShallNotParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cShallAllowParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		private final RuleCall cShallNotAllowParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		
+		//Predicate:
+		//	Shall | ShallNot | ShallAllow | ShallNotAllow;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//Shall | ShallNot | ShallAllow | ShallNotAllow
+		public Alternatives getAlternatives() { return cAlternatives; }
+		
+		//Shall
+		public RuleCall getShallParserRuleCall_0() { return cShallParserRuleCall_0; }
+		
+		//ShallNot
+		public RuleCall getShallNotParserRuleCall_1() { return cShallNotParserRuleCall_1; }
+		
+		//ShallAllow
+		public RuleCall getShallAllowParserRuleCall_2() { return cShallAllowParserRuleCall_2; }
+		
+		//ShallNotAllow
+		public RuleCall getShallNotAllowParserRuleCall_3() { return cShallNotAllowParserRuleCall_3; }
+	}
+	public class ShallNotAllowElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.papyrus.requirements.sysml14.BoilerplateText.ShallNotAllow");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cShallKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cNotKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cAllowKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Alternatives cAlternatives_3 = (Alternatives)cGroup.eContents().get(3);
+		private final Assignment cActionAssignment_3_0 = (Assignment)cAlternatives_3.eContents().get(0);
+		private final RuleCall cActionSTRINGTerminalRuleCall_3_0_0 = (RuleCall)cActionAssignment_3_0.eContents().get(0);
+		private final Group cGroup_3_1 = (Group)cAlternatives_3.eContents().get(1);
+		private final Assignment cEntityAssignment_3_1_0 = (Assignment)cGroup_3_1.eContents().get(0);
+		private final RuleCall cEntitySTRINGTerminalRuleCall_3_1_0_0 = (RuleCall)cEntityAssignment_3_1_0.eContents().get(0);
+		private final Keyword cToKeyword_3_1_1 = (Keyword)cGroup_3_1.eContents().get(1);
+		private final Assignment cActionPerformedByEntityAssignment_3_1_2 = (Assignment)cGroup_3_1.eContents().get(2);
+		private final RuleCall cActionPerformedByEntitySTRINGTerminalRuleCall_3_1_2_0 = (RuleCall)cActionPerformedByEntityAssignment_3_1_2.eContents().get(0);
+		
+		//ShallNotAllow:
+		//	"shall" -> "not" -> "allow" (action=STRING | entity=STRING "to" actionPerformedByEntity=STRING);
+		@Override public ParserRule getRule() { return rule; }
+		
+		//"shall" -> "not" -> "allow" (action=STRING | entity=STRING "to" actionPerformedByEntity=STRING)
+		public Group getGroup() { return cGroup; }
+		
+		//"shall"
+		public Keyword getShallKeyword_0() { return cShallKeyword_0; }
+		
+		//-> "not"
+		public Keyword getNotKeyword_1() { return cNotKeyword_1; }
+		
+		//-> "allow"
+		public Keyword getAllowKeyword_2() { return cAllowKeyword_2; }
+		
+		//action=STRING | entity=STRING "to" actionPerformedByEntity=STRING
+		public Alternatives getAlternatives_3() { return cAlternatives_3; }
+		
+		//action=STRING
+		public Assignment getActionAssignment_3_0() { return cActionAssignment_3_0; }
+		
+		//STRING
+		public RuleCall getActionSTRINGTerminalRuleCall_3_0_0() { return cActionSTRINGTerminalRuleCall_3_0_0; }
+		
+		//entity=STRING "to" actionPerformedByEntity=STRING
+		public Group getGroup_3_1() { return cGroup_3_1; }
+		
+		//entity=STRING
+		public Assignment getEntityAssignment_3_1_0() { return cEntityAssignment_3_1_0; }
+		
+		//STRING
+		public RuleCall getEntitySTRINGTerminalRuleCall_3_1_0_0() { return cEntitySTRINGTerminalRuleCall_3_1_0_0; }
+		
+		//"to"
+		public Keyword getToKeyword_3_1_1() { return cToKeyword_3_1_1; }
+		
+		//actionPerformedByEntity=STRING
+		public Assignment getActionPerformedByEntityAssignment_3_1_2() { return cActionPerformedByEntityAssignment_3_1_2; }
+		
+		//STRING
+		public RuleCall getActionPerformedByEntitySTRINGTerminalRuleCall_3_1_2_0() { return cActionPerformedByEntitySTRINGTerminalRuleCall_3_1_2_0; }
+	}
+	public class ShallAllowElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.papyrus.requirements.sysml14.BoilerplateText.ShallAllow");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cShallKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cAllowKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
+		private final Assignment cActionAssignment_2_0 = (Assignment)cAlternatives_2.eContents().get(0);
+		private final RuleCall cActionSTRINGTerminalRuleCall_2_0_0 = (RuleCall)cActionAssignment_2_0.eContents().get(0);
+		private final Group cGroup_2_1 = (Group)cAlternatives_2.eContents().get(1);
+		private final Assignment cEntityAssignment_2_1_0 = (Assignment)cGroup_2_1.eContents().get(0);
+		private final RuleCall cEntitySTRINGTerminalRuleCall_2_1_0_0 = (RuleCall)cEntityAssignment_2_1_0.eContents().get(0);
+		private final Keyword cToKeyword_2_1_1 = (Keyword)cGroup_2_1.eContents().get(1);
+		private final Assignment cActionPerformedByEntityAssignment_2_1_2 = (Assignment)cGroup_2_1.eContents().get(2);
+		private final RuleCall cActionPerformedByEntitySTRINGTerminalRuleCall_2_1_2_0 = (RuleCall)cActionPerformedByEntityAssignment_2_1_2.eContents().get(0);
+		
+		//ShallAllow:
+		//	"shall" -> "allow" (action=STRING | entity=STRING "to" actionPerformedByEntity=STRING);
+		@Override public ParserRule getRule() { return rule; }
+		
+		//"shall" -> "allow" (action=STRING | entity=STRING "to" actionPerformedByEntity=STRING)
+		public Group getGroup() { return cGroup; }
+		
+		//"shall"
+		public Keyword getShallKeyword_0() { return cShallKeyword_0; }
+		
+		//-> "allow"
+		public Keyword getAllowKeyword_1() { return cAllowKeyword_1; }
+		
+		//action=STRING | entity=STRING "to" actionPerformedByEntity=STRING
+		public Alternatives getAlternatives_2() { return cAlternatives_2; }
+		
+		//action=STRING
+		public Assignment getActionAssignment_2_0() { return cActionAssignment_2_0; }
+		
+		//STRING
+		public RuleCall getActionSTRINGTerminalRuleCall_2_0_0() { return cActionSTRINGTerminalRuleCall_2_0_0; }
+		
+		//entity=STRING "to" actionPerformedByEntity=STRING
+		public Group getGroup_2_1() { return cGroup_2_1; }
+		
+		//entity=STRING
+		public Assignment getEntityAssignment_2_1_0() { return cEntityAssignment_2_1_0; }
+		
+		//STRING
+		public RuleCall getEntitySTRINGTerminalRuleCall_2_1_0_0() { return cEntitySTRINGTerminalRuleCall_2_1_0_0; }
+		
+		//"to"
+		public Keyword getToKeyword_2_1_1() { return cToKeyword_2_1_1; }
+		
+		//actionPerformedByEntity=STRING
+		public Assignment getActionPerformedByEntityAssignment_2_1_2() { return cActionPerformedByEntityAssignment_2_1_2; }
+		
+		//STRING
+		public RuleCall getActionPerformedByEntitySTRINGTerminalRuleCall_2_1_2_0() { return cActionPerformedByEntitySTRINGTerminalRuleCall_2_1_2_0; }
+	}
+	public class ShallNotElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.papyrus.requirements.sysml14.BoilerplateText.ShallNot");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cShallKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cNotKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+		private final Keyword cBeKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
+		private final Keyword cAbleKeyword_2_1 = (Keyword)cGroup_2.eContents().get(1);
+		private final Keyword cToKeyword_2_2 = (Keyword)cGroup_2.eContents().get(2);
+		private final Assignment cActionAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cActionSTRINGTerminalRuleCall_3_0 = (RuleCall)cActionAssignment_3.eContents().get(0);
+		
+		//ShallNot:
+		//	"shall" -> "not" ("be" -> "able" -> "to")? action=STRING;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//"shall" -> "not" ("be" -> "able" -> "to")? action=STRING
+		public Group getGroup() { return cGroup; }
+		
+		//"shall"
+		public Keyword getShallKeyword_0() { return cShallKeyword_0; }
+		
+		//-> "not"
+		public Keyword getNotKeyword_1() { return cNotKeyword_1; }
+		
+		//("be" -> "able" -> "to")?
+		public Group getGroup_2() { return cGroup_2; }
+		
+		//"be"
+		public Keyword getBeKeyword_2_0() { return cBeKeyword_2_0; }
+		
+		//-> "able"
+		public Keyword getAbleKeyword_2_1() { return cAbleKeyword_2_1; }
+		
+		//-> "to"
+		public Keyword getToKeyword_2_2() { return cToKeyword_2_2; }
+		
+		//action=STRING
+		public Assignment getActionAssignment_3() { return cActionAssignment_3; }
+		
+		//STRING
+		public RuleCall getActionSTRINGTerminalRuleCall_3_0() { return cActionSTRINGTerminalRuleCall_3_0; }
+	}
+	public class ShallElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.papyrus.requirements.sysml14.BoilerplateText.Shall");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cShallKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+		private final Group cGroup_1_0 = (Group)cGroup_1.eContents().get(0);
+		private final Keyword cBeKeyword_1_0_0 = (Keyword)cGroup_1_0.eContents().get(0);
+		private final Keyword cAbleKeyword_1_0_1 = (Keyword)cGroup_1_0.eContents().get(1);
+		private final Keyword cToKeyword_1_0_2 = (Keyword)cGroup_1_0.eContents().get(2);
+		private final Assignment cActionAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cActionSTRINGTerminalRuleCall_2_0 = (RuleCall)cActionAssignment_2.eContents().get(0);
+		
+		//Shall:
+		//	"shall" -> ("be" -> "able" -> "to")? action=STRING;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//"shall" -> ("be" -> "able" -> "to")? action=STRING
+		public Group getGroup() { return cGroup; }
+		
+		//"shall"
+		public Keyword getShallKeyword_0() { return cShallKeyword_0; }
+		
+		//-> ("be" -> "able" -> "to")?
+		public Group getGroup_1() { return cGroup_1; }
+		
+		//"be" -> "able" -> "to"
+		public Group getGroup_1_0() { return cGroup_1_0; }
+		
+		//"be"
+		public Keyword getBeKeyword_1_0_0() { return cBeKeyword_1_0_0; }
+		
+		//-> "able"
+		public Keyword getAbleKeyword_1_0_1() { return cAbleKeyword_1_0_1; }
+		
+		//-> "to"
+		public Keyword getToKeyword_1_0_2() { return cToKeyword_1_0_2; }
+		
+		//action=STRING
+		public Assignment getActionAssignment_2() { return cActionAssignment_2; }
+		
+		//STRING
+		public RuleCall getActionSTRINGTerminalRuleCall_2_0() { return cActionSTRINGTerminalRuleCall_2_0; }
+	}
+	
+	
+	private final ModelElements pModel;
+	private final RequirementElements pRequirement;
+	private final SubjectElements pSubject;
+	private final PrefixElements pPrefix;
+	private final IfElements pIf;
+	private final WhileElements pWhile;
+	private final PredicateElements pPredicate;
+	private final ShallNotAllowElements pShallNotAllow;
+	private final ShallAllowElements pShallAllow;
+	private final ShallNotElements pShallNot;
+	private final ShallElements pShall;
+	
+	private final Grammar grammar;
+	
+	private final TerminalsGrammarAccess gaTerminals;
+
+	@Inject
+	public BoilerplateTextGrammarAccess(GrammarProvider grammarProvider,
+			TerminalsGrammarAccess gaTerminals) {
+		this.grammar = internalFindGrammar(grammarProvider);
+		this.gaTerminals = gaTerminals;
+		this.pModel = new ModelElements();
+		this.pRequirement = new RequirementElements();
+		this.pSubject = new SubjectElements();
+		this.pPrefix = new PrefixElements();
+		this.pIf = new IfElements();
+		this.pWhile = new WhileElements();
+		this.pPredicate = new PredicateElements();
+		this.pShallNotAllow = new ShallNotAllowElements();
+		this.pShallAllow = new ShallAllowElements();
+		this.pShallNot = new ShallNotElements();
+		this.pShall = new ShallElements();
+	}
+	
+	protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
+		Grammar grammar = grammarProvider.getGrammar(this);
+		while (grammar != null) {
+			if ("org.eclipse.papyrus.requirements.sysml14.BoilerplateText".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;
+	}
+
+	
+	//Model:
+	//	model=Requirement;
+	public ModelElements getModelAccess() {
+		return pModel;
+	}
+	
+	public ParserRule getModelRule() {
+		return getModelAccess().getRule();
+	}
+	
+	//Requirement:
+	//	(prefix=Prefix ",")?
+	//	system=Subject
+	//	predicate=Predicate;
+	public RequirementElements getRequirementAccess() {
+		return pRequirement;
+	}
+	
+	public ParserRule getRequirementRule() {
+		return getRequirementAccess().getRule();
+	}
+	
+	//Subject:
+	//	system=STRING;
+	public SubjectElements getSubjectAccess() {
+		return pSubject;
+	}
+	
+	public ParserRule getSubjectRule() {
+		return getSubjectAccess().getRule();
+	}
+	
+	//Prefix:
+	//	If | While;
+	public PrefixElements getPrefixAccess() {
+		return pPrefix;
+	}
+	
+	public ParserRule getPrefixRule() {
+		return getPrefixAccess().getRule();
+	}
+	
+	//If:
+	//	"if" event+=STRING ("and" event+=STRING)*;
+	public IfElements getIfAccess() {
+		return pIf;
+	}
+	
+	public ParserRule getIfRule() {
+		return getIfAccess().getRule();
+	}
+	
+	//While:
+	//	"while" state=STRING;
+	public WhileElements getWhileAccess() {
+		return pWhile;
+	}
+	
+	public ParserRule getWhileRule() {
+		return getWhileAccess().getRule();
+	}
+	
+	//Predicate:
+	//	Shall | ShallNot | ShallAllow | ShallNotAllow;
+	public PredicateElements getPredicateAccess() {
+		return pPredicate;
+	}
+	
+	public ParserRule getPredicateRule() {
+		return getPredicateAccess().getRule();
+	}
+	
+	//ShallNotAllow:
+	//	"shall" -> "not" -> "allow" (action=STRING | entity=STRING "to" actionPerformedByEntity=STRING);
+	public ShallNotAllowElements getShallNotAllowAccess() {
+		return pShallNotAllow;
+	}
+	
+	public ParserRule getShallNotAllowRule() {
+		return getShallNotAllowAccess().getRule();
+	}
+	
+	//ShallAllow:
+	//	"shall" -> "allow" (action=STRING | entity=STRING "to" actionPerformedByEntity=STRING);
+	public ShallAllowElements getShallAllowAccess() {
+		return pShallAllow;
+	}
+	
+	public ParserRule getShallAllowRule() {
+		return getShallAllowAccess().getRule();
+	}
+	
+	//ShallNot:
+	//	"shall" -> "not" ("be" -> "able" -> "to")? action=STRING;
+	public ShallNotElements getShallNotAccess() {
+		return pShallNot;
+	}
+	
+	public ParserRule getShallNotRule() {
+		return getShallNotAccess().getRule();
+	}
+	
+	//Shall:
+	//	"shall" -> ("be" -> "able" -> "to")? action=STRING;
+	public ShallElements getShallAccess() {
+		return pShall;
+	}
+	
+	public ParserRule getShallRule() {
+		return getShallAccess().getRule();
+	}
+	
+	//terminal ID:
+	//	'^'? ('a'..'z' | 'A'..'Z' | '_') ('a'..'z' | 'A'..'Z' | '_' | '0'..'9')*;
+	public TerminalRule getIDRule() {
+		return gaTerminals.getIDRule();
+	}
+	
+	//terminal INT returns ecore::EInt:
+	//	'0'..'9'+;
+	public TerminalRule getINTRule() {
+		return gaTerminals.getINTRule();
+	}
+	
+	//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/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/validation/AbstractBoilerplateTextValidator.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/validation/AbstractBoilerplateTextValidator.java
new file mode 100644
index 0000000..71c0d2a
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src-gen/org/eclipse/papyrus/requirements/sysml14/validation/AbstractBoilerplateTextValidator.java
@@ -0,0 +1,34 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.validation;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.xtext.validation.AbstractDeclarativeValidator;
+
+public abstract class AbstractBoilerplateTextValidator extends AbstractDeclarativeValidator {
+	
+	@Override
+	protected List<EPackage> getEPackages() {
+		List<EPackage> result = new ArrayList<EPackage>();
+		result.add(org.eclipse.papyrus.requirements.sysml14.boilerplateText.BoilerplateTextPackage.eINSTANCE);
+		return result;
+	}
+	
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src/org/eclipse/papyrus/requirements/sysml14/BoilerplateText.xtext b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src/org/eclipse/papyrus/requirements/sysml14/BoilerplateText.xtext
new file mode 100644
index 0000000..7fad878
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src/org/eclipse/papyrus/requirements/sysml14/BoilerplateText.xtext
@@ -0,0 +1,52 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+grammar org.eclipse.papyrus.requirements.sysml14.BoilerplateText with org.eclipse.xtext.common.Terminals
+
+generate boilerplateText "http://www.eclipse.org/papyrus/requirements/sysml14/BoilerplateText"
+
+Model:
+	model=Requirement;
+
+Requirement:
+	(prefix=Prefix ",")?
+	system=Subject
+	predicate=Predicate;
+
+Subject:
+	system=STRING;
+
+Prefix:
+	If | While;
+
+If:
+	"if" event+=STRING ("and" event+=STRING)*;
+
+While:
+	"while" state=STRING;
+
+Predicate:
+	Shall | ShallNot | ShallAllow | ShallNotAllow;
+
+ShallNotAllow:
+	"shall" -> "not" -> "allow" (action=STRING | (entity=STRING "to" actionPerformedByEntity=STRING));
+
+ShallAllow:
+	"shall" -> "allow" (action=STRING | (entity=STRING "to" actionPerformedByEntity=STRING));
+
+ShallNot:
+	"shall" -> "not" ("be" -> "able" -> "to")? action=STRING;
+
+Shall:
+	"shall" -> ("be" -> "able" -> "to")? action=STRING;
\ No newline at end of file
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src/org/eclipse/papyrus/requirements/sysml14/BoilerplateTextRuntimeModule.xtend b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src/org/eclipse/papyrus/requirements/sysml14/BoilerplateTextRuntimeModule.xtend
new file mode 100644
index 0000000..9721ea1
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src/org/eclipse/papyrus/requirements/sysml14/BoilerplateTextRuntimeModule.xtend
@@ -0,0 +1,11 @@
+/*
+ * generated by Xtext 2.10.0
+ */
+package org.eclipse.papyrus.requirements.sysml14
+
+
+/**
+ * Use this class to register components to be used at runtime / without the Equinox extension registry.
+ */
+class BoilerplateTextRuntimeModule extends AbstractBoilerplateTextRuntimeModule {
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src/org/eclipse/papyrus/requirements/sysml14/BoilerplateTextStandaloneSetup.xtend b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src/org/eclipse/papyrus/requirements/sysml14/BoilerplateTextStandaloneSetup.xtend
new file mode 100644
index 0000000..99870b7
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src/org/eclipse/papyrus/requirements/sysml14/BoilerplateTextStandaloneSetup.xtend
@@ -0,0 +1,15 @@
+/*
+ * generated by Xtext 2.10.0
+ */
+package org.eclipse.papyrus.requirements.sysml14
+
+
+/**
+ * Initialization support for running Xtext languages without Equinox extension registry.
+ */
+class BoilerplateTextStandaloneSetup extends BoilerplateTextStandaloneSetupGenerated {
+
+	def static void doSetup() {
+		new BoilerplateTextStandaloneSetup().createInjectorAndDoEMFRegistration()
+	}
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src/org/eclipse/papyrus/requirements/sysml14/GenerateBoilerplateText.mwe2 b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src/org/eclipse/papyrus/requirements/sysml14/GenerateBoilerplateText.mwe2
new file mode 100644
index 0000000..db58585
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src/org/eclipse/papyrus/requirements/sysml14/GenerateBoilerplateText.mwe2
@@ -0,0 +1,66 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+module org.eclipse.papyrus.requirements.sysml14.GenerateBoilerplateText
+
+import org.eclipse.xtext.xtext.generator.*
+import org.eclipse.xtext.xtext.generator.model.project.*
+
+var rootPath = ".."
+
+Workflow {
+	
+	component = XtextGenerator {
+		configuration = {
+			project = StandardProjectConfig {
+				baseName = "org.eclipse.papyrus.requirements.sysml14.boilerplatetext"
+				rootPath = rootPath
+				eclipsePlugin = {
+					enabled = true
+				}
+				createEclipseMetaData = true
+			}
+			code = {
+				encoding = "windows-1252"
+				fileHeader = 
+"/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+/*\n * generated by Xtext \${version}\n */"
+			}
+		}
+		language = StandardLanguage {
+			name = "org.eclipse.papyrus.requirements.sysml14.BoilerplateText"
+			fileExtensions = "boil"
+
+			serializer = {
+				generateStub = false
+			}
+			validator = {
+				// composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
+			}
+		}
+	}
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src/org/eclipse/papyrus/requirements/sysml14/generator/BoilerplateTextGenerator.xtend b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src/org/eclipse/papyrus/requirements/sysml14/generator/BoilerplateTextGenerator.xtend
new file mode 100644
index 0000000..bcda647
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src/org/eclipse/papyrus/requirements/sysml14/generator/BoilerplateTextGenerator.xtend
@@ -0,0 +1,25 @@
+/*
+ * generated by Xtext 2.10.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.generator
+
+import org.eclipse.emf.ecore.resource.Resource
+import org.eclipse.xtext.generator.AbstractGenerator
+import org.eclipse.xtext.generator.IFileSystemAccess2
+import org.eclipse.xtext.generator.IGeneratorContext
+
+/**
+ * Generates code from your model files on save.
+ * 
+ * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#code-generation
+ */
+class BoilerplateTextGenerator extends AbstractGenerator {
+
+	override void doGenerate(Resource resource, IFileSystemAccess2 fsa, IGeneratorContext context) {
+//		fsa.generateFile('greetings.txt', 'People to greet: ' + 
+//			resource.allContents
+//				.filter(typeof(Greeting))
+//				.map[name]
+//				.join(', '))
+	}
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src/org/eclipse/papyrus/requirements/sysml14/scoping/BoilerplateTextScopeProvider.xtend b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src/org/eclipse/papyrus/requirements/sysml14/scoping/BoilerplateTextScopeProvider.xtend
new file mode 100644
index 0000000..d17a3b9
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src/org/eclipse/papyrus/requirements/sysml14/scoping/BoilerplateTextScopeProvider.xtend
@@ -0,0 +1,15 @@
+/*
+ * generated by Xtext 2.10.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.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 BoilerplateTextScopeProvider extends AbstractBoilerplateTextScopeProvider {
+
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src/org/eclipse/papyrus/requirements/sysml14/validation/BoilerplateTextValidator.xtend b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src/org/eclipse/papyrus/requirements/sysml14/validation/BoilerplateTextValidator.xtend
new file mode 100644
index 0000000..dbfacb7
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src/org/eclipse/papyrus/requirements/sysml14/validation/BoilerplateTextValidator.xtend
@@ -0,0 +1,25 @@
+/*
+ * generated by Xtext 2.10.0
+ */
+package org.eclipse.papyrus.requirements.sysml14.validation
+
+
+/**
+ * This class contains custom validation rules. 
+ *
+ * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#validation
+ */
+class BoilerplateTextValidator extends AbstractBoilerplateTextValidator {
+	
+//	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', 
+//					BoilerplateTextPackage.Literals.GREETING__NAME,
+//					INVALID_NAME)
+//		}
+//	}
+	
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src/org/eclipse/papyrus/requirements/sysml14/visitor/BoilerplateTextKeywords.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src/org/eclipse/papyrus/requirements/sysml14/visitor/BoilerplateTextKeywords.java
new file mode 100644
index 0000000..9d248e9
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src/org/eclipse/papyrus/requirements/sysml14/visitor/BoilerplateTextKeywords.java
@@ -0,0 +1,29 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.requirements.sysml14.visitor;
+
+public interface BoilerplateTextKeywords {
+	static final String WHILE = " while ";
+	static final String IF ="if ";
+	static final String AND = " and ";
+	static final String SHALLNOTALLOW = " shall not allow ";
+	static final String SHALLALLOW = " shall allow ";
+	static final String SHALLNOT = " shall not ";
+	static final String SHALL = " shall ";
+	static final String TO = " to ";
+	static final String QUOTE = "\"";
+	static final String END_OF_CONDITIONAL_CLAUSE = ", ";
+}
\ No newline at end of file
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src/org/eclipse/papyrus/requirements/sysml14/visitor/RequirementsPrinter.java b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src/org/eclipse/papyrus/requirements/sysml14/visitor/RequirementsPrinter.java
new file mode 100644
index 0000000..ac99745
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/src/org/eclipse/papyrus/requirements/sysml14/visitor/RequirementsPrinter.java
@@ -0,0 +1,132 @@
+/*****************************************************************************
+ * Copyright (c) 2017 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * 
+ * 		Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.requirements.sysml14.visitor;
+
+import java.util.Iterator;
+
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.If;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.Model;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.Predicate;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.Prefix;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.Requirement;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.Shall;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallAllow;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallNot;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.ShallNotAllow;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.Subject;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.While;
+import org.eclipse.papyrus.requirements.sysml14.boilerplateText.util.BoilerplateTextSwitch;
+
+public class RequirementsPrinter extends BoilerplateTextSwitch<Object> implements BoilerplateTextKeywords {
+
+	StringBuffer sb = new StringBuffer();
+
+	@Override
+	public String caseRequirement(Requirement object) {
+		return "";
+	}
+
+	@Override
+	public String casePrefix(Prefix object) {
+		return "";
+	}
+
+	@Override
+	public String caseIf(If object) {
+		StringBuffer sb = new StringBuffer();
+		Iterator<String> it = object.getEvent().iterator();
+		sb.append(IF);
+		if (it.hasNext()) {
+			sb.append(Quote(it.next()));
+		}
+		while (it.hasNext()) {
+			sb.append(AND + Quote(it.next()));
+		}
+		return sb.toString() + END_OF_CONDITIONAL_CLAUSE;
+	}
+
+	@Override
+	public String caseWhile(While object) {
+		return WHILE + Quote(object.getState()) + END_OF_CONDITIONAL_CLAUSE;
+	}
+
+	@Override
+	public String caseSubject(Subject object) {
+		return Quote(object.getSystem());
+	}
+
+	@Override
+	public String casePredicate(Predicate object) {
+		return "";
+	}
+
+	@Override
+	public String caseShallNotAllow(ShallNotAllow object) {
+		StringBuffer sb = new StringBuffer();
+		sb.append(SHALLNOTALLOW);
+		if (null != object.getAction()) {
+			sb.append(Quote(object.getAction()));
+		}
+		if (null != object.getEntity()) {
+			sb.append(Quote(object.getEntity()) + TO + Quote(object.getActionPerformedByEntity()));
+		}
+		return sb.toString();
+	}
+
+	@Override
+	public String caseShallAllow(ShallAllow object) {
+		StringBuffer sb = new StringBuffer();
+		sb.append(SHALLALLOW);
+		if (null != object.getAction()) {
+			sb.append(Quote(object.getAction()));
+		}
+		if (null != object.getEntity()) {
+			sb.append(Quote(object.getEntity()) + TO + Quote(object.getActionPerformedByEntity()));
+		}
+		return sb.toString();
+	}
+
+	@Override
+	public String caseShallNot(ShallNot object) {
+		return SHALLNOT + Quote(object.getAction());
+	}
+
+	@Override
+	public String caseShall(Shall object) {
+		return SHALL + Quote(object.getAction());
+	}
+
+	@Override
+	public String defaultCase(EObject object) {
+		return "";
+	}
+
+	public String print(Model xtextModel) {
+		TreeIterator<Object> it = EcoreUtil.getAllProperContents(xtextModel, false);
+		while (it.hasNext()) {
+			EObject token = (EObject) it.next();
+			sb.append(this.doSwitch(token));
+		}
+		return this.sb.toString();
+	}
+
+	public static String Quote(String str) {
+		return QUOTE + str + QUOTE;
+	}
+}
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/xtend-gen/org/eclipse/papyrus/requirements/sysml14/.gitignore b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/xtend-gen/org/eclipse/papyrus/requirements/sysml14/.gitignore
new file mode 100644
index 0000000..7ac7183
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/xtend-gen/org/eclipse/papyrus/requirements/sysml14/.gitignore
@@ -0,0 +1,4 @@
+/.BoilerplateTextRuntimeModule.java._trace
+/.BoilerplateTextStandaloneSetup.java._trace
+/BoilerplateTextRuntimeModule.java
+/BoilerplateTextStandaloneSetup.java
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/xtend-gen/org/eclipse/papyrus/requirements/sysml14/generator/.gitignore b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/xtend-gen/org/eclipse/papyrus/requirements/sysml14/generator/.gitignore
new file mode 100644
index 0000000..6ab19c7
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/xtend-gen/org/eclipse/papyrus/requirements/sysml14/generator/.gitignore
@@ -0,0 +1,2 @@
+/.BoilerplateTextGenerator.java._trace
+/BoilerplateTextGenerator.java
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/xtend-gen/org/eclipse/papyrus/requirements/sysml14/scoping/.gitignore b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/xtend-gen/org/eclipse/papyrus/requirements/sysml14/scoping/.gitignore
new file mode 100644
index 0000000..b9c0434
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/xtend-gen/org/eclipse/papyrus/requirements/sysml14/scoping/.gitignore
@@ -0,0 +1,2 @@
+/.BoilerplateTextScopeProvider.java._trace
+/BoilerplateTextScopeProvider.java
diff --git a/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/xtend-gen/org/eclipse/papyrus/requirements/sysml14/validation/.gitignore b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/xtend-gen/org/eclipse/papyrus/requirements/sysml14/validation/.gitignore
new file mode 100644
index 0000000..a286313
--- /dev/null
+++ b/plugins/sysml14/org.eclipse.papyrus.requirements.sysml14.boilerplatetext/xtend-gen/org/eclipse/papyrus/requirements/sysml14/validation/.gitignore
@@ -0,0 +1,2 @@
+/.BoilerplateTextValidator.java._trace
+/BoilerplateTextValidator.java