add historized functionality

Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/plugin.properties b/org.eclipse.osbp.dsl.common.xtext.edit/plugin.properties
index e7804b0..3ec861c 100644
--- a/org.eclipse.osbp.dsl.common.xtext.edit/plugin.properties
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/plugin.properties
@@ -533,3 +533,6 @@
 _UI_LReference_sideKick_feature = Side Kick
 _UI_LFeature_cascadeRefresh_feature = Cascade Refresh
 _UI_LEnumLiteral_stringValue_feature = String Value
+_UI_LAttribute_extraStyle_feature = Extra Style
+_UI_LReference_referenceHidden_feature = Reference Hidden
+_UI_LReference_referenceReadOnly_feature = Reference Read Only
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LAttribute.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LAttribute.java
index 0cc8440..0d89a57 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LAttribute.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LAttribute.java
@@ -41,6 +41,7 @@
  *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isUniqueEntry <em>Unique Entry</em>}</li>
  *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isAttributeHidden <em>Attribute Hidden</em>}</li>
  *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isAttributeReadOnly <em>Attribute Read Only</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#getExtraStyle <em>Extra Style</em>}</li>
  *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#getDerivedGetterExpression <em>Derived Getter Expression</em>}</li>
  *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#getType <em>Type</em>}</li>
  *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#getProperties <em>Properties</em>}</li>
@@ -405,6 +406,30 @@
 	void setAttributeReadOnly(boolean value);
 
 	/**
+	 * Returns the value of the '<em><b>Extra Style</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * Attributes always get this extra styling
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Extra Style</em>' attribute.
+	 * @see #setExtraStyle(String)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLAttribute_ExtraStyle()
+	 * @generated
+	 */
+	String getExtraStyle();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#getExtraStyle <em>Extra Style</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Extra Style</em>' attribute.
+	 * @see #getExtraStyle()
+	 * @generated
+	 */
+	void setExtraStyle(String value);
+
+	/**
 	 * Returns the value of the '<em><b>Derived Getter Expression</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <p>
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LClass.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LClass.java
index 07a02df..9d3de28 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LClass.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LClass.java
@@ -116,4 +116,11 @@
 	 */
 	boolean isNormalAttribute(LFeature f);
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	boolean isHistCurrentAttribute(LFeature f);
+
 } // LClass
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LReference.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LReference.java
index 3a9814c..57fc796 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LReference.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/LReference.java
@@ -34,6 +34,8 @@
  *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#isAsGrid <em>As Grid</em>}</li>
  *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#isAsTable <em>As Table</em>}</li>
  *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#isSideKick <em>Side Kick</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#isReferenceHidden <em>Reference Hidden</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#isReferenceReadOnly <em>Reference Read Only</em>}</li>
  * </ul>
  *
  * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLReference()
@@ -221,6 +223,56 @@
 	void setSideKick(boolean value);
 
 	/**
+	 * Returns the value of the '<em><b>Reference Hidden</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * *
+	 * refs are never rendered by a presentation logic
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Reference Hidden</em>' attribute.
+	 * @see #setReferenceHidden(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLReference_ReferenceHidden()
+	 * @generated
+	 */
+	boolean isReferenceHidden();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#isReferenceHidden <em>Reference Hidden</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Reference Hidden</em>' attribute.
+	 * @see #isReferenceHidden()
+	 * @generated
+	 */
+	void setReferenceHidden(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Reference Read Only</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * *
+	 * refs are always readonly for a presentation logic
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Reference Read Only</em>' attribute.
+	 * @see #setReferenceReadOnly(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLReference_ReferenceReadOnly()
+	 * @generated
+	 */
+	boolean isReferenceReadOnly();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#isReferenceReadOnly <em>Reference Read Only</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Reference Read Only</em>' attribute.
+	 * @see #isReferenceReadOnly()
+	 * @generated
+	 */
+	void setReferenceReadOnly(boolean value);
+
+	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/OSBPTypesPackage.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/OSBPTypesPackage.java
index 6d71fd2..f7e695f 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/OSBPTypesPackage.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/OSBPTypesPackage.java
@@ -1003,13 +1003,22 @@
 	int LCLASS___IS_NORMAL_ATTRIBUTE__LFEATURE = LTYPE_OPERATION_COUNT + 0;
 
 	/**
+	 * The operation id for the '<em>Is Hist Current Attribute</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LCLASS___IS_HIST_CURRENT_ATTRIBUTE__LFEATURE = LTYPE_OPERATION_COUNT + 1;
+
+	/**
 	 * The number of operations of the '<em>LClass</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int LCLASS_OPERATION_COUNT = LTYPE_OPERATION_COUNT + 1;
+	int LCLASS_OPERATION_COUNT = LTYPE_OPERATION_COUNT + 2;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LFeaturesHolder <em>LFeatures Holder</em>}' class.
@@ -1321,13 +1330,31 @@
 	int LREFERENCE__SIDE_KICK = LFEATURE_FEATURE_COUNT + 7;
 
 	/**
+	 * The feature id for the '<em><b>Reference Hidden</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LREFERENCE__REFERENCE_HIDDEN = LFEATURE_FEATURE_COUNT + 8;
+
+	/**
+	 * The feature id for the '<em><b>Reference Read Only</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LREFERENCE__REFERENCE_READ_ONLY = LFEATURE_FEATURE_COUNT + 9;
+
+	/**
 	 * The number of structural features of the '<em>LReference</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int LREFERENCE_FEATURE_COUNT = LFEATURE_FEATURE_COUNT + 8;
+	int LREFERENCE_FEATURE_COUNT = LFEATURE_FEATURE_COUNT + 10;
 
 	/**
 	 * The operation id for the '<em>EResolve Proxy</em>' operation.
@@ -1565,13 +1592,22 @@
 	int LATTRIBUTE__ATTRIBUTE_READ_ONLY = LFEATURE_FEATURE_COUNT + 13;
 
 	/**
+	 * The feature id for the '<em><b>Extra Style</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE__EXTRA_STYLE = LFEATURE_FEATURE_COUNT + 14;
+
+	/**
 	 * The feature id for the '<em><b>Derived Getter Expression</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int LATTRIBUTE__DERIVED_GETTER_EXPRESSION = LFEATURE_FEATURE_COUNT + 14;
+	int LATTRIBUTE__DERIVED_GETTER_EXPRESSION = LFEATURE_FEATURE_COUNT + 15;
 
 	/**
 	 * The feature id for the '<em><b>Type</b></em>' reference.
@@ -1580,7 +1616,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int LATTRIBUTE__TYPE = LFEATURE_FEATURE_COUNT + 15;
+	int LATTRIBUTE__TYPE = LFEATURE_FEATURE_COUNT + 16;
 
 	/**
 	 * The feature id for the '<em><b>Properties</b></em>' containment reference list.
@@ -1589,7 +1625,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int LATTRIBUTE__PROPERTIES = LFEATURE_FEATURE_COUNT + 16;
+	int LATTRIBUTE__PROPERTIES = LFEATURE_FEATURE_COUNT + 17;
 
 	/**
 	 * The feature id for the '<em><b>Constraints</b></em>' containment reference list.
@@ -1598,7 +1634,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int LATTRIBUTE__CONSTRAINTS = LFEATURE_FEATURE_COUNT + 17;
+	int LATTRIBUTE__CONSTRAINTS = LFEATURE_FEATURE_COUNT + 18;
 
 	/**
 	 * The feature id for the '<em><b>Is Grouped</b></em>' attribute.
@@ -1607,7 +1643,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int LATTRIBUTE__IS_GROUPED = LFEATURE_FEATURE_COUNT + 18;
+	int LATTRIBUTE__IS_GROUPED = LFEATURE_FEATURE_COUNT + 19;
 
 	/**
 	 * The feature id for the '<em><b>Group Name</b></em>' attribute.
@@ -1616,7 +1652,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int LATTRIBUTE__GROUP_NAME = LFEATURE_FEATURE_COUNT + 19;
+	int LATTRIBUTE__GROUP_NAME = LFEATURE_FEATURE_COUNT + 20;
 
 	/**
 	 * The number of structural features of the '<em>LAttribute</em>' class.
@@ -1625,7 +1661,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int LATTRIBUTE_FEATURE_COUNT = LFEATURE_FEATURE_COUNT + 20;
+	int LATTRIBUTE_FEATURE_COUNT = LFEATURE_FEATURE_COUNT + 21;
 
 	/**
 	 * The operation id for the '<em>EResolve Proxy</em>' operation.
@@ -4266,6 +4302,16 @@
 	EOperation getLClass__IsNormalAttribute__LFeature();
 
 	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LClass#isHistCurrentAttribute(org.eclipse.osbp.dsl.semantic.common.types.LFeature) <em>Is Hist Current Attribute</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Is Hist Current Attribute</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LClass#isHistCurrentAttribute(org.eclipse.osbp.dsl.semantic.common.types.LFeature)
+	 * @generated
+	 */
+	EOperation getLClass__IsHistCurrentAttribute__LFeature();
+
+	/**
 	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LFeaturesHolder <em>LFeatures Holder</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -4490,6 +4536,28 @@
 	EAttribute getLReference_SideKick();
 
 	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#isReferenceHidden <em>Reference Hidden</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Reference Hidden</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LReference#isReferenceHidden()
+	 * @see #getLReference()
+	 * @generated
+	 */
+	EAttribute getLReference_ReferenceHidden();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#isReferenceReadOnly <em>Reference Read Only</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Reference Read Only</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LReference#isReferenceReadOnly()
+	 * @see #getLReference()
+	 * @generated
+	 */
+	EAttribute getLReference_ReferenceReadOnly();
+
+	/**
 	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#isCascading() <em>Is Cascading</em>}' operation.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -4664,6 +4732,17 @@
 	EAttribute getLAttribute_AttributeReadOnly();
 
 	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#getExtraStyle <em>Extra Style</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Extra Style</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LAttribute#getExtraStyle()
+	 * @see #getLAttribute()
+	 * @generated
+	 */
+	EAttribute getLAttribute_ExtraStyle();
+
+	/**
 	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#getDerivedGetterExpression <em>Derived Getter Expression</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -6022,6 +6101,14 @@
 		EOperation LCLASS___IS_NORMAL_ATTRIBUTE__LFEATURE = eINSTANCE.getLClass__IsNormalAttribute__LFeature();
 
 		/**
+		 * The meta object literal for the '<em><b>Is Hist Current Attribute</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LCLASS___IS_HIST_CURRENT_ATTRIBUTE__LFEATURE = eINSTANCE.getLClass__IsHistCurrentAttribute__LFeature();
+
+		/**
 		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LFeaturesHolder <em>LFeatures Holder</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -6196,6 +6283,22 @@
 		EAttribute LREFERENCE__SIDE_KICK = eINSTANCE.getLReference_SideKick();
 
 		/**
+		 * The meta object literal for the '<em><b>Reference Hidden</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LREFERENCE__REFERENCE_HIDDEN = eINSTANCE.getLReference_ReferenceHidden();
+
+		/**
+		 * The meta object literal for the '<em><b>Reference Read Only</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LREFERENCE__REFERENCE_READ_ONLY = eINSTANCE.getLReference_ReferenceReadOnly();
+
+		/**
 		 * The meta object literal for the '<em><b>Is Cascading</b></em>' operation.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -6326,6 +6429,14 @@
 		EAttribute LATTRIBUTE__ATTRIBUTE_READ_ONLY = eINSTANCE.getLAttribute_AttributeReadOnly();
 
 		/**
+		 * The meta object literal for the '<em><b>Extra Style</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LATTRIBUTE__EXTRA_STYLE = eINSTANCE.getLAttribute_ExtraStyle();
+
+		/**
 		 * The meta object literal for the '<em><b>Derived Getter Expression</b></em>' containment reference feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LClassImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LClassImpl.java
index 7f1b5ee..6357029 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LClassImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LClassImpl.java
@@ -30,6 +30,10 @@
 import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
 import org.eclipse.osbp.runtime.common.annotations.CreateAt;
 import org.eclipse.osbp.runtime.common.annotations.CreateBy;
+import org.eclipse.osbp.runtime.common.annotations.HistDomainKey;
+import org.eclipse.osbp.runtime.common.annotations.HistIsCurrent;
+import org.eclipse.osbp.runtime.common.annotations.HistIsCustomVersion;
+import org.eclipse.osbp.runtime.common.annotations.HistValidUntil;
 import org.eclipse.osbp.runtime.common.annotations.UpdateAt;
 import org.eclipse.osbp.runtime.common.annotations.UpdateBy;
 import org.eclipse.xtext.xbase.lib.Functions.Function1;
@@ -203,7 +207,7 @@
 			return false;
 		}
 		LAttribute attr = ((LAttribute) f);
-		if (((attr.isId() || attr.isUuid()) || attr.isVersion())) {
+		if ((((attr.isId() || attr.isUuid()) || attr.isVersion()) || attr.isAttributeHidden())) {
 			return false;
 		}
 		final Function1<LAnnotationDef, Boolean> _function = new Function1<LAnnotationDef, Boolean>() {
@@ -214,7 +218,36 @@
 					UpdateBy.class.getName().equals(it.getAnnotation().getAnnotationType().getQualifiedName())));
 			}
 		};
-		return IterableExtensions.isEmpty(IterableExtensions.<LAnnotationDef>filter(f.getAnnotationInfo().getAnnotations(), _function));
+		boolean isNotFilter = IterableExtensions.isEmpty(IterableExtensions.<LAnnotationDef>filter(f.getAnnotationInfo().getAnnotations(), _function));
+		final Function1<LAnnotationDef, Boolean> _function_1 = new Function1<LAnnotationDef, Boolean>() {
+			public Boolean apply(final LAnnotationDef it) {
+				return Boolean.valueOf((((HistValidUntil.class.getName().equals(it.getAnnotation().getAnnotationType().getQualifiedName()) || 
+					HistIsCurrent.class.getName().equals(it.getAnnotation().getAnnotationType().getQualifiedName())) || 
+					HistIsCustomVersion.class.getName().equals(it.getAnnotation().getAnnotationType().getQualifiedName())) || 
+					HistDomainKey.class.getName().equals(it.getAnnotation().getAnnotationType().getQualifiedName())));
+			}
+		};
+		boolean isNotHist = IterableExtensions.isEmpty(IterableExtensions.<LAnnotationDef>filter(f.getAnnotationInfo().getAnnotations(), _function_1));
+		return (isNotFilter && isNotHist);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isHistCurrentAttribute(final LFeature f) {
+		if ((!(f instanceof LAttribute))) {
+			return false;
+		}
+		LAttribute attr = ((LAttribute) f);
+		final Function1<LAnnotationDef, Boolean> _function = new Function1<LAnnotationDef, Boolean>() {
+			public Boolean apply(final LAnnotationDef it) {
+				return Boolean.valueOf(HistIsCurrent.class.getName().equals(it.getAnnotation().getAnnotationType().getQualifiedName()));
+			}
+		};
+		boolean _isEmpty = IterableExtensions.isEmpty(IterableExtensions.<LAnnotationDef>filter(f.getAnnotationInfo().getAnnotations(), _function));
+		return (!_isEmpty);
 	}
 
 	/**
@@ -305,6 +338,8 @@
 		switch (operationID) {
 			case OSBPTypesPackage.LCLASS___IS_NORMAL_ATTRIBUTE__LFEATURE:
 				return isNormalAttribute((LFeature)arguments.get(0));
+			case OSBPTypesPackage.LCLASS___IS_HIST_CURRENT_ATTRIBUTE__LFEATURE:
+				return isHistCurrentAttribute((LFeature)arguments.get(0));
 		}
 		return super.eInvoke(operationID, arguments);
 	}
diff --git a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/OSBPTypesPackageImpl.java b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/OSBPTypesPackageImpl.java
index d0ea0cb..32d666b 100644
--- a/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/OSBPTypesPackageImpl.java
+++ b/org.eclipse.osbp.dsl.common.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/OSBPTypesPackageImpl.java
@@ -981,6 +981,15 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EOperation getLClass__IsHistCurrentAttribute__LFeature() {
+		return lClassEClass.getEOperations().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EClass getLFeaturesHolder() {
 		return lFeaturesHolderEClass;
 	}
@@ -1170,6 +1179,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EAttribute getLReference_ReferenceHidden() {
+		return (EAttribute)lReferenceEClass.getEStructuralFeatures().get(8);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLReference_ReferenceReadOnly() {
+		return (EAttribute)lReferenceEClass.getEStructuralFeatures().get(9);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EOperation getLReference__IsCascading() {
 		return lReferenceEClass.getEOperations().get(0);
 	}
@@ -1314,8 +1341,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getLAttribute_DerivedGetterExpression() {
-		return (EReference)lAttributeEClass.getEStructuralFeatures().get(14);
+	public EAttribute getLAttribute_ExtraStyle() {
+		return (EAttribute)lAttributeEClass.getEStructuralFeatures().get(14);
 	}
 
 	/**
@@ -1323,7 +1350,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getLAttribute_Type() {
+	public EReference getLAttribute_DerivedGetterExpression() {
 		return (EReference)lAttributeEClass.getEStructuralFeatures().get(15);
 	}
 
@@ -1332,7 +1359,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getLAttribute_Properties() {
+	public EReference getLAttribute_Type() {
 		return (EReference)lAttributeEClass.getEStructuralFeatures().get(16);
 	}
 
@@ -1341,7 +1368,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getLAttribute_Constraints() {
+	public EReference getLAttribute_Properties() {
 		return (EReference)lAttributeEClass.getEStructuralFeatures().get(17);
 	}
 
@@ -1350,8 +1377,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EReference getLAttribute_Constraints() {
+		return (EReference)lAttributeEClass.getEStructuralFeatures().get(18);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EAttribute getLAttribute_IsGrouped() {
-		return (EAttribute)lAttributeEClass.getEStructuralFeatures().get(18);
+		return (EAttribute)lAttributeEClass.getEStructuralFeatures().get(19);
 	}
 
 	/**
@@ -1360,7 +1396,7 @@
 	 * @generated
 	 */
 	public EAttribute getLAttribute_GroupName() {
-		return (EAttribute)lAttributeEClass.getEStructuralFeatures().get(19);
+		return (EAttribute)lAttributeEClass.getEStructuralFeatures().get(20);
 	}
 
 	/**
@@ -2198,6 +2234,7 @@
 		createEAttribute(lClassEClass, LCLASS__SERIALIZABLE);
 		createEAttribute(lClassEClass, LCLASS__SHORT_NAME);
 		createEOperation(lClassEClass, LCLASS___IS_NORMAL_ATTRIBUTE__LFEATURE);
+		createEOperation(lClassEClass, LCLASS___IS_HIST_CURRENT_ATTRIBUTE__LFEATURE);
 
 		lFeaturesHolderEClass = createEClass(LFEATURES_HOLDER);
 		createEOperation(lFeaturesHolderEClass, LFEATURES_HOLDER___GET_FEATURES);
@@ -2222,6 +2259,8 @@
 		createEAttribute(lReferenceEClass, LREFERENCE__AS_GRID);
 		createEAttribute(lReferenceEClass, LREFERENCE__AS_TABLE);
 		createEAttribute(lReferenceEClass, LREFERENCE__SIDE_KICK);
+		createEAttribute(lReferenceEClass, LREFERENCE__REFERENCE_HIDDEN);
+		createEAttribute(lReferenceEClass, LREFERENCE__REFERENCE_READ_ONLY);
 		createEOperation(lReferenceEClass, LREFERENCE___IS_CASCADING);
 
 		lAttributeEClass = createEClass(LATTRIBUTE);
@@ -2239,6 +2278,7 @@
 		createEAttribute(lAttributeEClass, LATTRIBUTE__UNIQUE_ENTRY);
 		createEAttribute(lAttributeEClass, LATTRIBUTE__ATTRIBUTE_HIDDEN);
 		createEAttribute(lAttributeEClass, LATTRIBUTE__ATTRIBUTE_READ_ONLY);
+		createEAttribute(lAttributeEClass, LATTRIBUTE__EXTRA_STYLE);
 		createEReference(lAttributeEClass, LATTRIBUTE__DERIVED_GETTER_EXPRESSION);
 		createEReference(lAttributeEClass, LATTRIBUTE__TYPE);
 		createEReference(lAttributeEClass, LATTRIBUTE__PROPERTIES);
@@ -2516,6 +2556,9 @@
 		op = initEOperation(getLClass__IsNormalAttribute__LFeature(), theEcorePackage.getEBoolean(), "isNormalAttribute", 0, 1, !IS_UNIQUE, IS_ORDERED);
 		addEParameter(op, this.getLFeature(), "f", 0, 1, !IS_UNIQUE, IS_ORDERED);
 
+		op = initEOperation(getLClass__IsHistCurrentAttribute__LFeature(), theEcorePackage.getEBoolean(), "isHistCurrentAttribute", 0, 1, !IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, this.getLFeature(), "f", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
 		initEClass(lFeaturesHolderEClass, LFeaturesHolder.class, "LFeaturesHolder", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
 		initEOperation(getLFeaturesHolder__GetFeatures(), this.getFeaturesList(), "getFeatures", 0, 1, !IS_UNIQUE, IS_ORDERED);
@@ -2543,6 +2586,8 @@
 		initEAttribute(getLReference_AsGrid(), theEcorePackage.getEBoolean(), "asGrid", null, 0, 1, LReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getLReference_AsTable(), theEcorePackage.getEBoolean(), "asTable", null, 0, 1, LReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getLReference_SideKick(), theEcorePackage.getEBoolean(), "sideKick", null, 0, 1, LReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLReference_ReferenceHidden(), theEcorePackage.getEBoolean(), "referenceHidden", null, 0, 1, LReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLReference_ReferenceReadOnly(), theEcorePackage.getEBoolean(), "referenceReadOnly", null, 0, 1, LReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEOperation(getLReference__IsCascading(), theEcorePackage.getEBoolean(), "isCascading", 0, 1, !IS_UNIQUE, IS_ORDERED);
 
@@ -2561,6 +2606,7 @@
 		initEAttribute(getLAttribute_UniqueEntry(), theEcorePackage.getEBoolean(), "uniqueEntry", null, 0, 1, LAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getLAttribute_AttributeHidden(), theEcorePackage.getEBoolean(), "attributeHidden", null, 0, 1, LAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getLAttribute_AttributeReadOnly(), theEcorePackage.getEBoolean(), "attributeReadOnly", null, 0, 1, LAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLAttribute_ExtraStyle(), theEcorePackage.getEString(), "extraStyle", null, 0, 1, LAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getLAttribute_DerivedGetterExpression(), theXbasePackage.getXExpression(), null, "derivedGetterExpression", null, 0, 1, LAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getLAttribute_Type(), this.getLScalarType(), null, "type", null, 0, 1, LAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getLAttribute_Properties(), this.getLKeyAndValue(), null, "properties", null, 0, -1, LAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
diff --git a/org.eclipse.osbp.dsl.common.xtext/model/types.xcore b/org.eclipse.osbp.dsl.common.xtext/model/types.xcore
index d4eae1c..a99a650 100644
--- a/org.eclipse.osbp.dsl.common.xtext/model/types.xcore
+++ b/org.eclipse.osbp.dsl.common.xtext/model/types.xcore
@@ -143,15 +143,31 @@
 			return false
 		}
 		var attr = f as LAttribute
-		if(attr.id || attr.uuid || attr.version) {
+		if(attr.id || attr.uuid || attr.version || attr.attributeHidden) {
 			return false
 		}
-		return f.annotationInfo.annotations.filter[
+		var isNotFilter =  f.annotationInfo.annotations.filter[
 			org.eclipse.osbp.runtime.common.annotations.CreateAt.name.equals(it.annotation.annotationType.qualifiedName) ||
 			org.eclipse.osbp.runtime.common.annotations.CreateBy.name.equals(it.annotation.annotationType.qualifiedName) ||
 			org.eclipse.osbp.runtime.common.annotations.UpdateAt.name.equals(it.annotation.annotationType.qualifiedName) ||
 			org.eclipse.osbp.runtime.common.annotations.UpdateBy.name.equals(it.annotation.annotationType.qualifiedName)
 		].empty
+		var isNotHist = f.annotationInfo.annotations.filter[
+			org.eclipse.osbp.runtime.common.annotations.HistValidUntil.name.equals(it.annotation.annotationType.qualifiedName) ||
+			org.eclipse.osbp.runtime.common.annotations.HistIsCurrent.name.equals(it.annotation.annotationType.qualifiedName) ||
+			org.eclipse.osbp.runtime.common.annotations.HistIsCustomVersion.name.equals(it.annotation.annotationType.qualifiedName) ||
+			org.eclipse.osbp.runtime.common.annotations.HistDomainKey.name.equals(it.annotation.annotationType.qualifiedName)
+		].empty
+		return isNotFilter && isNotHist
+	}
+	op boolean isHistCurrentAttribute(LFeature f) {
+		if(!(f instanceof LAttribute)) {
+			return false
+		}
+		var attr = f as LAttribute
+		return !(f.annotationInfo.annotations.filter[
+			org.eclipse.osbp.runtime.common.annotations.HistIsCurrent.name.equals(it.annotation.annotationType.qualifiedName)
+		].empty)
 	}
 	
 }
@@ -203,6 +219,14 @@
 	boolean asTable
 	// ui should enable sidekick to create owner data
 	boolean sideKick
+	/**
+	 * refs are never rendered by a presentation logic
+	 */
+	boolean referenceHidden
+	/**
+	 * refs are always readonly for a presentation logic
+	 */
+	boolean referenceReadOnly
 	op boolean isCascading() {
 		return cascadeMergePersist || cascadeRemove
 	}
@@ -246,6 +270,10 @@
 	 * Attributes are always readonly for a presentation logic
 	 */
 	boolean attributeReadOnly
+	/*
+	 * Attributes always get this extra styling
+	 */
+	String extraStyle
 	
 	contains XExpression derivedGetterExpression
 	refers LScalarType ^type
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammarLexer.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammarLexer.java
index 7bc88b0..c605354 100644
--- a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammarLexer.java
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammarLexer.java
@@ -1,3 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
 package org.eclipse.osbp.dsl.common.xtext.parser.antlr.internal;
 
 // Hack: Use our own Lexer superclass by means of import. 
@@ -5537,4 +5547,4 @@
     }
  
 
-}
\ No newline at end of file
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/extensions/ModelExtensions.xtend b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/extensions/ModelExtensions.xtend
index 12489ea..da1b04f 100644
--- a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/extensions/ModelExtensions.xtend
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/extensions/ModelExtensions.xtend
@@ -32,6 +32,8 @@
 import org.eclipse.xtext.common.types.util.TypeReferences
 import org.eclipse.xtext.naming.IQualifiedNameProvider
 import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder
+import org.eclipse.xtext.common.types.impl.JvmParameterizedTypeReferenceImpl
+import org.eclipse.emf.ecore.InternalEObject
 
 class ModelExtensions {
 
@@ -75,7 +77,8 @@
 	}
 
 	def String toNullReturnValue(LScalarType dt) {
-		if(dt === null) return "null"
+		if(dt === null) 
+			return "null"
 
 		if (dt instanceof LDataType) {
 
@@ -83,17 +86,12 @@
 				return "Boolean.FALSE"
 			}
 
+			if (dt.isDecimalOrWrapperType) {
+				return "0.0"
+			}
+			
 			if (dt.isNumericOrWrapperType) {
-				val fqn = dt?.jvmTypeReference?.type?.fullyQualifiedName
-				switch (fqn.toString) {
-					case typeof(Integer).name: return "0"
-					case typeof(Short).name: return "0"
-					case typeof(Long).name: return "0"
-					case typeof(Double).name: return "0.0"
-					case typeof(Float).name: return "0.0"
-					case typeof(Character).name: return "0"
-					case typeof(Byte).name: return "0"
-				}
+				return "0"
 			}
 		}
 
@@ -102,20 +100,53 @@
 	}
 
 	def boolean isNumericOrWrapperType(LDataType type) {
-		val fqn = type?.jvmTypeReference?.type?.fullyQualifiedName
-		if (fqn === null) {
-			return false
+		val JvmParameterizedTypeReferenceImpl typeRef = type.jvmTypeReference as JvmParameterizedTypeReferenceImpl
+		if (typeRef !== null) {
+			var typeIdentifier = ""
+			if (typeRef.basicGetType().eIsProxy && (typeRef.basicGetType() instanceof InternalEObject)) {
+				typeIdentifier = (typeRef.basicGetType() as InternalEObject).eProxyURI.fragment
+			} else {
+				typeIdentifier = typeRef.identifier
+			}
+			switch (typeIdentifier) {
+				case typeof(Integer).name: return true
+				case "integer": return true
+				case typeof(Short).name: return true
+				case "short": return true
+				case typeof(Long).name: return true
+				case "long": return true
+				case typeof(Double).name: return true
+				case "double": return true
+				case typeof(Float).name: return true
+				case "float": return true
+				case typeof(Character).name: return true
+				case "char": return true
+				case typeof(Byte).name: return true
+				case "byte": return true
+				default: return false
+			}
 		}
-		switch (fqn.toString) {
-			case typeof(Integer).name: return true
-			case typeof(Short).name: return true
-			case typeof(Long).name: return true
-			case typeof(Double).name: return true
-			case typeof(Float).name: return true
-			case typeof(Character).name: return true
-			case typeof(Byte).name: return true
-			default: false
+		return false
+	}
+
+	def boolean isDecimalOrWrapperType(LDataType type) {
+		val JvmParameterizedTypeReferenceImpl typeRef = type.jvmTypeReference as JvmParameterizedTypeReferenceImpl
+		if (typeRef !== null) {
+			var typeIdentifier = ""
+			if (typeRef.basicGetType().eIsProxy && (typeRef.basicGetType() instanceof InternalEObject)) {
+				typeIdentifier = (typeRef.basicGetType() as InternalEObject).eProxyURI.fragment
+			} else {
+				typeIdentifier = typeRef.identifier
+			}
+			switch (typeIdentifier) {
+				case typeof(Double).name: return true
+				case "double": return true
+				case typeof(Float).name: return true
+				case "float": return true
+				default: return false
+			}
 		}
+		return false
 	}
 
 	def boolean isBool(LDataType type) {
@@ -123,6 +154,7 @@
 			val fqn = type?.jvmTypeReference?.type?.fullyQualifiedName
 			switch (fqn.toString) {
 				case typeof(Boolean).name: return true
+				case "boolean": return true
 				default: return false
 			}
 		}
diff --git a/org.eclipse.osbp.dsl.common.xtext/xtend-gen/org/eclipse/osbp/dsl/common/xtext/extensions/ModelExtensions.java b/org.eclipse.osbp.dsl.common.xtext/xtend-gen/org/eclipse/osbp/dsl/common/xtext/extensions/ModelExtensions.java
index 54f8dc3..af7d570 100644
--- a/org.eclipse.osbp.dsl.common.xtext/xtend-gen/org/eclipse/osbp/dsl/common/xtext/extensions/ModelExtensions.java
+++ b/org.eclipse.osbp.dsl.common.xtext/xtend-gen/org/eclipse/osbp/dsl/common/xtext/extensions/ModelExtensions.java
@@ -18,6 +18,7 @@
 import java.util.Date;
 import java.util.List;
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.osbp.dsl.semantic.common.helper.Bounds;
 import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationTarget;
 import org.eclipse.osbp.dsl.semantic.common.types.LAttribute;
@@ -31,6 +32,7 @@
 import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
 import org.eclipse.xtext.common.types.JvmType;
 import org.eclipse.xtext.common.types.JvmTypeReference;
+import org.eclipse.xtext.common.types.impl.JvmParameterizedTypeReferenceImpl;
 import org.eclipse.xtext.common.types.util.TypeReferences;
 import org.eclipse.xtext.naming.IQualifiedNameProvider;
 import org.eclipse.xtext.naming.QualifiedName;
@@ -187,150 +189,163 @@
       if (_isBool) {
         return "Boolean.FALSE";
       }
+      boolean _isDecimalOrWrapperType = this.isDecimalOrWrapperType(((LDataType)dt));
+      if (_isDecimalOrWrapperType) {
+        return "0.0";
+      }
       boolean _isNumericOrWrapperType = this.isNumericOrWrapperType(((LDataType)dt));
       if (_isNumericOrWrapperType) {
-        JvmTypeReference _jvmTypeReference = null;
-        if (((LDataType)dt)!=null) {
-          _jvmTypeReference=((LDataType)dt).getJvmTypeReference();
-        }
-        JvmType _type = null;
-        if (_jvmTypeReference!=null) {
-          _type=_jvmTypeReference.getType();
-        }
-        QualifiedName _fullyQualifiedName = null;
-        if (_type!=null) {
-          _fullyQualifiedName=this._iQualifiedNameProvider.getFullyQualifiedName(_type);
-        }
-        final QualifiedName fqn = _fullyQualifiedName;
-        String _string = fqn.toString();
-        boolean _matched = false;
-        String _name = Integer.class.getName();
-        if (Objects.equal(_string, _name)) {
-          _matched=true;
-          return "0";
-        }
-        if (!_matched) {
-          String _name_1 = Short.class.getName();
-          if (Objects.equal(_string, _name_1)) {
-            _matched=true;
-            return "0";
-          }
-        }
-        if (!_matched) {
-          String _name_2 = Long.class.getName();
-          if (Objects.equal(_string, _name_2)) {
-            _matched=true;
-            return "0";
-          }
-        }
-        if (!_matched) {
-          String _name_3 = Double.class.getName();
-          if (Objects.equal(_string, _name_3)) {
-            _matched=true;
-            return "0.0";
-          }
-        }
-        if (!_matched) {
-          String _name_4 = Float.class.getName();
-          if (Objects.equal(_string, _name_4)) {
-            _matched=true;
-            return "0.0";
-          }
-        }
-        if (!_matched) {
-          String _name_5 = Character.class.getName();
-          if (Objects.equal(_string, _name_5)) {
-            _matched=true;
-            return "0";
-          }
-        }
-        if (!_matched) {
-          String _name_6 = Byte.class.getName();
-          if (Objects.equal(_string, _name_6)) {
-            _matched=true;
-            return "0";
-          }
-        }
+        return "0";
       }
     }
     return "null";
   }
   
   public boolean isNumericOrWrapperType(final LDataType type) {
-    boolean _xblockexpression = false;
-    {
-      JvmTypeReference _jvmTypeReference = null;
-      if (type!=null) {
-        _jvmTypeReference=type.getJvmTypeReference();
+    JvmTypeReference _jvmTypeReference = type.getJvmTypeReference();
+    final JvmParameterizedTypeReferenceImpl typeRef = ((JvmParameterizedTypeReferenceImpl) _jvmTypeReference);
+    if ((typeRef != null)) {
+      String typeIdentifier = "";
+      if ((typeRef.basicGetType().eIsProxy() && (typeRef.basicGetType() instanceof InternalEObject))) {
+        JvmType _basicGetType = typeRef.basicGetType();
+        typeIdentifier = ((InternalEObject) _basicGetType).eProxyURI().fragment();
+      } else {
+        typeIdentifier = typeRef.getIdentifier();
       }
-      JvmType _type = null;
-      if (_jvmTypeReference!=null) {
-        _type=_jvmTypeReference.getType();
-      }
-      QualifiedName _fullyQualifiedName = null;
-      if (_type!=null) {
-        _fullyQualifiedName=this._iQualifiedNameProvider.getFullyQualifiedName(_type);
-      }
-      final QualifiedName fqn = _fullyQualifiedName;
-      if ((fqn == null)) {
-        return false;
-      }
-      boolean _switchResult = false;
-      String _string = fqn.toString();
       boolean _matched = false;
       String _name = Integer.class.getName();
-      if (Objects.equal(_string, _name)) {
+      if (Objects.equal(typeIdentifier, _name)) {
         _matched=true;
         return true;
       }
       if (!_matched) {
+        if (Objects.equal(typeIdentifier, "integer")) {
+          _matched=true;
+          return true;
+        }
+      }
+      if (!_matched) {
         String _name_1 = Short.class.getName();
-        if (Objects.equal(_string, _name_1)) {
+        if (Objects.equal(typeIdentifier, _name_1)) {
+          _matched=true;
+          return true;
+        }
+      }
+      if (!_matched) {
+        if (Objects.equal(typeIdentifier, "short")) {
           _matched=true;
           return true;
         }
       }
       if (!_matched) {
         String _name_2 = Long.class.getName();
-        if (Objects.equal(_string, _name_2)) {
+        if (Objects.equal(typeIdentifier, _name_2)) {
+          _matched=true;
+          return true;
+        }
+      }
+      if (!_matched) {
+        if (Objects.equal(typeIdentifier, "long")) {
           _matched=true;
           return true;
         }
       }
       if (!_matched) {
         String _name_3 = Double.class.getName();
-        if (Objects.equal(_string, _name_3)) {
+        if (Objects.equal(typeIdentifier, _name_3)) {
+          _matched=true;
+          return true;
+        }
+      }
+      if (!_matched) {
+        if (Objects.equal(typeIdentifier, "double")) {
           _matched=true;
           return true;
         }
       }
       if (!_matched) {
         String _name_4 = Float.class.getName();
-        if (Objects.equal(_string, _name_4)) {
+        if (Objects.equal(typeIdentifier, _name_4)) {
+          _matched=true;
+          return true;
+        }
+      }
+      if (!_matched) {
+        if (Objects.equal(typeIdentifier, "float")) {
           _matched=true;
           return true;
         }
       }
       if (!_matched) {
         String _name_5 = Character.class.getName();
-        if (Objects.equal(_string, _name_5)) {
+        if (Objects.equal(typeIdentifier, _name_5)) {
+          _matched=true;
+          return true;
+        }
+      }
+      if (!_matched) {
+        if (Objects.equal(typeIdentifier, "char")) {
           _matched=true;
           return true;
         }
       }
       if (!_matched) {
         String _name_6 = Byte.class.getName();
-        if (Objects.equal(_string, _name_6)) {
+        if (Objects.equal(typeIdentifier, _name_6)) {
           _matched=true;
           return true;
         }
       }
       if (!_matched) {
-        _switchResult = false;
+        if (Objects.equal(typeIdentifier, "byte")) {
+          _matched=true;
+          return true;
+        }
       }
-      _xblockexpression = _switchResult;
+      return false;
     }
-    return _xblockexpression;
+    return false;
+  }
+  
+  public boolean isDecimalOrWrapperType(final LDataType type) {
+    JvmTypeReference _jvmTypeReference = type.getJvmTypeReference();
+    final JvmParameterizedTypeReferenceImpl typeRef = ((JvmParameterizedTypeReferenceImpl) _jvmTypeReference);
+    if ((typeRef != null)) {
+      String typeIdentifier = "";
+      if ((typeRef.basicGetType().eIsProxy() && (typeRef.basicGetType() instanceof InternalEObject))) {
+        JvmType _basicGetType = typeRef.basicGetType();
+        typeIdentifier = ((InternalEObject) _basicGetType).eProxyURI().fragment();
+      } else {
+        typeIdentifier = typeRef.getIdentifier();
+      }
+      boolean _matched = false;
+      String _name = Double.class.getName();
+      if (Objects.equal(typeIdentifier, _name)) {
+        _matched=true;
+        return true;
+      }
+      if (!_matched) {
+        if (Objects.equal(typeIdentifier, "double")) {
+          _matched=true;
+          return true;
+        }
+      }
+      if (!_matched) {
+        String _name_1 = Float.class.getName();
+        if (Objects.equal(typeIdentifier, _name_1)) {
+          _matched=true;
+          return true;
+        }
+      }
+      if (!_matched) {
+        if (Objects.equal(typeIdentifier, "float")) {
+          _matched=true;
+          return true;
+        }
+      }
+      return false;
+    }
+    return false;
   }
   
   public boolean isBool(final LDataType type) {
@@ -356,6 +371,12 @@
         _matched=true;
         return true;
       }
+      if (!_matched) {
+        if (Objects.equal(_string, "boolean")) {
+          _matched=true;
+          return true;
+        }
+      }
       return false;
     }
     return false;
diff --git a/org.eclipse.osbp.dsl.datatype.lib/src/org/eclipse/osbp/dsl/common/datatypes/IDtoHistorized.java b/org.eclipse.osbp.dsl.datatype.lib/src/org/eclipse/osbp/dsl/common/datatypes/IDtoHistorized.java
new file mode 100644
index 0000000..ebe71eb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.lib/src/org/eclipse/osbp/dsl/common/datatypes/IDtoHistorized.java
@@ -0,0 +1,5 @@
+package org.eclipse.osbp.dsl.common.datatypes;
+
+public interface IDtoHistorized extends IDto {
+
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammarLexer.java b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammarLexer.java
index deb6360..dc7e6a8 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammarLexer.java
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammarLexer.java
@@ -1,3 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
 package org.eclipse.osbp.dsl.datatype.xtext.parser.antlr.internal;
 
 // Hack: Use our own Lexer superclass by means of import. 
@@ -5537,4 +5547,4 @@
     }
  
 
-}
\ No newline at end of file
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/xtend-gen/org/eclipse/osbp/dsl/datatype/xtext/jvmmodel/DatatypeGrammarJvmModelInferrer.java b/org.eclipse.osbp.dsl.datatype.xtext/xtend-gen/org/eclipse/osbp/dsl/datatype/xtext/jvmmodel/DatatypeGrammarJvmModelInferrer.java
index b534bc9..192f7b8 100644
--- a/org.eclipse.osbp.dsl.datatype.xtext/xtend-gen/org/eclipse/osbp/dsl/datatype/xtext/jvmmodel/DatatypeGrammarJvmModelInferrer.java
+++ b/org.eclipse.osbp.dsl.datatype.xtext/xtend-gen/org/eclipse/osbp/dsl/datatype/xtext/jvmmodel/DatatypeGrammarJvmModelInferrer.java
@@ -47,20 +47,17 @@
   
   protected void _infer(final LEnum enumX, final IJvmDeclaredTypeAcceptor acceptor, final boolean isPreIndexingPhase) {
     final JvmEnumerationType type = this._jvmTypesBuilder.toEnumerationType(enumX, this._iQualifiedNameProvider.getFullyQualifiedName(enumX).toString(), null);
-    final Procedure1<JvmEnumerationType> _function = new Procedure1<JvmEnumerationType>() {
-      @Override
-      public void apply(final JvmEnumerationType it) {
-        EObject _eContainer = enumX.eContainer();
-        DatatypeGrammarJvmModelInferrer.this._jvmTypesBuilder.setFileHeader(it, DatatypeGrammarJvmModelInferrer.this._jvmTypesBuilder.getDocumentation(((LTypedPackage) _eContainer)));
-        DatatypeGrammarJvmModelInferrer.this._jvmTypesBuilder.setDocumentation(it, DatatypeGrammarJvmModelInferrer.this._jvmTypesBuilder.getDocumentation(enumX));
-        EList<LEnumLiteral> _literals = enumX.getLiterals();
-        for (final LEnumLiteral f : _literals) {
-          {
-            DatatypeGrammarJvmModelInferrer.this._jvmTypesBuilder.setDocumentation(it, DatatypeGrammarJvmModelInferrer.this._jvmTypesBuilder.getDocumentation(f));
-            EList<JvmMember> _members = it.getMembers();
-            JvmEnumerationLiteral _enumerationLiteral = DatatypeGrammarJvmModelInferrer.this._jvmTypesBuilder.toEnumerationLiteral(f, f.getName());
-            DatatypeGrammarJvmModelInferrer.this._jvmTypesBuilder.<JvmEnumerationLiteral>operator_add(_members, _enumerationLiteral);
-          }
+    final Procedure1<JvmEnumerationType> _function = (JvmEnumerationType it) -> {
+      EObject _eContainer = enumX.eContainer();
+      this._jvmTypesBuilder.setFileHeader(it, this._jvmTypesBuilder.getDocumentation(((LTypedPackage) _eContainer)));
+      this._jvmTypesBuilder.setDocumentation(it, this._jvmTypesBuilder.getDocumentation(enumX));
+      EList<LEnumLiteral> _literals = enumX.getLiterals();
+      for (final LEnumLiteral f : _literals) {
+        {
+          this._jvmTypesBuilder.setDocumentation(it, this._jvmTypesBuilder.getDocumentation(f));
+          EList<JvmMember> _members = it.getMembers();
+          JvmEnumerationLiteral _enumerationLiteral = this._jvmTypesBuilder.toEnumerationLiteral(f, f.getName());
+          this._jvmTypesBuilder.<JvmEnumerationLiteral>operator_add(_members, _enumerationLiteral);
         }
       }
     };
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/AbstractOppositeDtoList.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/AbstractOppositeDtoList.java
index 780fb1e..5540ffa 100644
--- a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/AbstractOppositeDtoList.java
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/AbstractOppositeDtoList.java
@@ -123,7 +123,6 @@
 			mappingContext.setDirtyAdapterActive(false);
 
 			IDTOService<?> service = DtoServiceAccess.getService(dtoType);
-
 			Query query = new Query(new LCompare.Equal(parentProperty, idSupplier.get()));
 			Collection<D> dtos = (Collection<D>) service.find(query);
 
@@ -149,10 +148,7 @@
 				for (D dto : dtos) {
 					String hashCode = hashDto(dto);
 
-					if (removed.containsKey(hashCode)) {
-						// if it was removed, we do not add the dto
-						continue;
-					} else {
+					if (!removed.containsKey(hashCode)) {
 						if (tempAdded.containsKey(hashCode)) {
 							// if it was added and contained in the DB, then we
 							// add the added one
@@ -235,11 +231,9 @@
 				}
 				oppositeAdder.accept(addedE);
 
-				if (isResolved()) {
-					if (!super.contains(add)) {
-						super.add(add);
-						addedToSuper.put(hashDto(add), add);
-					}
+				if (isResolved() && !super.contains(add)) {
+					super.add(add);
+					addedToSuper.put(hashDto(add), add);
 				}
 			}
 			added.clear();
@@ -247,20 +241,20 @@
 			// for remove we use container mapping! The container is null
 			// and removeFromChildren will not remove the elements.
 			mappingContext.setNoContainerMapping(true);
-			for (D removed : getRemoved()) {
-				E removedE = mappingContext.get(childMapper.createEntityHash(removed));
+			for (D rmvd : getRemoved()) {
+				E removedE = mappingContext.get(childMapper.createEntityHash(rmvd));
 				if (removedE == null) {
 					IDTOService<D> service = (IDTOService<D>) DtoServiceAccess.getService(dtoType);
-					Object id = service.getId((D) removed);
+					Object id = service.getId((D) rmvd);
 					removedE = (E) mappingContext.findEntityByEntityManager(childMapper.createEntity().getClass(), id);
 					if (removedE == null) {
 						removedE = childMapper.createEntity();
-						childMapper.mapToEntity(removed, removedE, mappingContext);
+						childMapper.mapToEntity(rmvd, removedE, mappingContext);
 					}
 				}
 				oppositeRemover.accept(removedE);
-				super.remove(removed);
-				addedToSuper.remove(hashDto(removed));
+				super.remove(rmvd);
+				addedToSuper.remove(hashDto(rmvd));
 			}
 			removed.clear();
 
@@ -287,15 +281,12 @@
 
 				// add
 				//
-				// modifiedE = childMapper.createEntity();
 				childMapper.mapToEntity(modified, modifiedE, mappingContext);
 				mappingContext.register(childMapper.createEntityHash(modified), modifiedE);
 				oppositeAdder.accept(modifiedE);
-				if (isResolved()) {
-					if (!super.contains(modified)) {
-						super.add(modified);
-						addedToSuper.put(hashDto(modified), modified);
-					}
+				if (isResolved() && !super.contains(modified)) {
+					super.add(modified);
+					addedToSuper.put(hashDto(modified), modified);
 				}
 			}
 			updated.clear();
@@ -363,14 +354,7 @@
 		String hash = hashDto(dto);
 		removed.remove(hash);
 
-		// if (!isPersistent(dto)) {
-		// we do not add persistent dtos twice. They are already in the
-		// database.
 		added.put(hash, dto);
-		// } else {
-		// // rather we put them in updated state
-		// updated.put(hash, dto);
-		// }
 
 		// notify the container that detail changed
 		notifyContainer(dto);
@@ -478,7 +462,11 @@
 	protected boolean containsInDatabase(Object dto) {
 		IDTOService<D> service = (IDTOService<D>) DtoServiceAccess.getService(dtoType);
 		Object id = service.getId((D) dto);
+		Query query = internalContainsInDatabase(id);
+		return service.contains(query);
+	}
 
+	private Query internalContainsInDatabase(Object id) {
 		Query query = null;
 		if (DtoUtils.isHistorizedId(id)) {
 			UUIDHist histId = (UUIDHist) id;
@@ -492,8 +480,7 @@
 			Equal parentEquals = new LCompare.Equal(parentProperty, idSupplier.get());
 			query = new Query(new LAnd(idEquals, parentEquals));
 		}
-
-		return service.contains(query);
+		return query;
 	}
 
 	@Override
@@ -737,40 +724,42 @@
 	@Override
 	public boolean equals(Object o) {
 
-		if (!(o instanceof AbstractOppositeDtoList)) {
+		if (o != null && !(o instanceof AbstractOppositeDtoList)) {
 			return o.equals(this);
 		}
 
 		AbstractOppositeDtoList<D> other = (AbstractOppositeDtoList<D>) o;
-		if (other.added.size() != added.size()) {
-			return false;
-		}
-
-		if (other.removed.size() != removed.size()) {
-			return false;
-		}
-
-		if (other.updated.size() != updated.size()) {
-			return false;
-		}
-
-		boolean equals = other.added.equals(added);
-		if (!equals) {
-			return false;
-		}
-
-		equals = other.removed.equals(removed);
-		if (!equals) {
-			return false;
-		}
-
-		equals = other.updated.equals(updated);
-		if (!equals) {
-			return false;
-		}
-
-		if (other.resolved && resolved) {
-			return super.equals(o);
+		if(other != null) {
+			if (other.added.size() != added.size()) {
+				return false;
+			}
+	
+			if (other.removed.size() != removed.size()) {
+				return false;
+			}
+	
+			if (other.updated.size() != updated.size()) {
+				return false;
+			}
+	
+			boolean equals = other.added.equals(added);
+			if (!equals) {
+				return false;
+			}
+	
+			equals = other.removed.equals(removed);
+			if (!equals) {
+				return false;
+			}
+	
+			equals = other.updated.equals(updated);
+			if (!equals) {
+				return false;
+			}
+	
+			if (other.resolved && resolved) {
+				return super.equals(o);
+			}
 		}
 		return true;
 	}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/impl/AbstractDTOHistorizedService.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/impl/AbstractDTOHistorizedService.java
new file mode 100644
index 0000000..d542445
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/impl/AbstractDTOHistorizedService.java
@@ -0,0 +1,227 @@
+package org.eclipse.osbp.dsl.dto.lib.services.impl;
+
+import java.lang.reflect.Field;
+import java.util.Collection;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import javax.persistence.LockModeType;
+
+import org.eclipse.osbp.jpa.services.filters.LAnd;
+import org.eclipse.osbp.jpa.services.filters.LCompare;
+import org.eclipse.osbp.runtime.common.annotations.DtoUtils;
+import org.eclipse.osbp.runtime.common.filter.IJPQL;
+import org.eclipse.osbp.runtime.common.filter.ILFilter;
+import org.eclipse.osbp.runtime.common.filter.IQuery;
+
+public abstract class AbstractDTOHistorizedService<DTO, ENTITY> extends AbstractDTOService<DTO, ENTITY> 
+	implements org.eclipse.osbp.runtime.common.filter.IDTOHistorizedService<DTO> {
+
+	protected boolean ignoreHistorizedFilter = false;
+	
+	public boolean isIgnoreHistorizedFilter() {
+		return ignoreHistorizedFilter;
+	}
+
+	public void setIgnoreHistorizedFilter(boolean ignoreHistorizedFilter) {
+		this.ignoreHistorizedFilter = ignoreHistorizedFilter;
+	}
+
+	@Override
+	public DTO get(final Object id, Object ui, LockModeType lockModeType) {
+		DTO dto = super.get(id, ui, lockModeType);
+		if(dto != null && DtoUtils.isHistCurrent(dto)) {
+			return dto;
+		}
+		return null;
+	}
+
+	@Override
+	public DTO get(final Object id) {
+		DTO dto = super.get(id);
+		if(dto != null && DtoUtils.isHistCurrent(dto)) {
+			return dto;
+		}
+		return null;
+	}
+	
+	private List<DTO> filterHistCollection(Collection<DTO> collection) {
+		return collection.stream().filter(dto->dto != null && (ignoreHistorizedFilter || DtoUtils.isHistCurrent(dto))).collect(Collectors.toList());
+//		List<DTO> result = new ArrayList<DTO>();
+//		for(DTO dto:collection) {
+//			if(dto != null && DtoUtils.isHistCurrent(dto)) {
+//				result.add(dto);
+//			}
+//		}
+//		return result;
+	}
+	
+	@Override
+	public Collection<DTO> find(IQuery query, Object ui, LockModeType lockModeType) {
+		return filterHistCollection(super.find(query, ui, lockModeType));
+	}
+
+	@Override
+	public Collection<DTO> find(IQuery query) {
+		return filterHistCollection(super.find(query));
+	}
+
+	@Override
+	public Collection<DTO> find(IQuery query, int startIndex, Object ui, LockModeType lockModeType) {
+		return filterHistCollection(super.find(query, startIndex, ui, lockModeType));
+	}
+
+	@Override
+	public Collection<DTO> find(IQuery query, int startIndex) {
+		return filterHistCollection(super.find(query, startIndex));
+	}
+
+	@Override
+	public Collection<DTO> findDtos(IJPQL jpql) {
+		return filterHistCollection(super.findDtos(jpql));
+	}
+
+	private IQuery filterHistQuery(IQuery query) {
+		if(ignoreHistorizedFilter) {
+			return query;
+		}
+		Field currentHistField = DtoUtils.getHistCurrentField(getDtoClass());
+		ILFilter histFilter = new LCompare.Equal(currentHistField.getName(), 1);
+		ILFilter filter = query.getFilter();
+		if (filter == null) {
+			query.replaceFilter(histFilter);
+		}
+		else {
+			query.replaceFilter(new LAnd(histFilter, filter));
+		}
+		return query;
+	}
+	
+	@Override
+	public int size(IQuery query) {
+		return super.size(filterHistQuery(query));
+	}
+
+	@Override
+	public int size(IQuery query, Object ui, LockModeType lockModeType) {
+		return super.size(filterHistQuery(query), ui, lockModeType);
+	}
+
+	@Override
+	public boolean contains(Object dto, IQuery query) {
+		return super.contains(dto, filterHistQuery(query));
+	}
+
+	@Override
+	public boolean contains(Object dto, IQuery query, Object ui, LockModeType lockModeType) {
+		return super.contains(dto, filterHistQuery(query), ui, lockModeType);
+	}
+
+	@Override
+	public boolean contains(IQuery query) {
+		return super.contains(filterHistQuery(query));
+	}
+
+	@Override
+	public boolean contains(IQuery query, Object ui, LockModeType lockModeType) {
+		return super.contains(filterHistQuery(query), ui, lockModeType);
+	}
+
+	@Override
+	public DTO getNext(DTO dto, IQuery query) {
+		return super.getNext(dto, filterHistQuery(query));
+	}
+
+	@Override
+	public DTO getNext(DTO dto, IQuery query, Object ui, LockModeType lockModeType) {
+		return super.getNext(dto, filterHistQuery(query), ui, lockModeType);
+	}
+
+	@Override
+	public DTO getPrevious(DTO dto, IQuery query) {
+		return super.getPrevious(dto, filterHistQuery(query));
+	}
+
+	@Override
+	public DTO getPrevious(DTO dto, IQuery query, Object ui, LockModeType lockModeType) {
+		return super.getNext(dto, filterHistQuery(query), ui, lockModeType);
+	}
+
+	@Override
+	public DTO getFirst(IQuery query) {
+		return super.getFirst(filterHistQuery(query));
+	}
+
+	@Override
+	public DTO getFirst(IQuery query, Object ui, LockModeType lockModeType) {
+		return super.getFirst(filterHistQuery(query), ui, lockModeType);
+	}
+
+	@Override
+	public DTO getLast(IQuery query) {
+		return super.getLast(filterHistQuery(query));
+	}
+
+	@Override
+	public DTO getLast(IQuery query, Object ui, LockModeType lockModeType) {
+		return super.getLast(filterHistQuery(query), ui, lockModeType);
+	}
+
+	@Override
+	public boolean isFirst(DTO dto, IQuery query) {
+		return super.isFirst(dto, filterHistQuery(query));
+	}
+
+	@Override
+	public boolean isFirst(DTO dto, IQuery query, Object ui, LockModeType lockModeType) {
+		return super.isFirst(dto, filterHistQuery(query), ui, lockModeType);
+	}
+
+	@Override
+	public boolean isLast(DTO dto, IQuery query) {
+		return super.isLast(dto, filterHistQuery(query));
+	}
+
+	@Override
+	public boolean isLast(DTO dto, IQuery query, Object ui, LockModeType lockModeType) {
+		return super.isLast(dto, filterHistQuery(query), ui, lockModeType);
+	}
+
+	@Override
+	public int indexOf(DTO dto, IQuery query) {
+		return super.indexOf(dto, filterHistQuery(query));
+	}
+
+	@Override
+	public DTO getByIndex(int index, IQuery query) {
+		return super.getByIndex(index, filterHistQuery(query));
+	}
+
+	@Override
+	public DTO getByIndex(int index, IQuery query, Object ui, LockModeType lockModeType) {
+		return super.getByIndex(index, filterHistQuery(query), ui, lockModeType);
+	}
+
+	@Override
+	public List<DTO> getByIndex(int startIndex, int numberOfItems, IQuery query) {
+		return super.getByIndex(startIndex, numberOfItems, filterHistQuery(query));
+	}
+
+	@Override
+	public List<DTO> getByIndex(int startIndex, int numberOfItems, IQuery query, Object ui, LockModeType lockModeType) {
+		return super.getByIndex(startIndex, numberOfItems, filterHistQuery(query), ui, lockModeType);
+	}
+
+	/**
+	 * Enhance filter.
+	 *
+	 * @param query
+	 *            the query
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	protected void enhanceFilter(IQuery query) {
+		super.enhanceFilter(filterHistQuery(query));
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/impl/AbstractDTOService.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/impl/AbstractDTOService.java
index 48cf410..ba1e20d 100644
--- a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/impl/AbstractDTOService.java
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/impl/AbstractDTOService.java
@@ -15,6 +15,7 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Date;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
@@ -30,12 +31,12 @@
 import javax.transaction.RollbackException;
 import javax.transaction.SystemException;
 
-import org.eclipse.osbp.dsl.common.datatypes.IDto;
 import org.eclipse.osbp.dsl.dto.lib.IMapper;
 import org.eclipse.osbp.dsl.dto.lib.IMapperAccess;
 import org.eclipse.osbp.dsl.dto.lib.MappingContext;
 import org.eclipse.osbp.jpa.services.JPQL;
 import org.eclipse.osbp.jpa.services.Query;
+import org.eclipse.osbp.jpa.services.history.HistorizedObjectWrapper;
 import org.eclipse.osbp.jpa.services.metadata.EntityDelegate;
 import org.eclipse.osbp.runtime.common.annotations.DtoUtils;
 import org.eclipse.osbp.runtime.common.filter.DtoServiceException;
@@ -45,9 +46,18 @@
 import org.eclipse.osbp.runtime.common.session.ISessionManager;
 import org.eclipse.osbp.runtime.common.session.ITransactionHandler;
 import org.eclipse.osbp.runtime.common.state.ISharedStateContext;
+import org.eclipse.osbp.runtime.common.util.BeanUtils;
 import org.eclipse.osbp.runtime.common.validation.IStatus;
 import org.eclipse.osbp.runtime.common.validation.IValidationParticipant;
 import org.eclipse.osbp.runtime.common.validation.ValidationKind;
+import org.eclipse.persistence.descriptors.ClassDescriptor;
+import org.eclipse.persistence.sessions.Session;
+import org.osgi.framework.Filter;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.util.tracker.ServiceTracker;
+import org.osgi.util.tracker.ServiceTrackerCustomizer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -61,10 +71,14 @@
  */
 @SuppressWarnings("all")
 public abstract class AbstractDTOService<DTO, ENTITY>
-		implements org.eclipse.osbp.runtime.common.filter.IDTOService<DTO> {
-
+		implements org.eclipse.osbp.runtime.common.filter.IDTOService<DTO>,
+		ServiceTrackerCustomizer<EntityManagerFactory, EntityManagerFactory> {
+	
 	protected static Logger LOGGER = LoggerFactory.getLogger(AbstractDTOService.class);
 
+	private static final String FILTER__EMF = "(objectClass=javax.persistence.EntityManagerFactory)";
+	private static final String FILTER__EMF_WITH_PERSISTENCE = "(&(objectClass=javax.persistence.EntityManagerFactory)(osgi.unit.name=%s))";
+
 	/** The emf. */
 	protected EntityManagerFactory emf;
 
@@ -79,6 +93,119 @@
 	/** The filter enhancers. */
 	protected HashSet<IFilterEnhancer> filterEnhancers = new HashSet<IFilterEnhancer>();
 
+	private ServiceTracker<EntityManagerFactory, EntityManagerFactory> emfTracker;
+	private ComponentContext context;
+	private String persistenceId;
+
+	public String getPersistenceId() {
+		return persistenceId;
+	}
+
+	public void setPersistenceId(String persistenceId) {
+		this.persistenceId = persistenceId;
+
+		if (context != null) {
+			internalReset();
+		}
+	}
+
+	//
+	// OSGI Infrastructure
+	//
+
+	/**
+	 * Called by OSGi-DS to activate the service.
+	 * 
+	 * @param context
+	 */
+	protected void activate(ComponentContext context) throws Exception {
+		this.context = context;
+
+		internalActivate();
+	}
+
+	protected void internalActivate() throws InvalidSyntaxException {
+		if (emfTracker == null) {
+			emfTracker = new ServiceTracker<EntityManagerFactory, EntityManagerFactory>(
+					context.getBundleContext(), createEMFFilter(), this);
+			emfTracker.open();
+		}
+	}
+
+	/**
+	 * Create the filter to find the proper service.
+	 * 
+	 * @return
+	 * @throws InvalidSyntaxException
+	 */
+	protected Filter createEMFFilter() throws InvalidSyntaxException {
+		if (getPersistenceId() == null || getPersistenceId().equals("")) {
+			return context.getBundleContext().createFilter(FILTER__EMF);
+		} else {
+			return context.getBundleContext().createFilter(
+					String.format(FILTER__EMF_WITH_PERSISTENCE,
+							getPersistenceId()));
+		}
+	}
+
+	/**
+	 * Called by OSGi-DS to deactivate the service.
+	 * 
+	 * @param context
+	 */
+	protected void deactivate(ComponentContext context) {
+		internalDeactivate();
+		this.context = null;
+	}
+
+	/**
+	 * Resets the internal state.
+	 */
+	protected void internalReset() {
+		internalDeactivate();
+		if (context != null) {
+			try {
+				internalActivate();
+			} catch (InvalidSyntaxException e) {
+				LOGGER.error("{}", e);
+			}
+		}
+	}
+
+	protected void internalDeactivate() {
+		if (emfTracker != null) {
+			emfTracker.close();
+			emfTracker = null;
+		}
+	}
+
+	@Override
+	public EntityManagerFactory addingService(
+			ServiceReference<EntityManagerFactory> reference) {
+		EntityManagerFactory emf = context.getBundleContext().getService(
+				reference);
+		if (getEmf() == null) {
+			bindEmf(emf);
+		}
+		return emf;
+	}
+
+	@Override
+	public void modifiedService(
+			ServiceReference<EntityManagerFactory> reference,
+			EntityManagerFactory service) {
+		// nothing to do
+	}
+
+	@Override
+	public void removedService(
+			ServiceReference<EntityManagerFactory> reference,
+			EntityManagerFactory service) {
+		if (getEmf() == service) {
+			unbindEmf(getEmf());
+		}
+	}
+
 	/**
 	 * Returns a new instance of JPQL.
 	 * 
@@ -113,6 +240,13 @@
 	 */
 	public abstract Object getId(DTO dto);
 
+	public boolean isIgnoreHistorizedFilter() {
+		return true;
+	}
+
+	public void setIgnoreHistorizedFilter(boolean ignoreHistorizedFilter) {
+	}
+
 	public DTO get(final Object id) {
 		return get(id, null, LockModeType.NONE);
 	}
@@ -365,6 +499,9 @@
 
 				// map dto to entity and persist
 				toEntityMapper.mapToEntity(dto, entity, entityMappingContext);
+				
+				entity = doHistorized(txn, entity);
+				
 				txn.getEntityManager().persist(entity);
 
 				if (entity != null && id instanceof Integer && ((Integer) id).intValue() == 0) {
@@ -401,6 +538,33 @@
 		}
 	}
 
+	private ENTITY doHistorized(ITransactionHandler txn, ENTITY entity) {
+		// if historized, then update the id_validFrom
+		//
+		if(BeanUtils.isHistorized(entity.getClass())) {
+			txn.getEntityManager().detach(entity);
+			
+			Session session = txn.getEntityManager().unwrap(Session.class);
+
+			ClassDescriptor descriptor = session.getClassDescriptor(entity.getClass());
+			
+			Object oldEntity = entity;
+			try {
+				entity = (ENTITY) oldEntity.getClass().newInstance();
+			} catch (InstantiationException e) {
+				e.printStackTrace();
+			} catch (IllegalAccessException e) {
+				e.printStackTrace();
+			}
+			descriptor.getObjectBuilder().copyInto(oldEntity, entity);
+			HistorizedObjectWrapper entityWrapper = new HistorizedObjectWrapper(
+					descriptor, entity);
+			entityWrapper.setCurrentHist(true);
+			entityWrapper.setId_ValidFrom(new Date().getTime());
+		}
+		return entity;
+	}
+
 	/**
 	 * {@inheritDoc}.
 	 *
@@ -965,7 +1129,7 @@
 	 * @param query
 	 *            the query
 	 */
-	private void enhanceFilter(IQuery query) {
+	protected void enhanceFilter(IQuery query) {
 		Map<String, Object> queryMap = query.getMap();
 		List<Class> entityClasses = (List<Class>) queryMap.get(Query.ENTITY_CLASSES_KEY);
 		entityClasses = ((entityClasses != null) ? entityClasses : new ArrayList<Class>());
@@ -985,7 +1149,7 @@
 	 * @param id the id
 	 * @return true, if successful
 	 */
-	private boolean checkGet(Class<ENTITY> entityClass, Object id) {
+	protected boolean checkGet(Class<ENTITY> entityClass, Object id) {
 		if (filterEnhancers != null) {
 			for (IFilterEnhancer filterEnhancer : filterEnhancers) {
 				if(!filterEnhancer.checkGet(entityClass, id)) {
@@ -1146,6 +1310,9 @@
 	
 				// map dto to entity and persist
 				toEntityMapper.mapToEntity(dto, entity, (MappingContext) entityMappingContext);
+
+				entity = doHistorized(txn, entity);
+
 				txn.getEntityManager().persist(entity);
 	
 				if (entity != null && id instanceof Integer && ((Integer) id).intValue() == 0) {
@@ -1171,6 +1338,7 @@
 		ITransactionHandler txn = sessionManager.getTransactionHandler(ui);
 		if(txn != null) {
 			MappingContext entityMappingContext = new MappingContext();
+			entityMappingContext.makeCurrent();
 			entityMappingContext.setEntityManager(txn.getEntityManager());
 			// do not resolve any dto-lazyloading-list during mapping
 			entityMappingContext.setNoCollectionResolving(true);
@@ -1185,6 +1353,9 @@
 				entity = toEntityMapper.createEntity();
 				
 				toEntityMapper.mapToEntity(dto, entity, (MappingContext) entityMappingContext);
+
+				entity = doHistorized(txn, entity);
+
 				txn.getEntityManager().persist(entity);
 			} catch (IllegalStateException e) {
 				return false;
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/impl/AbstractDTOServiceWithMutablePersistence.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/impl/AbstractDTOServiceWithMutablePersistence.java
deleted file mode 100644
index 605326b..0000000
--- a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/impl/AbstractDTOServiceWithMutablePersistence.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/**
- * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0 
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *         Florian Pirchner - Initial implementation
- */
-package org.eclipse.osbp.dsl.dto.lib.services.impl;
-
-import javax.persistence.EntityManagerFactory;
-
-import org.osgi.framework.Filter;
-import org.osgi.framework.InvalidSyntaxException;
-import org.osgi.framework.ServiceReference;
-import org.osgi.service.component.ComponentContext;
-import org.osgi.util.tracker.ServiceTracker;
-import org.osgi.util.tracker.ServiceTrackerCustomizer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@SuppressWarnings("all")
-public abstract class AbstractDTOServiceWithMutablePersistence<DTO, ENTITY>
-		extends AbstractDTOService<DTO, ENTITY>
-		implements
-		org.eclipse.osbp.runtime.common.filter.IDTOServiceWithMutablePersistence<DTO>,
-		ServiceTrackerCustomizer<EntityManagerFactory, EntityManagerFactory> {
-
-	private static final String FILTER__EMF = "(objectClass=javax.persistence.EntityManagerFactory)";
-	private static final String FILTER__EMF_WITH_PERSISTENCE = "(&(objectClass=javax.persistence.EntityManagerFactory)(osgi.unit.name=%s))";
-
-	private static final Logger LOGGER = LoggerFactory
-			.getLogger(AbstractDTOServiceWithMutablePersistence.class);
-
-	private ServiceTracker<EntityManagerFactory, EntityManagerFactory> emfTracker;
-	private ComponentContext context;
-	private String persistenceId;
-
-	public String getPersistenceId() {
-		return persistenceId;
-	}
-
-	public void setPersistenceId(String persistenceId) {
-		this.persistenceId = persistenceId;
-
-		if (context != null) {
-			internalReset();
-		}
-	}
-
-	//
-	// OSGI Infrastructure
-	//
-
-	/**
-	 * Called by OSGi-DS to activate the service.
-	 * 
-	 * @param context
-	 */
-	protected void activate(ComponentContext context) throws Exception {
-		this.context = context;
-
-		internalActivate();
-	}
-
-	protected void internalActivate() throws InvalidSyntaxException {
-		if (emfTracker == null) {
-			emfTracker = new ServiceTracker<EntityManagerFactory, EntityManagerFactory>(
-					context.getBundleContext(), createEMFFilter(), this);
-			emfTracker.open();
-		}
-	}
-
-	/**
-	 * Create the filter to find the proper service.
-	 * 
-	 * @return
-	 * @throws InvalidSyntaxException
-	 */
-	protected Filter createEMFFilter() throws InvalidSyntaxException {
-		if (getPersistenceId() == null || getPersistenceId().equals("")) {
-			return context.getBundleContext().createFilter(FILTER__EMF);
-		} else {
-			return context.getBundleContext().createFilter(
-					String.format(FILTER__EMF_WITH_PERSISTENCE,
-							getPersistenceId()));
-		}
-	}
-
-	/**
-	 * Called by OSGi-DS to deactivate the service.
-	 * 
-	 * @param context
-	 */
-	protected void deactivate(ComponentContext context) {
-		internalDeactivate();
-		this.context = null;
-	}
-
-	/**
-	 * Resets the internal state.
-	 */
-	protected void internalReset() {
-		internalDeactivate();
-		if (context != null) {
-			try {
-				internalActivate();
-			} catch (InvalidSyntaxException e) {
-				LOGGER.error("{}", e);
-			}
-		}
-	}
-
-	protected void internalDeactivate() {
-		if (emfTracker != null) {
-			emfTracker.close();
-			emfTracker = null;
-		}
-	}
-
-	@Override
-	public EntityManagerFactory addingService(
-			ServiceReference<EntityManagerFactory> reference) {
-		EntityManagerFactory emf = context.getBundleContext().getService(
-				reference);
-		if (getEmf() == null) {
-			bindEmf(emf);
-		}
-		return emf;
-	}
-
-	@Override
-	public void modifiedService(
-			ServiceReference<EntityManagerFactory> reference,
-			EntityManagerFactory service) {
-		// nothing to do
-	}
-
-	@Override
-	public void removedService(
-			ServiceReference<EntityManagerFactory> reference,
-			EntityManagerFactory service) {
-		if (getEmf() == service) {
-			unbindEmf(getEmf());
-		}
-	}
-}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoAbstractAttributeItemProvider.java b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoAbstractAttributeItemProvider.java
index 211862b..16d9e11 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoAbstractAttributeItemProvider.java
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoAbstractAttributeItemProvider.java
@@ -74,6 +74,7 @@
 			addUniqueEntryPropertyDescriptor(object);
 			addAttributeHiddenPropertyDescriptor(object);
 			addAttributeReadOnlyPropertyDescriptor(object);
+			addExtraStylePropertyDescriptor(object);
 			addTypePropertyDescriptor(object);
 			addIsGroupedPropertyDescriptor(object);
 			addGroupNamePropertyDescriptor(object);
@@ -390,6 +391,28 @@
 	}
 
 	/**
+	 * This adds a property descriptor for the Extra Style feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addExtraStylePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_extraStyle_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_extraStyle_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__EXTRA_STYLE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
 	 * This adds a property descriptor for the Type feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -528,6 +551,7 @@
 			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__UNIQUE_ENTRY:
 			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__ATTRIBUTE_HIDDEN:
 			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__ATTRIBUTE_READ_ONLY:
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__EXTRA_STYLE:
 			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__IS_GROUPED:
 			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__GROUP_NAME:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoAbstractReferenceItemProvider.java b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoAbstractReferenceItemProvider.java
index eb000c7..ddd22c0 100644
--- a/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoAbstractReferenceItemProvider.java
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoAbstractReferenceItemProvider.java
@@ -64,6 +64,8 @@
 			addAsGridPropertyDescriptor(object);
 			addAsTablePropertyDescriptor(object);
 			addSideKickPropertyDescriptor(object);
+			addReferenceHiddenPropertyDescriptor(object);
+			addReferenceReadOnlyPropertyDescriptor(object);
 			addTypePropertyDescriptor(object);
 		}
 		return itemPropertyDescriptors;
@@ -202,6 +204,50 @@
 	}
 
 	/**
+	 * This adds a property descriptor for the Reference Hidden feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addReferenceHiddenPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LReference_referenceHidden_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LReference_referenceHidden_feature", "_UI_LReference_type"),
+				 OSBPTypesPackage.Literals.LREFERENCE__REFERENCE_HIDDEN,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Reference Read Only feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addReferenceReadOnlyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LReference_referenceReadOnly_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LReference_referenceReadOnly_feature", "_UI_LReference_type"),
+				 OSBPTypesPackage.Literals.LREFERENCE__REFERENCE_READ_ONLY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
 	 * This adds a property descriptor for the Type feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -287,6 +333,8 @@
 			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__AS_GRID:
 			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__AS_TABLE:
 			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__SIDE_KICK:
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__REFERENCE_HIDDEN:
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__REFERENCE_READ_ONLY:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
 			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__PROPERTIES:
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDto.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDto.java
index 7825937..0be17f7 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDto.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/LDto.java
@@ -244,4 +244,11 @@
 	 */
 	boolean isHistorizedOrTimedependent();
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	LDtoAbstractAttribute getHistCurrentAttribute();
+
 } // LDto
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/OSBPDtoPackage.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/OSBPDtoPackage.java
index dadd764..a25a277 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/OSBPDtoPackage.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/OSBPDtoPackage.java
@@ -659,13 +659,22 @@
 	int LDTO_ABSTRACT_ATTRIBUTE__ATTRIBUTE_READ_ONLY = LDTO_FEATURE_FEATURE_COUNT + 13;
 
 	/**
+	 * The feature id for the '<em><b>Extra Style</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_ATTRIBUTE__EXTRA_STYLE = LDTO_FEATURE_FEATURE_COUNT + 14;
+
+	/**
 	 * The feature id for the '<em><b>Derived Getter Expression</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int LDTO_ABSTRACT_ATTRIBUTE__DERIVED_GETTER_EXPRESSION = LDTO_FEATURE_FEATURE_COUNT + 14;
+	int LDTO_ABSTRACT_ATTRIBUTE__DERIVED_GETTER_EXPRESSION = LDTO_FEATURE_FEATURE_COUNT + 15;
 
 	/**
 	 * The feature id for the '<em><b>Type</b></em>' reference.
@@ -674,7 +683,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int LDTO_ABSTRACT_ATTRIBUTE__TYPE = LDTO_FEATURE_FEATURE_COUNT + 15;
+	int LDTO_ABSTRACT_ATTRIBUTE__TYPE = LDTO_FEATURE_FEATURE_COUNT + 16;
 
 	/**
 	 * The feature id for the '<em><b>Properties</b></em>' containment reference list.
@@ -683,7 +692,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int LDTO_ABSTRACT_ATTRIBUTE__PROPERTIES = LDTO_FEATURE_FEATURE_COUNT + 16;
+	int LDTO_ABSTRACT_ATTRIBUTE__PROPERTIES = LDTO_FEATURE_FEATURE_COUNT + 17;
 
 	/**
 	 * The feature id for the '<em><b>Constraints</b></em>' containment reference list.
@@ -692,7 +701,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int LDTO_ABSTRACT_ATTRIBUTE__CONSTRAINTS = LDTO_FEATURE_FEATURE_COUNT + 17;
+	int LDTO_ABSTRACT_ATTRIBUTE__CONSTRAINTS = LDTO_FEATURE_FEATURE_COUNT + 18;
 
 	/**
 	 * The feature id for the '<em><b>Is Grouped</b></em>' attribute.
@@ -701,7 +710,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int LDTO_ABSTRACT_ATTRIBUTE__IS_GROUPED = LDTO_FEATURE_FEATURE_COUNT + 18;
+	int LDTO_ABSTRACT_ATTRIBUTE__IS_GROUPED = LDTO_FEATURE_FEATURE_COUNT + 19;
 
 	/**
 	 * The feature id for the '<em><b>Group Name</b></em>' attribute.
@@ -710,7 +719,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int LDTO_ABSTRACT_ATTRIBUTE__GROUP_NAME = LDTO_FEATURE_FEATURE_COUNT + 19;
+	int LDTO_ABSTRACT_ATTRIBUTE__GROUP_NAME = LDTO_FEATURE_FEATURE_COUNT + 20;
 
 	/**
 	 * The number of structural features of the '<em>LDto Abstract Attribute</em>' class.
@@ -719,7 +728,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int LDTO_ABSTRACT_ATTRIBUTE_FEATURE_COUNT = LDTO_FEATURE_FEATURE_COUNT + 20;
+	int LDTO_ABSTRACT_ATTRIBUTE_FEATURE_COUNT = LDTO_FEATURE_FEATURE_COUNT + 21;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoInheritedAttributeImpl <em>LDto Inherited Attribute</em>}' class.
@@ -930,6 +939,15 @@
 	int LDTO_INHERITED_ATTRIBUTE__ATTRIBUTE_READ_ONLY = LDTO_ABSTRACT_ATTRIBUTE__ATTRIBUTE_READ_ONLY;
 
 	/**
+	 * The feature id for the '<em><b>Extra Style</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_ATTRIBUTE__EXTRA_STYLE = LDTO_ABSTRACT_ATTRIBUTE__EXTRA_STYLE;
+
+	/**
 	 * The feature id for the '<em><b>Derived Getter Expression</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1210,6 +1228,15 @@
 	int LDTO_ATTRIBUTE__ATTRIBUTE_READ_ONLY = LDTO_ABSTRACT_ATTRIBUTE__ATTRIBUTE_READ_ONLY;
 
 	/**
+	 * The feature id for the '<em><b>Extra Style</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ATTRIBUTE__EXTRA_STYLE = LDTO_ABSTRACT_ATTRIBUTE__EXTRA_STYLE;
+
+	/**
 	 * The feature id for the '<em><b>Derived Getter Expression</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1427,13 +1454,31 @@
 	int LDTO_ABSTRACT_REFERENCE__SIDE_KICK = LDTO_FEATURE_FEATURE_COUNT + 7;
 
 	/**
+	 * The feature id for the '<em><b>Reference Hidden</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_REFERENCE__REFERENCE_HIDDEN = LDTO_FEATURE_FEATURE_COUNT + 8;
+
+	/**
+	 * The feature id for the '<em><b>Reference Read Only</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_REFERENCE__REFERENCE_READ_ONLY = LDTO_FEATURE_FEATURE_COUNT + 9;
+
+	/**
 	 * The feature id for the '<em><b>Type</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int LDTO_ABSTRACT_REFERENCE__TYPE = LDTO_FEATURE_FEATURE_COUNT + 8;
+	int LDTO_ABSTRACT_REFERENCE__TYPE = LDTO_FEATURE_FEATURE_COUNT + 10;
 
 	/**
 	 * The number of structural features of the '<em>LDto Abstract Reference</em>' class.
@@ -1442,7 +1487,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int LDTO_ABSTRACT_REFERENCE_FEATURE_COUNT = LDTO_FEATURE_FEATURE_COUNT + 9;
+	int LDTO_ABSTRACT_REFERENCE_FEATURE_COUNT = LDTO_FEATURE_FEATURE_COUNT + 11;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoInheritedReferenceImpl <em>LDto Inherited Reference</em>}' class.
@@ -1599,6 +1644,24 @@
 	int LDTO_INHERITED_REFERENCE__SIDE_KICK = LDTO_ABSTRACT_REFERENCE__SIDE_KICK;
 
 	/**
+	 * The feature id for the '<em><b>Reference Hidden</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_REFERENCE__REFERENCE_HIDDEN = LDTO_ABSTRACT_REFERENCE__REFERENCE_HIDDEN;
+
+	/**
+	 * The feature id for the '<em><b>Reference Read Only</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_REFERENCE__REFERENCE_READ_ONLY = LDTO_ABSTRACT_REFERENCE__REFERENCE_READ_ONLY;
+
+	/**
 	 * The feature id for the '<em><b>Type</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1780,6 +1843,24 @@
 	int LDTO_REFERENCE__SIDE_KICK = LDTO_ABSTRACT_REFERENCE__SIDE_KICK;
 
 	/**
+	 * The feature id for the '<em><b>Reference Hidden</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_REFERENCE__REFERENCE_HIDDEN = LDTO_ABSTRACT_REFERENCE__REFERENCE_HIDDEN;
+
+	/**
+	 * The feature id for the '<em><b>Reference Read Only</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_REFERENCE__REFERENCE_READ_ONLY = LDTO_ABSTRACT_REFERENCE__REFERENCE_READ_ONLY;
+
+	/**
 	 * The feature id for the '<em><b>Type</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoAbstractAttributeImpl.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoAbstractAttributeImpl.java
index 4f0dda0..7ec5f1f 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoAbstractAttributeImpl.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoAbstractAttributeImpl.java
@@ -65,6 +65,7 @@
  *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl#isUniqueEntry <em>Unique Entry</em>}</li>
  *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl#isAttributeHidden <em>Attribute Hidden</em>}</li>
  *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl#isAttributeReadOnly <em>Attribute Read Only</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl#getExtraStyle <em>Extra Style</em>}</li>
  *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl#getDerivedGetterExpression <em>Derived Getter Expression</em>}</li>
  *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl#getType <em>Type</em>}</li>
  *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl#getProperties <em>Properties</em>}</li>
@@ -357,6 +358,26 @@
 	protected boolean attributeReadOnly = ATTRIBUTE_READ_ONLY_EDEFAULT;
 
 	/**
+	 * The default value of the '{@link #getExtraStyle() <em>Extra Style</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getExtraStyle()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String EXTRA_STYLE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getExtraStyle() <em>Extra Style</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getExtraStyle()
+	 * @generated
+	 * @ordered
+	 */
+	protected String extraStyle = EXTRA_STYLE_EDEFAULT;
+
+	/**
 	 * The cached value of the '{@link #getDerivedGetterExpression() <em>Derived Getter Expression</em>}' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -754,6 +775,27 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public String getExtraStyle() {
+		return extraStyle;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setExtraStyle(String newExtraStyle) {
+		String oldExtraStyle = extraStyle;
+		extraStyle = newExtraStyle;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__EXTRA_STYLE, oldExtraStyle, extraStyle));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public XExpression getDerivedGetterExpression() {
 		return derivedGetterExpression;
 	}
@@ -997,6 +1039,8 @@
 				return isAttributeHidden();
 			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__ATTRIBUTE_READ_ONLY:
 				return isAttributeReadOnly();
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__EXTRA_STYLE:
+				return getExtraStyle();
 			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DERIVED_GETTER_EXPRESSION:
 				return getDerivedGetterExpression();
 			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TYPE:
@@ -1065,6 +1109,9 @@
 			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__ATTRIBUTE_READ_ONLY:
 				setAttributeReadOnly((Boolean)newValue);
 				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__EXTRA_STYLE:
+				setExtraStyle((String)newValue);
+				return;
 			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DERIVED_GETTER_EXPRESSION:
 				setDerivedGetterExpression((XExpression)newValue);
 				return;
@@ -1139,6 +1186,9 @@
 			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__ATTRIBUTE_READ_ONLY:
 				setAttributeReadOnly(ATTRIBUTE_READ_ONLY_EDEFAULT);
 				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__EXTRA_STYLE:
+				setExtraStyle(EXTRA_STYLE_EDEFAULT);
+				return;
 			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DERIVED_GETTER_EXPRESSION:
 				setDerivedGetterExpression((XExpression)null);
 				return;
@@ -1197,6 +1247,8 @@
 				return attributeHidden != ATTRIBUTE_HIDDEN_EDEFAULT;
 			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__ATTRIBUTE_READ_ONLY:
 				return attributeReadOnly != ATTRIBUTE_READ_ONLY_EDEFAULT;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__EXTRA_STYLE:
+				return EXTRA_STYLE_EDEFAULT == null ? extraStyle != null : !EXTRA_STYLE_EDEFAULT.equals(extraStyle);
 			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DERIVED_GETTER_EXPRESSION:
 				return derivedGetterExpression != null;
 			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TYPE:
@@ -1236,6 +1288,7 @@
 				case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__UNIQUE_ENTRY: return OSBPTypesPackage.LATTRIBUTE__UNIQUE_ENTRY;
 				case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__ATTRIBUTE_HIDDEN: return OSBPTypesPackage.LATTRIBUTE__ATTRIBUTE_HIDDEN;
 				case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__ATTRIBUTE_READ_ONLY: return OSBPTypesPackage.LATTRIBUTE__ATTRIBUTE_READ_ONLY;
+				case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__EXTRA_STYLE: return OSBPTypesPackage.LATTRIBUTE__EXTRA_STYLE;
 				case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DERIVED_GETTER_EXPRESSION: return OSBPTypesPackage.LATTRIBUTE__DERIVED_GETTER_EXPRESSION;
 				case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TYPE: return OSBPTypesPackage.LATTRIBUTE__TYPE;
 				case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__PROPERTIES: return OSBPTypesPackage.LATTRIBUTE__PROPERTIES;
@@ -1271,6 +1324,7 @@
 				case OSBPTypesPackage.LATTRIBUTE__UNIQUE_ENTRY: return OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__UNIQUE_ENTRY;
 				case OSBPTypesPackage.LATTRIBUTE__ATTRIBUTE_HIDDEN: return OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__ATTRIBUTE_HIDDEN;
 				case OSBPTypesPackage.LATTRIBUTE__ATTRIBUTE_READ_ONLY: return OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__ATTRIBUTE_READ_ONLY;
+				case OSBPTypesPackage.LATTRIBUTE__EXTRA_STYLE: return OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__EXTRA_STYLE;
 				case OSBPTypesPackage.LATTRIBUTE__DERIVED_GETTER_EXPRESSION: return OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DERIVED_GETTER_EXPRESSION;
 				case OSBPTypesPackage.LATTRIBUTE__TYPE: return OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TYPE;
 				case OSBPTypesPackage.LATTRIBUTE__PROPERTIES: return OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__PROPERTIES;
@@ -1321,6 +1375,8 @@
 		result.append(attributeHidden);
 		result.append(", attributeReadOnly: ");
 		result.append(attributeReadOnly);
+		result.append(", extraStyle: ");
+		result.append(extraStyle);
 		result.append(", isGrouped: ");
 		result.append(isGrouped);
 		result.append(", groupName: ");
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoAbstractReferenceImpl.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoAbstractReferenceImpl.java
index 552a1d6..25a190f 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoAbstractReferenceImpl.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoAbstractReferenceImpl.java
@@ -57,6 +57,8 @@
  *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractReferenceImpl#isAsGrid <em>As Grid</em>}</li>
  *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractReferenceImpl#isAsTable <em>As Table</em>}</li>
  *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractReferenceImpl#isSideKick <em>Side Kick</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractReferenceImpl#isReferenceHidden <em>Reference Hidden</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractReferenceImpl#isReferenceReadOnly <em>Reference Read Only</em>}</li>
  *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractReferenceImpl#getType <em>Type</em>}</li>
  * </ul>
  *
@@ -204,6 +206,46 @@
 	protected boolean sideKick = SIDE_KICK_EDEFAULT;
 
 	/**
+	 * The default value of the '{@link #isReferenceHidden() <em>Reference Hidden</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isReferenceHidden()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean REFERENCE_HIDDEN_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isReferenceHidden() <em>Reference Hidden</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isReferenceHidden()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean referenceHidden = REFERENCE_HIDDEN_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isReferenceReadOnly() <em>Reference Read Only</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isReferenceReadOnly()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean REFERENCE_READ_ONLY_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isReferenceReadOnly() <em>Reference Read Only</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isReferenceReadOnly()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean referenceReadOnly = REFERENCE_READ_ONLY_EDEFAULT;
+
+	/**
 	 * The cached value of the '{@link #getType() <em>Type</em>}' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -387,6 +429,48 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public boolean isReferenceHidden() {
+		return referenceHidden;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setReferenceHidden(boolean newReferenceHidden) {
+		boolean oldReferenceHidden = referenceHidden;
+		referenceHidden = newReferenceHidden;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__REFERENCE_HIDDEN, oldReferenceHidden, referenceHidden));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isReferenceReadOnly() {
+		return referenceReadOnly;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setReferenceReadOnly(boolean newReferenceReadOnly) {
+		boolean oldReferenceReadOnly = referenceReadOnly;
+		referenceReadOnly = newReferenceReadOnly;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__REFERENCE_READ_ONLY, oldReferenceReadOnly, referenceReadOnly));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public LDto getType() {
 		if (type != null && type.eIsProxy()) {
 			InternalEObject oldType = (InternalEObject)type;
@@ -492,6 +576,10 @@
 				return isAsTable();
 			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__SIDE_KICK:
 				return isSideKick();
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__REFERENCE_HIDDEN:
+				return isReferenceHidden();
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__REFERENCE_READ_ONLY:
+				return isReferenceReadOnly();
 			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__TYPE:
 				if (resolve) return getType();
 				return basicGetType();
@@ -534,6 +622,12 @@
 			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__SIDE_KICK:
 				setSideKick((Boolean)newValue);
 				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__REFERENCE_HIDDEN:
+				setReferenceHidden((Boolean)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__REFERENCE_READ_ONLY:
+				setReferenceReadOnly((Boolean)newValue);
+				return;
 			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__TYPE:
 				setType((LDto)newValue);
 				return;
@@ -573,6 +667,12 @@
 			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__SIDE_KICK:
 				setSideKick(SIDE_KICK_EDEFAULT);
 				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__REFERENCE_HIDDEN:
+				setReferenceHidden(REFERENCE_HIDDEN_EDEFAULT);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__REFERENCE_READ_ONLY:
+				setReferenceReadOnly(REFERENCE_READ_ONLY_EDEFAULT);
+				return;
 			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__TYPE:
 				setType((LDto)null);
 				return;
@@ -604,6 +704,10 @@
 				return asTable != AS_TABLE_EDEFAULT;
 			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__SIDE_KICK:
 				return sideKick != SIDE_KICK_EDEFAULT;
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__REFERENCE_HIDDEN:
+				return referenceHidden != REFERENCE_HIDDEN_EDEFAULT;
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__REFERENCE_READ_ONLY:
+				return referenceReadOnly != REFERENCE_READ_ONLY_EDEFAULT;
 			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__TYPE:
 				return type != null;
 		}
@@ -627,6 +731,8 @@
 				case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__AS_GRID: return OSBPTypesPackage.LREFERENCE__AS_GRID;
 				case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__AS_TABLE: return OSBPTypesPackage.LREFERENCE__AS_TABLE;
 				case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__SIDE_KICK: return OSBPTypesPackage.LREFERENCE__SIDE_KICK;
+				case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__REFERENCE_HIDDEN: return OSBPTypesPackage.LREFERENCE__REFERENCE_HIDDEN;
+				case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__REFERENCE_READ_ONLY: return OSBPTypesPackage.LREFERENCE__REFERENCE_READ_ONLY;
 				default: return -1;
 			}
 		}
@@ -650,6 +756,8 @@
 				case OSBPTypesPackage.LREFERENCE__AS_GRID: return OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__AS_GRID;
 				case OSBPTypesPackage.LREFERENCE__AS_TABLE: return OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__AS_TABLE;
 				case OSBPTypesPackage.LREFERENCE__SIDE_KICK: return OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__SIDE_KICK;
+				case OSBPTypesPackage.LREFERENCE__REFERENCE_HIDDEN: return OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__REFERENCE_HIDDEN;
+				case OSBPTypesPackage.LREFERENCE__REFERENCE_READ_ONLY: return OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__REFERENCE_READ_ONLY;
 				default: return -1;
 			}
 		}
@@ -678,6 +786,10 @@
 		result.append(asTable);
 		result.append(", sideKick: ");
 		result.append(sideKick);
+		result.append(", referenceHidden: ");
+		result.append(referenceHidden);
+		result.append(", referenceReadOnly: ");
+		result.append(referenceReadOnly);
 		result.append(')');
 		return result.toString();
 	}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoImpl.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoImpl.java
index a1a86f0..61a5a21 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoImpl.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoImpl.java
@@ -49,6 +49,7 @@
 import org.eclipse.osbp.dsl.semantic.dto.LDtoOperation;
 import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
 import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+import org.eclipse.osbp.runtime.common.annotations.HistIsCurrent;
 import org.eclipse.xtext.xbase.lib.CollectionLiterals;
 import org.eclipse.xtext.xbase.lib.Functions.Function1;
 import org.eclipse.xtext.xbase.lib.IterableExtensions;
@@ -482,6 +483,20 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public LDtoAbstractAttribute getHistCurrentAttribute() {
+		final Function1<LDtoAbstractAttribute, Boolean> _function = new Function1<LDtoAbstractAttribute, Boolean>() {
+			public Boolean apply(final LDtoAbstractAttribute it) {
+				return Boolean.valueOf(it.getResolvedAnnotations().contains(HistIsCurrent.class));
+			}
+		};
+		return IterableExtensions.<LDtoAbstractAttribute>findFirst(Iterables.<LDtoAbstractAttribute>filter(this.getAllFeatures(), LDtoAbstractAttribute.class), _function);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	@SuppressWarnings("unchecked")
 	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
diff --git a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/OSBPDtoPackageImpl.java b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/OSBPDtoPackageImpl.java
index 206792a..2a06ea2 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/OSBPDtoPackageImpl.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/emf-gen/org/eclipse/osbp/dsl/semantic/dto/impl/OSBPDtoPackageImpl.java
@@ -702,6 +702,8 @@
 
 		addEOperation(lDtoEClass, theEcorePackage.getEBoolean(), "isHistorizedOrTimedependent", 0, 1, !IS_UNIQUE, IS_ORDERED);
 
+		addEOperation(lDtoEClass, this.getLDtoAbstractAttribute(), "getHistCurrentAttribute", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
 		initEClass(lAutoInheritDtoEClass, LAutoInheritDto.class, "LAutoInheritDto", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
 		initEClass(lDtoMapperEClass, LDtoMapper.class, "LDtoMapper", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
diff --git a/org.eclipse.osbp.dsl.dto.xtext/model/dto.xcore b/org.eclipse.osbp.dsl.dto.xtext/model/dto.xcore
index 705a808..30b19ce 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/model/dto.xcore
+++ b/org.eclipse.osbp.dsl.dto.xtext/model/dto.xcore
@@ -178,6 +178,12 @@
 	op boolean isHistorizedOrTimedependent() {
 		return isHistorized || isTimedependent
 	}
+	
+	op LDtoAbstractAttribute getHistCurrentAttribute() {
+		return allFeatures.filter(typeof(LDtoAbstractAttribute)).findFirst [
+			it.resolvedAnnotations.contains(org.eclipse.osbp.runtime.common.annotations.HistIsCurrent)
+		]
+	}
 }
 
 class LAutoInheritDto extends LDto {
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammarLexer.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammarLexer.java
index 1b6b1ee..720c271 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammarLexer.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammarLexer.java
@@ -1,3 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
 package org.eclipse.osbp.dsl.dto.xtext.parser.antlr.internal;
 
 // Hack: Use our own Lexer superclass by means of import. 
@@ -5932,4 +5942,4 @@
     }
  
 
-}
\ No newline at end of file
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/imports/ShouldImportProvider.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/imports/ShouldImportProvider.java
index f18d8b8..9d019bd 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/imports/ShouldImportProvider.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/imports/ShouldImportProvider.java
@@ -18,6 +18,7 @@
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EReference;
+import org.eclipse.osbp.dsl.semantic.common.types.LScalarType;
 import org.eclipse.osbp.dsl.semantic.common.types.LType;
 import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
 import org.eclipse.osbp.xtext.oxtype.imports.DefaultShouldImportProvider;
@@ -26,12 +27,12 @@
 
 	@Override
 	protected boolean doShouldImport(EObject toImport, EReference eRef, EObject context) {
-		return toImport instanceof LType;
+		return toImport instanceof LType || toImport instanceof LScalarType;
 	}
 
 	protected boolean doShouldProposeAllElements(EObject object, EReference reference) {
 		EClass type = reference.getEReferenceType();
-		return OSBPTypesPackage.Literals.LTYPE.isSuperTypeOf(type);
+		return OSBPTypesPackage.Literals.LTYPE.isSuperTypeOf(type) || OSBPTypesPackage.Literals.LSCALAR_TYPE.isSuperTypeOf(type);
 	}
 
 }
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/jvmmodel/AnnotationCompiler.xtend b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/jvmmodel/AnnotationCompiler.xtend
index dde7822..28b9540 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/jvmmodel/AnnotationCompiler.xtend
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/jvmmodel/AnnotationCompiler.xtend
@@ -69,6 +69,7 @@
 import org.eclipse.xtext.common.types.JvmTypeReference
 import org.eclipse.xtext.common.types.util.TypeReferences
 import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder
+import org.eclipse.osbp.runtime.common.annotations.ExtraStyle
 
 /** 
  * This class is responsible to generate the Annotations defined in the entity model
@@ -173,6 +174,12 @@
 			field.annotations += prop.toAnnotation(typeof(ReadOnly))
 		}
 
+		if (prop.extraStyle !== null) {
+			val styleAnnotation = prop.toAnnotation(typeof(ExtraStyle))
+			styleAnnotation.addAnnAttr(prop, "name", prop.extraStyle)
+			field.annotations += styleAnnotation
+		}
+
 		// create the properties annotations
 		prop.toPropertiesAnnotation(mergeKeyAndValues(prop), field)
 
@@ -209,6 +216,12 @@
 			field.annotations += prop.toAnnotation(typeof(ReadOnly))
 		}
 
+		if (prop.inheritedFeature.extraStyle !== null) {
+			val styleAnnotation = prop.toAnnotation(typeof(ExtraStyle))
+			styleAnnotation.addAnnAttr(prop, "name", prop.inheritedFeature.extraStyle)
+			field.annotations += styleAnnotation
+		}
+
 		// create the properties annotations
 		prop.toPropertiesAnnotation(mergeKeyAndValues(prop), field)
 
@@ -352,6 +365,13 @@
 		if (inheritedRef.sideKick) {
 			field.annotations += prop.toAnnotation(typeof(SideKick))
 		}
+		if (inheritedRef.referenceHidden) {
+			field.annotations += prop.toAnnotation(typeof(Hidden))
+		}
+
+		if (inheritedRef.referenceReadOnly) {
+			field.annotations += prop.toAnnotation(typeof(ReadOnly))
+		}
 
 	}
 
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/jvmmodel/DtoGrammarJvmModelInferrer.xtend b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/jvmmodel/DtoGrammarJvmModelInferrer.xtend
index 6186944..18a9163 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/jvmmodel/DtoGrammarJvmModelInferrer.xtend
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/jvmmodel/DtoGrammarJvmModelInferrer.xtend
@@ -47,6 +47,7 @@
 import org.eclipse.xtext.xbase.jvmmodel.IJvmDeclaredTypeAcceptor
 import org.slf4j.Logger
 import org.slf4j.LoggerFactory
+import org.eclipse.osbp.dsl.common.datatypes.IDtoHistorized
 
 /**
  * <p>Infers a JVM model from the source model.</p> 
@@ -125,7 +126,11 @@
 			if (dto.getSuperType !== null && !dto.getSuperType.fullyQualifiedName.toString.empty) {
 				superTypes += dto.superType.toTypeReference
 			}
-			superTypes += references.getTypeForName(typeof(IDto), dto, null)
+			if(dto.isHistorizedOrTimedependent) {
+				superTypes += references.getTypeForName(typeof(IDtoHistorized), dto, null)
+			} else {
+				superTypes += references.getTypeForName(typeof(IDto), dto, null)
+			}
 			superTypes += references.getTypeForName(typeof(Serializable), dto, null)
 			superTypes += references.getTypeForName(typeof(PropertyChangeListener), dto, null)
 			if (dto.getSuperType === null) {
diff --git a/org.eclipse.osbp.dsl.dto.xtext/xtend-gen/org/eclipse/osbp/dsl/dto/xtext/extensions/DtoModelExtensions.java b/org.eclipse.osbp.dsl.dto.xtext/xtend-gen/org/eclipse/osbp/dsl/dto/xtext/extensions/DtoModelExtensions.java
index 3a53900..847d636 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/xtend-gen/org/eclipse/osbp/dsl/dto/xtext/extensions/DtoModelExtensions.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/xtend-gen/org/eclipse/osbp/dsl/dto/xtext/extensions/DtoModelExtensions.java
@@ -217,12 +217,9 @@
         {
           LDto _type_1 = prop.getType();
           final LDto ref = ((LDto) _type_1);
-          final Function1<LDtoAbstractReference, Boolean> _function = new Function1<LDtoAbstractReference, Boolean>() {
-            @Override
-            public Boolean apply(final LDtoAbstractReference it) {
-              LFeature _opposite = DtoModelExtensions.this.opposite(it);
-              return Boolean.valueOf((_opposite == prop));
-            }
+          final Function1<LDtoAbstractReference, Boolean> _function = (LDtoAbstractReference it) -> {
+            LFeature _opposite_1 = this.opposite(it);
+            return Boolean.valueOf((_opposite_1 == prop));
           };
           _xblockexpression = IterableExtensions.<LDtoAbstractReference>findFirst(ref.getReferences(), _function);
         }
@@ -669,11 +666,8 @@
    * Returns all containment features that need to be copied.
    */
   public Iterable<LDtoFeature> getContainmentReferencesToCopy(final LDto dto) {
-    final Function1<LDtoFeature, Boolean> _function = new Function1<LDtoFeature, Boolean>() {
-      @Override
-      public Boolean apply(final LDtoFeature it) {
-        return Boolean.valueOf(DtoModelExtensions.this.isContainmentReference(it));
-      }
+    final Function1<LDtoFeature, Boolean> _function = (LDtoFeature it) -> {
+      return Boolean.valueOf(this.isContainmentReference(it));
     };
     return IterableExtensions.<LDtoFeature>filter(dto.getFeatures(), _function);
   }
@@ -730,11 +724,8 @@
    * Returns all attributes that need to be copied.
    */
   public Iterable<LDtoFeature> getAttributesToCopy(final LDto dto) {
-    final Function1<LDtoFeature, Boolean> _function = new Function1<LDtoFeature, Boolean>() {
-      @Override
-      public Boolean apply(final LDtoFeature it) {
-        return Boolean.valueOf(DtoModelExtensions.this.isAttribute(it));
-      }
+    final Function1<LDtoFeature, Boolean> _function = (LDtoFeature it) -> {
+      return Boolean.valueOf(this.isAttribute(it));
     };
     return IterableExtensions.<LDtoFeature>filter(dto.getFeatures(), _function);
   }
@@ -743,11 +734,8 @@
    * Returns all crossreferences that need to be copied.
    */
   public Iterable<LDtoFeature> getCrossReferencesToCopy(final LDto dto) {
-    final Function1<LDtoFeature, Boolean> _function = new Function1<LDtoFeature, Boolean>() {
-      @Override
-      public Boolean apply(final LDtoFeature it) {
-        return Boolean.valueOf(((!DtoModelExtensions.this.isContainerReference(it)) && DtoModelExtensions.this.isCrossReference(it)));
-      }
+    final Function1<LDtoFeature, Boolean> _function = (LDtoFeature it) -> {
+      return Boolean.valueOf(((!this.isContainerReference(it)) && this.isCrossReference(it)));
     };
     return IterableExtensions.<LDtoFeature>filter(dto.getFeatures(), _function);
   }
@@ -789,33 +777,21 @@
   }
   
   public Iterable<LDtoAbstractAttribute> collectAllAttributes(final LDto dto) {
-    final Function1<LFeature, Boolean> _function = new Function1<LFeature, Boolean>() {
-      @Override
-      public Boolean apply(final LFeature it) {
-        return Boolean.valueOf((it instanceof LDtoAbstractAttribute));
-      }
+    final Function1<LFeature, Boolean> _function = (LFeature it) -> {
+      return Boolean.valueOf((it instanceof LDtoAbstractAttribute));
     };
-    final Function1<LFeature, LDtoAbstractAttribute> _function_1 = new Function1<LFeature, LDtoAbstractAttribute>() {
-      @Override
-      public LDtoAbstractAttribute apply(final LFeature it) {
-        return ((LDtoAbstractAttribute) it);
-      }
+    final Function1<LFeature, LDtoAbstractAttribute> _function_1 = (LFeature it) -> {
+      return ((LDtoAbstractAttribute) it);
     };
     return IterableExtensions.map(IterableExtensions.filter(dto.getAllFeatures(), _function), _function_1);
   }
   
   public Iterable<LEntityAttribute> collectAllAttributes(final LEntity entity) {
-    final Function1<LEntityFeature, Boolean> _function = new Function1<LEntityFeature, Boolean>() {
-      @Override
-      public Boolean apply(final LEntityFeature it) {
-        return Boolean.valueOf((it instanceof LEntityAttribute));
-      }
+    final Function1<LEntityFeature, Boolean> _function = (LEntityFeature it) -> {
+      return Boolean.valueOf((it instanceof LEntityAttribute));
     };
-    final Function1<LEntityFeature, LEntityAttribute> _function_1 = new Function1<LEntityFeature, LEntityAttribute>() {
-      @Override
-      public LEntityAttribute apply(final LEntityFeature it) {
-        return ((LEntityAttribute) it);
-      }
+    final Function1<LEntityFeature, LEntityAttribute> _function_1 = (LEntityFeature it) -> {
+      return ((LEntityAttribute) it);
     };
     return IterableExtensions.<LEntityFeature, LEntityAttribute>map(IterableExtensions.<LEntityFeature>filter(entity.getAllFeatures(), _function), _function_1);
   }
diff --git a/org.eclipse.osbp.dsl.dto.xtext/xtend-gen/org/eclipse/osbp/dsl/dto/xtext/generator/ComponentGenerator.java b/org.eclipse.osbp.dsl.dto.xtext/xtend-gen/org/eclipse/osbp/dsl/dto/xtext/generator/ComponentGenerator.java
index 7b3ed82..31545b2 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/xtend-gen/org/eclipse/osbp/dsl/dto/xtext/generator/ComponentGenerator.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/xtend-gen/org/eclipse/osbp/dsl/dto/xtext/generator/ComponentGenerator.java
@@ -151,16 +151,13 @@
    */
   public String toOrString(final List<LType> types) {
     final StringBuilder b = new StringBuilder();
-    final Consumer<LType> _function = new Consumer<LType>() {
-      @Override
-      public void accept(final LType it) {
-        int _length = b.length();
-        boolean _greaterThan = (_length > 0);
-        if (_greaterThan) {
-          b.append("\n");
-        }
-        b.append(ComponentGenerator.this._iQualifiedNameProvider.getFullyQualifiedName(it).toString());
+    final Consumer<LType> _function = (LType it) -> {
+      int _length = b.length();
+      boolean _greaterThan = (_length > 0);
+      if (_greaterThan) {
+        b.append("\n");
       }
+      b.append(this._iQualifiedNameProvider.getFullyQualifiedName(it).toString());
     };
     types.forEach(_function);
     return b.toString();
diff --git a/org.eclipse.osbp.dsl.dto.xtext/xtend-gen/org/eclipse/osbp/dsl/dto/xtext/generator/Generator.java b/org.eclipse.osbp.dsl.dto.xtext/xtend-gen/org/eclipse/osbp/dsl/dto/xtext/generator/Generator.java
index 0a1c255..37a1d9d 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/xtend-gen/org/eclipse/osbp/dsl/dto/xtext/generator/Generator.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/xtend-gen/org/eclipse/osbp/dsl/dto/xtext/generator/Generator.java
@@ -95,18 +95,15 @@
   @Override
   public void doGenerate(final Resource input, final IFileSystemAccess fsa) {
     super.doGenerate(input, fsa);
-    final Function1<EObject, Boolean> _function = new Function1<EObject, Boolean>() {
-      @Override
-      public Boolean apply(final EObject it) {
-        boolean _xifexpression = false;
-        if ((it instanceof LDto)) {
-          LType _wrappedType = ((LDto)it).getWrappedType();
-          _xifexpression = (!Objects.equal(_wrappedType, null));
-        } else {
-          _xifexpression = false;
-        }
-        return Boolean.valueOf(_xifexpression);
+    final Function1<EObject, Boolean> _function = (EObject it) -> {
+      boolean _xifexpression = false;
+      if ((it instanceof LDto)) {
+        LType _wrappedType = ((LDto)it).getWrappedType();
+        _xifexpression = (!Objects.equal(_wrappedType, null));
+      } else {
+        _xifexpression = false;
       }
+      return Boolean.valueOf(_xifexpression);
     };
     List<EObject> _list = IteratorExtensions.<EObject>toList(IteratorExtensions.<EObject>filter(input.getAllContents(), _function));
     for (final EObject tmp : _list) {
diff --git a/org.eclipse.osbp.dsl.dto.xtext/xtend-gen/org/eclipse/osbp/dsl/dto/xtext/jvmmodel/AnnotationCompiler.java b/org.eclipse.osbp.dsl.dto.xtext/xtend-gen/org/eclipse/osbp/dsl/dto/xtext/jvmmodel/AnnotationCompiler.java
index a22f02a..be60d16 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/xtend-gen/org/eclipse/osbp/dsl/dto/xtext/jvmmodel/AnnotationCompiler.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/xtend-gen/org/eclipse/osbp/dsl/dto/xtext/jvmmodel/AnnotationCompiler.java
@@ -58,6 +58,7 @@
 import org.eclipse.osbp.runtime.common.annotations.DomainDescription;
 import org.eclipse.osbp.runtime.common.annotations.DomainKey;
 import org.eclipse.osbp.runtime.common.annotations.DomainReference;
+import org.eclipse.osbp.runtime.common.annotations.ExtraStyle;
 import org.eclipse.osbp.runtime.common.annotations.Filter;
 import org.eclipse.osbp.runtime.common.annotations.FilterDepth;
 import org.eclipse.osbp.runtime.common.annotations.Hidden;
@@ -120,18 +121,12 @@
   private TypeReferences references;
   
   protected void _internalProcessAnnotation(final LDto dto, final JvmGenericType jvmType) {
-    final Function1<LAnnotationDef, Boolean> _function = new Function1<LAnnotationDef, Boolean>() {
-      @Override
-      public Boolean apply(final LAnnotationDef it) {
-        boolean _isExclude = it.isExclude();
-        return Boolean.valueOf((!_isExclude));
-      }
+    final Function1<LAnnotationDef, Boolean> _function = (LAnnotationDef it) -> {
+      boolean _isExclude = it.isExclude();
+      return Boolean.valueOf((!_isExclude));
     };
-    final Function1<LAnnotationDef, XAnnotation> _function_1 = new Function1<LAnnotationDef, XAnnotation>() {
-      @Override
-      public XAnnotation apply(final LAnnotationDef it) {
-        return it.getAnnotation();
-      }
+    final Function1<LAnnotationDef, XAnnotation> _function_1 = (LAnnotationDef it) -> {
+      return it.getAnnotation();
     };
     this._jvmTypesBuilder.translateAnnotationsTo(IterableExtensions.<LAnnotationDef, XAnnotation>map(IterableExtensions.<LAnnotationDef>filter(dto.getResolvedAnnotations(), _function), _function_1), jvmType);
     boolean _isHistorized = dto.isHistorized();
@@ -146,35 +141,23 @@
   }
   
   protected void _internalProcessAnnotation(final LDtoReference prop, final JvmGenericType jvmType) {
-    final Function1<LAnnotationDef, Boolean> _function = new Function1<LAnnotationDef, Boolean>() {
-      @Override
-      public Boolean apply(final LAnnotationDef it) {
-        boolean _isExclude = it.isExclude();
-        return Boolean.valueOf((!_isExclude));
-      }
+    final Function1<LAnnotationDef, Boolean> _function = (LAnnotationDef it) -> {
+      boolean _isExclude = it.isExclude();
+      return Boolean.valueOf((!_isExclude));
     };
-    final Function1<LAnnotationDef, XAnnotation> _function_1 = new Function1<LAnnotationDef, XAnnotation>() {
-      @Override
-      public XAnnotation apply(final LAnnotationDef it) {
-        return it.getAnnotation();
-      }
+    final Function1<LAnnotationDef, XAnnotation> _function_1 = (LAnnotationDef it) -> {
+      return it.getAnnotation();
     };
     this._jvmTypesBuilder.translateAnnotationsTo(IterableExtensions.<LAnnotationDef, XAnnotation>map(IterableExtensions.<LAnnotationDef>filter(prop.getResolvedAnnotations(), _function), _function_1), jvmType);
   }
   
   protected void _internalProcessAnnotation(final LDtoReference prop, final JvmField field) {
-    final Function1<LAnnotationDef, Boolean> _function = new Function1<LAnnotationDef, Boolean>() {
-      @Override
-      public Boolean apply(final LAnnotationDef it) {
-        boolean _isExclude = it.isExclude();
-        return Boolean.valueOf((!_isExclude));
-      }
+    final Function1<LAnnotationDef, Boolean> _function = (LAnnotationDef it) -> {
+      boolean _isExclude = it.isExclude();
+      return Boolean.valueOf((!_isExclude));
     };
-    final Function1<LAnnotationDef, XAnnotation> _function_1 = new Function1<LAnnotationDef, XAnnotation>() {
-      @Override
-      public XAnnotation apply(final LAnnotationDef it) {
-        return it.getAnnotation();
-      }
+    final Function1<LAnnotationDef, XAnnotation> _function_1 = (LAnnotationDef it) -> {
+      return it.getAnnotation();
     };
     this._jvmTypesBuilder.translateAnnotationsTo(IterableExtensions.<LAnnotationDef, XAnnotation>map(IterableExtensions.<LAnnotationDef>filter(prop.getResolvedAnnotations(), _function), _function_1), field);
     EList<JvmAnnotationReference> _annotations = field.getAnnotations();
@@ -205,18 +188,12 @@
   }
   
   protected void _internalProcessAnnotation(final LDtoAttribute prop, final JvmField field) {
-    final Function1<LAnnotationDef, Boolean> _function = new Function1<LAnnotationDef, Boolean>() {
-      @Override
-      public Boolean apply(final LAnnotationDef it) {
-        boolean _isExclude = it.isExclude();
-        return Boolean.valueOf((!_isExclude));
-      }
+    final Function1<LAnnotationDef, Boolean> _function = (LAnnotationDef it) -> {
+      boolean _isExclude = it.isExclude();
+      return Boolean.valueOf((!_isExclude));
     };
-    final Function1<LAnnotationDef, XAnnotation> _function_1 = new Function1<LAnnotationDef, XAnnotation>() {
-      @Override
-      public XAnnotation apply(final LAnnotationDef it) {
-        return it.getAnnotation();
-      }
+    final Function1<LAnnotationDef, XAnnotation> _function_1 = (LAnnotationDef it) -> {
+      return it.getAnnotation();
     };
     this._jvmTypesBuilder.translateAnnotationsTo(IterableExtensions.<LAnnotationDef, XAnnotation>map(IterableExtensions.<LAnnotationDef>filter(prop.getResolvedAnnotations(), _function), _function_1), field);
     if ((prop.isId() || prop.isUuid())) {
@@ -260,6 +237,14 @@
       JvmAnnotationReference _annotation_6 = this._jvmTypesBuilder.toAnnotation(prop, ReadOnly.class);
       this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_6, _annotation_6);
     }
+    String _extraStyle = prop.getExtraStyle();
+    boolean _tripleNotEquals = (_extraStyle != null);
+    if (_tripleNotEquals) {
+      final JvmAnnotationReference styleAnnotation = this._jvmTypesBuilder.toAnnotation(prop, ExtraStyle.class);
+      this._annotationExtension.addAnnAttr(styleAnnotation, prop, "name", prop.getExtraStyle());
+      EList<JvmAnnotationReference> _annotations_7 = field.getAnnotations();
+      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_7, styleAnnotation);
+    }
     this.toPropertiesAnnotation(prop, this.mergeKeyAndValues(prop), field);
     boolean _isValidAllowed = this.isValidAllowed(prop.getType());
     if (_isValidAllowed) {
@@ -269,18 +254,12 @@
   }
   
   protected void _internalProcessAnnotation(final LDtoInheritedAttribute prop, final JvmField field) {
-    final Function1<LAnnotationDef, Boolean> _function = new Function1<LAnnotationDef, Boolean>() {
-      @Override
-      public Boolean apply(final LAnnotationDef it) {
-        boolean _isExclude = it.isExclude();
-        return Boolean.valueOf((!_isExclude));
-      }
+    final Function1<LAnnotationDef, Boolean> _function = (LAnnotationDef it) -> {
+      boolean _isExclude = it.isExclude();
+      return Boolean.valueOf((!_isExclude));
     };
-    final Function1<LAnnotationDef, XAnnotation> _function_1 = new Function1<LAnnotationDef, XAnnotation>() {
-      @Override
-      public XAnnotation apply(final LAnnotationDef it) {
-        return it.getAnnotation();
-      }
+    final Function1<LAnnotationDef, XAnnotation> _function_1 = (LAnnotationDef it) -> {
+      return it.getAnnotation();
     };
     this._jvmTypesBuilder.translateAnnotationsTo(IterableExtensions.<LAnnotationDef, XAnnotation>map(IterableExtensions.<LAnnotationDef>filter(prop.getResolvedAnnotations(), _function), _function_1), field);
     if ((prop.getInheritedFeature().isId() || prop.getInheritedFeature().isUuid())) {
@@ -318,6 +297,14 @@
       JvmAnnotationReference _annotation_5 = this._jvmTypesBuilder.toAnnotation(prop, ReadOnly.class);
       this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_5, _annotation_5);
     }
+    String _extraStyle = prop.getInheritedFeature().getExtraStyle();
+    boolean _tripleNotEquals = (_extraStyle != null);
+    if (_tripleNotEquals) {
+      final JvmAnnotationReference styleAnnotation = this._jvmTypesBuilder.toAnnotation(prop, ExtraStyle.class);
+      this._annotationExtension.addAnnAttr(styleAnnotation, prop, "name", prop.getInheritedFeature().getExtraStyle());
+      EList<JvmAnnotationReference> _annotations_6 = field.getAnnotations();
+      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_6, styleAnnotation);
+    }
     this.toPropertiesAnnotation(prop, this.mergeKeyAndValues(prop), field);
     boolean _isValidAllowed = this.isValidAllowed(prop.getInheritedFeature().getType());
     if (_isValidAllowed) {
@@ -328,21 +315,21 @@
     }
     boolean _isFiltering = prop.getInheritedFeature().isFiltering();
     if (_isFiltering) {
-      EList<JvmAnnotationReference> _annotations_6 = field.getAnnotations();
+      EList<JvmAnnotationReference> _annotations_7 = field.getAnnotations();
       JvmAnnotationReference _annotation_6 = this._jvmTypesBuilder.toAnnotation(prop, Filter.class);
-      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_6, _annotation_6);
+      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_7, _annotation_6);
     }
     boolean _isRangeFiltering = prop.getInheritedFeature().isRangeFiltering();
     if (_isRangeFiltering) {
-      EList<JvmAnnotationReference> _annotations_7 = field.getAnnotations();
+      EList<JvmAnnotationReference> _annotations_8 = field.getAnnotations();
       JvmAnnotationReference _annotation_7 = this._jvmTypesBuilder.toAnnotation(prop, Range.class);
-      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_7, _annotation_7);
+      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_8, _annotation_7);
     }
     boolean _isUniqueEntry = prop.getInheritedFeature().isUniqueEntry();
     if (_isUniqueEntry) {
-      EList<JvmAnnotationReference> _annotations_8 = field.getAnnotations();
+      EList<JvmAnnotationReference> _annotations_9 = field.getAnnotations();
       JvmAnnotationReference _annotation_8 = this._jvmTypesBuilder.toAnnotation(prop, UniqueEntry.class);
-      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_8, _annotation_8);
+      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_9, _annotation_8);
     }
     LAttribute _inheritedFeature = prop.getInheritedFeature();
     if ((_inheritedFeature instanceof LEntityAttribute)) {
@@ -351,71 +338,71 @@
       if ((att.getEntity().isHistorized() || att.getEntity().isTimedependent())) {
         boolean _isHistorizedValidUntilAnnotation = this._annotationExtension.isHistorizedValidUntilAnnotation(att);
         if (_isHistorizedValidUntilAnnotation) {
-          EList<JvmAnnotationReference> _annotations_9 = field.getAnnotations();
+          EList<JvmAnnotationReference> _annotations_10 = field.getAnnotations();
           JvmAnnotationReference _annotation_9 = this._jvmTypesBuilder.toAnnotation(prop, HistValidUntil.class);
-          this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_9, _annotation_9);
+          this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_10, _annotation_9);
         }
         boolean _isHistorizedIsCurrentAnnotation = this._annotationExtension.isHistorizedIsCurrentAnnotation(att);
         if (_isHistorizedIsCurrentAnnotation) {
-          EList<JvmAnnotationReference> _annotations_10 = field.getAnnotations();
+          EList<JvmAnnotationReference> _annotations_11 = field.getAnnotations();
           JvmAnnotationReference _annotation_10 = this._jvmTypesBuilder.toAnnotation(prop, HistIsCurrent.class);
-          this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_10, _annotation_10);
+          this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_11, _annotation_10);
         }
         boolean _isHistorizedIsCustomVersionAnnotation = this._annotationExtension.isHistorizedIsCustomVersionAnnotation(att);
         if (_isHistorizedIsCustomVersionAnnotation) {
-          EList<JvmAnnotationReference> _annotations_11 = field.getAnnotations();
+          EList<JvmAnnotationReference> _annotations_12 = field.getAnnotations();
           JvmAnnotationReference _annotation_11 = this._jvmTypesBuilder.toAnnotation(prop, HistIsCustomVersion.class);
-          this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_11, _annotation_11);
+          this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_12, _annotation_11);
         }
       }
       boolean _isOnKanbanCard = att.isOnKanbanCard();
       if (_isOnKanbanCard) {
-        EList<JvmAnnotationReference> _annotations_12 = field.getAnnotations();
+        EList<JvmAnnotationReference> _annotations_13 = field.getAnnotations();
         JvmAnnotationReference _annotation_12 = this._jvmTypesBuilder.toAnnotation(prop, OnKanbanCard.class);
-        this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_12, _annotation_12);
+        this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_13, _annotation_12);
       }
       boolean _isAsKanbanOrdering = att.isAsKanbanOrdering();
       if (_isAsKanbanOrdering) {
-        EList<JvmAnnotationReference> _annotations_13 = field.getAnnotations();
+        EList<JvmAnnotationReference> _annotations_14 = field.getAnnotations();
         JvmAnnotationReference _annotation_13 = this._jvmTypesBuilder.toAnnotation(prop, AsKanbanOrdering.class);
-        this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_13, _annotation_13);
+        this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_14, _annotation_13);
       }
       boolean _isAsKanbanState = att.isAsKanbanState();
       if (_isAsKanbanState) {
-        EList<JvmAnnotationReference> _annotations_14 = field.getAnnotations();
+        EList<JvmAnnotationReference> _annotations_15 = field.getAnnotations();
         JvmAnnotationReference _annotation_14 = this._jvmTypesBuilder.toAnnotation(prop, AsKanbanState.class);
-        this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_14, _annotation_14);
+        this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_15, _annotation_14);
       }
       boolean _annotationPresent = this.annotationPresent(att, this.references.findDeclaredType(UpdateBy.class, att));
       if (_annotationPresent) {
-        EList<JvmAnnotationReference> _annotations_15 = field.getAnnotations();
+        EList<JvmAnnotationReference> _annotations_16 = field.getAnnotations();
         JvmAnnotationReference _annotation_15 = this._jvmTypesBuilder.toAnnotation(prop, UpdateBy.class);
-        this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_15, _annotation_15);
+        this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_16, _annotation_15);
       }
       boolean _annotationPresent_1 = this.annotationPresent(att, this.references.findDeclaredType(UpdateAt.class, att));
       if (_annotationPresent_1) {
-        EList<JvmAnnotationReference> _annotations_16 = field.getAnnotations();
+        EList<JvmAnnotationReference> _annotations_17 = field.getAnnotations();
         JvmAnnotationReference _annotation_16 = this._jvmTypesBuilder.toAnnotation(prop, UpdateAt.class);
-        this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_16, _annotation_16);
+        this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_17, _annotation_16);
       }
       boolean _annotationPresent_2 = this.annotationPresent(att, this.references.findDeclaredType(CreateBy.class, att));
       if (_annotationPresent_2) {
-        EList<JvmAnnotationReference> _annotations_17 = field.getAnnotations();
+        EList<JvmAnnotationReference> _annotations_18 = field.getAnnotations();
         JvmAnnotationReference _annotation_17 = this._jvmTypesBuilder.toAnnotation(prop, CreateBy.class);
-        this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_17, _annotation_17);
+        this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_18, _annotation_17);
       }
       boolean _annotationPresent_3 = this.annotationPresent(att, this.references.findDeclaredType(CreateAt.class, att));
       if (_annotationPresent_3) {
-        EList<JvmAnnotationReference> _annotations_18 = field.getAnnotations();
+        EList<JvmAnnotationReference> _annotations_19 = field.getAnnotations();
         JvmAnnotationReference _annotation_18 = this._jvmTypesBuilder.toAnnotation(prop, CreateAt.class);
-        this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_18, _annotation_18);
+        this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_19, _annotation_18);
       }
       boolean _isIsGrouped = att.isIsGrouped();
       if (_isIsGrouped) {
         final JvmAnnotationReference groupAnnotation = this._jvmTypesBuilder.toAnnotation(prop, UIGroup.class);
         this._annotationExtension.addAnnAttr(groupAnnotation, prop, "name", att.getGroupName());
-        EList<JvmAnnotationReference> _annotations_19 = field.getAnnotations();
-        this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_19, groupAnnotation);
+        EList<JvmAnnotationReference> _annotations_20 = field.getAnnotations();
+        this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_20, groupAnnotation);
       }
     }
     this.toInheritedConstraintAnnotations(prop.getInheritedFeature(), field);
@@ -434,18 +421,12 @@
   }
   
   protected void _internalProcessAnnotation(final LDtoInheritedReference prop, final JvmField field) {
-    final Function1<LAnnotationDef, Boolean> _function = new Function1<LAnnotationDef, Boolean>() {
-      @Override
-      public Boolean apply(final LAnnotationDef it) {
-        boolean _isExclude = it.isExclude();
-        return Boolean.valueOf((!_isExclude));
-      }
+    final Function1<LAnnotationDef, Boolean> _function = (LAnnotationDef it) -> {
+      boolean _isExclude = it.isExclude();
+      return Boolean.valueOf((!_isExclude));
     };
-    final Function1<LAnnotationDef, XAnnotation> _function_1 = new Function1<LAnnotationDef, XAnnotation>() {
-      @Override
-      public XAnnotation apply(final LAnnotationDef it) {
-        return it.getAnnotation();
-      }
+    final Function1<LAnnotationDef, XAnnotation> _function_1 = (LAnnotationDef it) -> {
+      return it.getAnnotation();
     };
     this._jvmTypesBuilder.translateAnnotationsTo(IterableExtensions.<LAnnotationDef, XAnnotation>map(IterableExtensions.<LAnnotationDef>filter(prop.getResolvedAnnotations(), _function), _function_1), field);
     EList<JvmAnnotationReference> _annotations = field.getAnnotations();
@@ -512,43 +493,43 @@
       JvmAnnotationReference _annotation_3 = this._jvmTypesBuilder.toAnnotation(prop, SideKick.class);
       this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_5, _annotation_3);
     }
+    boolean _isReferenceHidden = inheritedRef.isReferenceHidden();
+    if (_isReferenceHidden) {
+      EList<JvmAnnotationReference> _annotations_6 = field.getAnnotations();
+      JvmAnnotationReference _annotation_4 = this._jvmTypesBuilder.toAnnotation(prop, Hidden.class);
+      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_6, _annotation_4);
+    }
+    boolean _isReferenceReadOnly = inheritedRef.isReferenceReadOnly();
+    if (_isReferenceReadOnly) {
+      EList<JvmAnnotationReference> _annotations_7 = field.getAnnotations();
+      JvmAnnotationReference _annotation_5 = this._jvmTypesBuilder.toAnnotation(prop, ReadOnly.class);
+      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_7, _annotation_5);
+    }
   }
   
   public void addConstraintsAnno(final LResultFilters constraints, final JvmField jvmField, final LDto mapsTo) {
-    final Function1<LResultFilter, Boolean> _function = new Function1<LResultFilter, Boolean>() {
-      @Override
-      public Boolean apply(final LResultFilter it) {
-        return Boolean.valueOf((it instanceof LAttributeMatchingConstraint));
-      }
+    final Function1<LResultFilter, Boolean> _function = (LResultFilter it) -> {
+      return Boolean.valueOf((it instanceof LAttributeMatchingConstraint));
     };
     boolean _isEmpty = IterableExtensions.isEmpty(IterableExtensions.<LResultFilter>filter(constraints.getResultFilters(), _function));
     boolean _not = (!_isEmpty);
     if (_not) {
       final ArrayList<JvmAnnotationReference> innerAnnotations = CollectionLiterals.<JvmAnnotationReference>newArrayList();
-      final Function1<LResultFilter, Boolean> _function_1 = new Function1<LResultFilter, Boolean>() {
-        @Override
-        public Boolean apply(final LResultFilter it) {
-          return Boolean.valueOf((it instanceof LAttributeMatchingConstraint));
-        }
+      final Function1<LResultFilter, Boolean> _function_1 = (LResultFilter it) -> {
+        return Boolean.valueOf((it instanceof LAttributeMatchingConstraint));
       };
-      final Function1<LResultFilter, LAttributeMatchingConstraint> _function_2 = new Function1<LResultFilter, LAttributeMatchingConstraint>() {
-        @Override
-        public LAttributeMatchingConstraint apply(final LResultFilter it) {
-          return ((LAttributeMatchingConstraint) it);
-        }
+      final Function1<LResultFilter, LAttributeMatchingConstraint> _function_2 = (LResultFilter it) -> {
+        return ((LAttributeMatchingConstraint) it);
       };
-      final Consumer<LAttributeMatchingConstraint> _function_3 = new Consumer<LAttributeMatchingConstraint>() {
-        @Override
-        public void accept(final LAttributeMatchingConstraint it) {
-          final JvmTypeReference enumClassTypeRef = AnnotationCompiler.this.findReplacementEnum(it.getAttribute().getName(), mapsTo);
-          boolean _notEquals = (!Objects.equal(enumClassTypeRef, null));
-          if (_notEquals) {
-            final JvmAnnotationReference innerAnno = AnnotationCompiler.this._jvmTypesBuilder.toAnnotation(constraints, TargetEnumConstraint.class);
-            AnnotationCompiler.this._annotationExtension.addAnnAttr(innerAnno, it, "targetProperty", it.getAttribute().getName());
-            AnnotationCompiler.this._annotationExtension.addAnnAttr(innerAnno, it, "enumClass", enumClassTypeRef);
-            AnnotationCompiler.this._annotationExtension.addAnnAttr(innerAnno, it, "enumLiteral", it.getMatchingLiteral().getName());
-            innerAnnotations.add(innerAnno);
-          }
+      final Consumer<LAttributeMatchingConstraint> _function_3 = (LAttributeMatchingConstraint it) -> {
+        final JvmTypeReference enumClassTypeRef = this.findReplacementEnum(it.getAttribute().getName(), mapsTo);
+        boolean _notEquals = (!Objects.equal(enumClassTypeRef, null));
+        if (_notEquals) {
+          final JvmAnnotationReference innerAnno = this._jvmTypesBuilder.toAnnotation(constraints, TargetEnumConstraint.class);
+          this._annotationExtension.addAnnAttr(innerAnno, it, "targetProperty", it.getAttribute().getName());
+          this._annotationExtension.addAnnAttr(innerAnno, it, "enumClass", enumClassTypeRef);
+          this._annotationExtension.addAnnAttr(innerAnno, it, "enumLiteral", it.getMatchingLiteral().getName());
+          innerAnnotations.add(innerAnno);
         }
       };
       IterableExtensions.<LResultFilter, LAttributeMatchingConstraint>map(IterableExtensions.<LResultFilter>filter(constraints.getResultFilters(), _function_1), _function_2).forEach(_function_3);
@@ -564,17 +545,11 @@
    * Iterates all attributes of the target dto. If a matching att name was found, the jvmType proxy will be returned.
    */
   public JvmTypeReference findReplacementEnum(final String property, final LDto mapsTo) {
-    final Function1<LFeature, Boolean> _function = new Function1<LFeature, Boolean>() {
-      @Override
-      public Boolean apply(final LFeature it) {
-        return Boolean.valueOf((it instanceof LDtoAbstractAttribute));
-      }
+    final Function1<LFeature, Boolean> _function = (LFeature it) -> {
+      return Boolean.valueOf((it instanceof LDtoAbstractAttribute));
     };
-    final Function1<LFeature, LDtoAbstractAttribute> _function_1 = new Function1<LFeature, LDtoAbstractAttribute>() {
-      @Override
-      public LDtoAbstractAttribute apply(final LFeature it) {
-        return ((LDtoAbstractAttribute) it);
-      }
+    final Function1<LFeature, LDtoAbstractAttribute> _function_1 = (LFeature it) -> {
+      return ((LDtoAbstractAttribute) it);
     };
     Iterable<LDtoAbstractAttribute> _map = IterableExtensions.map(IterableExtensions.filter(mapsTo.getAllFeatures(), _function), _function_1);
     for (final LDtoAbstractAttribute att : _map) {
diff --git a/org.eclipse.osbp.dsl.dto.xtext/xtend-gen/org/eclipse/osbp/dsl/dto/xtext/jvmmodel/DtoGrammarJvmModelInferrer.java b/org.eclipse.osbp.dsl.dto.xtext/xtend-gen/org/eclipse/osbp/dsl/dto/xtext/jvmmodel/DtoGrammarJvmModelInferrer.java
index 1747a00..083e4c1 100644
--- a/org.eclipse.osbp.dsl.dto.xtext/xtend-gen/org/eclipse/osbp/dsl/dto/xtext/jvmmodel/DtoGrammarJvmModelInferrer.java
+++ b/org.eclipse.osbp.dsl.dto.xtext/xtend-gen/org/eclipse/osbp/dsl/dto/xtext/jvmmodel/DtoGrammarJvmModelInferrer.java
@@ -22,6 +22,7 @@
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.common.datatypes.IDtoHistorized;
 import org.eclipse.osbp.dsl.dto.lib.IMapper;
 import org.eclipse.osbp.dsl.dto.lib.IMapperAccess;
 import org.eclipse.osbp.dsl.dto.xtext.extensions.AnnotationExtension;
@@ -159,15 +160,22 @@
         JvmTypeReference _typeReference = this._dtoModelExtensions.toTypeReference(dto.getSuperType());
         this._dtoTypesBuilder.<JvmTypeReference>operator_add(_superTypes, _typeReference);
       }
-      EList<JvmTypeReference> _superTypes_1 = it.getSuperTypes();
-      JvmTypeReference _typeForName = this.references.getTypeForName(IDto.class, dto, null);
-      this._dtoTypesBuilder.<JvmTypeReference>operator_add(_superTypes_1, _typeForName);
-      EList<JvmTypeReference> _superTypes_2 = it.getSuperTypes();
-      JvmTypeReference _typeForName_1 = this.references.getTypeForName(Serializable.class, dto, null);
-      this._dtoTypesBuilder.<JvmTypeReference>operator_add(_superTypes_2, _typeForName_1);
+      boolean _isHistorizedOrTimedependent = dto.isHistorizedOrTimedependent();
+      if (_isHistorizedOrTimedependent) {
+        EList<JvmTypeReference> _superTypes_1 = it.getSuperTypes();
+        JvmTypeReference _typeForName = this.references.getTypeForName(IDtoHistorized.class, dto, null);
+        this._dtoTypesBuilder.<JvmTypeReference>operator_add(_superTypes_1, _typeForName);
+      } else {
+        EList<JvmTypeReference> _superTypes_2 = it.getSuperTypes();
+        JvmTypeReference _typeForName_1 = this.references.getTypeForName(IDto.class, dto, null);
+        this._dtoTypesBuilder.<JvmTypeReference>operator_add(_superTypes_2, _typeForName_1);
+      }
       EList<JvmTypeReference> _superTypes_3 = it.getSuperTypes();
-      JvmTypeReference _typeForName_2 = this.references.getTypeForName(PropertyChangeListener.class, dto, null);
+      JvmTypeReference _typeForName_2 = this.references.getTypeForName(Serializable.class, dto, null);
       this._dtoTypesBuilder.<JvmTypeReference>operator_add(_superTypes_3, _typeForName_2);
+      EList<JvmTypeReference> _superTypes_4 = it.getSuperTypes();
+      JvmTypeReference _typeForName_3 = this.references.getTypeForName(PropertyChangeListener.class, dto, null);
+      this._dtoTypesBuilder.<JvmTypeReference>operator_add(_superTypes_4, _typeForName_3);
       LDto _superType = dto.getSuperType();
       boolean _tripleEquals = (_superType == null);
       if (_tripleEquals) {
@@ -371,8 +379,8 @@
         EList<JvmMember> _members_16 = it.getMembers();
         JvmOperation _equalVersionsMethod = this._dtoTypesBuilder.toEqualVersionsMethod(idAttribute, it, false, idField, versionField);
         this._dtoTypesBuilder.<JvmOperation>operator_add(_members_16, _equalVersionsMethod);
-        boolean _isHistorizedOrTimedependent = dto.isHistorizedOrTimedependent();
-        if (_isHistorizedOrTimedependent) {
+        boolean _isHistorizedOrTimedependent_1 = dto.isHistorizedOrTimedependent();
+        if (_isHistorizedOrTimedependent_1) {
           EList<JvmMember> _members_17 = it.getMembers();
           JvmOperation _newIdVersion = this._dtoTypesBuilder.toNewIdVersion(dto, idField.getSimpleName());
           this._dtoTypesBuilder.<JvmOperation>operator_add(_members_17, _newIdVersion);
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LBeanAttributeItemProvider.java b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LBeanAttributeItemProvider.java
index 8e7e55d..77da6d0 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LBeanAttributeItemProvider.java
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LBeanAttributeItemProvider.java
@@ -80,6 +80,7 @@
 			addUniqueEntryPropertyDescriptor(object);
 			addAttributeHiddenPropertyDescriptor(object);
 			addAttributeReadOnlyPropertyDescriptor(object);
+			addExtraStylePropertyDescriptor(object);
 			addTypePropertyDescriptor(object);
 			addIsGroupedPropertyDescriptor(object);
 			addGroupNamePropertyDescriptor(object);
@@ -397,6 +398,28 @@
 	}
 
 	/**
+	 * This adds a property descriptor for the Extra Style feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addExtraStylePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_extraStyle_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_extraStyle_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__EXTRA_STYLE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
 	 * This adds a property descriptor for the Type feature.
 	 * <!-- begin-user-doc
 	 * --> <!-- end-user-doc -->
@@ -598,6 +621,7 @@
 			case OSBPEntityPackage.LBEAN_ATTRIBUTE__UNIQUE_ENTRY:
 			case OSBPEntityPackage.LBEAN_ATTRIBUTE__ATTRIBUTE_HIDDEN:
 			case OSBPEntityPackage.LBEAN_ATTRIBUTE__ATTRIBUTE_READ_ONLY:
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__EXTRA_STYLE:
 			case OSBPEntityPackage.LBEAN_ATTRIBUTE__IS_GROUPED:
 			case OSBPEntityPackage.LBEAN_ATTRIBUTE__GROUP_NAME:
 			case OSBPEntityPackage.LBEAN_ATTRIBUTE__TYPED_NAME:
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LBeanReferenceItemProvider.java b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LBeanReferenceItemProvider.java
index f318e82..cb033e7 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LBeanReferenceItemProvider.java
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LBeanReferenceItemProvider.java
@@ -64,6 +64,8 @@
 			addAsGridPropertyDescriptor(object);
 			addAsTablePropertyDescriptor(object);
 			addSideKickPropertyDescriptor(object);
+			addReferenceHiddenPropertyDescriptor(object);
+			addReferenceReadOnlyPropertyDescriptor(object);
 			addTypePropertyDescriptor(object);
 			addOppositePropertyDescriptor(object);
 		}
@@ -203,6 +205,50 @@
 	}
 
 	/**
+	 * This adds a property descriptor for the Reference Hidden feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addReferenceHiddenPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LReference_referenceHidden_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LReference_referenceHidden_feature", "_UI_LReference_type"),
+				 OSBPTypesPackage.Literals.LREFERENCE__REFERENCE_HIDDEN,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Reference Read Only feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addReferenceReadOnlyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LReference_referenceReadOnly_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LReference_referenceReadOnly_feature", "_UI_LReference_type"),
+				 OSBPTypesPackage.Literals.LREFERENCE__REFERENCE_READ_ONLY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
 	 * This adds a property descriptor for the Type feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -322,6 +368,8 @@
 			case OSBPEntityPackage.LBEAN_REFERENCE__AS_GRID:
 			case OSBPEntityPackage.LBEAN_REFERENCE__AS_TABLE:
 			case OSBPEntityPackage.LBEAN_REFERENCE__SIDE_KICK:
+			case OSBPEntityPackage.LBEAN_REFERENCE__REFERENCE_HIDDEN:
+			case OSBPEntityPackage.LBEAN_REFERENCE__REFERENCE_READ_ONLY:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
 			case OSBPEntityPackage.LBEAN_REFERENCE__PROPERTIES:
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntityAttributeItemProvider.java b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntityAttributeItemProvider.java
index bdeaca8..f42e5bb 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntityAttributeItemProvider.java
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntityAttributeItemProvider.java
@@ -83,6 +83,7 @@
 			addUniqueEntryPropertyDescriptor(object);
 			addAttributeHiddenPropertyDescriptor(object);
 			addAttributeReadOnlyPropertyDescriptor(object);
+			addExtraStylePropertyDescriptor(object);
 			addTypePropertyDescriptor(object);
 			addIsGroupedPropertyDescriptor(object);
 			addGroupNamePropertyDescriptor(object);
@@ -405,6 +406,28 @@
 	}
 
 	/**
+	 * This adds a property descriptor for the Extra Style feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addExtraStylePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_extraStyle_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_extraStyle_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__EXTRA_STYLE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
 	 * This adds a property descriptor for the Type feature.
 	 * <!-- begin-user-doc
 	 * --> <!-- end-user-doc -->
@@ -699,6 +722,7 @@
 			case OSBPEntityPackage.LENTITY_ATTRIBUTE__UNIQUE_ENTRY:
 			case OSBPEntityPackage.LENTITY_ATTRIBUTE__ATTRIBUTE_HIDDEN:
 			case OSBPEntityPackage.LENTITY_ATTRIBUTE__ATTRIBUTE_READ_ONLY:
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__EXTRA_STYLE:
 			case OSBPEntityPackage.LENTITY_ATTRIBUTE__IS_GROUPED:
 			case OSBPEntityPackage.LENTITY_ATTRIBUTE__GROUP_NAME:
 			case OSBPEntityPackage.LENTITY_ATTRIBUTE__AS_KANBAN_STATE:
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntityReferenceItemProvider.java b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntityReferenceItemProvider.java
index 54b5e89..cfee122 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntityReferenceItemProvider.java
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntityReferenceItemProvider.java
@@ -64,6 +64,8 @@
 			addAsGridPropertyDescriptor(object);
 			addAsTablePropertyDescriptor(object);
 			addSideKickPropertyDescriptor(object);
+			addReferenceHiddenPropertyDescriptor(object);
+			addReferenceReadOnlyPropertyDescriptor(object);
 			addTypePropertyDescriptor(object);
 			addOppositePropertyDescriptor(object);
 			addFilterDepthPropertyDescriptor(object);
@@ -204,6 +206,50 @@
 	}
 
 	/**
+	 * This adds a property descriptor for the Reference Hidden feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addReferenceHiddenPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LReference_referenceHidden_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LReference_referenceHidden_feature", "_UI_LReference_type"),
+				 OSBPTypesPackage.Literals.LREFERENCE__REFERENCE_HIDDEN,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Reference Read Only feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addReferenceReadOnlyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LReference_referenceReadOnly_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LReference_referenceReadOnly_feature", "_UI_LReference_type"),
+				 OSBPTypesPackage.Literals.LREFERENCE__REFERENCE_READ_ONLY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
 	 * This adds a property descriptor for the Type feature.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -345,6 +391,8 @@
 			case OSBPEntityPackage.LENTITY_REFERENCE__AS_GRID:
 			case OSBPEntityPackage.LENTITY_REFERENCE__AS_TABLE:
 			case OSBPEntityPackage.LENTITY_REFERENCE__SIDE_KICK:
+			case OSBPEntityPackage.LENTITY_REFERENCE__REFERENCE_HIDDEN:
+			case OSBPEntityPackage.LENTITY_REFERENCE__REFERENCE_READ_ONLY:
 			case OSBPEntityPackage.LENTITY_REFERENCE__FILTER_DEPTH:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/EntityGrammarParser.java b/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/EntityGrammarParser.java
index a196191..b3da59b 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/EntityGrammarParser.java
+++ b/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/EntityGrammarParser.java
@@ -48,7 +48,11 @@
 					put(grammarAccess.getClassAccess().getAlternatives_2_1_1(), "rule__Class__Alternatives_2_1_1");
 					put(grammarAccess.getEntityFeatureAccess().getAlternatives_2(), "rule__EntityFeature__Alternatives_2");
 					put(grammarAccess.getEntityFeatureAccess().getAlternatives_2_0_1_10_2(), "rule__EntityFeature__Alternatives_2_0_1_10_2");
+					put(grammarAccess.getEntityFeatureAccess().getAlternatives_2_0_1_11(), "rule__EntityFeature__Alternatives_2_0_1_11");
+					put(grammarAccess.getEntityFeatureAccess().getAlternatives_2_0_1_11_1(), "rule__EntityFeature__Alternatives_2_0_1_11_1");
 					put(grammarAccess.getEntityFeatureAccess().getAlternatives_2_1_1(), "rule__EntityFeature__Alternatives_2_1_1");
+					put(grammarAccess.getEntityFeatureAccess().getAlternatives_2_1_1_0_1(), "rule__EntityFeature__Alternatives_2_1_1_0_1");
+					put(grammarAccess.getEntityFeatureAccess().getAlternatives_2_1_1_1_2(), "rule__EntityFeature__Alternatives_2_1_1_1_2");
 					put(grammarAccess.getEntityFeatureAccess().getAlternatives_2_1_1_2_0(), "rule__EntityFeature__Alternatives_2_1_1_2_0");
 					put(grammarAccess.getEntityFeatureAccess().getAlternatives_2_1_1_2_1_1(), "rule__EntityFeature__Alternatives_2_1_1_2_1_1");
 					put(grammarAccess.getEntityFeatureAccess().getAlternatives_2_1_1_2_1_2(), "rule__EntityFeature__Alternatives_2_1_1_2_1_2");
@@ -149,22 +153,25 @@
 					put(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_13_3(), "rule__EntityFeature__Group_2_0_1_13_3__0");
 					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1(), "rule__EntityFeature__Group_2_1__0");
 					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0(), "rule__EntityFeature__Group_2_1_1_0__0");
-					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_2(), "rule__EntityFeature__Group_2_1_1_0_2__0");
-					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_4(), "rule__EntityFeature__Group_2_1_1_0_4__0");
-					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_5(), "rule__EntityFeature__Group_2_1_1_0_5__0");
-					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_5_3(), "rule__EntityFeature__Group_2_1_1_0_5_3__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_3(), "rule__EntityFeature__Group_2_1_1_0_3__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_5_0(), "rule__EntityFeature__Group_2_1_1_0_5_0__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_5_1(), "rule__EntityFeature__Group_2_1_1_0_5_1__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_5_2(), "rule__EntityFeature__Group_2_1_1_0_5_2__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_5_2_3(), "rule__EntityFeature__Group_2_1_1_0_5_2_3__0");
 					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1(), "rule__EntityFeature__Group_2_1_1_1__0");
-					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_4(), "rule__EntityFeature__Group_2_1_1_1_4__0");
-					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_5(), "rule__EntityFeature__Group_2_1_1_1_5__0");
-					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_5_3(), "rule__EntityFeature__Group_2_1_1_1_5_3__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_5_0(), "rule__EntityFeature__Group_2_1_1_1_5_0__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_5_1(), "rule__EntityFeature__Group_2_1_1_1_5_1__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_5_2(), "rule__EntityFeature__Group_2_1_1_1_5_2__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_5_2_3(), "rule__EntityFeature__Group_2_1_1_1_5_2_3__0");
 					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2(), "rule__EntityFeature__Group_2_1_1_2__0");
 					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_4(), "rule__EntityFeature__Group_2_1_1_2_4__0");
 					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_6(), "rule__EntityFeature__Group_2_1_1_2_6__0");
 					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_8(), "rule__EntityFeature__Group_2_1_1_2_8__0");
 					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_10(), "rule__EntityFeature__Group_2_1_1_2_10__0");
-					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_11(), "rule__EntityFeature__Group_2_1_1_2_11__0");
-					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_12(), "rule__EntityFeature__Group_2_1_1_2_12__0");
-					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_12_3(), "rule__EntityFeature__Group_2_1_1_2_12_3__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_11_0(), "rule__EntityFeature__Group_2_1_1_2_11_0__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_11_1(), "rule__EntityFeature__Group_2_1_1_2_11_1__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_11_2(), "rule__EntityFeature__Group_2_1_1_2_11_2__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_11_2_3(), "rule__EntityFeature__Group_2_1_1_2_11_2_3__0");
 					put(grammarAccess.getEntityFeatureAccess().getGroup_2_2(), "rule__EntityFeature__Group_2_2__0");
 					put(grammarAccess.getEntityFeatureAccess().getGroup_2_2_1(), "rule__EntityFeature__Group_2_2_1__0");
 					put(grammarAccess.getEntityFeatureAccess().getGroup_2_2_1_4(), "rule__EntityFeature__Group_2_2_1_4__0");
@@ -551,28 +558,36 @@
 					put(grammarAccess.getEntityFeatureAccess().getOppositeAssignment_2_0_1_10_1(), "rule__EntityFeature__OppositeAssignment_2_0_1_10_1");
 					put(grammarAccess.getEntityFeatureAccess().getAsGridAssignment_2_0_1_10_2_0(), "rule__EntityFeature__AsGridAssignment_2_0_1_10_2_0");
 					put(grammarAccess.getEntityFeatureAccess().getAsTableAssignment_2_0_1_10_2_1(), "rule__EntityFeature__AsTableAssignment_2_0_1_10_2_1");
-					put(grammarAccess.getEntityFeatureAccess().getSideKickAssignment_2_0_1_11(), "rule__EntityFeature__SideKickAssignment_2_0_1_11");
+					put(grammarAccess.getEntityFeatureAccess().getSideKickAssignment_2_0_1_11_0(), "rule__EntityFeature__SideKickAssignment_2_0_1_11_0");
+					put(grammarAccess.getEntityFeatureAccess().getReferenceHiddenAssignment_2_0_1_11_1_0(), "rule__EntityFeature__ReferenceHiddenAssignment_2_0_1_11_1_0");
+					put(grammarAccess.getEntityFeatureAccess().getReferenceReadOnlyAssignment_2_0_1_11_1_1(), "rule__EntityFeature__ReferenceReadOnlyAssignment_2_0_1_11_1_1");
 					put(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_0_1_12_0(), "rule__EntityFeature__IsGroupedAssignment_2_0_1_12_0");
 					put(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_0_1_12_1(), "rule__EntityFeature__GroupNameAssignment_2_0_1_12_1");
 					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_0_1_13_2(), "rule__EntityFeature__PropertiesAssignment_2_0_1_13_2");
 					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_0_1_13_3_1(), "rule__EntityFeature__PropertiesAssignment_2_0_1_13_3_1");
 					put(grammarAccess.getEntityFeatureAccess().getResultFiltersAssignment_2_0_1_14(), "rule__EntityFeature__ResultFiltersAssignment_2_0_1_14");
 					put(grammarAccess.getEntityFeatureAccess().getTransientAssignment_2_1_1_0_0(), "rule__EntityFeature__TransientAssignment_2_1_1_0_0");
-					put(grammarAccess.getEntityFeatureAccess().getTypeAssignment_2_1_1_0_1(), "rule__EntityFeature__TypeAssignment_2_1_1_0_1");
-					put(grammarAccess.getEntityFeatureAccess().getConstraintsAssignment_2_1_1_0_2_1(), "rule__EntityFeature__ConstraintsAssignment_2_1_1_0_2_1");
-					put(grammarAccess.getEntityFeatureAccess().getNameAssignment_2_1_1_0_3(), "rule__EntityFeature__NameAssignment_2_1_1_0_3");
-					put(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_1_1_0_4_0(), "rule__EntityFeature__IsGroupedAssignment_2_1_1_0_4_0");
-					put(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_0_4_1(), "rule__EntityFeature__GroupNameAssignment_2_1_1_0_4_1");
-					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_5_2(), "rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_2");
-					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_5_3_1(), "rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_3_1");
+					put(grammarAccess.getEntityFeatureAccess().getAttributeHiddenAssignment_2_1_1_0_1_0(), "rule__EntityFeature__AttributeHiddenAssignment_2_1_1_0_1_0");
+					put(grammarAccess.getEntityFeatureAccess().getAttributeReadOnlyAssignment_2_1_1_0_1_1(), "rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_0_1_1");
+					put(grammarAccess.getEntityFeatureAccess().getTypeAssignment_2_1_1_0_2(), "rule__EntityFeature__TypeAssignment_2_1_1_0_2");
+					put(grammarAccess.getEntityFeatureAccess().getConstraintsAssignment_2_1_1_0_3_1(), "rule__EntityFeature__ConstraintsAssignment_2_1_1_0_3_1");
+					put(grammarAccess.getEntityFeatureAccess().getNameAssignment_2_1_1_0_4(), "rule__EntityFeature__NameAssignment_2_1_1_0_4");
+					put(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_1_1_0_5_0_0(), "rule__EntityFeature__IsGroupedAssignment_2_1_1_0_5_0_0");
+					put(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_0_5_0_1(), "rule__EntityFeature__GroupNameAssignment_2_1_1_0_5_0_1");
+					put(grammarAccess.getEntityFeatureAccess().getExtraStyleAssignment_2_1_1_0_5_1_1(), "rule__EntityFeature__ExtraStyleAssignment_2_1_1_0_5_1_1");
+					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_5_2_2(), "rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_2_2");
+					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_5_2_3_1(), "rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_2_3_1");
 					put(grammarAccess.getEntityFeatureAccess().getDerivedAssignment_2_1_1_1_0(), "rule__EntityFeature__DerivedAssignment_2_1_1_1_0");
 					put(grammarAccess.getEntityFeatureAccess().getDomainDescriptionAssignment_2_1_1_1_1(), "rule__EntityFeature__DomainDescriptionAssignment_2_1_1_1_1");
-					put(grammarAccess.getEntityFeatureAccess().getTypeAssignment_2_1_1_1_2(), "rule__EntityFeature__TypeAssignment_2_1_1_1_2");
-					put(grammarAccess.getEntityFeatureAccess().getNameAssignment_2_1_1_1_3(), "rule__EntityFeature__NameAssignment_2_1_1_1_3");
-					put(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_1_1_1_4_0(), "rule__EntityFeature__IsGroupedAssignment_2_1_1_1_4_0");
-					put(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_1_4_1(), "rule__EntityFeature__GroupNameAssignment_2_1_1_1_4_1");
-					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_5_2(), "rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_2");
-					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_5_3_1(), "rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_3_1");
+					put(grammarAccess.getEntityFeatureAccess().getAttributeHiddenAssignment_2_1_1_1_2_0(), "rule__EntityFeature__AttributeHiddenAssignment_2_1_1_1_2_0");
+					put(grammarAccess.getEntityFeatureAccess().getAttributeReadOnlyAssignment_2_1_1_1_2_1(), "rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_1_2_1");
+					put(grammarAccess.getEntityFeatureAccess().getTypeAssignment_2_1_1_1_3(), "rule__EntityFeature__TypeAssignment_2_1_1_1_3");
+					put(grammarAccess.getEntityFeatureAccess().getNameAssignment_2_1_1_1_4(), "rule__EntityFeature__NameAssignment_2_1_1_1_4");
+					put(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_1_1_1_5_0_0(), "rule__EntityFeature__IsGroupedAssignment_2_1_1_1_5_0_0");
+					put(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_1_5_0_1(), "rule__EntityFeature__GroupNameAssignment_2_1_1_1_5_0_1");
+					put(grammarAccess.getEntityFeatureAccess().getExtraStyleAssignment_2_1_1_1_5_1_1(), "rule__EntityFeature__ExtraStyleAssignment_2_1_1_1_5_1_1");
+					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_5_2_2(), "rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_2_2");
+					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_5_2_3_1(), "rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_2_3_1");
 					put(grammarAccess.getEntityFeatureAccess().getDerivedGetterExpressionAssignment_2_1_1_1_6(), "rule__EntityFeature__DerivedGetterExpressionAssignment_2_1_1_1_6");
 					put(grammarAccess.getEntityFeatureAccess().getIdAssignment_2_1_1_2_0_1(), "rule__EntityFeature__IdAssignment_2_1_1_2_0_1");
 					put(grammarAccess.getEntityFeatureAccess().getUuidAssignment_2_1_1_2_0_2(), "rule__EntityFeature__UuidAssignment_2_1_1_2_0_2");
@@ -595,10 +610,11 @@
 					put(grammarAccess.getEntityFeatureAccess().getDecentKanbanOrderAssignment_2_1_1_2_8_1(), "rule__EntityFeature__DecentKanbanOrderAssignment_2_1_1_2_8_1");
 					put(grammarAccess.getEntityFeatureAccess().getPersistenceInfoAssignment_2_1_1_2_9(), "rule__EntityFeature__PersistenceInfoAssignment_2_1_1_2_9");
 					put(grammarAccess.getEntityFeatureAccess().getOppositeAssignment_2_1_1_2_10_1(), "rule__EntityFeature__OppositeAssignment_2_1_1_2_10_1");
-					put(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_1_1_2_11_0(), "rule__EntityFeature__IsGroupedAssignment_2_1_1_2_11_0");
-					put(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_2_11_1(), "rule__EntityFeature__GroupNameAssignment_2_1_1_2_11_1");
-					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_2_12_2(), "rule__EntityFeature__PropertiesAssignment_2_1_1_2_12_2");
-					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_2_12_3_1(), "rule__EntityFeature__PropertiesAssignment_2_1_1_2_12_3_1");
+					put(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_1_1_2_11_0_0(), "rule__EntityFeature__IsGroupedAssignment_2_1_1_2_11_0_0");
+					put(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_2_11_0_1(), "rule__EntityFeature__GroupNameAssignment_2_1_1_2_11_0_1");
+					put(grammarAccess.getEntityFeatureAccess().getExtraStyleAssignment_2_1_1_2_11_1_1(), "rule__EntityFeature__ExtraStyleAssignment_2_1_1_2_11_1_1");
+					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_2_11_2_2(), "rule__EntityFeature__PropertiesAssignment_2_1_1_2_11_2_2");
+					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_2_11_2_3_1(), "rule__EntityFeature__PropertiesAssignment_2_1_1_2_11_2_3_1");
 					put(grammarAccess.getEntityFeatureAccess().getTypeAssignment_2_2_1_1(), "rule__EntityFeature__TypeAssignment_2_2_1_1");
 					put(grammarAccess.getEntityFeatureAccess().getNameAssignment_2_2_1_2(), "rule__EntityFeature__NameAssignment_2_2_1_2");
 					put(grammarAccess.getEntityFeatureAccess().getParamsAssignment_2_2_1_4_0(), "rule__EntityFeature__ParamsAssignment_2_2_1_4_0");
@@ -906,7 +922,10 @@
 					put(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment(), "rule__XImportSection__ImportDeclarationsAssignment");
 					put(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1(), "rule__Class__UnorderedGroup_2_0_1");
 					put(grammarAccess.getEntityPersistenceInfoAccess().getUnorderedGroup_1(), "rule__EntityPersistenceInfo__UnorderedGroup_1");
+					put(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_0_5(), "rule__EntityFeature__UnorderedGroup_2_1_1_0_5");
+					put(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_1_5(), "rule__EntityFeature__UnorderedGroup_2_1_1_1_5");
 					put(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_2_1(), "rule__EntityFeature__UnorderedGroup_2_1_1_2_1");
+					put(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_2_11(), "rule__EntityFeature__UnorderedGroup_2_1_1_2_11");
 					put(grammarAccess.getTablePerClassStrategyAccess().getUnorderedGroup_3(), "rule__TablePerClassStrategy__UnorderedGroup_3");
 					put(grammarAccess.getTablePerSubclassStrategyAccess().getUnorderedGroup_3(), "rule__TablePerSubclassStrategy__UnorderedGroup_3");
 					put(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2_1(), "rule__DtCAssertFalse__UnorderedGroup_2_1");
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammar.g b/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammar.g
index aad8dc5..20b7bbe 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammar.g
+++ b/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammar.g
@@ -3624,6 +3624,48 @@
 	restoreStackSize(stackSize);
 }
 
+rule__EntityFeature__Alternatives_2_0_1_11
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getEntityFeatureAccess().getSideKickAssignment_2_0_1_11_0()); }
+		(rule__EntityFeature__SideKickAssignment_2_0_1_11_0)?
+		{ after(grammarAccess.getEntityFeatureAccess().getSideKickAssignment_2_0_1_11_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getEntityFeatureAccess().getAlternatives_2_0_1_11_1()); }
+		(rule__EntityFeature__Alternatives_2_0_1_11_1)?
+		{ after(grammarAccess.getEntityFeatureAccess().getAlternatives_2_0_1_11_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Alternatives_2_0_1_11_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getEntityFeatureAccess().getReferenceHiddenAssignment_2_0_1_11_1_0()); }
+		(rule__EntityFeature__ReferenceHiddenAssignment_2_0_1_11_1_0)
+		{ after(grammarAccess.getEntityFeatureAccess().getReferenceHiddenAssignment_2_0_1_11_1_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getEntityFeatureAccess().getReferenceReadOnlyAssignment_2_0_1_11_1_1()); }
+		(rule__EntityFeature__ReferenceReadOnlyAssignment_2_0_1_11_1_1)
+		{ after(grammarAccess.getEntityFeatureAccess().getReferenceReadOnlyAssignment_2_0_1_11_1_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
 rule__EntityFeature__Alternatives_2_1_1
 	@init {
 		int stackSize = keepStackSize();
@@ -3651,6 +3693,48 @@
 	restoreStackSize(stackSize);
 }
 
+rule__EntityFeature__Alternatives_2_1_1_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getEntityFeatureAccess().getAttributeHiddenAssignment_2_1_1_0_1_0()); }
+		(rule__EntityFeature__AttributeHiddenAssignment_2_1_1_0_1_0)
+		{ after(grammarAccess.getEntityFeatureAccess().getAttributeHiddenAssignment_2_1_1_0_1_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getEntityFeatureAccess().getAttributeReadOnlyAssignment_2_1_1_0_1_1()); }
+		(rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_0_1_1)
+		{ after(grammarAccess.getEntityFeatureAccess().getAttributeReadOnlyAssignment_2_1_1_0_1_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Alternatives_2_1_1_1_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getEntityFeatureAccess().getAttributeHiddenAssignment_2_1_1_1_2_0()); }
+		(rule__EntityFeature__AttributeHiddenAssignment_2_1_1_1_2_0)
+		{ after(grammarAccess.getEntityFeatureAccess().getAttributeHiddenAssignment_2_1_1_1_2_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getEntityFeatureAccess().getAttributeReadOnlyAssignment_2_1_1_1_2_1()); }
+		(rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_1_2_1)
+		{ after(grammarAccess.getEntityFeatureAccess().getAttributeReadOnlyAssignment_2_1_1_1_2_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
 rule__EntityFeature__Alternatives_2_1_1_2_0
 	@init {
 		int stackSize = keepStackSize();
@@ -8046,9 +8130,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getSideKickAssignment_2_0_1_11()); }
-	(rule__EntityFeature__SideKickAssignment_2_0_1_11)?
-	{ after(grammarAccess.getEntityFeatureAccess().getSideKickAssignment_2_0_1_11()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getAlternatives_2_0_1_11()); }
+	(rule__EntityFeature__Alternatives_2_0_1_11)
+	{ after(grammarAccess.getEntityFeatureAccess().getAlternatives_2_0_1_11()); }
 )
 ;
 finally {
@@ -8694,9 +8778,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getTypeAssignment_2_1_1_0_1()); }
-	(rule__EntityFeature__TypeAssignment_2_1_1_0_1)
-	{ after(grammarAccess.getEntityFeatureAccess().getTypeAssignment_2_1_1_0_1()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getAlternatives_2_1_1_0_1()); }
+	(rule__EntityFeature__Alternatives_2_1_1_0_1)?
+	{ after(grammarAccess.getEntityFeatureAccess().getAlternatives_2_1_1_0_1()); }
 )
 ;
 finally {
@@ -8721,9 +8805,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_2()); }
-	(rule__EntityFeature__Group_2_1_1_0_2__0)?
-	{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_2()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getTypeAssignment_2_1_1_0_2()); }
+	(rule__EntityFeature__TypeAssignment_2_1_1_0_2)
+	{ after(grammarAccess.getEntityFeatureAccess().getTypeAssignment_2_1_1_0_2()); }
 )
 ;
 finally {
@@ -8748,9 +8832,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getNameAssignment_2_1_1_0_3()); }
-	(rule__EntityFeature__NameAssignment_2_1_1_0_3)
-	{ after(grammarAccess.getEntityFeatureAccess().getNameAssignment_2_1_1_0_3()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_3()); }
+	(rule__EntityFeature__Group_2_1_1_0_3__0)?
+	{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_3()); }
 )
 ;
 finally {
@@ -8775,9 +8859,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_4()); }
-	(rule__EntityFeature__Group_2_1_1_0_4__0)?
-	{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_4()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getNameAssignment_2_1_1_0_4()); }
+	(rule__EntityFeature__NameAssignment_2_1_1_0_4)
+	{ after(grammarAccess.getEntityFeatureAccess().getNameAssignment_2_1_1_0_4()); }
 )
 ;
 finally {
@@ -8801,9 +8885,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_5()); }
-	(rule__EntityFeature__Group_2_1_1_0_5__0)?
-	{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_5()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_0_5()); }
+	(rule__EntityFeature__UnorderedGroup_2_1_1_0_5)
+	{ after(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_0_5()); }
 )
 ;
 finally {
@@ -8811,80 +8895,80 @@
 }
 
 
-rule__EntityFeature__Group_2_1_1_0_2__0
+rule__EntityFeature__Group_2_1_1_0_3__0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_0_2__0__Impl
-	rule__EntityFeature__Group_2_1_1_0_2__1
+	rule__EntityFeature__Group_2_1_1_0_3__0__Impl
+	rule__EntityFeature__Group_2_1_1_0_3__1
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_0_2__0__Impl
+rule__EntityFeature__Group_2_1_1_0_3__0__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getLeftSquareBracketKeyword_2_1_1_0_2_0()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getLeftSquareBracketKeyword_2_1_1_0_3_0()); }
 	'['
-	{ after(grammarAccess.getEntityFeatureAccess().getLeftSquareBracketKeyword_2_1_1_0_2_0()); }
+	{ after(grammarAccess.getEntityFeatureAccess().getLeftSquareBracketKeyword_2_1_1_0_3_0()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_0_2__1
+rule__EntityFeature__Group_2_1_1_0_3__1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_0_2__1__Impl
-	rule__EntityFeature__Group_2_1_1_0_2__2
+	rule__EntityFeature__Group_2_1_1_0_3__1__Impl
+	rule__EntityFeature__Group_2_1_1_0_3__2
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_0_2__1__Impl
+rule__EntityFeature__Group_2_1_1_0_3__1__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getConstraintsAssignment_2_1_1_0_2_1()); }
-	(rule__EntityFeature__ConstraintsAssignment_2_1_1_0_2_1)*
-	{ after(grammarAccess.getEntityFeatureAccess().getConstraintsAssignment_2_1_1_0_2_1()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getConstraintsAssignment_2_1_1_0_3_1()); }
+	(rule__EntityFeature__ConstraintsAssignment_2_1_1_0_3_1)*
+	{ after(grammarAccess.getEntityFeatureAccess().getConstraintsAssignment_2_1_1_0_3_1()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_0_2__2
+rule__EntityFeature__Group_2_1_1_0_3__2
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_0_2__2__Impl
+	rule__EntityFeature__Group_2_1_1_0_3__2__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_0_2__2__Impl
+rule__EntityFeature__Group_2_1_1_0_3__2__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getRightSquareBracketKeyword_2_1_1_0_2_2()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getRightSquareBracketKeyword_2_1_1_0_3_2()); }
 	']'
-	{ after(grammarAccess.getEntityFeatureAccess().getRightSquareBracketKeyword_2_1_1_0_2_2()); }
+	{ after(grammarAccess.getEntityFeatureAccess().getRightSquareBracketKeyword_2_1_1_0_3_2()); }
 )
 ;
 finally {
@@ -8892,53 +8976,53 @@
 }
 
 
-rule__EntityFeature__Group_2_1_1_0_4__0
+rule__EntityFeature__Group_2_1_1_0_5_0__0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_0_4__0__Impl
-	rule__EntityFeature__Group_2_1_1_0_4__1
+	rule__EntityFeature__Group_2_1_1_0_5_0__0__Impl
+	rule__EntityFeature__Group_2_1_1_0_5_0__1
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_0_4__0__Impl
+rule__EntityFeature__Group_2_1_1_0_5_0__0__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_1_1_0_4_0()); }
-	(rule__EntityFeature__IsGroupedAssignment_2_1_1_0_4_0)
-	{ after(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_1_1_0_4_0()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_1_1_0_5_0_0()); }
+	(rule__EntityFeature__IsGroupedAssignment_2_1_1_0_5_0_0)
+	{ after(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_1_1_0_5_0_0()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_0_4__1
+rule__EntityFeature__Group_2_1_1_0_5_0__1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_0_4__1__Impl
+	rule__EntityFeature__Group_2_1_1_0_5_0__1__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_0_4__1__Impl
+rule__EntityFeature__Group_2_1_1_0_5_0__1__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_0_4_1()); }
-	(rule__EntityFeature__GroupNameAssignment_2_1_1_0_4_1)
-	{ after(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_0_4_1()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_0_5_0_1()); }
+	(rule__EntityFeature__GroupNameAssignment_2_1_1_0_5_0_1)
+	{ after(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_0_5_0_1()); }
 )
 ;
 finally {
@@ -8946,134 +9030,188 @@
 }
 
 
-rule__EntityFeature__Group_2_1_1_0_5__0
+rule__EntityFeature__Group_2_1_1_0_5_1__0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_0_5__0__Impl
-	rule__EntityFeature__Group_2_1_1_0_5__1
+	rule__EntityFeature__Group_2_1_1_0_5_1__0__Impl
+	rule__EntityFeature__Group_2_1_1_0_5_1__1
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_0_5__0__Impl
+rule__EntityFeature__Group_2_1_1_0_5_1__0__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_0_5_0()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getExtraStyleKeyword_2_1_1_0_5_1_0()); }
+	'extraStyle'
+	{ after(grammarAccess.getEntityFeatureAccess().getExtraStyleKeyword_2_1_1_0_5_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_0_5_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__EntityFeature__Group_2_1_1_0_5_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_0_5_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getEntityFeatureAccess().getExtraStyleAssignment_2_1_1_0_5_1_1()); }
+	(rule__EntityFeature__ExtraStyleAssignment_2_1_1_0_5_1_1)
+	{ after(grammarAccess.getEntityFeatureAccess().getExtraStyleAssignment_2_1_1_0_5_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_1_1_0_5_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__EntityFeature__Group_2_1_1_0_5_2__0__Impl
+	rule__EntityFeature__Group_2_1_1_0_5_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_0_5_2__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_0_5_2_0()); }
 	'properties'
-	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_0_5_0()); }
+	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_0_5_2_0()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_0_5__1
+rule__EntityFeature__Group_2_1_1_0_5_2__1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_0_5__1__Impl
-	rule__EntityFeature__Group_2_1_1_0_5__2
+	rule__EntityFeature__Group_2_1_1_0_5_2__1__Impl
+	rule__EntityFeature__Group_2_1_1_0_5_2__2
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_0_5__1__Impl
+rule__EntityFeature__Group_2_1_1_0_5_2__1__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_0_5_1()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_0_5_2_1()); }
 	'('
-	{ after(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_0_5_1()); }
+	{ after(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_0_5_2_1()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_0_5__2
+rule__EntityFeature__Group_2_1_1_0_5_2__2
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_0_5__2__Impl
-	rule__EntityFeature__Group_2_1_1_0_5__3
+	rule__EntityFeature__Group_2_1_1_0_5_2__2__Impl
+	rule__EntityFeature__Group_2_1_1_0_5_2__3
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_0_5__2__Impl
+rule__EntityFeature__Group_2_1_1_0_5_2__2__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_5_2()); }
-	(rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_2)
-	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_5_2()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_5_2_2()); }
+	(rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_2_2)
+	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_5_2_2()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_0_5__3
+rule__EntityFeature__Group_2_1_1_0_5_2__3
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_0_5__3__Impl
-	rule__EntityFeature__Group_2_1_1_0_5__4
+	rule__EntityFeature__Group_2_1_1_0_5_2__3__Impl
+	rule__EntityFeature__Group_2_1_1_0_5_2__4
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_0_5__3__Impl
+rule__EntityFeature__Group_2_1_1_0_5_2__3__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_5_3()); }
-	(rule__EntityFeature__Group_2_1_1_0_5_3__0)*
-	{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_5_3()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_5_2_3()); }
+	(rule__EntityFeature__Group_2_1_1_0_5_2_3__0)*
+	{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_5_2_3()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_0_5__4
+rule__EntityFeature__Group_2_1_1_0_5_2__4
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_0_5__4__Impl
+	rule__EntityFeature__Group_2_1_1_0_5_2__4__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_0_5__4__Impl
+rule__EntityFeature__Group_2_1_1_0_5_2__4__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_0_5_4()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_0_5_2_4()); }
 	')'
-	{ after(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_0_5_4()); }
+	{ after(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_0_5_2_4()); }
 )
 ;
 finally {
@@ -9081,53 +9219,53 @@
 }
 
 
-rule__EntityFeature__Group_2_1_1_0_5_3__0
+rule__EntityFeature__Group_2_1_1_0_5_2_3__0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_0_5_3__0__Impl
-	rule__EntityFeature__Group_2_1_1_0_5_3__1
+	rule__EntityFeature__Group_2_1_1_0_5_2_3__0__Impl
+	rule__EntityFeature__Group_2_1_1_0_5_2_3__1
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_0_5_3__0__Impl
+rule__EntityFeature__Group_2_1_1_0_5_2_3__0__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_0_5_3_0()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_0_5_2_3_0()); }
 	','
-	{ after(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_0_5_3_0()); }
+	{ after(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_0_5_2_3_0()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_0_5_3__1
+rule__EntityFeature__Group_2_1_1_0_5_2_3__1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_0_5_3__1__Impl
+	rule__EntityFeature__Group_2_1_1_0_5_2_3__1__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_0_5_3__1__Impl
+rule__EntityFeature__Group_2_1_1_0_5_2_3__1__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_5_3_1()); }
-	(rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_3_1)
-	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_5_3_1()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_5_2_3_1()); }
+	(rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_2_3_1)
+	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_5_2_3_1()); }
 )
 ;
 finally {
@@ -9207,9 +9345,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getTypeAssignment_2_1_1_1_2()); }
-	(rule__EntityFeature__TypeAssignment_2_1_1_1_2)
-	{ after(grammarAccess.getEntityFeatureAccess().getTypeAssignment_2_1_1_1_2()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getAlternatives_2_1_1_1_2()); }
+	(rule__EntityFeature__Alternatives_2_1_1_1_2)?
+	{ after(grammarAccess.getEntityFeatureAccess().getAlternatives_2_1_1_1_2()); }
 )
 ;
 finally {
@@ -9234,9 +9372,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getNameAssignment_2_1_1_1_3()); }
-	(rule__EntityFeature__NameAssignment_2_1_1_1_3)
-	{ after(grammarAccess.getEntityFeatureAccess().getNameAssignment_2_1_1_1_3()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getTypeAssignment_2_1_1_1_3()); }
+	(rule__EntityFeature__TypeAssignment_2_1_1_1_3)
+	{ after(grammarAccess.getEntityFeatureAccess().getTypeAssignment_2_1_1_1_3()); }
 )
 ;
 finally {
@@ -9261,9 +9399,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_4()); }
-	(rule__EntityFeature__Group_2_1_1_1_4__0)?
-	{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_4()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getNameAssignment_2_1_1_1_4()); }
+	(rule__EntityFeature__NameAssignment_2_1_1_1_4)
+	{ after(grammarAccess.getEntityFeatureAccess().getNameAssignment_2_1_1_1_4()); }
 )
 ;
 finally {
@@ -9288,9 +9426,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_5()); }
-	(rule__EntityFeature__Group_2_1_1_1_5__0)?
-	{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_5()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_1_5()); }
+	(rule__EntityFeature__UnorderedGroup_2_1_1_1_5)
+	{ after(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_1_5()); }
 )
 ;
 finally {
@@ -9324,53 +9462,53 @@
 }
 
 
-rule__EntityFeature__Group_2_1_1_1_4__0
+rule__EntityFeature__Group_2_1_1_1_5_0__0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_1_4__0__Impl
-	rule__EntityFeature__Group_2_1_1_1_4__1
+	rule__EntityFeature__Group_2_1_1_1_5_0__0__Impl
+	rule__EntityFeature__Group_2_1_1_1_5_0__1
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_1_4__0__Impl
+rule__EntityFeature__Group_2_1_1_1_5_0__0__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_1_1_1_4_0()); }
-	(rule__EntityFeature__IsGroupedAssignment_2_1_1_1_4_0)
-	{ after(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_1_1_1_4_0()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_1_1_1_5_0_0()); }
+	(rule__EntityFeature__IsGroupedAssignment_2_1_1_1_5_0_0)
+	{ after(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_1_1_1_5_0_0()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_1_4__1
+rule__EntityFeature__Group_2_1_1_1_5_0__1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_1_4__1__Impl
+	rule__EntityFeature__Group_2_1_1_1_5_0__1__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_1_4__1__Impl
+rule__EntityFeature__Group_2_1_1_1_5_0__1__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_1_4_1()); }
-	(rule__EntityFeature__GroupNameAssignment_2_1_1_1_4_1)
-	{ after(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_1_4_1()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_1_5_0_1()); }
+	(rule__EntityFeature__GroupNameAssignment_2_1_1_1_5_0_1)
+	{ after(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_1_5_0_1()); }
 )
 ;
 finally {
@@ -9378,134 +9516,188 @@
 }
 
 
-rule__EntityFeature__Group_2_1_1_1_5__0
+rule__EntityFeature__Group_2_1_1_1_5_1__0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_1_5__0__Impl
-	rule__EntityFeature__Group_2_1_1_1_5__1
+	rule__EntityFeature__Group_2_1_1_1_5_1__0__Impl
+	rule__EntityFeature__Group_2_1_1_1_5_1__1
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_1_5__0__Impl
+rule__EntityFeature__Group_2_1_1_1_5_1__0__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_1_5_0()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getExtraStyleKeyword_2_1_1_1_5_1_0()); }
+	'extraStyle'
+	{ after(grammarAccess.getEntityFeatureAccess().getExtraStyleKeyword_2_1_1_1_5_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_1_5_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__EntityFeature__Group_2_1_1_1_5_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_1_5_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getEntityFeatureAccess().getExtraStyleAssignment_2_1_1_1_5_1_1()); }
+	(rule__EntityFeature__ExtraStyleAssignment_2_1_1_1_5_1_1)
+	{ after(grammarAccess.getEntityFeatureAccess().getExtraStyleAssignment_2_1_1_1_5_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_1_1_1_5_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__EntityFeature__Group_2_1_1_1_5_2__0__Impl
+	rule__EntityFeature__Group_2_1_1_1_5_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_1_5_2__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_1_5_2_0()); }
 	'properties'
-	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_1_5_0()); }
+	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_1_5_2_0()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_1_5__1
+rule__EntityFeature__Group_2_1_1_1_5_2__1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_1_5__1__Impl
-	rule__EntityFeature__Group_2_1_1_1_5__2
+	rule__EntityFeature__Group_2_1_1_1_5_2__1__Impl
+	rule__EntityFeature__Group_2_1_1_1_5_2__2
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_1_5__1__Impl
+rule__EntityFeature__Group_2_1_1_1_5_2__1__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_1_5_1()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_1_5_2_1()); }
 	'('
-	{ after(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_1_5_1()); }
+	{ after(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_1_5_2_1()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_1_5__2
+rule__EntityFeature__Group_2_1_1_1_5_2__2
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_1_5__2__Impl
-	rule__EntityFeature__Group_2_1_1_1_5__3
+	rule__EntityFeature__Group_2_1_1_1_5_2__2__Impl
+	rule__EntityFeature__Group_2_1_1_1_5_2__3
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_1_5__2__Impl
+rule__EntityFeature__Group_2_1_1_1_5_2__2__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_5_2()); }
-	(rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_2)
-	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_5_2()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_5_2_2()); }
+	(rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_2_2)
+	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_5_2_2()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_1_5__3
+rule__EntityFeature__Group_2_1_1_1_5_2__3
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_1_5__3__Impl
-	rule__EntityFeature__Group_2_1_1_1_5__4
+	rule__EntityFeature__Group_2_1_1_1_5_2__3__Impl
+	rule__EntityFeature__Group_2_1_1_1_5_2__4
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_1_5__3__Impl
+rule__EntityFeature__Group_2_1_1_1_5_2__3__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_5_3()); }
-	(rule__EntityFeature__Group_2_1_1_1_5_3__0)*
-	{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_5_3()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_5_2_3()); }
+	(rule__EntityFeature__Group_2_1_1_1_5_2_3__0)*
+	{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_5_2_3()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_1_5__4
+rule__EntityFeature__Group_2_1_1_1_5_2__4
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_1_5__4__Impl
+	rule__EntityFeature__Group_2_1_1_1_5_2__4__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_1_5__4__Impl
+rule__EntityFeature__Group_2_1_1_1_5_2__4__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_1_5_4()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_1_5_2_4()); }
 	')'
-	{ after(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_1_5_4()); }
+	{ after(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_1_5_2_4()); }
 )
 ;
 finally {
@@ -9513,53 +9705,53 @@
 }
 
 
-rule__EntityFeature__Group_2_1_1_1_5_3__0
+rule__EntityFeature__Group_2_1_1_1_5_2_3__0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_1_5_3__0__Impl
-	rule__EntityFeature__Group_2_1_1_1_5_3__1
+	rule__EntityFeature__Group_2_1_1_1_5_2_3__0__Impl
+	rule__EntityFeature__Group_2_1_1_1_5_2_3__1
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_1_5_3__0__Impl
+rule__EntityFeature__Group_2_1_1_1_5_2_3__0__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_1_5_3_0()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_1_5_2_3_0()); }
 	','
-	{ after(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_1_5_3_0()); }
+	{ after(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_1_5_2_3_0()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_1_5_3__1
+rule__EntityFeature__Group_2_1_1_1_5_2_3__1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_1_5_3__1__Impl
+	rule__EntityFeature__Group_2_1_1_1_5_2_3__1__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_1_5_3__1__Impl
+rule__EntityFeature__Group_2_1_1_1_5_2_3__1__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_5_3_1()); }
-	(rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_3_1)
-	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_5_3_1()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_5_2_3_1()); }
+	(rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_2_3_1)
+	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_5_2_3_1()); }
 )
 ;
 finally {
@@ -9870,7 +10062,6 @@
 	}
 :
 	rule__EntityFeature__Group_2_1_1_2__11__Impl
-	rule__EntityFeature__Group_2_1_1_2__12
 ;
 finally {
 	restoreStackSize(stackSize);
@@ -9882,35 +10073,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_11()); }
-	(rule__EntityFeature__Group_2_1_1_2_11__0)?
-	{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_11()); }
-)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityFeature__Group_2_1_1_2__12
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	rule__EntityFeature__Group_2_1_1_2__12__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__EntityFeature__Group_2_1_1_2__12__Impl
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-(
-	{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_12()); }
-	(rule__EntityFeature__Group_2_1_1_2_12__0)?
-	{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_12()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_2_11()); }
+	(rule__EntityFeature__UnorderedGroup_2_1_1_2_11)
+	{ after(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_2_11()); }
 )
 ;
 finally {
@@ -10161,53 +10326,53 @@
 }
 
 
-rule__EntityFeature__Group_2_1_1_2_11__0
+rule__EntityFeature__Group_2_1_1_2_11_0__0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_2_11__0__Impl
-	rule__EntityFeature__Group_2_1_1_2_11__1
+	rule__EntityFeature__Group_2_1_1_2_11_0__0__Impl
+	rule__EntityFeature__Group_2_1_1_2_11_0__1
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_2_11__0__Impl
+rule__EntityFeature__Group_2_1_1_2_11_0__0__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_1_1_2_11_0()); }
-	(rule__EntityFeature__IsGroupedAssignment_2_1_1_2_11_0)
-	{ after(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_1_1_2_11_0()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_1_1_2_11_0_0()); }
+	(rule__EntityFeature__IsGroupedAssignment_2_1_1_2_11_0_0)
+	{ after(grammarAccess.getEntityFeatureAccess().getIsGroupedAssignment_2_1_1_2_11_0_0()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_2_11__1
+rule__EntityFeature__Group_2_1_1_2_11_0__1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_2_11__1__Impl
+	rule__EntityFeature__Group_2_1_1_2_11_0__1__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_2_11__1__Impl
+rule__EntityFeature__Group_2_1_1_2_11_0__1__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_2_11_1()); }
-	(rule__EntityFeature__GroupNameAssignment_2_1_1_2_11_1)
-	{ after(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_2_11_1()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_2_11_0_1()); }
+	(rule__EntityFeature__GroupNameAssignment_2_1_1_2_11_0_1)
+	{ after(grammarAccess.getEntityFeatureAccess().getGroupNameAssignment_2_1_1_2_11_0_1()); }
 )
 ;
 finally {
@@ -10215,134 +10380,188 @@
 }
 
 
-rule__EntityFeature__Group_2_1_1_2_12__0
+rule__EntityFeature__Group_2_1_1_2_11_1__0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_2_12__0__Impl
-	rule__EntityFeature__Group_2_1_1_2_12__1
+	rule__EntityFeature__Group_2_1_1_2_11_1__0__Impl
+	rule__EntityFeature__Group_2_1_1_2_11_1__1
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_2_12__0__Impl
+rule__EntityFeature__Group_2_1_1_2_11_1__0__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_2_12_0()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getExtraStyleKeyword_2_1_1_2_11_1_0()); }
+	'extraStyle'
+	{ after(grammarAccess.getEntityFeatureAccess().getExtraStyleKeyword_2_1_1_2_11_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_2_11_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__EntityFeature__Group_2_1_1_2_11_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_2_11_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getEntityFeatureAccess().getExtraStyleAssignment_2_1_1_2_11_1_1()); }
+	(rule__EntityFeature__ExtraStyleAssignment_2_1_1_2_11_1_1)
+	{ after(grammarAccess.getEntityFeatureAccess().getExtraStyleAssignment_2_1_1_2_11_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_1_1_2_11_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__EntityFeature__Group_2_1_1_2_11_2__0__Impl
+	rule__EntityFeature__Group_2_1_1_2_11_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_2_11_2__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_2_11_2_0()); }
 	'properties'
-	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_2_12_0()); }
+	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_2_11_2_0()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_2_12__1
+rule__EntityFeature__Group_2_1_1_2_11_2__1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_2_12__1__Impl
-	rule__EntityFeature__Group_2_1_1_2_12__2
+	rule__EntityFeature__Group_2_1_1_2_11_2__1__Impl
+	rule__EntityFeature__Group_2_1_1_2_11_2__2
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_2_12__1__Impl
+rule__EntityFeature__Group_2_1_1_2_11_2__1__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_2_12_1()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_2_11_2_1()); }
 	'('
-	{ after(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_2_12_1()); }
+	{ after(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_2_11_2_1()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_2_12__2
+rule__EntityFeature__Group_2_1_1_2_11_2__2
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_2_12__2__Impl
-	rule__EntityFeature__Group_2_1_1_2_12__3
+	rule__EntityFeature__Group_2_1_1_2_11_2__2__Impl
+	rule__EntityFeature__Group_2_1_1_2_11_2__3
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_2_12__2__Impl
+rule__EntityFeature__Group_2_1_1_2_11_2__2__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_2_12_2()); }
-	(rule__EntityFeature__PropertiesAssignment_2_1_1_2_12_2)
-	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_2_12_2()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_2_11_2_2()); }
+	(rule__EntityFeature__PropertiesAssignment_2_1_1_2_11_2_2)
+	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_2_11_2_2()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_2_12__3
+rule__EntityFeature__Group_2_1_1_2_11_2__3
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_2_12__3__Impl
-	rule__EntityFeature__Group_2_1_1_2_12__4
+	rule__EntityFeature__Group_2_1_1_2_11_2__3__Impl
+	rule__EntityFeature__Group_2_1_1_2_11_2__4
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_2_12__3__Impl
+rule__EntityFeature__Group_2_1_1_2_11_2__3__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_12_3()); }
-	(rule__EntityFeature__Group_2_1_1_2_12_3__0)*
-	{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_12_3()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_11_2_3()); }
+	(rule__EntityFeature__Group_2_1_1_2_11_2_3__0)*
+	{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_11_2_3()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_2_12__4
+rule__EntityFeature__Group_2_1_1_2_11_2__4
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_2_12__4__Impl
+	rule__EntityFeature__Group_2_1_1_2_11_2__4__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_2_12__4__Impl
+rule__EntityFeature__Group_2_1_1_2_11_2__4__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_2_12_4()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_2_11_2_4()); }
 	')'
-	{ after(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_2_12_4()); }
+	{ after(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_2_11_2_4()); }
 )
 ;
 finally {
@@ -10350,53 +10569,53 @@
 }
 
 
-rule__EntityFeature__Group_2_1_1_2_12_3__0
+rule__EntityFeature__Group_2_1_1_2_11_2_3__0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_2_12_3__0__Impl
-	rule__EntityFeature__Group_2_1_1_2_12_3__1
+	rule__EntityFeature__Group_2_1_1_2_11_2_3__0__Impl
+	rule__EntityFeature__Group_2_1_1_2_11_2_3__1
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_2_12_3__0__Impl
+rule__EntityFeature__Group_2_1_1_2_11_2_3__0__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_2_12_3_0()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_2_11_2_3_0()); }
 	','
-	{ after(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_2_12_3_0()); }
+	{ after(grammarAccess.getEntityFeatureAccess().getCommaKeyword_2_1_1_2_11_2_3_0()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_2_12_3__1
+rule__EntityFeature__Group_2_1_1_2_11_2_3__1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__EntityFeature__Group_2_1_1_2_12_3__1__Impl
+	rule__EntityFeature__Group_2_1_1_2_11_2_3__1__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__Group_2_1_1_2_12_3__1__Impl
+rule__EntityFeature__Group_2_1_1_2_11_2_3__1__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_2_12_3_1()); }
-	(rule__EntityFeature__PropertiesAssignment_2_1_1_2_12_3_1)
-	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_2_12_3_1()); }
+	{ before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_2_11_2_3_1()); }
+	(rule__EntityFeature__PropertiesAssignment_2_1_1_2_11_2_3_1)
+	{ after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_2_11_2_3_1()); }
 )
 ;
 finally {
@@ -35721,6 +35940,226 @@
 }
 
 
+rule__EntityFeature__UnorderedGroup_2_1_1_0_5
+	@init {
+		int stackSize = keepStackSize();
+		getUnorderedGroupHelper().enter(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_0_5());
+	}
+:
+	rule__EntityFeature__UnorderedGroup_2_1_1_0_5__0
+	?
+;
+finally {
+	getUnorderedGroupHelper().leave(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_0_5());
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__UnorderedGroup_2_1_1_0_5__Impl
+	@init {
+		int stackSize = keepStackSize();
+		boolean selected = false;
+	}
+:
+		(
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_0_5(), 0)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_0_5(), 0);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_5_0()); }
+					(rule__EntityFeature__Group_2_1_1_0_5_0__0)
+					{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_5_0()); }
+				)
+			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_0_5(), 1)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_0_5(), 1);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_5_1()); }
+					(rule__EntityFeature__Group_2_1_1_0_5_1__0)
+					{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_5_1()); }
+				)
+			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_0_5(), 2)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_0_5(), 2);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_5_2()); }
+					(rule__EntityFeature__Group_2_1_1_0_5_2__0)
+					{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_5_2()); }
+				)
+			)
+		)
+		)
+;
+finally {
+	if (selected)
+		getUnorderedGroupHelper().returnFromSelection(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_0_5());
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__UnorderedGroup_2_1_1_0_5__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__EntityFeature__UnorderedGroup_2_1_1_0_5__Impl
+	rule__EntityFeature__UnorderedGroup_2_1_1_0_5__1?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__UnorderedGroup_2_1_1_0_5__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__EntityFeature__UnorderedGroup_2_1_1_0_5__Impl
+	rule__EntityFeature__UnorderedGroup_2_1_1_0_5__2?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__UnorderedGroup_2_1_1_0_5__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__EntityFeature__UnorderedGroup_2_1_1_0_5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__UnorderedGroup_2_1_1_1_5
+	@init {
+		int stackSize = keepStackSize();
+		getUnorderedGroupHelper().enter(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_1_5());
+	}
+:
+	rule__EntityFeature__UnorderedGroup_2_1_1_1_5__0
+	?
+;
+finally {
+	getUnorderedGroupHelper().leave(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_1_5());
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__UnorderedGroup_2_1_1_1_5__Impl
+	@init {
+		int stackSize = keepStackSize();
+		boolean selected = false;
+	}
+:
+		(
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_1_5(), 0)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_1_5(), 0);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_5_0()); }
+					(rule__EntityFeature__Group_2_1_1_1_5_0__0)
+					{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_5_0()); }
+				)
+			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_1_5(), 1)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_1_5(), 1);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_5_1()); }
+					(rule__EntityFeature__Group_2_1_1_1_5_1__0)
+					{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_5_1()); }
+				)
+			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_1_5(), 2)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_1_5(), 2);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_5_2()); }
+					(rule__EntityFeature__Group_2_1_1_1_5_2__0)
+					{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_5_2()); }
+				)
+			)
+		)
+		)
+;
+finally {
+	if (selected)
+		getUnorderedGroupHelper().returnFromSelection(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_1_5());
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__UnorderedGroup_2_1_1_1_5__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__EntityFeature__UnorderedGroup_2_1_1_1_5__Impl
+	rule__EntityFeature__UnorderedGroup_2_1_1_1_5__1?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__UnorderedGroup_2_1_1_1_5__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__EntityFeature__UnorderedGroup_2_1_1_1_5__Impl
+	rule__EntityFeature__UnorderedGroup_2_1_1_1_5__2?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__UnorderedGroup_2_1_1_1_5__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__EntityFeature__UnorderedGroup_2_1_1_1_5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
 rule__EntityFeature__UnorderedGroup_2_1_1_2_1
 	@init {
 		int stackSize = keepStackSize();
@@ -35831,6 +36270,116 @@
 }
 
 
+rule__EntityFeature__UnorderedGroup_2_1_1_2_11
+	@init {
+		int stackSize = keepStackSize();
+		getUnorderedGroupHelper().enter(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_2_11());
+	}
+:
+	rule__EntityFeature__UnorderedGroup_2_1_1_2_11__0
+	?
+;
+finally {
+	getUnorderedGroupHelper().leave(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_2_11());
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__UnorderedGroup_2_1_1_2_11__Impl
+	@init {
+		int stackSize = keepStackSize();
+		boolean selected = false;
+	}
+:
+		(
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_2_11(), 0)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_2_11(), 0);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_11_0()); }
+					(rule__EntityFeature__Group_2_1_1_2_11_0__0)
+					{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_11_0()); }
+				)
+			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_2_11(), 1)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_2_11(), 1);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_11_1()); }
+					(rule__EntityFeature__Group_2_1_1_2_11_1__0)
+					{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_11_1()); }
+				)
+			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_2_11(), 2)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_2_11(), 2);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_11_2()); }
+					(rule__EntityFeature__Group_2_1_1_2_11_2__0)
+					{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_11_2()); }
+				)
+			)
+		)
+		)
+;
+finally {
+	if (selected)
+		getUnorderedGroupHelper().returnFromSelection(grammarAccess.getEntityFeatureAccess().getUnorderedGroup_2_1_1_2_11());
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__UnorderedGroup_2_1_1_2_11__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__EntityFeature__UnorderedGroup_2_1_1_2_11__Impl
+	rule__EntityFeature__UnorderedGroup_2_1_1_2_11__1?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__UnorderedGroup_2_1_1_2_11__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__EntityFeature__UnorderedGroup_2_1_1_2_11__Impl
+	rule__EntityFeature__UnorderedGroup_2_1_1_2_11__2?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__UnorderedGroup_2_1_1_2_11__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__EntityFeature__UnorderedGroup_2_1_1_2_11__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
 rule__TablePerClassStrategy__UnorderedGroup_3
 	@init {
 		int stackSize = keepStackSize();
@@ -38353,19 +38902,57 @@
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__SideKickAssignment_2_0_1_11
+rule__EntityFeature__SideKickAssignment_2_0_1_11_0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getEntityFeatureAccess().getSideKickSideKickKeyword_2_0_1_11_0()); }
+		{ before(grammarAccess.getEntityFeatureAccess().getSideKickSideKickKeyword_2_0_1_11_0_0()); }
 		(
-			{ before(grammarAccess.getEntityFeatureAccess().getSideKickSideKickKeyword_2_0_1_11_0()); }
+			{ before(grammarAccess.getEntityFeatureAccess().getSideKickSideKickKeyword_2_0_1_11_0_0()); }
 			'sideKick'
-			{ after(grammarAccess.getEntityFeatureAccess().getSideKickSideKickKeyword_2_0_1_11_0()); }
+			{ after(grammarAccess.getEntityFeatureAccess().getSideKickSideKickKeyword_2_0_1_11_0_0()); }
 		)
-		{ after(grammarAccess.getEntityFeatureAccess().getSideKickSideKickKeyword_2_0_1_11_0()); }
+		{ after(grammarAccess.getEntityFeatureAccess().getSideKickSideKickKeyword_2_0_1_11_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__ReferenceHiddenAssignment_2_0_1_11_1_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getEntityFeatureAccess().getReferenceHiddenHiddenKeyword_2_0_1_11_1_0_0()); }
+		(
+			{ before(grammarAccess.getEntityFeatureAccess().getReferenceHiddenHiddenKeyword_2_0_1_11_1_0_0()); }
+			'hidden'
+			{ after(grammarAccess.getEntityFeatureAccess().getReferenceHiddenHiddenKeyword_2_0_1_11_1_0_0()); }
+		)
+		{ after(grammarAccess.getEntityFeatureAccess().getReferenceHiddenHiddenKeyword_2_0_1_11_1_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__ReferenceReadOnlyAssignment_2_0_1_11_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getEntityFeatureAccess().getReferenceReadOnlyReadOnlyKeyword_2_0_1_11_1_1_0()); }
+		(
+			{ before(grammarAccess.getEntityFeatureAccess().getReferenceReadOnlyReadOnlyKeyword_2_0_1_11_1_1_0()); }
+			'readOnly'
+			{ after(grammarAccess.getEntityFeatureAccess().getReferenceReadOnlyReadOnlyKeyword_2_0_1_11_1_1_0()); }
+		)
+		{ after(grammarAccess.getEntityFeatureAccess().getReferenceReadOnlyReadOnlyKeyword_2_0_1_11_1_1_0()); }
 	)
 ;
 finally {
@@ -38470,113 +39057,166 @@
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__TypeAssignment_2_1_1_0_1
+rule__EntityFeature__AttributeHiddenAssignment_2_1_1_0_1_0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getEntityFeatureAccess().getTypeLScalarTypeCrossReference_2_1_1_0_1_0()); }
+		{ before(grammarAccess.getEntityFeatureAccess().getAttributeHiddenHiddenKeyword_2_1_1_0_1_0_0()); }
 		(
-			{ before(grammarAccess.getEntityFeatureAccess().getTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_1_1_0_1_0_1()); }
+			{ before(grammarAccess.getEntityFeatureAccess().getAttributeHiddenHiddenKeyword_2_1_1_0_1_0_0()); }
+			'hidden'
+			{ after(grammarAccess.getEntityFeatureAccess().getAttributeHiddenHiddenKeyword_2_1_1_0_1_0_0()); }
+		)
+		{ after(grammarAccess.getEntityFeatureAccess().getAttributeHiddenHiddenKeyword_2_1_1_0_1_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_0_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getEntityFeatureAccess().getAttributeReadOnlyReadOnlyKeyword_2_1_1_0_1_1_0()); }
+		(
+			{ before(grammarAccess.getEntityFeatureAccess().getAttributeReadOnlyReadOnlyKeyword_2_1_1_0_1_1_0()); }
+			'readOnly'
+			{ after(grammarAccess.getEntityFeatureAccess().getAttributeReadOnlyReadOnlyKeyword_2_1_1_0_1_1_0()); }
+		)
+		{ after(grammarAccess.getEntityFeatureAccess().getAttributeReadOnlyReadOnlyKeyword_2_1_1_0_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__TypeAssignment_2_1_1_0_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getEntityFeatureAccess().getTypeLScalarTypeCrossReference_2_1_1_0_2_0()); }
+		(
+			{ before(grammarAccess.getEntityFeatureAccess().getTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_1_1_0_2_0_1()); }
 			ruleTYPE_CROSS_REFERENCE
-			{ after(grammarAccess.getEntityFeatureAccess().getTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_1_1_0_1_0_1()); }
+			{ after(grammarAccess.getEntityFeatureAccess().getTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_1_1_0_2_0_1()); }
 		)
-		{ after(grammarAccess.getEntityFeatureAccess().getTypeLScalarTypeCrossReference_2_1_1_0_1_0()); }
+		{ after(grammarAccess.getEntityFeatureAccess().getTypeLScalarTypeCrossReference_2_1_1_0_2_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__ConstraintsAssignment_2_1_1_0_2_1
+rule__EntityFeature__ConstraintsAssignment_2_1_1_0_3_1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getEntityFeatureAccess().getConstraintsAllConstraintsParserRuleCall_2_1_1_0_2_1_0()); }
+		{ before(grammarAccess.getEntityFeatureAccess().getConstraintsAllConstraintsParserRuleCall_2_1_1_0_3_1_0()); }
 		ruleAllConstraints
-		{ after(grammarAccess.getEntityFeatureAccess().getConstraintsAllConstraintsParserRuleCall_2_1_1_0_2_1_0()); }
+		{ after(grammarAccess.getEntityFeatureAccess().getConstraintsAllConstraintsParserRuleCall_2_1_1_0_3_1_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__NameAssignment_2_1_1_0_3
+rule__EntityFeature__NameAssignment_2_1_1_0_4
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getEntityFeatureAccess().getNameTRANSLATABLEIDParserRuleCall_2_1_1_0_3_0()); }
+		{ before(grammarAccess.getEntityFeatureAccess().getNameTRANSLATABLEIDParserRuleCall_2_1_1_0_4_0()); }
 		ruleTRANSLATABLEID
-		{ after(grammarAccess.getEntityFeatureAccess().getNameTRANSLATABLEIDParserRuleCall_2_1_1_0_3_0()); }
+		{ after(grammarAccess.getEntityFeatureAccess().getNameTRANSLATABLEIDParserRuleCall_2_1_1_0_4_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__IsGroupedAssignment_2_1_1_0_4_0
+rule__EntityFeature__IsGroupedAssignment_2_1_1_0_5_0_0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_0_4_0_0()); }
+		{ before(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_0_5_0_0_0()); }
 		(
-			{ before(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_0_4_0_0()); }
+			{ before(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_0_5_0_0_0()); }
 			'group'
-			{ after(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_0_4_0_0()); }
+			{ after(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_0_5_0_0_0()); }
 		)
-		{ after(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_0_4_0_0()); }
+		{ after(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_0_5_0_0_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__GroupNameAssignment_2_1_1_0_4_1
+rule__EntityFeature__GroupNameAssignment_2_1_1_0_5_0_1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getEntityFeatureAccess().getGroupNameTRANSLATABLEIDParserRuleCall_2_1_1_0_4_1_0()); }
+		{ before(grammarAccess.getEntityFeatureAccess().getGroupNameTRANSLATABLEIDParserRuleCall_2_1_1_0_5_0_1_0()); }
 		ruleTRANSLATABLEID
-		{ after(grammarAccess.getEntityFeatureAccess().getGroupNameTRANSLATABLEIDParserRuleCall_2_1_1_0_4_1_0()); }
+		{ after(grammarAccess.getEntityFeatureAccess().getGroupNameTRANSLATABLEIDParserRuleCall_2_1_1_0_5_0_1_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_2
+rule__EntityFeature__ExtraStyleAssignment_2_1_1_0_5_1_1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_0_5_2_0()); }
-		ruleKeyAndValue
-		{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_0_5_2_0()); }
+		{ before(grammarAccess.getEntityFeatureAccess().getExtraStyleSTRINGTerminalRuleCall_2_1_1_0_5_1_1_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getEntityFeatureAccess().getExtraStyleSTRINGTerminalRuleCall_2_1_1_0_5_1_1_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_3_1
+rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_2_2
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_0_5_3_1_0()); }
+		{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_0_5_2_2_0()); }
 		ruleKeyAndValue
-		{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_0_5_3_1_0()); }
+		{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_0_5_2_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__PropertiesAssignment_2_1_1_0_5_2_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_0_5_2_3_1_0()); }
+		ruleKeyAndValue
+		{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_0_5_2_3_1_0()); }
 	)
 ;
 finally {
@@ -38621,98 +39261,151 @@
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__TypeAssignment_2_1_1_1_2
+rule__EntityFeature__AttributeHiddenAssignment_2_1_1_1_2_0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getEntityFeatureAccess().getTypeLScalarTypeCrossReference_2_1_1_1_2_0()); }
+		{ before(grammarAccess.getEntityFeatureAccess().getAttributeHiddenHiddenKeyword_2_1_1_1_2_0_0()); }
 		(
-			{ before(grammarAccess.getEntityFeatureAccess().getTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_1_1_1_2_0_1()); }
+			{ before(grammarAccess.getEntityFeatureAccess().getAttributeHiddenHiddenKeyword_2_1_1_1_2_0_0()); }
+			'hidden'
+			{ after(grammarAccess.getEntityFeatureAccess().getAttributeHiddenHiddenKeyword_2_1_1_1_2_0_0()); }
+		)
+		{ after(grammarAccess.getEntityFeatureAccess().getAttributeHiddenHiddenKeyword_2_1_1_1_2_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_1_2_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getEntityFeatureAccess().getAttributeReadOnlyReadOnlyKeyword_2_1_1_1_2_1_0()); }
+		(
+			{ before(grammarAccess.getEntityFeatureAccess().getAttributeReadOnlyReadOnlyKeyword_2_1_1_1_2_1_0()); }
+			'readOnly'
+			{ after(grammarAccess.getEntityFeatureAccess().getAttributeReadOnlyReadOnlyKeyword_2_1_1_1_2_1_0()); }
+		)
+		{ after(grammarAccess.getEntityFeatureAccess().getAttributeReadOnlyReadOnlyKeyword_2_1_1_1_2_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__TypeAssignment_2_1_1_1_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getEntityFeatureAccess().getTypeLScalarTypeCrossReference_2_1_1_1_3_0()); }
+		(
+			{ before(grammarAccess.getEntityFeatureAccess().getTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_1_1_1_3_0_1()); }
 			ruleTYPE_CROSS_REFERENCE
-			{ after(grammarAccess.getEntityFeatureAccess().getTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_1_1_1_2_0_1()); }
+			{ after(grammarAccess.getEntityFeatureAccess().getTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_1_1_1_3_0_1()); }
 		)
-		{ after(grammarAccess.getEntityFeatureAccess().getTypeLScalarTypeCrossReference_2_1_1_1_2_0()); }
+		{ after(grammarAccess.getEntityFeatureAccess().getTypeLScalarTypeCrossReference_2_1_1_1_3_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__NameAssignment_2_1_1_1_3
+rule__EntityFeature__NameAssignment_2_1_1_1_4
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getEntityFeatureAccess().getNameTRANSLATABLEIDParserRuleCall_2_1_1_1_3_0()); }
+		{ before(grammarAccess.getEntityFeatureAccess().getNameTRANSLATABLEIDParserRuleCall_2_1_1_1_4_0()); }
 		ruleTRANSLATABLEID
-		{ after(grammarAccess.getEntityFeatureAccess().getNameTRANSLATABLEIDParserRuleCall_2_1_1_1_3_0()); }
+		{ after(grammarAccess.getEntityFeatureAccess().getNameTRANSLATABLEIDParserRuleCall_2_1_1_1_4_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__IsGroupedAssignment_2_1_1_1_4_0
+rule__EntityFeature__IsGroupedAssignment_2_1_1_1_5_0_0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_1_4_0_0()); }
+		{ before(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_1_5_0_0_0()); }
 		(
-			{ before(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_1_4_0_0()); }
+			{ before(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_1_5_0_0_0()); }
 			'group'
-			{ after(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_1_4_0_0()); }
+			{ after(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_1_5_0_0_0()); }
 		)
-		{ after(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_1_4_0_0()); }
+		{ after(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_1_5_0_0_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__GroupNameAssignment_2_1_1_1_4_1
+rule__EntityFeature__GroupNameAssignment_2_1_1_1_5_0_1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getEntityFeatureAccess().getGroupNameTRANSLATABLEIDParserRuleCall_2_1_1_1_4_1_0()); }
+		{ before(grammarAccess.getEntityFeatureAccess().getGroupNameTRANSLATABLEIDParserRuleCall_2_1_1_1_5_0_1_0()); }
 		ruleTRANSLATABLEID
-		{ after(grammarAccess.getEntityFeatureAccess().getGroupNameTRANSLATABLEIDParserRuleCall_2_1_1_1_4_1_0()); }
+		{ after(grammarAccess.getEntityFeatureAccess().getGroupNameTRANSLATABLEIDParserRuleCall_2_1_1_1_5_0_1_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_2
+rule__EntityFeature__ExtraStyleAssignment_2_1_1_1_5_1_1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_1_5_2_0()); }
-		ruleKeyAndValue
-		{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_1_5_2_0()); }
+		{ before(grammarAccess.getEntityFeatureAccess().getExtraStyleSTRINGTerminalRuleCall_2_1_1_1_5_1_1_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getEntityFeatureAccess().getExtraStyleSTRINGTerminalRuleCall_2_1_1_1_5_1_1_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_3_1
+rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_2_2
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_1_5_3_1_0()); }
+		{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_1_5_2_2_0()); }
 		ruleKeyAndValue
-		{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_1_5_3_1_0()); }
+		{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_1_5_2_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__PropertiesAssignment_2_1_1_1_5_2_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_1_5_2_3_1_0()); }
+		ruleKeyAndValue
+		{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_1_5_2_3_1_0()); }
 	)
 ;
 finally {
@@ -39113,64 +39806,79 @@
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__IsGroupedAssignment_2_1_1_2_11_0
+rule__EntityFeature__IsGroupedAssignment_2_1_1_2_11_0_0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_2_11_0_0()); }
+		{ before(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_2_11_0_0_0()); }
 		(
-			{ before(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_2_11_0_0()); }
+			{ before(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_2_11_0_0_0()); }
 			'group'
-			{ after(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_2_11_0_0()); }
+			{ after(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_2_11_0_0_0()); }
 		)
-		{ after(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_2_11_0_0()); }
+		{ after(grammarAccess.getEntityFeatureAccess().getIsGroupedGroupKeyword_2_1_1_2_11_0_0_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__GroupNameAssignment_2_1_1_2_11_1
+rule__EntityFeature__GroupNameAssignment_2_1_1_2_11_0_1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getEntityFeatureAccess().getGroupNameTRANSLATABLEIDParserRuleCall_2_1_1_2_11_1_0()); }
+		{ before(grammarAccess.getEntityFeatureAccess().getGroupNameTRANSLATABLEIDParserRuleCall_2_1_1_2_11_0_1_0()); }
 		ruleTRANSLATABLEID
-		{ after(grammarAccess.getEntityFeatureAccess().getGroupNameTRANSLATABLEIDParserRuleCall_2_1_1_2_11_1_0()); }
+		{ after(grammarAccess.getEntityFeatureAccess().getGroupNameTRANSLATABLEIDParserRuleCall_2_1_1_2_11_0_1_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__PropertiesAssignment_2_1_1_2_12_2
+rule__EntityFeature__ExtraStyleAssignment_2_1_1_2_11_1_1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_2_12_2_0()); }
-		ruleKeyAndValue
-		{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_2_12_2_0()); }
+		{ before(grammarAccess.getEntityFeatureAccess().getExtraStyleSTRINGTerminalRuleCall_2_1_1_2_11_1_1_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getEntityFeatureAccess().getExtraStyleSTRINGTerminalRuleCall_2_1_1_2_11_1_1_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__EntityFeature__PropertiesAssignment_2_1_1_2_12_3_1
+rule__EntityFeature__PropertiesAssignment_2_1_1_2_11_2_2
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_2_12_3_1_0()); }
+		{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_2_11_2_2_0()); }
 		ruleKeyAndValue
-		{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_2_12_3_1_0()); }
+		{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_2_11_2_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__PropertiesAssignment_2_1_1_2_11_2_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_2_11_2_3_1_0()); }
+		ruleKeyAndValue
+		{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_2_11_2_3_1_0()); }
 	)
 ;
 finally {
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammar.tokens b/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammar.tokens
index 489617a..0093ad3 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammar.tokens
+++ b/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammar.tokens
@@ -1,11 +1,11 @@
 '!'=58
 '!='=42
 '!=='=44
-'#'=136
+'#'=137
 '%'=57
 '%='=40
 '&&'=15
-'&'=157
+'&'=158
 '('=91
 ')'=92
 '*'=54
@@ -26,9 +26,9 @@
 '/='=39
 '0'=85
 '1'=87
-':'=142
-'::'=185
-';'=134
+':'=143
+'::'=186
+';'=135
 '<'=47
 '<='=84
 '<>'=52
@@ -39,9 +39,9 @@
 '>'=46
 '>='=45
 '?'=86
-'?.'=186
+'?.'=187
 '?:'=53
-'@'=135
+'@'=136
 'CHAR'=71
 'DATE'=73
 'INHERIT'=69
@@ -50,86 +50,87 @@
 'TIMESTAMP'=74
 '['=100
 ']'=101
-'abstract'=158
-'as'=138
-'asBlob'=181
-'asDefault'=182
-'asGrid'=166
-'asKanbanOrdering'=177
-'asKanbanState'=176
-'asPrimitive'=179
-'asTable'=167
+'abstract'=159
+'as'=139
+'asBlob'=182
+'asDefault'=183
+'asGrid'=167
+'asKanbanOrdering'=178
+'asKanbanState'=177
+'asPrimitive'=180
+'asTable'=168
 'bean'=94
 'cachable'=17
-'cacheable'=161
+'cacheable'=162
 'cascadeMergePersist'=32
-'cascadeRefresh'=165
+'cascadeRefresh'=166
 'cascadeRemove'=33
-'case'=144
-'catch'=156
+'case'=145
+'catch'=157
 'collection'=23
-'datatype'=112
+'datatype'=113
 'date'=29
-'dateType'=180
-'decentOrder'=178
-'def'=104
-'default'=143
+'dateType'=181
+'decentOrder'=179
+'def'=105
+'default'=144
 'derived'=22
-'digits'=121
-'discriminatorColumn'=108
-'discriminatorType'=109
-'discriminatorValue'=110
-'do'=147
-'domainDescription'=170
-'domainKey'=171
+'digits'=122
+'discriminatorColumn'=109
+'discriminatorType'=110
+'discriminatorValue'=111
+'do'=148
+'domainDescription'=173
+'domainKey'=174
 'dto'=28
-'else'=140
+'else'=141
 'entity'=88
-'enum'=130
+'enum'=131
 'error'=77
 'extends'=63
 'extension'=66
+'extraStyle'=104
 'false'=68
-'filter'=131
+'filter'=132
 'filterDepth'=99
-'finally'=154
-'for'=145
-'forNull'=183
-'group'=169
-'hidden'=173
-'historized'=159
+'finally'=155
+'for'=146
+'forNull'=184
+'group'=172
+'hidden'=170
+'historized'=160
 'id'=18
-'if'=139
+'if'=140
 'import'=65
 'index'=95
 'info'=75
-'inheritancePerClass'=107
-'inheritancePerSubclass'=111
-'instanceof'=137
-'isFalse'=114
-'isFuture'=122
-'isNotNull'=126
-'isNull'=127
-'isPast'=123
-'isTrue'=118
-'jvmType'=113
-'key'=132
+'inheritancePerClass'=108
+'inheritancePerSubclass'=112
+'instanceof'=138
+'isFalse'=115
+'isFuture'=123
+'isNotNull'=127
+'isNull'=128
+'isPast'=124
+'isTrue'=119
+'jvmType'=114
+'key'=133
 'lazy'=26
-'mappedSuperclass'=162
+'mappedSuperclass'=163
 'mapto'=30
-'maxDecimal'=119
-'maxNumber'=124
-'minDecimal'=120
-'minMaxSize'=129
-'minNumber'=125
-'msgCode'=115
-'msgI18nKey'=116
-'new'=148
+'maxDecimal'=120
+'maxNumber'=125
+'minDecimal'=121
+'minMaxSize'=130
+'minNumber'=126
+'msgCode'=116
+'msgI18nKey'=117
+'new'=149
 'notnull'=27
-'ns'=184
-'null'=149
-'onKanbanCard'=175
-'onTab'=163
+'ns'=185
+'null'=150
+'onKanbanCard'=176
+'onTab'=164
 'opposite'=102
 'package'=80
 'persistenceUnit'=93
@@ -137,41 +138,41 @@
 'properties'=103
 'protected'=82
 'public'=83
-'range'=172
-'readOnly'=174
+'range'=175
+'readOnly'=171
 'ref'=31
 'refers'=24
-'regex'=128
-'return'=152
+'regex'=129
+'return'=153
 'schemaName'=97
 'settings'=25
-'severity'=117
-'sideKick'=168
-'states'=105
+'severity'=118
+'sideKick'=169
+'states'=106
 'static'=64
 'super'=67
-'superIndex'=106
-'switch'=141
-'synchronized'=155
+'superIndex'=107
+'switch'=142
+'synchronized'=156
 'tableName'=98
-'throw'=151
+'throw'=152
 'time'=78
-'timedependent'=160
+'timedependent'=161
 'timestamp'=79
 'transient'=20
-'true'=188
-'try'=153
-'typeof'=150
-'unique'=164
+'true'=189
+'try'=154
+'typeof'=151
+'unique'=165
 'uuid'=19
 'val'=62
-'value'=133
+'value'=134
 'var'=16
 'version'=21
 'warn'=76
-'while'=146
+'while'=147
 '{'=89
-'|'=187
+'|'=188
 '||'=14
 '}'=90
 RULE_ANY_OTHER=12
@@ -277,6 +278,7 @@
 T__186=186
 T__187=187
 T__188=188
+T__189=189
 T__18=18
 T__19=19
 T__20=20
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammarLexer.java b/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammarLexer.java
index f1f4a27..072f297 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammarLexer.java
+++ b/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammarLexer.java
@@ -151,6 +151,7 @@
     public static final int T__187=187;
     public static final int T__93=93;
     public static final int T__94=94;
+    public static final int T__189=189;
     public static final int T__184=184;
     public static final int T__183=183;
     public static final int T__186=186;
@@ -2108,10 +2109,10 @@
         try {
             int _type = T__104;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:102:8: ( 'def' )
-            // InternalEntityGrammar.g:102:10: 'def'
+            // InternalEntityGrammar.g:102:8: ( 'extraStyle' )
+            // InternalEntityGrammar.g:102:10: 'extraStyle'
             {
-            match("def"); 
+            match("extraStyle"); 
 
 
             }
@@ -2129,10 +2130,10 @@
         try {
             int _type = T__105;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:103:8: ( 'states' )
-            // InternalEntityGrammar.g:103:10: 'states'
+            // InternalEntityGrammar.g:103:8: ( 'def' )
+            // InternalEntityGrammar.g:103:10: 'def'
             {
-            match("states"); 
+            match("def"); 
 
 
             }
@@ -2150,10 +2151,10 @@
         try {
             int _type = T__106;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:104:8: ( 'superIndex' )
-            // InternalEntityGrammar.g:104:10: 'superIndex'
+            // InternalEntityGrammar.g:104:8: ( 'states' )
+            // InternalEntityGrammar.g:104:10: 'states'
             {
-            match("superIndex"); 
+            match("states"); 
 
 
             }
@@ -2171,10 +2172,10 @@
         try {
             int _type = T__107;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:105:8: ( 'inheritancePerClass' )
-            // InternalEntityGrammar.g:105:10: 'inheritancePerClass'
+            // InternalEntityGrammar.g:105:8: ( 'superIndex' )
+            // InternalEntityGrammar.g:105:10: 'superIndex'
             {
-            match("inheritancePerClass"); 
+            match("superIndex"); 
 
 
             }
@@ -2192,10 +2193,10 @@
         try {
             int _type = T__108;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:106:8: ( 'discriminatorColumn' )
-            // InternalEntityGrammar.g:106:10: 'discriminatorColumn'
+            // InternalEntityGrammar.g:106:8: ( 'inheritancePerClass' )
+            // InternalEntityGrammar.g:106:10: 'inheritancePerClass'
             {
-            match("discriminatorColumn"); 
+            match("inheritancePerClass"); 
 
 
             }
@@ -2213,10 +2214,10 @@
         try {
             int _type = T__109;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:107:8: ( 'discriminatorType' )
-            // InternalEntityGrammar.g:107:10: 'discriminatorType'
+            // InternalEntityGrammar.g:107:8: ( 'discriminatorColumn' )
+            // InternalEntityGrammar.g:107:10: 'discriminatorColumn'
             {
-            match("discriminatorType"); 
+            match("discriminatorColumn"); 
 
 
             }
@@ -2234,10 +2235,10 @@
         try {
             int _type = T__110;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:108:8: ( 'discriminatorValue' )
-            // InternalEntityGrammar.g:108:10: 'discriminatorValue'
+            // InternalEntityGrammar.g:108:8: ( 'discriminatorType' )
+            // InternalEntityGrammar.g:108:10: 'discriminatorType'
             {
-            match("discriminatorValue"); 
+            match("discriminatorType"); 
 
 
             }
@@ -2255,10 +2256,10 @@
         try {
             int _type = T__111;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:109:8: ( 'inheritancePerSubclass' )
-            // InternalEntityGrammar.g:109:10: 'inheritancePerSubclass'
+            // InternalEntityGrammar.g:109:8: ( 'discriminatorValue' )
+            // InternalEntityGrammar.g:109:10: 'discriminatorValue'
             {
-            match("inheritancePerSubclass"); 
+            match("discriminatorValue"); 
 
 
             }
@@ -2276,10 +2277,10 @@
         try {
             int _type = T__112;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:110:8: ( 'datatype' )
-            // InternalEntityGrammar.g:110:10: 'datatype'
+            // InternalEntityGrammar.g:110:8: ( 'inheritancePerSubclass' )
+            // InternalEntityGrammar.g:110:10: 'inheritancePerSubclass'
             {
-            match("datatype"); 
+            match("inheritancePerSubclass"); 
 
 
             }
@@ -2297,10 +2298,10 @@
         try {
             int _type = T__113;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:111:8: ( 'jvmType' )
-            // InternalEntityGrammar.g:111:10: 'jvmType'
+            // InternalEntityGrammar.g:111:8: ( 'datatype' )
+            // InternalEntityGrammar.g:111:10: 'datatype'
             {
-            match("jvmType"); 
+            match("datatype"); 
 
 
             }
@@ -2318,10 +2319,10 @@
         try {
             int _type = T__114;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:112:8: ( 'isFalse' )
-            // InternalEntityGrammar.g:112:10: 'isFalse'
+            // InternalEntityGrammar.g:112:8: ( 'jvmType' )
+            // InternalEntityGrammar.g:112:10: 'jvmType'
             {
-            match("isFalse"); 
+            match("jvmType"); 
 
 
             }
@@ -2339,10 +2340,10 @@
         try {
             int _type = T__115;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:113:8: ( 'msgCode' )
-            // InternalEntityGrammar.g:113:10: 'msgCode'
+            // InternalEntityGrammar.g:113:8: ( 'isFalse' )
+            // InternalEntityGrammar.g:113:10: 'isFalse'
             {
-            match("msgCode"); 
+            match("isFalse"); 
 
 
             }
@@ -2360,10 +2361,10 @@
         try {
             int _type = T__116;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:114:8: ( 'msgI18nKey' )
-            // InternalEntityGrammar.g:114:10: 'msgI18nKey'
+            // InternalEntityGrammar.g:114:8: ( 'msgCode' )
+            // InternalEntityGrammar.g:114:10: 'msgCode'
             {
-            match("msgI18nKey"); 
+            match("msgCode"); 
 
 
             }
@@ -2381,10 +2382,10 @@
         try {
             int _type = T__117;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:115:8: ( 'severity' )
-            // InternalEntityGrammar.g:115:10: 'severity'
+            // InternalEntityGrammar.g:115:8: ( 'msgI18nKey' )
+            // InternalEntityGrammar.g:115:10: 'msgI18nKey'
             {
-            match("severity"); 
+            match("msgI18nKey"); 
 
 
             }
@@ -2402,10 +2403,10 @@
         try {
             int _type = T__118;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:116:8: ( 'isTrue' )
-            // InternalEntityGrammar.g:116:10: 'isTrue'
+            // InternalEntityGrammar.g:116:8: ( 'severity' )
+            // InternalEntityGrammar.g:116:10: 'severity'
             {
-            match("isTrue"); 
+            match("severity"); 
 
 
             }
@@ -2423,10 +2424,10 @@
         try {
             int _type = T__119;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:117:8: ( 'maxDecimal' )
-            // InternalEntityGrammar.g:117:10: 'maxDecimal'
+            // InternalEntityGrammar.g:117:8: ( 'isTrue' )
+            // InternalEntityGrammar.g:117:10: 'isTrue'
             {
-            match("maxDecimal"); 
+            match("isTrue"); 
 
 
             }
@@ -2444,10 +2445,10 @@
         try {
             int _type = T__120;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:118:8: ( 'minDecimal' )
-            // InternalEntityGrammar.g:118:10: 'minDecimal'
+            // InternalEntityGrammar.g:118:8: ( 'maxDecimal' )
+            // InternalEntityGrammar.g:118:10: 'maxDecimal'
             {
-            match("minDecimal"); 
+            match("maxDecimal"); 
 
 
             }
@@ -2465,10 +2466,10 @@
         try {
             int _type = T__121;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:119:8: ( 'digits' )
-            // InternalEntityGrammar.g:119:10: 'digits'
+            // InternalEntityGrammar.g:119:8: ( 'minDecimal' )
+            // InternalEntityGrammar.g:119:10: 'minDecimal'
             {
-            match("digits"); 
+            match("minDecimal"); 
 
 
             }
@@ -2486,10 +2487,10 @@
         try {
             int _type = T__122;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:120:8: ( 'isFuture' )
-            // InternalEntityGrammar.g:120:10: 'isFuture'
+            // InternalEntityGrammar.g:120:8: ( 'digits' )
+            // InternalEntityGrammar.g:120:10: 'digits'
             {
-            match("isFuture"); 
+            match("digits"); 
 
 
             }
@@ -2507,10 +2508,10 @@
         try {
             int _type = T__123;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:121:8: ( 'isPast' )
-            // InternalEntityGrammar.g:121:10: 'isPast'
+            // InternalEntityGrammar.g:121:8: ( 'isFuture' )
+            // InternalEntityGrammar.g:121:10: 'isFuture'
             {
-            match("isPast"); 
+            match("isFuture"); 
 
 
             }
@@ -2528,10 +2529,10 @@
         try {
             int _type = T__124;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:122:8: ( 'maxNumber' )
-            // InternalEntityGrammar.g:122:10: 'maxNumber'
+            // InternalEntityGrammar.g:122:8: ( 'isPast' )
+            // InternalEntityGrammar.g:122:10: 'isPast'
             {
-            match("maxNumber"); 
+            match("isPast"); 
 
 
             }
@@ -2549,10 +2550,10 @@
         try {
             int _type = T__125;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:123:8: ( 'minNumber' )
-            // InternalEntityGrammar.g:123:10: 'minNumber'
+            // InternalEntityGrammar.g:123:8: ( 'maxNumber' )
+            // InternalEntityGrammar.g:123:10: 'maxNumber'
             {
-            match("minNumber"); 
+            match("maxNumber"); 
 
 
             }
@@ -2570,10 +2571,10 @@
         try {
             int _type = T__126;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:124:8: ( 'isNotNull' )
-            // InternalEntityGrammar.g:124:10: 'isNotNull'
+            // InternalEntityGrammar.g:124:8: ( 'minNumber' )
+            // InternalEntityGrammar.g:124:10: 'minNumber'
             {
-            match("isNotNull"); 
+            match("minNumber"); 
 
 
             }
@@ -2591,10 +2592,10 @@
         try {
             int _type = T__127;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:125:8: ( 'isNull' )
-            // InternalEntityGrammar.g:125:10: 'isNull'
+            // InternalEntityGrammar.g:125:8: ( 'isNotNull' )
+            // InternalEntityGrammar.g:125:10: 'isNotNull'
             {
-            match("isNull"); 
+            match("isNotNull"); 
 
 
             }
@@ -2612,10 +2613,10 @@
         try {
             int _type = T__128;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:126:8: ( 'regex' )
-            // InternalEntityGrammar.g:126:10: 'regex'
+            // InternalEntityGrammar.g:126:8: ( 'isNull' )
+            // InternalEntityGrammar.g:126:10: 'isNull'
             {
-            match("regex"); 
+            match("isNull"); 
 
 
             }
@@ -2633,10 +2634,10 @@
         try {
             int _type = T__129;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:127:8: ( 'minMaxSize' )
-            // InternalEntityGrammar.g:127:10: 'minMaxSize'
+            // InternalEntityGrammar.g:127:8: ( 'regex' )
+            // InternalEntityGrammar.g:127:10: 'regex'
             {
-            match("minMaxSize"); 
+            match("regex"); 
 
 
             }
@@ -2654,10 +2655,10 @@
         try {
             int _type = T__130;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:128:8: ( 'enum' )
-            // InternalEntityGrammar.g:128:10: 'enum'
+            // InternalEntityGrammar.g:128:8: ( 'minMaxSize' )
+            // InternalEntityGrammar.g:128:10: 'minMaxSize'
             {
-            match("enum"); 
+            match("minMaxSize"); 
 
 
             }
@@ -2675,10 +2676,10 @@
         try {
             int _type = T__131;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:129:8: ( 'filter' )
-            // InternalEntityGrammar.g:129:10: 'filter'
+            // InternalEntityGrammar.g:129:8: ( 'enum' )
+            // InternalEntityGrammar.g:129:10: 'enum'
             {
-            match("filter"); 
+            match("enum"); 
 
 
             }
@@ -2696,10 +2697,10 @@
         try {
             int _type = T__132;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:130:8: ( 'key' )
-            // InternalEntityGrammar.g:130:10: 'key'
+            // InternalEntityGrammar.g:130:8: ( 'filter' )
+            // InternalEntityGrammar.g:130:10: 'filter'
             {
-            match("key"); 
+            match("filter"); 
 
 
             }
@@ -2717,10 +2718,10 @@
         try {
             int _type = T__133;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:131:8: ( 'value' )
-            // InternalEntityGrammar.g:131:10: 'value'
+            // InternalEntityGrammar.g:131:8: ( 'key' )
+            // InternalEntityGrammar.g:131:10: 'key'
             {
-            match("value"); 
+            match("key"); 
 
 
             }
@@ -2738,10 +2739,11 @@
         try {
             int _type = T__134;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:132:8: ( ';' )
-            // InternalEntityGrammar.g:132:10: ';'
+            // InternalEntityGrammar.g:132:8: ( 'value' )
+            // InternalEntityGrammar.g:132:10: 'value'
             {
-            match(';'); 
+            match("value"); 
+
 
             }
 
@@ -2758,10 +2760,10 @@
         try {
             int _type = T__135;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:133:8: ( '@' )
-            // InternalEntityGrammar.g:133:10: '@'
+            // InternalEntityGrammar.g:133:8: ( ';' )
+            // InternalEntityGrammar.g:133:10: ';'
             {
-            match('@'); 
+            match(';'); 
 
             }
 
@@ -2778,10 +2780,10 @@
         try {
             int _type = T__136;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:134:8: ( '#' )
-            // InternalEntityGrammar.g:134:10: '#'
+            // InternalEntityGrammar.g:134:8: ( '@' )
+            // InternalEntityGrammar.g:134:10: '@'
             {
-            match('#'); 
+            match('@'); 
 
             }
 
@@ -2798,11 +2800,10 @@
         try {
             int _type = T__137;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:135:8: ( 'instanceof' )
-            // InternalEntityGrammar.g:135:10: 'instanceof'
+            // InternalEntityGrammar.g:135:8: ( '#' )
+            // InternalEntityGrammar.g:135:10: '#'
             {
-            match("instanceof"); 
-
+            match('#'); 
 
             }
 
@@ -2819,10 +2820,10 @@
         try {
             int _type = T__138;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:136:8: ( 'as' )
-            // InternalEntityGrammar.g:136:10: 'as'
+            // InternalEntityGrammar.g:136:8: ( 'instanceof' )
+            // InternalEntityGrammar.g:136:10: 'instanceof'
             {
-            match("as"); 
+            match("instanceof"); 
 
 
             }
@@ -2840,10 +2841,10 @@
         try {
             int _type = T__139;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:137:8: ( 'if' )
-            // InternalEntityGrammar.g:137:10: 'if'
+            // InternalEntityGrammar.g:137:8: ( 'as' )
+            // InternalEntityGrammar.g:137:10: 'as'
             {
-            match("if"); 
+            match("as"); 
 
 
             }
@@ -2861,10 +2862,10 @@
         try {
             int _type = T__140;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:138:8: ( 'else' )
-            // InternalEntityGrammar.g:138:10: 'else'
+            // InternalEntityGrammar.g:138:8: ( 'if' )
+            // InternalEntityGrammar.g:138:10: 'if'
             {
-            match("else"); 
+            match("if"); 
 
 
             }
@@ -2882,10 +2883,10 @@
         try {
             int _type = T__141;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:139:8: ( 'switch' )
-            // InternalEntityGrammar.g:139:10: 'switch'
+            // InternalEntityGrammar.g:139:8: ( 'else' )
+            // InternalEntityGrammar.g:139:10: 'else'
             {
-            match("switch"); 
+            match("else"); 
 
 
             }
@@ -2903,10 +2904,11 @@
         try {
             int _type = T__142;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:140:8: ( ':' )
-            // InternalEntityGrammar.g:140:10: ':'
+            // InternalEntityGrammar.g:140:8: ( 'switch' )
+            // InternalEntityGrammar.g:140:10: 'switch'
             {
-            match(':'); 
+            match("switch"); 
+
 
             }
 
@@ -2923,11 +2925,10 @@
         try {
             int _type = T__143;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:141:8: ( 'default' )
-            // InternalEntityGrammar.g:141:10: 'default'
+            // InternalEntityGrammar.g:141:8: ( ':' )
+            // InternalEntityGrammar.g:141:10: ':'
             {
-            match("default"); 
-
+            match(':'); 
 
             }
 
@@ -2944,10 +2945,10 @@
         try {
             int _type = T__144;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:142:8: ( 'case' )
-            // InternalEntityGrammar.g:142:10: 'case'
+            // InternalEntityGrammar.g:142:8: ( 'default' )
+            // InternalEntityGrammar.g:142:10: 'default'
             {
-            match("case"); 
+            match("default"); 
 
 
             }
@@ -2965,10 +2966,10 @@
         try {
             int _type = T__145;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:143:8: ( 'for' )
-            // InternalEntityGrammar.g:143:10: 'for'
+            // InternalEntityGrammar.g:143:8: ( 'case' )
+            // InternalEntityGrammar.g:143:10: 'case'
             {
-            match("for"); 
+            match("case"); 
 
 
             }
@@ -2986,10 +2987,10 @@
         try {
             int _type = T__146;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:144:8: ( 'while' )
-            // InternalEntityGrammar.g:144:10: 'while'
+            // InternalEntityGrammar.g:144:8: ( 'for' )
+            // InternalEntityGrammar.g:144:10: 'for'
             {
-            match("while"); 
+            match("for"); 
 
 
             }
@@ -3007,10 +3008,10 @@
         try {
             int _type = T__147;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:145:8: ( 'do' )
-            // InternalEntityGrammar.g:145:10: 'do'
+            // InternalEntityGrammar.g:145:8: ( 'while' )
+            // InternalEntityGrammar.g:145:10: 'while'
             {
-            match("do"); 
+            match("while"); 
 
 
             }
@@ -3028,10 +3029,10 @@
         try {
             int _type = T__148;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:146:8: ( 'new' )
-            // InternalEntityGrammar.g:146:10: 'new'
+            // InternalEntityGrammar.g:146:8: ( 'do' )
+            // InternalEntityGrammar.g:146:10: 'do'
             {
-            match("new"); 
+            match("do"); 
 
 
             }
@@ -3049,10 +3050,10 @@
         try {
             int _type = T__149;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:147:8: ( 'null' )
-            // InternalEntityGrammar.g:147:10: 'null'
+            // InternalEntityGrammar.g:147:8: ( 'new' )
+            // InternalEntityGrammar.g:147:10: 'new'
             {
-            match("null"); 
+            match("new"); 
 
 
             }
@@ -3070,10 +3071,10 @@
         try {
             int _type = T__150;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:148:8: ( 'typeof' )
-            // InternalEntityGrammar.g:148:10: 'typeof'
+            // InternalEntityGrammar.g:148:8: ( 'null' )
+            // InternalEntityGrammar.g:148:10: 'null'
             {
-            match("typeof"); 
+            match("null"); 
 
 
             }
@@ -3091,10 +3092,10 @@
         try {
             int _type = T__151;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:149:8: ( 'throw' )
-            // InternalEntityGrammar.g:149:10: 'throw'
+            // InternalEntityGrammar.g:149:8: ( 'typeof' )
+            // InternalEntityGrammar.g:149:10: 'typeof'
             {
-            match("throw"); 
+            match("typeof"); 
 
 
             }
@@ -3112,10 +3113,10 @@
         try {
             int _type = T__152;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:150:8: ( 'return' )
-            // InternalEntityGrammar.g:150:10: 'return'
+            // InternalEntityGrammar.g:150:8: ( 'throw' )
+            // InternalEntityGrammar.g:150:10: 'throw'
             {
-            match("return"); 
+            match("throw"); 
 
 
             }
@@ -3133,10 +3134,10 @@
         try {
             int _type = T__153;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:151:8: ( 'try' )
-            // InternalEntityGrammar.g:151:10: 'try'
+            // InternalEntityGrammar.g:151:8: ( 'return' )
+            // InternalEntityGrammar.g:151:10: 'return'
             {
-            match("try"); 
+            match("return"); 
 
 
             }
@@ -3154,10 +3155,10 @@
         try {
             int _type = T__154;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:152:8: ( 'finally' )
-            // InternalEntityGrammar.g:152:10: 'finally'
+            // InternalEntityGrammar.g:152:8: ( 'try' )
+            // InternalEntityGrammar.g:152:10: 'try'
             {
-            match("finally"); 
+            match("try"); 
 
 
             }
@@ -3175,10 +3176,10 @@
         try {
             int _type = T__155;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:153:8: ( 'synchronized' )
-            // InternalEntityGrammar.g:153:10: 'synchronized'
+            // InternalEntityGrammar.g:153:8: ( 'finally' )
+            // InternalEntityGrammar.g:153:10: 'finally'
             {
-            match("synchronized"); 
+            match("finally"); 
 
 
             }
@@ -3196,10 +3197,10 @@
         try {
             int _type = T__156;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:154:8: ( 'catch' )
-            // InternalEntityGrammar.g:154:10: 'catch'
+            // InternalEntityGrammar.g:154:8: ( 'synchronized' )
+            // InternalEntityGrammar.g:154:10: 'synchronized'
             {
-            match("catch"); 
+            match("synchronized"); 
 
 
             }
@@ -3217,10 +3218,11 @@
         try {
             int _type = T__157;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:155:8: ( '&' )
-            // InternalEntityGrammar.g:155:10: '&'
+            // InternalEntityGrammar.g:155:8: ( 'catch' )
+            // InternalEntityGrammar.g:155:10: 'catch'
             {
-            match('&'); 
+            match("catch"); 
+
 
             }
 
@@ -3237,11 +3239,10 @@
         try {
             int _type = T__158;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:156:8: ( 'abstract' )
-            // InternalEntityGrammar.g:156:10: 'abstract'
+            // InternalEntityGrammar.g:156:8: ( '&' )
+            // InternalEntityGrammar.g:156:10: '&'
             {
-            match("abstract"); 
-
+            match('&'); 
 
             }
 
@@ -3258,10 +3259,10 @@
         try {
             int _type = T__159;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:157:8: ( 'historized' )
-            // InternalEntityGrammar.g:157:10: 'historized'
+            // InternalEntityGrammar.g:157:8: ( 'abstract' )
+            // InternalEntityGrammar.g:157:10: 'abstract'
             {
-            match("historized"); 
+            match("abstract"); 
 
 
             }
@@ -3279,10 +3280,10 @@
         try {
             int _type = T__160;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:158:8: ( 'timedependent' )
-            // InternalEntityGrammar.g:158:10: 'timedependent'
+            // InternalEntityGrammar.g:158:8: ( 'historized' )
+            // InternalEntityGrammar.g:158:10: 'historized'
             {
-            match("timedependent"); 
+            match("historized"); 
 
 
             }
@@ -3300,10 +3301,10 @@
         try {
             int _type = T__161;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:159:8: ( 'cacheable' )
-            // InternalEntityGrammar.g:159:10: 'cacheable'
+            // InternalEntityGrammar.g:159:8: ( 'timedependent' )
+            // InternalEntityGrammar.g:159:10: 'timedependent'
             {
-            match("cacheable"); 
+            match("timedependent"); 
 
 
             }
@@ -3321,10 +3322,10 @@
         try {
             int _type = T__162;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:160:8: ( 'mappedSuperclass' )
-            // InternalEntityGrammar.g:160:10: 'mappedSuperclass'
+            // InternalEntityGrammar.g:160:8: ( 'cacheable' )
+            // InternalEntityGrammar.g:160:10: 'cacheable'
             {
-            match("mappedSuperclass"); 
+            match("cacheable"); 
 
 
             }
@@ -3342,10 +3343,10 @@
         try {
             int _type = T__163;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:161:8: ( 'onTab' )
-            // InternalEntityGrammar.g:161:10: 'onTab'
+            // InternalEntityGrammar.g:161:8: ( 'mappedSuperclass' )
+            // InternalEntityGrammar.g:161:10: 'mappedSuperclass'
             {
-            match("onTab"); 
+            match("mappedSuperclass"); 
 
 
             }
@@ -3363,10 +3364,10 @@
         try {
             int _type = T__164;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:162:8: ( 'unique' )
-            // InternalEntityGrammar.g:162:10: 'unique'
+            // InternalEntityGrammar.g:162:8: ( 'onTab' )
+            // InternalEntityGrammar.g:162:10: 'onTab'
             {
-            match("unique"); 
+            match("onTab"); 
 
 
             }
@@ -3384,10 +3385,10 @@
         try {
             int _type = T__165;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:163:8: ( 'cascadeRefresh' )
-            // InternalEntityGrammar.g:163:10: 'cascadeRefresh'
+            // InternalEntityGrammar.g:163:8: ( 'unique' )
+            // InternalEntityGrammar.g:163:10: 'unique'
             {
-            match("cascadeRefresh"); 
+            match("unique"); 
 
 
             }
@@ -3405,10 +3406,10 @@
         try {
             int _type = T__166;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:164:8: ( 'asGrid' )
-            // InternalEntityGrammar.g:164:10: 'asGrid'
+            // InternalEntityGrammar.g:164:8: ( 'cascadeRefresh' )
+            // InternalEntityGrammar.g:164:10: 'cascadeRefresh'
             {
-            match("asGrid"); 
+            match("cascadeRefresh"); 
 
 
             }
@@ -3426,10 +3427,10 @@
         try {
             int _type = T__167;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:165:8: ( 'asTable' )
-            // InternalEntityGrammar.g:165:10: 'asTable'
+            // InternalEntityGrammar.g:165:8: ( 'asGrid' )
+            // InternalEntityGrammar.g:165:10: 'asGrid'
             {
-            match("asTable"); 
+            match("asGrid"); 
 
 
             }
@@ -3447,10 +3448,10 @@
         try {
             int _type = T__168;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:166:8: ( 'sideKick' )
-            // InternalEntityGrammar.g:166:10: 'sideKick'
+            // InternalEntityGrammar.g:166:8: ( 'asTable' )
+            // InternalEntityGrammar.g:166:10: 'asTable'
             {
-            match("sideKick"); 
+            match("asTable"); 
 
 
             }
@@ -3468,10 +3469,10 @@
         try {
             int _type = T__169;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:167:8: ( 'group' )
-            // InternalEntityGrammar.g:167:10: 'group'
+            // InternalEntityGrammar.g:167:8: ( 'sideKick' )
+            // InternalEntityGrammar.g:167:10: 'sideKick'
             {
-            match("group"); 
+            match("sideKick"); 
 
 
             }
@@ -3489,10 +3490,10 @@
         try {
             int _type = T__170;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:168:8: ( 'domainDescription' )
-            // InternalEntityGrammar.g:168:10: 'domainDescription'
+            // InternalEntityGrammar.g:168:8: ( 'hidden' )
+            // InternalEntityGrammar.g:168:10: 'hidden'
             {
-            match("domainDescription"); 
+            match("hidden"); 
 
 
             }
@@ -3510,10 +3511,10 @@
         try {
             int _type = T__171;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:169:8: ( 'domainKey' )
-            // InternalEntityGrammar.g:169:10: 'domainKey'
+            // InternalEntityGrammar.g:169:8: ( 'readOnly' )
+            // InternalEntityGrammar.g:169:10: 'readOnly'
             {
-            match("domainKey"); 
+            match("readOnly"); 
 
 
             }
@@ -3531,10 +3532,10 @@
         try {
             int _type = T__172;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:170:8: ( 'range' )
-            // InternalEntityGrammar.g:170:10: 'range'
+            // InternalEntityGrammar.g:170:8: ( 'group' )
+            // InternalEntityGrammar.g:170:10: 'group'
             {
-            match("range"); 
+            match("group"); 
 
 
             }
@@ -3552,10 +3553,10 @@
         try {
             int _type = T__173;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:171:8: ( 'hidden' )
-            // InternalEntityGrammar.g:171:10: 'hidden'
+            // InternalEntityGrammar.g:171:8: ( 'domainDescription' )
+            // InternalEntityGrammar.g:171:10: 'domainDescription'
             {
-            match("hidden"); 
+            match("domainDescription"); 
 
 
             }
@@ -3573,10 +3574,10 @@
         try {
             int _type = T__174;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:172:8: ( 'readOnly' )
-            // InternalEntityGrammar.g:172:10: 'readOnly'
+            // InternalEntityGrammar.g:172:8: ( 'domainKey' )
+            // InternalEntityGrammar.g:172:10: 'domainKey'
             {
-            match("readOnly"); 
+            match("domainKey"); 
 
 
             }
@@ -3594,10 +3595,10 @@
         try {
             int _type = T__175;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:173:8: ( 'onKanbanCard' )
-            // InternalEntityGrammar.g:173:10: 'onKanbanCard'
+            // InternalEntityGrammar.g:173:8: ( 'range' )
+            // InternalEntityGrammar.g:173:10: 'range'
             {
-            match("onKanbanCard"); 
+            match("range"); 
 
 
             }
@@ -3615,10 +3616,10 @@
         try {
             int _type = T__176;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:174:8: ( 'asKanbanState' )
-            // InternalEntityGrammar.g:174:10: 'asKanbanState'
+            // InternalEntityGrammar.g:174:8: ( 'onKanbanCard' )
+            // InternalEntityGrammar.g:174:10: 'onKanbanCard'
             {
-            match("asKanbanState"); 
+            match("onKanbanCard"); 
 
 
             }
@@ -3636,10 +3637,10 @@
         try {
             int _type = T__177;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:175:8: ( 'asKanbanOrdering' )
-            // InternalEntityGrammar.g:175:10: 'asKanbanOrdering'
+            // InternalEntityGrammar.g:175:8: ( 'asKanbanState' )
+            // InternalEntityGrammar.g:175:10: 'asKanbanState'
             {
-            match("asKanbanOrdering"); 
+            match("asKanbanState"); 
 
 
             }
@@ -3657,10 +3658,10 @@
         try {
             int _type = T__178;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:176:8: ( 'decentOrder' )
-            // InternalEntityGrammar.g:176:10: 'decentOrder'
+            // InternalEntityGrammar.g:176:8: ( 'asKanbanOrdering' )
+            // InternalEntityGrammar.g:176:10: 'asKanbanOrdering'
             {
-            match("decentOrder"); 
+            match("asKanbanOrdering"); 
 
 
             }
@@ -3678,10 +3679,10 @@
         try {
             int _type = T__179;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:177:8: ( 'asPrimitive' )
-            // InternalEntityGrammar.g:177:10: 'asPrimitive'
+            // InternalEntityGrammar.g:177:8: ( 'decentOrder' )
+            // InternalEntityGrammar.g:177:10: 'decentOrder'
             {
-            match("asPrimitive"); 
+            match("decentOrder"); 
 
 
             }
@@ -3699,10 +3700,10 @@
         try {
             int _type = T__180;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:178:8: ( 'dateType' )
-            // InternalEntityGrammar.g:178:10: 'dateType'
+            // InternalEntityGrammar.g:178:8: ( 'asPrimitive' )
+            // InternalEntityGrammar.g:178:10: 'asPrimitive'
             {
-            match("dateType"); 
+            match("asPrimitive"); 
 
 
             }
@@ -3720,10 +3721,10 @@
         try {
             int _type = T__181;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:179:8: ( 'asBlob' )
-            // InternalEntityGrammar.g:179:10: 'asBlob'
+            // InternalEntityGrammar.g:179:8: ( 'dateType' )
+            // InternalEntityGrammar.g:179:10: 'dateType'
             {
-            match("asBlob"); 
+            match("dateType"); 
 
 
             }
@@ -3741,10 +3742,10 @@
         try {
             int _type = T__182;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:180:8: ( 'asDefault' )
-            // InternalEntityGrammar.g:180:10: 'asDefault'
+            // InternalEntityGrammar.g:180:8: ( 'asBlob' )
+            // InternalEntityGrammar.g:180:10: 'asBlob'
             {
-            match("asDefault"); 
+            match("asBlob"); 
 
 
             }
@@ -3762,10 +3763,10 @@
         try {
             int _type = T__183;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:181:8: ( 'forNull' )
-            // InternalEntityGrammar.g:181:10: 'forNull'
+            // InternalEntityGrammar.g:181:8: ( 'asDefault' )
+            // InternalEntityGrammar.g:181:10: 'asDefault'
             {
-            match("forNull"); 
+            match("asDefault"); 
 
 
             }
@@ -3783,10 +3784,10 @@
         try {
             int _type = T__184;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:182:8: ( 'ns' )
-            // InternalEntityGrammar.g:182:10: 'ns'
+            // InternalEntityGrammar.g:182:8: ( 'forNull' )
+            // InternalEntityGrammar.g:182:10: 'forNull'
             {
-            match("ns"); 
+            match("forNull"); 
 
 
             }
@@ -3804,10 +3805,10 @@
         try {
             int _type = T__185;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:183:8: ( '::' )
-            // InternalEntityGrammar.g:183:10: '::'
+            // InternalEntityGrammar.g:183:8: ( 'ns' )
+            // InternalEntityGrammar.g:183:10: 'ns'
             {
-            match("::"); 
+            match("ns"); 
 
 
             }
@@ -3825,10 +3826,10 @@
         try {
             int _type = T__186;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:184:8: ( '?.' )
-            // InternalEntityGrammar.g:184:10: '?.'
+            // InternalEntityGrammar.g:184:8: ( '::' )
+            // InternalEntityGrammar.g:184:10: '::'
             {
-            match("?."); 
+            match("::"); 
 
 
             }
@@ -3846,10 +3847,11 @@
         try {
             int _type = T__187;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:185:8: ( '|' )
-            // InternalEntityGrammar.g:185:10: '|'
+            // InternalEntityGrammar.g:185:8: ( '?.' )
+            // InternalEntityGrammar.g:185:10: '?.'
             {
-            match('|'); 
+            match("?."); 
+
 
             }
 
@@ -3866,8 +3868,28 @@
         try {
             int _type = T__188;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:186:8: ( 'true' )
-            // InternalEntityGrammar.g:186:10: 'true'
+            // InternalEntityGrammar.g:186:8: ( '|' )
+            // InternalEntityGrammar.g:186:10: '|'
+            {
+            match('|'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__188"
+
+    // $ANTLR start "T__189"
+    public final void mT__189() throws RecognitionException {
+        try {
+            int _type = T__189;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalEntityGrammar.g:187:8: ( 'true' )
+            // InternalEntityGrammar.g:187:10: 'true'
             {
             match("true"); 
 
@@ -3880,17 +3902,17 @@
         finally {
         }
     }
-    // $ANTLR end "T__188"
+    // $ANTLR end "T__189"
 
     // $ANTLR start "RULE_HEX"
     public final void mRULE_HEX() throws RecognitionException {
         try {
             int _type = RULE_HEX;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:43921:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
-            // InternalEntityGrammar.g:43921:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalEntityGrammar.g:44629:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // InternalEntityGrammar.g:44629:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             {
-            // InternalEntityGrammar.g:43921:12: ( '0x' | '0X' )
+            // InternalEntityGrammar.g:44629:12: ( '0x' | '0X' )
             int alt1=2;
             int LA1_0 = input.LA(1);
 
@@ -3918,7 +3940,7 @@
             }
             switch (alt1) {
                 case 1 :
-                    // InternalEntityGrammar.g:43921:13: '0x'
+                    // InternalEntityGrammar.g:44629:13: '0x'
                     {
                     match("0x"); 
 
@@ -3926,7 +3948,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:43921:18: '0X'
+                    // InternalEntityGrammar.g:44629:18: '0X'
                     {
                     match("0X"); 
 
@@ -3936,7 +3958,7 @@
 
             }
 
-            // InternalEntityGrammar.g:43921:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
+            // InternalEntityGrammar.g:44629:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
             int cnt2=0;
             loop2:
             do {
@@ -3974,7 +3996,7 @@
                 cnt2++;
             } while (true);
 
-            // InternalEntityGrammar.g:43921:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalEntityGrammar.g:44629:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             int alt4=2;
             int LA4_0 = input.LA(1);
 
@@ -3983,10 +4005,10 @@
             }
             switch (alt4) {
                 case 1 :
-                    // InternalEntityGrammar.g:43921:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalEntityGrammar.g:44629:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     {
                     match('#'); 
-                    // InternalEntityGrammar.g:43921:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalEntityGrammar.g:44629:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     int alt3=2;
                     int LA3_0 = input.LA(1);
 
@@ -4004,7 +4026,7 @@
                     }
                     switch (alt3) {
                         case 1 :
-                            // InternalEntityGrammar.g:43921:64: ( 'b' | 'B' ) ( 'i' | 'I' )
+                            // InternalEntityGrammar.g:44629:64: ( 'b' | 'B' ) ( 'i' | 'I' )
                             {
                             if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                                 input.consume();
@@ -4028,7 +4050,7 @@
                             }
                             break;
                         case 2 :
-                            // InternalEntityGrammar.g:43921:84: ( 'l' | 'L' )
+                            // InternalEntityGrammar.g:44629:84: ( 'l' | 'L' )
                             {
                             if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
                                 input.consume();
@@ -4067,11 +4089,11 @@
         try {
             int _type = RULE_INT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:43923:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
-            // InternalEntityGrammar.g:43923:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            // InternalEntityGrammar.g:44631:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // InternalEntityGrammar.g:44631:12: '0' .. '9' ( '0' .. '9' | '_' )*
             {
             matchRange('0','9'); 
-            // InternalEntityGrammar.g:43923:21: ( '0' .. '9' | '_' )*
+            // InternalEntityGrammar.g:44631:21: ( '0' .. '9' | '_' )*
             loop5:
             do {
                 int alt5=2;
@@ -4120,11 +4142,11 @@
         try {
             int _type = RULE_DECIMAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:43925:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
-            // InternalEntityGrammar.g:43925:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalEntityGrammar.g:44633:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // InternalEntityGrammar.g:44633:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
             {
             mRULE_INT(); 
-            // InternalEntityGrammar.g:43925:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
+            // InternalEntityGrammar.g:44633:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -4133,7 +4155,7 @@
             }
             switch (alt7) {
                 case 1 :
-                    // InternalEntityGrammar.g:43925:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
+                    // InternalEntityGrammar.g:44633:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
                     {
                     if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
                         input.consume();
@@ -4144,7 +4166,7 @@
                         recover(mse);
                         throw mse;}
 
-                    // InternalEntityGrammar.g:43925:36: ( '+' | '-' )?
+                    // InternalEntityGrammar.g:44633:36: ( '+' | '-' )?
                     int alt6=2;
                     int LA6_0 = input.LA(1);
 
@@ -4177,7 +4199,7 @@
 
             }
 
-            // InternalEntityGrammar.g:43925:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalEntityGrammar.g:44633:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
             int alt8=3;
             int LA8_0 = input.LA(1);
 
@@ -4189,7 +4211,7 @@
             }
             switch (alt8) {
                 case 1 :
-                    // InternalEntityGrammar.g:43925:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
+                    // InternalEntityGrammar.g:44633:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
                     {
                     if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                         input.consume();
@@ -4213,7 +4235,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:43925:87: ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' )
+                    // InternalEntityGrammar.g:44633:87: ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' )
                     {
                     if ( input.LA(1)=='D'||input.LA(1)=='F'||input.LA(1)=='L'||input.LA(1)=='d'||input.LA(1)=='f'||input.LA(1)=='l' ) {
                         input.consume();
@@ -4246,10 +4268,10 @@
         try {
             int _type = RULE_ID;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:43927:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
-            // InternalEntityGrammar.g:43927:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalEntityGrammar.g:44635:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // InternalEntityGrammar.g:44635:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             {
-            // InternalEntityGrammar.g:43927:11: ( '^' )?
+            // InternalEntityGrammar.g:44635:11: ( '^' )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -4258,7 +4280,7 @@
             }
             switch (alt9) {
                 case 1 :
-                    // InternalEntityGrammar.g:43927:11: '^'
+                    // InternalEntityGrammar.g:44635:11: '^'
                     {
                     match('^'); 
 
@@ -4276,7 +4298,7 @@
                 recover(mse);
                 throw mse;}
 
-            // InternalEntityGrammar.g:43927:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalEntityGrammar.g:44635:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             loop10:
             do {
                 int alt10=2;
@@ -4325,10 +4347,10 @@
         try {
             int _type = RULE_STRING;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:43929:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
-            // InternalEntityGrammar.g:43929:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalEntityGrammar.g:44637:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // InternalEntityGrammar.g:44637:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             {
-            // InternalEntityGrammar.g:43929:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalEntityGrammar.g:44637:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             int alt15=2;
             int LA15_0 = input.LA(1);
 
@@ -4346,10 +4368,10 @@
             }
             switch (alt15) {
                 case 1 :
-                    // InternalEntityGrammar.g:43929:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    // InternalEntityGrammar.g:44637:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
                     {
                     match('\"'); 
-                    // InternalEntityGrammar.g:43929:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+                    // InternalEntityGrammar.g:44637:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
                     loop11:
                     do {
                         int alt11=3;
@@ -4365,7 +4387,7 @@
 
                         switch (alt11) {
                     	case 1 :
-                    	    // InternalEntityGrammar.g:43929:21: '\\\\' .
+                    	    // InternalEntityGrammar.g:44637:21: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -4373,7 +4395,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // InternalEntityGrammar.g:43929:28: ~ ( ( '\\\\' | '\"' ) )
+                    	    // InternalEntityGrammar.g:44637:28: ~ ( ( '\\\\' | '\"' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -4393,7 +4415,7 @@
                         }
                     } while (true);
 
-                    // InternalEntityGrammar.g:43929:44: ( '\"' )?
+                    // InternalEntityGrammar.g:44637:44: ( '\"' )?
                     int alt12=2;
                     int LA12_0 = input.LA(1);
 
@@ -4402,7 +4424,7 @@
                     }
                     switch (alt12) {
                         case 1 :
-                            // InternalEntityGrammar.g:43929:44: '\"'
+                            // InternalEntityGrammar.g:44637:44: '\"'
                             {
                             match('\"'); 
 
@@ -4415,10 +4437,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:43929:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    // InternalEntityGrammar.g:44637:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
                     {
                     match('\''); 
-                    // InternalEntityGrammar.g:43929:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    // InternalEntityGrammar.g:44637:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
                     loop13:
                     do {
                         int alt13=3;
@@ -4434,7 +4456,7 @@
 
                         switch (alt13) {
                     	case 1 :
-                    	    // InternalEntityGrammar.g:43929:55: '\\\\' .
+                    	    // InternalEntityGrammar.g:44637:55: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -4442,7 +4464,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // InternalEntityGrammar.g:43929:62: ~ ( ( '\\\\' | '\\'' ) )
+                    	    // InternalEntityGrammar.g:44637:62: ~ ( ( '\\\\' | '\\'' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -4462,7 +4484,7 @@
                         }
                     } while (true);
 
-                    // InternalEntityGrammar.g:43929:79: ( '\\'' )?
+                    // InternalEntityGrammar.g:44637:79: ( '\\'' )?
                     int alt14=2;
                     int LA14_0 = input.LA(1);
 
@@ -4471,7 +4493,7 @@
                     }
                     switch (alt14) {
                         case 1 :
-                            // InternalEntityGrammar.g:43929:79: '\\''
+                            // InternalEntityGrammar.g:44637:79: '\\''
                             {
                             match('\''); 
 
@@ -4502,12 +4524,12 @@
         try {
             int _type = RULE_ML_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:43931:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // InternalEntityGrammar.g:43931:19: '/*' ( options {greedy=false; } : . )* '*/'
+            // InternalEntityGrammar.g:44639:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // InternalEntityGrammar.g:44639:19: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); 
 
-            // InternalEntityGrammar.g:43931:24: ( options {greedy=false; } : . )*
+            // InternalEntityGrammar.g:44639:24: ( options {greedy=false; } : . )*
             loop16:
             do {
                 int alt16=2;
@@ -4532,7 +4554,7 @@
 
                 switch (alt16) {
             	case 1 :
-            	    // InternalEntityGrammar.g:43931:52: .
+            	    // InternalEntityGrammar.g:44639:52: .
             	    {
             	    matchAny(); 
 
@@ -4562,12 +4584,12 @@
         try {
             int _type = RULE_SL_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:43933:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
-            // InternalEntityGrammar.g:43933:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            // InternalEntityGrammar.g:44641:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // InternalEntityGrammar.g:44641:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
             {
             match("//"); 
 
-            // InternalEntityGrammar.g:43933:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            // InternalEntityGrammar.g:44641:24: (~ ( ( '\\n' | '\\r' ) ) )*
             loop17:
             do {
                 int alt17=2;
@@ -4580,7 +4602,7 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // InternalEntityGrammar.g:43933:24: ~ ( ( '\\n' | '\\r' ) )
+            	    // InternalEntityGrammar.g:44641: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();
@@ -4600,7 +4622,7 @@
                 }
             } while (true);
 
-            // InternalEntityGrammar.g:43933:40: ( ( '\\r' )? '\\n' )?
+            // InternalEntityGrammar.g:44641:40: ( ( '\\r' )? '\\n' )?
             int alt19=2;
             int LA19_0 = input.LA(1);
 
@@ -4609,9 +4631,9 @@
             }
             switch (alt19) {
                 case 1 :
-                    // InternalEntityGrammar.g:43933:41: ( '\\r' )? '\\n'
+                    // InternalEntityGrammar.g:44641:41: ( '\\r' )? '\\n'
                     {
-                    // InternalEntityGrammar.g:43933:41: ( '\\r' )?
+                    // InternalEntityGrammar.g:44641:41: ( '\\r' )?
                     int alt18=2;
                     int LA18_0 = input.LA(1);
 
@@ -4620,7 +4642,7 @@
                     }
                     switch (alt18) {
                         case 1 :
-                            // InternalEntityGrammar.g:43933:41: '\\r'
+                            // InternalEntityGrammar.g:44641:41: '\\r'
                             {
                             match('\r'); 
 
@@ -4652,10 +4674,10 @@
         try {
             int _type = RULE_WS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:43935:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
-            // InternalEntityGrammar.g:43935:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalEntityGrammar.g:44643:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // InternalEntityGrammar.g:44643:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             {
-            // InternalEntityGrammar.g:43935:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalEntityGrammar.g:44643:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             int cnt20=0;
             loop20:
             do {
@@ -4709,8 +4731,8 @@
         try {
             int _type = RULE_ANY_OTHER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalEntityGrammar.g:43937:16: ( . )
-            // InternalEntityGrammar.g:43937:18: .
+            // InternalEntityGrammar.g:44645:16: ( . )
+            // InternalEntityGrammar.g:44645:18: .
             {
             matchAny(); 
 
@@ -4725,8 +4747,8 @@
     // $ANTLR end "RULE_ANY_OTHER"
 
     public void mTokens() throws RecognitionException {
-        // InternalEntityGrammar.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | T__141 | T__142 | T__143 | T__144 | T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | T__152 | T__153 | T__154 | T__155 | T__156 | T__157 | T__158 | T__159 | T__160 | T__161 | T__162 | T__163 | T__164 | T__165 | T__166 | T__167 | T__168 | T__169 | T__170 | T__171 | T__172 | T__173 | T__174 | T__175 | T__176 | T__177 | T__178 | T__179 | T__180 | T__181 | T__182 | T__183 | T__184 | T__185 | T__186 | T__187 | T__188 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
-        int alt21=185;
+        // InternalEntityGrammar.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | T__141 | T__142 | T__143 | T__144 | T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | T__152 | T__153 | T__154 | T__155 | T__156 | T__157 | T__158 | T__159 | T__160 | T__161 | T__162 | T__163 | T__164 | T__165 | T__166 | T__167 | T__168 | T__169 | T__170 | T__171 | T__172 | T__173 | T__174 | T__175 | T__176 | T__177 | T__178 | T__179 | T__180 | T__181 | T__182 | T__183 | T__184 | T__185 | T__186 | T__187 | T__188 | T__189 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=186;
         alt21 = dfa21.predict(input);
         switch (alt21) {
             case 1 :
@@ -5962,63 +5984,70 @@
                 }
                 break;
             case 177 :
-                // InternalEntityGrammar.g:1:1155: RULE_HEX
+                // InternalEntityGrammar.g:1:1155: T__189
+                {
+                mT__189(); 
+
+                }
+                break;
+            case 178 :
+                // InternalEntityGrammar.g:1:1162: RULE_HEX
                 {
                 mRULE_HEX(); 
 
                 }
                 break;
-            case 178 :
-                // InternalEntityGrammar.g:1:1164: RULE_INT
+            case 179 :
+                // InternalEntityGrammar.g:1:1171: RULE_INT
                 {
                 mRULE_INT(); 
 
                 }
                 break;
-            case 179 :
-                // InternalEntityGrammar.g:1:1173: RULE_DECIMAL
+            case 180 :
+                // InternalEntityGrammar.g:1:1180: RULE_DECIMAL
                 {
                 mRULE_DECIMAL(); 
 
                 }
                 break;
-            case 180 :
-                // InternalEntityGrammar.g:1:1186: RULE_ID
+            case 181 :
+                // InternalEntityGrammar.g:1:1193: RULE_ID
                 {
                 mRULE_ID(); 
 
                 }
                 break;
-            case 181 :
-                // InternalEntityGrammar.g:1:1194: RULE_STRING
+            case 182 :
+                // InternalEntityGrammar.g:1:1201: RULE_STRING
                 {
                 mRULE_STRING(); 
 
                 }
                 break;
-            case 182 :
-                // InternalEntityGrammar.g:1:1206: RULE_ML_COMMENT
+            case 183 :
+                // InternalEntityGrammar.g:1:1213: RULE_ML_COMMENT
                 {
                 mRULE_ML_COMMENT(); 
 
                 }
                 break;
-            case 183 :
-                // InternalEntityGrammar.g:1:1222: RULE_SL_COMMENT
+            case 184 :
+                // InternalEntityGrammar.g:1:1229: RULE_SL_COMMENT
                 {
                 mRULE_SL_COMMENT(); 
 
                 }
                 break;
-            case 184 :
-                // InternalEntityGrammar.g:1:1238: RULE_WS
+            case 185 :
+                // InternalEntityGrammar.g:1:1245: RULE_WS
                 {
                 mRULE_WS(); 
 
                 }
                 break;
-            case 185 :
-                // InternalEntityGrammar.g:1:1246: RULE_ANY_OTHER
+            case 186 :
+                // InternalEntityGrammar.g:1:1253: RULE_ANY_OTHER
                 {
                 mRULE_ANY_OTHER(); 
 
@@ -6032,17 +6061,17 @@
 
     protected DFA21 dfa21 = new DFA21(this);
     static final String DFA21_eotS =
-        "\1\uffff\1\77\1\101\1\103\13\106\1\155\1\161\1\164\1\170\1\172\1\174\1\176\1\u0081\1\u0083\1\u0086\11\106\1\u009a\1\u009d\4\uffff\1\106\3\uffff\3\106\3\uffff\1\106\1\u00b0\2\106\1\u00b3\1\74\5\uffff\1\u00b7\6\uffff\2\106\1\uffff\2\106\1\u00bf\3\106\1\u00c9\13\106\1\u00db\15\106\1\u00ed\3\106\20\uffff\1\u00f3\6\uffff\1\u00f5\4\uffff\22\106\2\uffff\1\u00b3\6\uffff\1\106\3\uffff\4\106\3\uffff\1\u0118\1\106\2\uffff\2\106\5\uffff\1\u011d\1\u011f\5\106\1\uffff\11\106\1\uffff\3\106\1\u0134\6\106\1\u013c\1\106\1\u013e\4\106\1\uffff\1\u0145\16\106\1\u0154\1\106\1\uffff\4\106\4\uffff\10\106\1\u0168\1\106\1\u016a\20\106\1\u017c\6\106\1\uffff\4\106\1\uffff\1\106\1\uffff\3\106\1\u018c\3\106\1\u0190\11\106\1\u019a\2\106\1\uffff\1\u019d\1\u01a0\5\106\1\uffff\1\106\1\uffff\1\u01a8\5\106\1\uffff\14\106\1\u01bb\1\106\1\uffff\1\u01bd\14\106\1\u01ca\1\u01cb\4\106\1\uffff\1\106\1\uffff\1\106\1\u01d2\1\u01d3\1\106\1\u01d5\7\106\1\u01dd\4\106\1\uffff\12\106\1\u01ec\4\106\1\uffff\1\u01f1\2\106\1\uffff\1\u01f4\10\106\1\uffff\2\106\1\uffff\2\106\1\uffff\2\106\1\u0203\4\106\1\uffff\5\106\1\u020d\2\106\1\u0210\4\106\1\u0216\4\106\1\uffff\1\106\1\uffff\1\u021c\11\106\1\u0227\1\106\2\uffff\1\u0229\5\106\2\uffff\1\106\1\uffff\1\u0230\6\106\1\uffff\1\106\1\u0238\13\106\1\u0244\1\uffff\4\106\1\uffff\1\106\1\u024a\1\uffff\4\106\1\u024f\1\u0250\1\106\1\u0252\1\u0253\4\106\1\u0258\1\uffff\6\106\1\u025f\1\106\1\u0262\1\uffff\1\u0263\1\106\1\uffff\2\106\1\u0267\1\u0268\1\106\1\uffff\1\106\1\u026b\3\106\1\uffff\12\106\1\uffff\1\u0279\1\uffff\1\u027b\3\106\1\u027f\1\106\1\uffff\4\106\1\u0285\2\106\1\uffff\2\106\1\u028a\3\106\1\u028e\3\106\1\u0292\1\uffff\1\u0293\4\106\1\uffff\2\106\1\u029b\1\106\2\uffff\1\106\2\uffff\4\106\1\uffff\1\u02a2\1\u02a3\4\106\1\uffff\2\106\2\uffff\3\106\2\uffff\2\106\1\uffff\2\106\1\u02b1\3\106\1\u02b5\4\106\1\u02ba\1\106\1\uffff\1\106\1\uffff\1\u02bd\1\u02be\1\u02bf\1\uffff\1\106\1\u02c1\1\u02c2\2\106\1\uffff\3\106\1\u02c8\1\uffff\1\u02c9\2\106\1\uffff\3\106\2\uffff\1\u02cf\6\106\1\uffff\1\u02d6\5\106\2\uffff\1\106\1\u02dd\1\u02de\3\106\1\u02e2\1\u02e3\1\u02e4\3\106\1\u02e8\1\uffff\3\106\1\uffff\4\106\1\uffff\2\106\3\uffff\1\106\2\uffff\3\106\1\u02f6\1\106\2\uffff\3\106\1\u02fc\1\106\1\uffff\1\u02fe\5\106\1\uffff\1\u0305\1\u0306\1\u0307\1\106\1\u0309\1\106\2\uffff\2\106\1\u030d\3\uffff\3\106\1\uffff\2\106\1\u0313\2\106\1\u0316\1\106\1\u0318\1\106\1\u031a\1\u031b\2\106\1\uffff\4\106\1\u0322\1\uffff\1\106\1\uffff\3\106\1\u0327\1\106\1\u0329\3\uffff\1\106\1\uffff\3\106\1\uffff\1\u032e\1\u032f\2\106\1\u0332\1\uffff\1\u0333\1\u0334\1\uffff\1\u0335\1\uffff\1\106\2\uffff\1\u0337\5\106\1\uffff\1\u033d\3\106\1\uffff\1\106\1\uffff\1\106\1\u0343\2\106\2\uffff\2\106\4\uffff\1\u0348\1\uffff\4\106\1\u034d\1\uffff\5\106\1\uffff\2\106\1\u0355\1\106\1\uffff\1\106\1\u0358\2\106\1\uffff\1\106\1\u035c\2\106\1\u035f\2\106\1\uffff\2\106\1\uffff\1\u0366\2\106\1\uffff\1\u0369\1\106\1\uffff\6\106\1\uffff\2\106\1\uffff\7\106\1\u037b\10\106\1\u0384\1\uffff\1\u0385\4\106\1\u038a\1\106\1\u038c\2\uffff\4\106\1\uffff\1\u0391\1\uffff\1\u0392\1\u0393\1\106\1\u0395\3\uffff\1\106\1\uffff\1\106\1\u0398\1\uffff";
+        "\1\uffff\1\77\1\101\1\103\13\106\1\155\1\161\1\164\1\170\1\172\1\174\1\176\1\u0081\1\u0083\1\u0086\11\106\1\u009a\1\u009d\4\uffff\1\106\3\uffff\3\106\3\uffff\1\106\1\u00b0\2\106\1\u00b3\1\74\5\uffff\1\u00b7\6\uffff\2\106\1\uffff\2\106\1\u00bf\3\106\1\u00c9\13\106\1\u00db\15\106\1\u00ed\3\106\20\uffff\1\u00f3\6\uffff\1\u00f5\4\uffff\22\106\2\uffff\1\u00b3\6\uffff\1\106\3\uffff\4\106\3\uffff\1\u0118\1\106\2\uffff\2\106\5\uffff\1\u011d\1\u011f\5\106\1\uffff\11\106\1\uffff\3\106\1\u0134\6\106\1\u013c\1\106\1\u013e\4\106\1\uffff\1\u0145\16\106\1\u0154\1\106\1\uffff\4\106\4\uffff\10\106\1\u0169\1\106\1\u016b\20\106\1\u017d\6\106\1\uffff\4\106\1\uffff\1\106\1\uffff\3\106\1\u018d\3\106\1\u0191\11\106\1\u019b\2\106\1\uffff\1\u019e\1\u01a1\5\106\1\uffff\1\106\1\uffff\1\u01a9\5\106\1\uffff\14\106\1\u01bc\1\106\1\uffff\1\u01be\15\106\1\u01cc\1\u01cd\4\106\1\uffff\1\106\1\uffff\1\106\1\u01d4\1\u01d5\1\106\1\u01d7\7\106\1\u01df\4\106\1\uffff\12\106\1\u01ee\4\106\1\uffff\1\u01f3\2\106\1\uffff\1\u01f6\10\106\1\uffff\2\106\1\uffff\2\106\1\uffff\2\106\1\u0205\4\106\1\uffff\5\106\1\u020f\2\106\1\u0212\4\106\1\u0218\4\106\1\uffff\1\106\1\uffff\1\u021e\12\106\1\u022a\1\106\2\uffff\1\u022c\5\106\2\uffff\1\106\1\uffff\1\u0233\6\106\1\uffff\1\106\1\u023b\13\106\1\u0247\1\uffff\4\106\1\uffff\1\106\1\u024d\1\uffff\4\106\1\u0252\1\u0253\1\106\1\u0255\1\u0256\4\106\1\u025b\1\uffff\6\106\1\u0262\1\106\1\u0265\1\uffff\1\u0266\1\106\1\uffff\2\106\1\u026a\1\u026b\1\106\1\uffff\1\106\1\u026e\3\106\1\uffff\13\106\1\uffff\1\u027d\1\uffff\1\u027f\3\106\1\u0283\1\106\1\uffff\4\106\1\u0289\2\106\1\uffff\2\106\1\u028e\3\106\1\u0292\3\106\1\u0296\1\uffff\1\u0297\4\106\1\uffff\2\106\1\u029f\1\106\2\uffff\1\106\2\uffff\4\106\1\uffff\1\u02a6\1\u02a7\4\106\1\uffff\2\106\2\uffff\3\106\2\uffff\2\106\1\uffff\2\106\1\u02b5\3\106\1\u02b9\4\106\1\u02be\2\106\1\uffff\1\106\1\uffff\1\u02c2\1\u02c3\1\u02c4\1\uffff\1\106\1\u02c6\1\u02c7\2\106\1\uffff\3\106\1\u02cd\1\uffff\1\u02ce\2\106\1\uffff\3\106\2\uffff\1\u02d4\6\106\1\uffff\1\u02db\5\106\2\uffff\1\106\1\u02e2\1\u02e3\3\106\1\u02e7\1\u02e8\1\u02e9\3\106\1\u02ed\1\uffff\3\106\1\uffff\4\106\1\uffff\3\106\3\uffff\1\106\2\uffff\3\106\1\u02fc\1\106\2\uffff\3\106\1\u0302\1\106\1\uffff\1\u0304\5\106\1\uffff\1\u030b\1\u030c\1\u030d\1\106\1\u030f\1\106\2\uffff\2\106\1\u0313\3\uffff\3\106\1\uffff\2\106\1\u0319\2\106\1\u031c\1\106\1\u031e\2\106\1\u0321\1\u0322\2\106\1\uffff\4\106\1\u0329\1\uffff\1\106\1\uffff\3\106\1\u032e\1\106\1\u0330\3\uffff\1\106\1\uffff\3\106\1\uffff\1\u0335\1\u0336\2\106\1\u0339\1\uffff\1\u033a\1\u033b\1\uffff\1\u033c\1\uffff\1\u033d\1\106\2\uffff\1\u033f\5\106\1\uffff\1\u0345\3\106\1\uffff\1\106\1\uffff\1\106\1\u034b\2\106\2\uffff\2\106\5\uffff\1\u0350\1\uffff\4\106\1\u0355\1\uffff\5\106\1\uffff\2\106\1\u035d\1\106\1\uffff\1\106\1\u0360\2\106\1\uffff\1\106\1\u0364\2\106\1\u0367\2\106\1\uffff\2\106\1\uffff\1\u036e\2\106\1\uffff\1\u0371\1\106\1\uffff\6\106\1\uffff\2\106\1\uffff\7\106\1\u0383\10\106\1\u038c\1\uffff\1\u038d\4\106\1\u0392\1\106\1\u0394\2\uffff\4\106\1\uffff\1\u0399\1\uffff\1\u039a\1\u039b\1\106\1\u039d\3\uffff\1\106\1\uffff\1\106\1\u03a0\1\uffff";
     static final String DFA21_eofS =
-        "\u0399\uffff";
+        "\u03a1\uffff";
     static final String DFA21_minS =
-        "\1\0\1\75\1\174\1\46\2\141\1\144\1\156\3\141\1\143\1\141\1\145\1\141\1\53\1\55\2\52\4\75\2\56\1\154\1\141\1\116\1\124\1\110\1\101\1\111\2\141\2\60\4\uffff\1\145\3\uffff\1\156\1\166\1\145\3\uffff\1\142\1\72\1\151\1\162\1\60\1\44\5\uffff\1\75\6\uffff\1\154\1\162\1\uffff\1\143\1\154\1\44\1\160\1\144\1\106\1\44\2\151\1\141\1\155\1\142\1\160\1\162\1\143\1\157\1\164\1\147\1\44\1\141\1\156\1\164\1\141\1\160\1\150\1\151\1\156\1\144\1\172\1\164\1\167\1\154\1\44\1\160\1\147\1\156\20\uffff\1\75\6\uffff\1\74\4\uffff\1\164\1\162\1\164\1\163\2\154\1\162\1\110\1\122\1\101\1\124\1\115\1\162\1\151\1\143\1\151\1\142\1\162\2\uffff\1\60\6\uffff\1\141\3\uffff\1\160\1\113\1\155\1\171\3\uffff\1\44\1\163\2\uffff\1\144\1\157\5\uffff\2\44\1\163\1\150\2\143\1\154\1\uffff\2\157\2\145\1\164\1\141\1\162\1\141\1\157\1\uffff\1\144\1\161\1\156\1\44\2\145\1\154\1\145\1\157\1\151\1\44\1\145\1\44\1\141\1\143\1\151\1\141\1\uffff\1\44\1\145\1\165\1\144\1\147\1\164\1\145\1\164\2\145\1\164\1\143\1\145\1\171\1\156\1\44\1\154\1\uffff\1\160\1\104\1\103\1\104\4\uffff\1\145\1\157\1\151\1\155\1\145\1\163\1\164\1\141\1\44\1\105\1\44\1\111\1\122\2\105\1\156\1\154\1\153\1\166\1\160\1\154\1\163\1\156\1\157\2\141\1\124\1\44\1\162\2\141\1\162\1\154\1\145\1\uffff\2\164\1\144\1\165\1\uffff\1\145\1\uffff\1\151\2\141\1\44\1\150\1\145\1\162\1\44\1\170\1\162\1\141\1\154\1\164\1\165\1\163\1\164\1\154\1\44\1\165\1\163\1\uffff\2\44\1\145\1\157\1\167\1\166\1\165\1\uffff\1\156\1\uffff\1\44\1\164\1\162\1\164\1\151\1\162\1\uffff\1\170\1\162\1\117\1\145\1\151\1\162\1\145\1\162\1\155\1\143\1\150\1\113\1\44\1\165\1\uffff\1\44\1\157\2\145\1\165\1\157\1\61\1\145\1\165\1\141\1\156\1\162\1\164\2\44\2\145\1\154\1\165\1\uffff\1\122\1\uffff\1\116\2\44\1\123\1\44\1\145\2\141\2\145\2\151\1\44\1\163\1\142\1\156\1\171\1\uffff\1\151\1\142\1\156\1\151\1\157\1\146\1\162\1\157\1\145\1\160\1\44\1\157\1\142\1\141\1\144\1\uffff\1\44\1\143\1\164\1\uffff\1\44\1\151\1\156\1\163\1\165\1\145\1\164\1\116\1\154\1\uffff\1\145\1\151\1\uffff\1\164\1\145\1\uffff\1\116\1\146\1\44\1\145\1\154\1\164\1\171\1\uffff\1\171\1\151\1\163\1\156\1\163\1\44\2\156\1\44\1\156\1\151\1\143\1\163\1\44\1\141\1\150\1\162\1\151\1\uffff\1\154\1\uffff\1\44\1\144\1\143\1\155\1\144\1\70\1\143\1\155\1\170\1\144\1\44\1\171\2\uffff\1\44\1\162\2\154\1\111\1\107\2\uffff\1\124\1\uffff\1\44\1\147\1\164\1\143\1\162\1\143\1\163\1\uffff\1\151\1\44\1\142\1\160\1\144\1\154\1\142\1\155\1\142\2\141\1\162\1\156\1\44\1\uffff\1\156\1\154\1\142\1\145\1\uffff\1\164\1\44\1\uffff\1\164\1\143\1\145\1\162\2\44\1\165\2\44\1\145\1\141\1\160\1\141\1\44\1\uffff\1\144\1\164\1\117\2\160\1\155\1\44\1\104\1\44\1\uffff\1\44\1\154\1\uffff\1\147\1\164\2\44\1\156\1\uffff\1\116\1\44\1\157\1\143\1\154\1\uffff\1\123\1\151\1\142\1\145\1\156\1\151\1\142\1\123\1\163\1\151\1\uffff\1\44\1\uffff\1\44\1\171\1\154\1\124\1\44\1\101\1\uffff\2\145\2\164\1\44\2\164\1\uffff\1\141\1\145\1\44\1\145\1\141\1\151\1\44\1\165\1\143\1\151\1\44\1\uffff\1\44\1\145\1\154\1\115\1\151\1\uffff\1\141\1\145\1\44\1\145\2\uffff\1\154\2\uffff\1\156\1\155\1\145\1\155\1\uffff\2\44\1\162\2\145\1\151\1\uffff\2\145\2\uffff\1\171\1\163\1\171\2\uffff\1\144\1\141\1\uffff\1\156\1\153\1\44\1\165\1\155\1\145\1\44\1\113\1\155\1\145\1\151\1\44\1\157\1\uffff\1\145\1\uffff\3\44\1\uffff\1\115\2\44\1\145\1\151\1\uffff\2\145\1\156\1\44\1\uffff\1\44\1\156\1\164\1\uffff\1\154\1\164\1\172\2\uffff\1\44\3\145\1\157\1\156\1\157\1\uffff\1\44\1\154\1\164\1\160\1\156\1\145\2\uffff\1\144\2\44\1\156\1\163\1\171\3\44\1\145\1\155\1\151\1\44\1\uffff\1\160\1\141\1\162\1\uffff\1\145\1\141\1\162\1\172\1\uffff\1\156\1\160\3\uffff\1\120\2\uffff\1\144\1\145\1\156\1\44\1\103\2\uffff\1\117\1\151\1\164\1\44\1\145\1\uffff\1\44\1\162\1\146\1\156\1\143\1\146\1\uffff\3\44\1\144\1\44\1\145\2\uffff\1\141\1\143\1\44\3\uffff\1\170\1\145\1\172\1\uffff\1\145\1\154\1\44\1\171\1\154\1\44\1\145\1\44\1\164\2\44\1\163\1\143\1\uffff\1\141\1\164\1\162\1\166\1\44\1\uffff\1\144\1\uffff\1\147\1\157\1\162\1\44\1\145\1\44\3\uffff\1\145\1\uffff\1\162\1\164\1\162\1\uffff\2\44\1\145\1\162\1\44\1\uffff\2\44\1\uffff\1\44\1\uffff\1\150\2\uffff\1\44\1\145\1\162\1\141\1\144\1\145\1\uffff\1\44\1\145\1\166\1\145\1\uffff\1\120\1\uffff\1\156\1\44\1\157\1\151\2\uffff\1\144\1\143\4\uffff\1\44\1\uffff\1\125\1\144\1\164\1\145\1\44\1\uffff\1\120\1\145\1\163\1\145\1\164\1\uffff\1\162\1\160\1\44\1\154\1\uffff\1\156\1\44\1\145\1\162\1\uffff\1\145\1\44\1\150\1\162\1\44\1\103\1\164\1\uffff\1\141\1\151\1\uffff\1\44\1\151\1\162\1\uffff\1\44\1\103\1\uffff\1\157\1\171\1\141\1\151\1\163\1\164\1\uffff\1\156\1\163\1\uffff\1\154\1\165\1\154\1\160\1\154\1\157\1\163\1\44\1\147\1\151\1\141\1\142\1\165\1\145\1\165\1\156\1\44\1\uffff\1\44\2\163\1\143\1\155\1\44\1\145\1\44\2\uffff\1\164\1\163\1\154\1\156\1\uffff\1\44\1\uffff\2\44\1\141\1\44\3\uffff\1\163\1\uffff\1\163\1\44\1\uffff";
+        "\1\0\1\75\1\174\1\46\2\141\1\144\1\156\3\141\1\143\1\141\1\145\1\141\1\53\1\55\2\52\4\75\2\56\1\154\1\141\1\116\1\124\1\110\1\101\1\111\2\141\2\60\4\uffff\1\145\3\uffff\1\156\1\166\1\145\3\uffff\1\142\1\72\1\151\1\162\1\60\1\44\5\uffff\1\75\6\uffff\1\154\1\162\1\uffff\1\143\1\154\1\44\1\160\1\144\1\106\1\44\2\151\1\141\1\155\1\142\1\160\1\162\1\143\1\157\1\164\1\147\1\44\1\141\1\156\1\164\1\141\1\160\1\150\1\151\1\156\1\144\1\172\1\164\1\167\1\154\1\44\1\160\1\147\1\156\20\uffff\1\75\6\uffff\1\74\4\uffff\1\164\1\162\1\164\1\163\2\154\1\162\1\110\1\122\1\101\1\124\1\115\1\162\1\151\1\143\1\151\1\142\1\162\2\uffff\1\60\6\uffff\1\141\3\uffff\1\160\1\113\1\155\1\171\3\uffff\1\44\1\163\2\uffff\1\144\1\157\5\uffff\2\44\1\163\1\150\2\143\1\154\1\uffff\2\157\2\145\1\164\1\141\1\162\1\141\1\157\1\uffff\1\144\1\161\1\156\1\44\2\145\1\154\1\145\1\157\1\151\1\44\1\145\1\44\1\141\1\143\1\151\1\141\1\uffff\1\44\1\145\1\165\1\144\1\147\1\164\1\145\1\164\2\145\1\164\1\143\1\145\1\171\1\156\1\44\1\154\1\uffff\1\160\1\104\1\103\1\104\4\uffff\1\145\1\157\1\151\1\155\1\145\1\163\1\164\1\141\1\44\1\105\1\44\1\111\1\122\2\105\1\156\1\154\1\153\1\166\1\160\1\154\1\163\1\156\1\157\2\141\1\124\1\44\1\162\2\141\1\162\1\154\1\145\1\uffff\2\164\1\144\1\165\1\uffff\1\145\1\uffff\1\151\2\141\1\44\1\150\1\145\1\162\1\44\1\170\1\162\1\141\1\154\1\164\1\165\1\163\1\164\1\154\1\44\1\165\1\163\1\uffff\2\44\1\145\1\157\1\167\1\166\1\165\1\uffff\1\156\1\uffff\1\44\1\164\1\162\1\164\1\151\1\162\1\uffff\1\170\1\162\1\117\1\145\1\151\1\162\1\145\1\162\1\155\1\143\1\150\1\113\1\44\1\165\1\uffff\1\44\1\157\2\145\1\165\1\157\1\61\1\145\1\165\1\141\1\156\1\141\1\162\1\164\2\44\2\145\1\154\1\165\1\uffff\1\122\1\uffff\1\116\2\44\1\123\1\44\1\145\2\141\2\145\2\151\1\44\1\163\1\142\1\156\1\171\1\uffff\1\151\1\142\1\156\1\151\1\157\1\146\1\162\1\157\1\145\1\160\1\44\1\157\1\142\1\141\1\144\1\uffff\1\44\1\143\1\164\1\uffff\1\44\1\151\1\156\1\163\1\165\1\145\1\164\1\116\1\154\1\uffff\1\145\1\151\1\uffff\1\164\1\145\1\uffff\1\116\1\146\1\44\1\145\1\154\1\164\1\171\1\uffff\1\171\1\151\1\163\1\156\1\163\1\44\2\156\1\44\1\156\1\151\1\143\1\163\1\44\1\141\1\150\1\162\1\151\1\uffff\1\154\1\uffff\1\44\1\144\1\143\1\155\1\144\1\70\1\143\1\155\1\170\1\144\1\123\1\44\1\171\2\uffff\1\44\1\162\2\154\1\111\1\107\2\uffff\1\124\1\uffff\1\44\1\147\1\164\1\143\1\162\1\143\1\163\1\uffff\1\151\1\44\1\142\1\160\1\144\1\154\1\142\1\155\1\142\2\141\1\162\1\156\1\44\1\uffff\1\156\1\154\1\142\1\145\1\uffff\1\164\1\44\1\uffff\1\164\1\143\1\145\1\162\2\44\1\165\2\44\1\145\1\141\1\160\1\141\1\44\1\uffff\1\144\1\164\1\117\2\160\1\155\1\44\1\104\1\44\1\uffff\1\44\1\154\1\uffff\1\147\1\164\2\44\1\156\1\uffff\1\116\1\44\1\157\1\143\1\154\1\uffff\1\123\1\151\1\142\1\145\1\156\1\151\1\142\1\123\1\163\1\151\1\164\1\uffff\1\44\1\uffff\1\44\1\171\1\154\1\124\1\44\1\101\1\uffff\2\145\2\164\1\44\2\164\1\uffff\1\141\1\145\1\44\1\145\1\141\1\151\1\44\1\165\1\143\1\151\1\44\1\uffff\1\44\1\145\1\154\1\115\1\151\1\uffff\1\141\1\145\1\44\1\145\2\uffff\1\154\2\uffff\1\156\1\155\1\145\1\155\1\uffff\2\44\1\162\2\145\1\151\1\uffff\2\145\2\uffff\1\171\1\163\1\171\2\uffff\1\144\1\141\1\uffff\1\156\1\153\1\44\1\165\1\155\1\145\1\44\1\113\1\155\1\145\1\151\1\44\1\157\1\171\1\uffff\1\145\1\uffff\3\44\1\uffff\1\115\2\44\1\145\1\151\1\uffff\2\145\1\156\1\44\1\uffff\1\44\1\156\1\164\1\uffff\1\154\1\164\1\172\2\uffff\1\44\3\145\1\157\1\156\1\157\1\uffff\1\44\1\154\1\164\1\160\1\156\1\145\2\uffff\1\144\2\44\1\156\1\163\1\171\3\44\1\145\1\155\1\151\1\44\1\uffff\1\160\1\141\1\162\1\uffff\1\145\1\141\1\162\1\172\1\uffff\1\156\1\154\1\160\3\uffff\1\120\2\uffff\1\144\1\145\1\156\1\44\1\103\2\uffff\1\117\1\151\1\164\1\44\1\145\1\uffff\1\44\1\162\1\146\1\156\1\143\1\146\1\uffff\3\44\1\144\1\44\1\145\2\uffff\1\141\1\143\1\44\3\uffff\1\170\1\145\1\172\1\uffff\1\145\1\154\1\44\1\171\1\154\1\44\1\145\1\44\1\145\1\164\2\44\1\163\1\143\1\uffff\1\141\1\164\1\162\1\166\1\44\1\uffff\1\144\1\uffff\1\147\1\157\1\162\1\44\1\145\1\44\3\uffff\1\145\1\uffff\1\162\1\164\1\162\1\uffff\2\44\1\145\1\162\1\44\1\uffff\2\44\1\uffff\1\44\1\uffff\1\44\1\150\2\uffff\1\44\1\145\1\162\1\141\1\144\1\145\1\uffff\1\44\1\145\1\166\1\145\1\uffff\1\120\1\uffff\1\156\1\44\1\157\1\151\2\uffff\1\144\1\143\5\uffff\1\44\1\uffff\1\125\1\144\1\164\1\145\1\44\1\uffff\1\120\1\145\1\163\1\145\1\164\1\uffff\1\162\1\160\1\44\1\154\1\uffff\1\156\1\44\1\145\1\162\1\uffff\1\145\1\44\1\150\1\162\1\44\1\103\1\164\1\uffff\1\141\1\151\1\uffff\1\44\1\151\1\162\1\uffff\1\44\1\103\1\uffff\1\157\1\171\1\141\1\151\1\163\1\164\1\uffff\1\156\1\163\1\uffff\1\154\1\165\1\154\1\160\1\154\1\157\1\163\1\44\1\147\1\151\1\141\1\142\1\165\1\145\1\165\1\156\1\44\1\uffff\1\44\2\163\1\143\1\155\1\44\1\145\1\44\2\uffff\1\164\1\163\1\154\1\156\1\uffff\1\44\1\uffff\2\44\1\141\1\44\3\uffff\1\163\1\uffff\1\163\1\44\1\uffff";
     static final String DFA21_maxS =
-        "\1\uffff\1\76\1\174\1\46\1\145\1\157\1\163\1\165\1\171\1\164\1\145\1\171\1\141\1\165\1\163\1\75\1\76\5\75\1\76\1\56\1\72\1\170\1\157\1\116\1\124\1\110\1\101\1\111\1\150\1\165\1\170\1\154\4\uffff\1\145\3\uffff\1\160\1\166\1\145\3\uffff\1\163\1\72\1\151\1\162\1\154\1\172\5\uffff\1\75\6\uffff\2\162\1\uffff\1\164\1\154\1\172\1\160\1\163\1\124\1\172\2\151\1\171\1\155\1\142\1\160\2\162\1\157\1\164\1\163\1\172\1\164\1\156\1\166\1\141\1\160\1\150\1\151\1\156\1\144\1\172\1\164\1\167\1\154\1\172\1\170\1\147\1\156\20\uffff\1\75\6\uffff\1\74\4\uffff\1\164\1\162\1\165\1\163\1\154\1\156\1\162\1\124\1\122\1\101\1\124\1\115\1\162\1\151\1\143\1\157\1\142\1\162\2\uffff\1\154\6\uffff\1\141\3\uffff\1\160\1\124\1\155\1\171\3\uffff\1\172\1\163\2\uffff\1\163\1\157\5\uffff\2\172\1\163\1\150\1\145\1\143\1\154\1\uffff\2\157\2\145\1\164\1\165\1\162\1\141\1\165\1\uffff\1\144\1\161\1\156\1\172\2\145\1\154\1\145\1\157\1\151\1\172\1\145\1\172\1\145\1\143\1\151\1\141\1\uffff\1\172\1\145\1\165\1\144\1\147\1\164\1\145\1\164\2\145\1\164\1\143\1\145\1\171\1\156\1\172\1\154\1\uffff\1\164\1\116\1\111\1\116\4\uffff\1\145\1\157\1\151\1\155\1\145\1\163\1\164\1\141\1\172\1\105\1\172\1\111\1\122\2\105\1\156\1\154\1\153\1\166\1\164\1\154\1\163\1\156\1\157\2\141\1\124\1\172\1\162\2\141\1\162\1\154\1\145\1\uffff\2\164\1\144\1\165\1\uffff\1\145\1\uffff\1\151\1\145\1\141\1\172\1\150\1\145\1\162\1\172\1\170\1\162\1\141\1\154\1\164\1\165\1\163\1\164\1\154\1\172\1\165\1\163\1\uffff\2\172\1\145\1\157\1\167\1\166\1\165\1\uffff\1\156\1\uffff\1\172\1\164\1\162\1\164\1\151\1\162\1\uffff\1\170\1\162\1\117\1\145\1\151\1\162\1\151\1\162\1\155\1\143\1\150\1\113\1\172\1\165\1\uffff\1\172\1\157\2\145\1\165\1\157\1\61\1\145\1\165\1\141\1\156\1\162\1\164\2\172\2\145\1\154\1\165\1\uffff\1\122\1\uffff\1\116\2\172\1\123\1\172\1\145\2\141\2\145\2\151\1\172\1\163\1\142\1\156\1\171\1\uffff\1\151\1\142\1\156\1\151\1\157\1\146\1\162\1\157\1\145\1\160\1\172\1\157\1\142\1\141\1\144\1\uffff\1\172\1\143\1\164\1\uffff\1\172\1\151\1\156\1\163\1\165\1\145\1\164\1\116\1\154\1\uffff\1\145\1\151\1\uffff\1\164\1\145\1\uffff\1\116\1\146\1\172\1\145\1\154\1\164\1\171\1\uffff\1\171\1\151\1\163\1\156\1\163\1\172\2\156\1\172\1\156\1\151\1\143\1\163\1\172\1\141\1\150\1\162\1\151\1\uffff\1\154\1\uffff\1\172\1\144\1\143\1\155\1\144\1\70\1\143\1\155\1\170\1\163\1\172\1\171\2\uffff\1\172\1\162\2\154\1\111\1\107\2\uffff\1\124\1\uffff\1\172\1\147\1\164\1\143\1\162\1\143\1\163\1\uffff\1\151\1\172\1\142\1\160\1\144\1\154\1\142\1\155\1\142\2\141\1\162\1\156\1\172\1\uffff\1\156\1\154\1\142\1\145\1\uffff\1\164\1\172\1\uffff\1\164\1\143\1\145\1\162\2\172\1\165\2\172\1\145\1\141\1\160\1\141\1\172\1\uffff\1\144\1\164\1\117\2\160\1\155\1\172\1\113\1\172\1\uffff\1\172\1\154\1\uffff\1\147\1\164\2\172\1\156\1\uffff\1\116\1\172\1\157\1\143\1\154\1\uffff\1\123\1\151\1\142\1\145\1\156\1\151\1\142\1\123\1\163\1\151\1\uffff\1\172\1\uffff\1\172\1\171\1\154\1\124\1\172\1\101\1\uffff\2\145\2\164\1\172\2\164\1\uffff\1\141\1\145\1\172\1\145\1\141\1\151\1\172\1\165\1\143\1\151\1\172\1\uffff\1\172\1\145\1\154\1\122\1\151\1\uffff\1\141\1\145\1\172\1\145\2\uffff\1\154\2\uffff\1\156\1\155\1\145\1\155\1\uffff\2\172\1\162\2\145\1\151\1\uffff\2\145\2\uffff\1\171\1\163\1\171\2\uffff\1\144\1\141\1\uffff\1\156\1\153\1\172\1\165\1\155\1\145\1\172\1\113\1\155\1\145\1\151\1\172\1\157\1\uffff\1\145\1\uffff\3\172\1\uffff\1\115\2\172\1\145\1\151\1\uffff\2\145\1\156\1\172\1\uffff\1\172\1\156\1\164\1\uffff\1\154\1\164\1\172\2\uffff\1\172\3\145\1\157\1\156\1\157\1\uffff\1\172\1\154\1\164\1\160\1\156\1\145\2\uffff\1\144\2\172\1\156\1\163\1\171\3\172\1\145\1\155\1\151\1\172\1\uffff\1\160\1\141\1\162\1\uffff\1\145\1\141\1\162\1\172\1\uffff\1\156\1\160\3\uffff\1\120\2\uffff\1\144\1\145\1\156\1\172\1\103\2\uffff\1\123\1\151\1\164\1\172\1\145\1\uffff\1\172\1\162\1\155\1\156\1\143\1\146\1\uffff\3\172\1\144\1\172\1\145\2\uffff\1\141\1\143\1\172\3\uffff\1\170\1\145\1\172\1\uffff\1\145\1\154\1\172\1\171\1\154\1\172\1\145\1\172\1\164\2\172\1\163\1\143\1\uffff\1\141\1\164\1\162\1\166\1\172\1\uffff\1\144\1\uffff\1\147\1\157\1\162\1\172\1\145\1\172\3\uffff\1\145\1\uffff\1\162\1\164\1\162\1\uffff\2\172\1\145\1\162\1\172\1\uffff\2\172\1\uffff\1\172\1\uffff\1\150\2\uffff\1\172\1\145\1\162\1\141\1\144\1\145\1\uffff\1\172\1\145\1\166\1\145\1\uffff\1\120\1\uffff\1\156\1\172\1\157\1\151\2\uffff\1\144\1\143\4\uffff\1\172\1\uffff\1\125\1\144\1\164\1\145\1\172\1\uffff\1\120\1\145\1\163\1\145\1\164\1\uffff\1\162\1\160\1\172\1\154\1\uffff\1\156\1\172\1\145\1\162\1\uffff\1\145\1\172\1\150\1\162\1\172\1\126\1\164\1\uffff\1\141\1\151\1\uffff\1\172\1\151\1\162\1\uffff\1\172\1\123\1\uffff\1\157\1\171\1\141\1\151\1\163\1\164\1\uffff\1\156\1\163\1\uffff\1\154\1\165\1\154\1\160\1\154\1\157\1\163\1\172\1\147\1\151\1\141\1\142\1\165\1\145\1\165\1\156\1\172\1\uffff\1\172\2\163\1\143\1\155\1\172\1\145\1\172\2\uffff\1\164\1\163\1\154\1\156\1\uffff\1\172\1\uffff\2\172\1\141\1\172\3\uffff\1\163\1\uffff\1\163\1\172\1\uffff";
+        "\1\uffff\1\76\1\174\1\46\1\145\1\157\1\163\1\165\1\171\1\164\1\145\1\171\1\141\1\165\1\163\1\75\1\76\5\75\1\76\1\56\1\72\1\170\1\157\1\116\1\124\1\110\1\101\1\111\1\150\1\165\1\170\1\154\4\uffff\1\145\3\uffff\1\160\1\166\1\145\3\uffff\1\163\1\72\1\151\1\162\1\154\1\172\5\uffff\1\75\6\uffff\2\162\1\uffff\1\164\1\154\1\172\1\160\1\163\1\124\1\172\2\151\1\171\1\155\1\142\1\160\2\162\1\157\1\164\1\163\1\172\1\164\1\156\1\166\1\141\1\160\1\150\1\151\1\156\1\144\1\172\1\164\1\167\1\154\1\172\1\170\1\147\1\156\20\uffff\1\75\6\uffff\1\74\4\uffff\1\164\1\162\1\165\1\163\1\154\1\156\1\162\1\124\1\122\1\101\1\124\1\115\1\162\1\151\1\143\1\157\1\142\1\162\2\uffff\1\154\6\uffff\1\141\3\uffff\1\160\1\124\1\155\1\171\3\uffff\1\172\1\163\2\uffff\1\163\1\157\5\uffff\2\172\1\163\1\150\1\145\1\143\1\154\1\uffff\2\157\2\145\1\164\1\165\1\162\1\141\1\165\1\uffff\1\144\1\161\1\156\1\172\2\145\1\154\1\145\1\157\1\151\1\172\1\145\1\172\1\145\1\143\1\151\1\141\1\uffff\1\172\1\145\1\165\1\144\1\147\1\164\1\145\1\164\2\145\1\164\1\143\1\145\1\171\1\156\1\172\1\154\1\uffff\1\164\1\116\1\111\1\116\4\uffff\1\162\1\157\1\151\1\155\1\145\1\163\1\164\1\141\1\172\1\105\1\172\1\111\1\122\2\105\1\156\1\154\1\153\1\166\1\164\1\154\1\163\1\156\1\157\2\141\1\124\1\172\1\162\2\141\1\162\1\154\1\145\1\uffff\2\164\1\144\1\165\1\uffff\1\145\1\uffff\1\151\1\145\1\141\1\172\1\150\1\145\1\162\1\172\1\170\1\162\1\141\1\154\1\164\1\165\1\163\1\164\1\154\1\172\1\165\1\163\1\uffff\2\172\1\145\1\157\1\167\1\166\1\165\1\uffff\1\156\1\uffff\1\172\1\164\1\162\1\164\1\151\1\162\1\uffff\1\170\1\162\1\117\1\145\1\151\1\162\1\151\1\162\1\155\1\143\1\150\1\113\1\172\1\165\1\uffff\1\172\1\157\2\145\1\165\1\157\1\61\1\145\1\165\1\141\1\156\1\141\1\162\1\164\2\172\2\145\1\154\1\165\1\uffff\1\122\1\uffff\1\116\2\172\1\123\1\172\1\145\2\141\2\145\2\151\1\172\1\163\1\142\1\156\1\171\1\uffff\1\151\1\142\1\156\1\151\1\157\1\146\1\162\1\157\1\145\1\160\1\172\1\157\1\142\1\141\1\144\1\uffff\1\172\1\143\1\164\1\uffff\1\172\1\151\1\156\1\163\1\165\1\145\1\164\1\116\1\154\1\uffff\1\145\1\151\1\uffff\1\164\1\145\1\uffff\1\116\1\146\1\172\1\145\1\154\1\164\1\171\1\uffff\1\171\1\151\1\163\1\156\1\163\1\172\2\156\1\172\1\156\1\151\1\143\1\163\1\172\1\141\1\150\1\162\1\151\1\uffff\1\154\1\uffff\1\172\1\144\1\143\1\155\1\144\1\70\1\143\1\155\1\170\1\163\1\123\1\172\1\171\2\uffff\1\172\1\162\2\154\1\111\1\107\2\uffff\1\124\1\uffff\1\172\1\147\1\164\1\143\1\162\1\143\1\163\1\uffff\1\151\1\172\1\142\1\160\1\144\1\154\1\142\1\155\1\142\2\141\1\162\1\156\1\172\1\uffff\1\156\1\154\1\142\1\145\1\uffff\1\164\1\172\1\uffff\1\164\1\143\1\145\1\162\2\172\1\165\2\172\1\145\1\141\1\160\1\141\1\172\1\uffff\1\144\1\164\1\117\2\160\1\155\1\172\1\113\1\172\1\uffff\1\172\1\154\1\uffff\1\147\1\164\2\172\1\156\1\uffff\1\116\1\172\1\157\1\143\1\154\1\uffff\1\123\1\151\1\142\1\145\1\156\1\151\1\142\1\123\1\163\1\151\1\164\1\uffff\1\172\1\uffff\1\172\1\171\1\154\1\124\1\172\1\101\1\uffff\2\145\2\164\1\172\2\164\1\uffff\1\141\1\145\1\172\1\145\1\141\1\151\1\172\1\165\1\143\1\151\1\172\1\uffff\1\172\1\145\1\154\1\122\1\151\1\uffff\1\141\1\145\1\172\1\145\2\uffff\1\154\2\uffff\1\156\1\155\1\145\1\155\1\uffff\2\172\1\162\2\145\1\151\1\uffff\2\145\2\uffff\1\171\1\163\1\171\2\uffff\1\144\1\141\1\uffff\1\156\1\153\1\172\1\165\1\155\1\145\1\172\1\113\1\155\1\145\1\151\1\172\1\157\1\171\1\uffff\1\145\1\uffff\3\172\1\uffff\1\115\2\172\1\145\1\151\1\uffff\2\145\1\156\1\172\1\uffff\1\172\1\156\1\164\1\uffff\1\154\1\164\1\172\2\uffff\1\172\3\145\1\157\1\156\1\157\1\uffff\1\172\1\154\1\164\1\160\1\156\1\145\2\uffff\1\144\2\172\1\156\1\163\1\171\3\172\1\145\1\155\1\151\1\172\1\uffff\1\160\1\141\1\162\1\uffff\1\145\1\141\1\162\1\172\1\uffff\1\156\1\154\1\160\3\uffff\1\120\2\uffff\1\144\1\145\1\156\1\172\1\103\2\uffff\1\123\1\151\1\164\1\172\1\145\1\uffff\1\172\1\162\1\155\1\156\1\143\1\146\1\uffff\3\172\1\144\1\172\1\145\2\uffff\1\141\1\143\1\172\3\uffff\1\170\1\145\1\172\1\uffff\1\145\1\154\1\172\1\171\1\154\1\172\1\145\1\172\1\145\1\164\2\172\1\163\1\143\1\uffff\1\141\1\164\1\162\1\166\1\172\1\uffff\1\144\1\uffff\1\147\1\157\1\162\1\172\1\145\1\172\3\uffff\1\145\1\uffff\1\162\1\164\1\162\1\uffff\2\172\1\145\1\162\1\172\1\uffff\2\172\1\uffff\1\172\1\uffff\1\172\1\150\2\uffff\1\172\1\145\1\162\1\141\1\144\1\145\1\uffff\1\172\1\145\1\166\1\145\1\uffff\1\120\1\uffff\1\156\1\172\1\157\1\151\2\uffff\1\144\1\143\5\uffff\1\172\1\uffff\1\125\1\144\1\164\1\145\1\172\1\uffff\1\120\1\145\1\163\1\145\1\164\1\uffff\1\162\1\160\1\172\1\154\1\uffff\1\156\1\172\1\145\1\162\1\uffff\1\145\1\172\1\150\1\162\1\172\1\126\1\164\1\uffff\1\141\1\151\1\uffff\1\172\1\151\1\162\1\uffff\1\172\1\123\1\uffff\1\157\1\171\1\141\1\151\1\163\1\164\1\uffff\1\156\1\163\1\uffff\1\154\1\165\1\154\1\160\1\154\1\157\1\163\1\172\1\147\1\151\1\141\1\142\1\165\1\145\1\165\1\156\1\172\1\uffff\1\172\2\163\1\143\1\155\1\172\1\145\1\172\2\uffff\1\164\1\163\1\154\1\156\1\uffff\1\172\1\uffff\2\172\1\141\1\172\3\uffff\1\163\1\uffff\1\163\1\172\1\uffff";
     static final String DFA21_acceptS =
-        "\44\uffff\1\115\1\116\1\117\1\120\1\uffff\1\124\1\130\1\131\3\uffff\1\172\1\173\1\174\6\uffff\1\u00b4\2\u00b5\1\u00b8\1\u00b9\1\uffff\1\47\1\1\1\2\1\u00af\1\3\1\u0091\2\uffff\1\u00b4\44\uffff\1\30\1\57\1\26\1\31\1\44\1\60\1\27\1\32\1\53\1\52\1\33\1\u00b6\1\u00b7\1\54\1\34\1\55\1\uffff\1\56\1\41\1\42\1\50\1\110\1\43\1\uffff\1\61\1\51\1\u00ae\1\112\22\uffff\1\u00b1\1\111\1\uffff\1\u00b3\1\113\1\115\1\116\1\117\1\120\1\uffff\1\124\1\130\1\131\4\uffff\1\172\1\173\1\174\2\uffff\1\u00ad\1\u0082\2\uffff\1\u00b2\1\u00b5\1\u00b8\1\37\1\35\7\uffff\1\6\11\uffff\1\177\21\uffff\1\u0087\21\uffff\1\u00ac\4\uffff\1\40\1\36\1\45\1\46\42\uffff\1\176\4\uffff\1\4\1\uffff\1\62\24\uffff\1\u008d\7\uffff\1\134\1\uffff\1\20\6\uffff\1\23\16\uffff\1\u0088\23\uffff\1\u0085\1\uffff\1\74\21\uffff\1\170\17\uffff\1\u0084\3\uffff\1\77\11\uffff\1\7\2\uffff\1\u00b0\2\uffff\1\102\7\uffff\1\21\22\uffff\1\16\1\uffff\1\u0089\14\uffff\1\166\1\u0080\6\uffff\1\73\1\75\1\uffff\1\100\7\uffff\1\122\16\uffff\1\171\4\uffff\1\u0090\2\uffff\1\123\16\uffff\1\u008b\11\uffff\1\164\2\uffff\1\u00a0\5\uffff\1\67\5\uffff\1\22\12\uffff\1\101\1\uffff\1\70\6\uffff\1\u0086\7\uffff\1\u0097\13\uffff\1\u009d\5\uffff\1\65\4\uffff\1\152\1\157\1\uffff\1\163\1\u0098\4\uffff\1\u008a\6\uffff\1\155\2\uffff\1\14\1\u008c\3\uffff\1\64\1\135\2\uffff\1\u0081\15\uffff\1\114\1\uffff\1\167\3\uffff\1\72\5\uffff\1\107\4\uffff\1\u009a\3\uffff\1\u00a9\3\uffff\1\u00a1\1\11\7\uffff\1\146\6\uffff\1\12\1\u0083\15\uffff\1\17\3\uffff\1\147\4\uffff\1\63\2\uffff\1\u008e\1\u00ab\1\71\1\uffff\1\104\1\105\5\uffff\1\145\1\u009b\5\uffff\1\5\6\uffff\1\156\6\uffff\1\u00a8\1\144\3\uffff\1\u00a2\1\15\1\151\3\uffff\1\u009c\15\uffff\1\132\5\uffff\1\u0092\1\uffff\1\u0095\6\uffff\1\162\1\10\1\103\1\uffff\1\126\3\uffff\1\u009f\5\uffff\1\160\2\uffff\1\161\1\uffff\1\66\1\uffff\1\76\1\106\6\uffff\1\u00aa\4\uffff\1\13\1\uffff\1\175\4\uffff\1\136\1\125\2\uffff\1\153\1\150\1\154\1\165\1\uffff\1\133\5\uffff\1\u0093\5\uffff\1\u00a6\4\uffff\1\127\4\uffff\1\u00a7\7\uffff\1\u008f\2\uffff\1\u00a3\3\uffff\1\25\2\uffff\1\u0094\6\uffff\1\u00a4\2\uffff\1\u0099\21\uffff\1\121\10\uffff\1\u0096\1\u00a5\4\uffff\1\141\1\uffff\1\u009e\4\uffff\1\142\1\24\1\137\1\uffff\1\140\2\uffff\1\143";
+        "\44\uffff\1\115\1\116\1\117\1\120\1\uffff\1\124\1\130\1\131\3\uffff\1\173\1\174\1\175\6\uffff\1\u00b5\2\u00b6\1\u00b9\1\u00ba\1\uffff\1\47\1\1\1\2\1\u00b0\1\3\1\u0092\2\uffff\1\u00b5\44\uffff\1\30\1\57\1\26\1\31\1\44\1\60\1\27\1\32\1\53\1\52\1\33\1\u00b7\1\u00b8\1\54\1\34\1\55\1\uffff\1\56\1\41\1\42\1\50\1\110\1\43\1\uffff\1\61\1\51\1\u00af\1\112\22\uffff\1\u00b2\1\111\1\uffff\1\u00b4\1\113\1\115\1\116\1\117\1\120\1\uffff\1\124\1\130\1\131\4\uffff\1\173\1\174\1\175\2\uffff\1\u00ae\1\u0083\2\uffff\1\u00b3\1\u00b6\1\u00b9\1\37\1\35\7\uffff\1\6\11\uffff\1\u0080\21\uffff\1\u0088\21\uffff\1\u00ad\4\uffff\1\40\1\36\1\45\1\46\42\uffff\1\177\4\uffff\1\4\1\uffff\1\62\24\uffff\1\u008e\7\uffff\1\135\1\uffff\1\20\6\uffff\1\23\16\uffff\1\u0089\24\uffff\1\u0086\1\uffff\1\74\21\uffff\1\171\17\uffff\1\u0085\3\uffff\1\77\11\uffff\1\7\2\uffff\1\u00b1\2\uffff\1\102\7\uffff\1\21\22\uffff\1\16\1\uffff\1\u008a\15\uffff\1\167\1\u0081\6\uffff\1\73\1\75\1\uffff\1\100\7\uffff\1\122\16\uffff\1\172\4\uffff\1\u0091\2\uffff\1\123\16\uffff\1\u008c\11\uffff\1\165\2\uffff\1\u00a3\5\uffff\1\67\5\uffff\1\22\13\uffff\1\101\1\uffff\1\70\6\uffff\1\u0087\7\uffff\1\u0098\13\uffff\1\u00a0\5\uffff\1\65\4\uffff\1\153\1\160\1\uffff\1\164\1\u0099\4\uffff\1\u008b\6\uffff\1\156\2\uffff\1\14\1\u008d\3\uffff\1\64\1\136\2\uffff\1\u0082\16\uffff\1\114\1\uffff\1\170\3\uffff\1\72\5\uffff\1\107\4\uffff\1\u009b\3\uffff\1\u00aa\3\uffff\1\u009e\1\11\7\uffff\1\147\6\uffff\1\12\1\u0084\15\uffff\1\17\3\uffff\1\150\4\uffff\1\63\3\uffff\1\u008f\1\u00ac\1\71\1\uffff\1\104\1\105\5\uffff\1\146\1\u009c\5\uffff\1\5\6\uffff\1\157\6\uffff\1\u00a9\1\145\3\uffff\1\u009f\1\15\1\152\3\uffff\1\u009d\16\uffff\1\132\5\uffff\1\u0093\1\uffff\1\u0096\6\uffff\1\163\1\10\1\103\1\uffff\1\126\3\uffff\1\u00a2\5\uffff\1\161\2\uffff\1\162\1\uffff\1\66\2\uffff\1\76\1\106\6\uffff\1\u00ab\4\uffff\1\13\1\uffff\1\176\4\uffff\1\137\1\125\2\uffff\1\154\1\151\1\155\1\166\1\134\1\uffff\1\133\5\uffff\1\u0094\5\uffff\1\u00a7\4\uffff\1\127\4\uffff\1\u00a8\7\uffff\1\u0090\2\uffff\1\u00a4\3\uffff\1\25\2\uffff\1\u0095\6\uffff\1\u00a5\2\uffff\1\u009a\21\uffff\1\121\10\uffff\1\u0097\1\u00a6\4\uffff\1\142\1\uffff\1\u00a1\4\uffff\1\143\1\24\1\140\1\uffff\1\141\2\uffff\1\144";
     static final String DFA21_specialS =
-        "\1\0\u0398\uffff}>";
+        "\1\0\u03a0\uffff}>";
     static final String[] DFA21_transitionS = {
             "\11\74\2\73\2\74\1\73\22\74\1\73\1\24\1\71\1\61\1\70\1\23\1\3\1\72\1\46\1\47\1\21\1\17\1\51\1\20\1\27\1\22\1\42\1\43\10\66\1\63\1\57\1\26\1\1\1\25\1\30\1\60\2\70\1\35\1\36\4\70\1\33\11\70\1\34\1\37\6\70\1\52\1\74\1\53\1\67\1\70\1\74\1\62\1\50\1\5\1\11\1\31\1\32\1\65\1\64\1\6\1\55\1\56\1\14\1\16\1\15\1\54\1\41\1\70\1\12\1\13\1\10\1\7\1\4\1\40\3\70\1\44\1\2\1\45\uff82\74",
             "\1\75\1\76",
@@ -6290,18 +6319,17 @@
             "",
             "",
             "",
-            "\1\u015f",
-            "\1\u0160",
+            "\1\u015f\14\uffff\1\u0160",
             "\1\u0161",
             "\1\u0162",
             "\1\u0163",
             "\1\u0164",
             "\1\u0165",
             "\1\u0166",
-            "\1\106\13\uffff\12\106\7\uffff\15\106\1\u0167\14\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u0169",
+            "\1\u0167",
+            "\1\106\13\uffff\12\106\7\uffff\15\106\1\u0168\14\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u016a",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u016b",
             "\1\u016c",
             "\1\u016d",
             "\1\u016e",
@@ -6309,38 +6337,38 @@
             "\1\u0170",
             "\1\u0171",
             "\1\u0172",
-            "\1\u0174\3\uffff\1\u0173",
-            "\1\u0175",
+            "\1\u0173",
+            "\1\u0175\3\uffff\1\u0174",
             "\1\u0176",
             "\1\u0177",
             "\1\u0178",
             "\1\u0179",
             "\1\u017a",
             "\1\u017b",
+            "\1\u017c",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u017d",
             "\1\u017e",
             "\1\u017f",
             "\1\u0180",
             "\1\u0181",
             "\1\u0182",
-            "",
             "\1\u0183",
+            "",
             "\1\u0184",
             "\1\u0185",
             "\1\u0186",
-            "",
             "\1\u0187",
             "",
             "\1\u0188",
-            "\1\u0189\3\uffff\1\u018a",
-            "\1\u018b",
+            "",
+            "\1\u0189",
+            "\1\u018a\3\uffff\1\u018b",
+            "\1\u018c",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u018d",
             "\1\u018e",
             "\1\u018f",
+            "\1\u0190",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u0191",
             "\1\u0192",
             "\1\u0193",
             "\1\u0194",
@@ -6349,44 +6377,44 @@
             "\1\u0197",
             "\1\u0198",
             "\1\u0199",
+            "\1\u019a",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u019b",
             "\1\u019c",
+            "\1\u019d",
             "",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\3\106\1\u019f\16\106\1\u019e\7\106",
-            "\1\u01a1",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\3\106\1\u01a0\16\106\1\u019f\7\106",
             "\1\u01a2",
             "\1\u01a3",
             "\1\u01a4",
             "\1\u01a5",
-            "",
             "\1\u01a6",
             "",
-            "\1\106\13\uffff\12\106\7\uffff\23\106\1\u01a7\6\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u01a9",
+            "\1\u01a7",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\23\106\1\u01a8\6\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u01aa",
             "\1\u01ab",
             "\1\u01ac",
             "\1\u01ad",
-            "",
             "\1\u01ae",
+            "",
             "\1\u01af",
             "\1\u01b0",
             "\1\u01b1",
             "\1\u01b2",
             "\1\u01b3",
-            "\1\u01b5\3\uffff\1\u01b4",
-            "\1\u01b6",
+            "\1\u01b4",
+            "\1\u01b6\3\uffff\1\u01b5",
             "\1\u01b7",
             "\1\u01b8",
             "\1\u01b9",
             "\1\u01ba",
+            "\1\u01bb",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u01bc",
+            "\1\u01bd",
             "",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u01be",
             "\1\u01bf",
             "\1\u01c0",
             "\1\u01c1",
@@ -6398,35 +6426,35 @@
             "\1\u01c7",
             "\1\u01c8",
             "\1\u01c9",
+            "\1\u01ca",
+            "\1\u01cb",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u01cc",
-            "\1\u01cd",
             "\1\u01ce",
             "\1\u01cf",
-            "",
             "\1\u01d0",
-            "",
             "\1\u01d1",
+            "",
+            "\1\u01d2",
+            "",
+            "\1\u01d3",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u01d4",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u01d6",
-            "\1\u01d7",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u01d8",
             "\1\u01d9",
             "\1\u01da",
             "\1\u01db",
             "\1\u01dc",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u01dd",
             "\1\u01de",
-            "\1\u01df",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u01e0",
             "\1\u01e1",
-            "",
             "\1\u01e2",
             "\1\u01e3",
+            "",
             "\1\u01e4",
             "\1\u01e5",
             "\1\u01e6",
@@ -6435,26 +6463,25 @@
             "\1\u01e9",
             "\1\u01ea",
             "\1\u01eb",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u01ec",
             "\1\u01ed",
-            "\1\u01ee",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u01ef",
             "\1\u01f0",
-            "",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u01f1",
             "\1\u01f2",
-            "\1\u01f3",
             "",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u01f4",
             "\1\u01f5",
-            "\1\u01f6",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u01f7",
             "\1\u01f8",
             "\1\u01f9",
             "\1\u01fa",
             "\1\u01fb",
             "\1\u01fc",
-            "",
             "\1\u01fd",
             "\1\u01fe",
             "",
@@ -6463,70 +6490,71 @@
             "",
             "\1\u0201",
             "\1\u0202",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "\1\u0203",
             "\1\u0204",
-            "\1\u0205",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u0206",
             "\1\u0207",
-            "",
             "\1\u0208",
             "\1\u0209",
+            "",
             "\1\u020a",
             "\1\u020b",
             "\1\u020c",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u020d",
             "\1\u020e",
-            "\1\u020f",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0210",
             "\1\u0211",
-            "\1\u0212",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u0213",
             "\1\u0214",
-            "\1\106\13\uffff\12\106\7\uffff\10\106\1\u0215\21\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u0217",
-            "\1\u0218",
+            "\1\u0215",
+            "\1\u0216",
+            "\1\106\13\uffff\12\106\7\uffff\10\106\1\u0217\21\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u0219",
             "\1\u021a",
-            "",
             "\1\u021b",
+            "\1\u021c",
+            "",
+            "\1\u021d",
             "",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u021d",
-            "\1\u021e",
             "\1\u021f",
             "\1\u0220",
             "\1\u0221",
             "\1\u0222",
             "\1\u0223",
             "\1\u0224",
-            "\1\u0225\16\uffff\1\u0226",
+            "\1\u0225",
+            "\1\u0226",
+            "\1\u0227\16\uffff\1\u0228",
+            "\1\u0229",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u0228",
-            "",
-            "",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u022a",
             "\1\u022b",
-            "\1\u022c",
+            "",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u022d",
             "\1\u022e",
-            "",
-            "",
             "\1\u022f",
+            "\1\u0230",
+            "\1\u0231",
+            "",
+            "",
+            "\1\u0232",
             "",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u0231",
-            "\1\u0232",
-            "\1\u0233",
             "\1\u0234",
             "\1\u0235",
             "\1\u0236",
-            "",
             "\1\u0237",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0238",
             "\1\u0239",
+            "",
             "\1\u023a",
-            "\1\u023b",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u023c",
             "\1\u023d",
             "\1\u023e",
@@ -6535,59 +6563,59 @@
             "\1\u0241",
             "\1\u0242",
             "\1\u0243",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "",
+            "\1\u0244",
             "\1\u0245",
             "\1\u0246",
-            "\1\u0247",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
             "\1\u0248",
-            "",
             "\1\u0249",
+            "\1\u024a",
+            "\1\u024b",
+            "",
+            "\1\u024c",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "",
-            "\1\u024b",
-            "\1\u024c",
-            "\1\u024d",
             "\1\u024e",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u024f",
+            "\1\u0250",
             "\1\u0251",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u0254",
-            "\1\u0255",
-            "\1\u0256",
-            "\1\u0257",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0257",
+            "\1\u0258",
             "\1\u0259",
             "\1\u025a",
-            "\1\u025b",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
             "\1\u025c",
             "\1\u025d",
             "\1\u025e",
+            "\1\u025f",
+            "\1\u0260",
+            "\1\u0261",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u0260\6\uffff\1\u0261",
+            "\1\u0263\6\uffff\1\u0264",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u0264",
+            "\1\u0267",
             "",
-            "\1\u0265",
-            "\1\u0266",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0268",
             "\1\u0269",
-            "",
-            "\1\u026a",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u026c",
-            "\1\u026d",
-            "\1\u026e",
             "",
+            "\1\u026d",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u026f",
             "\1\u0270",
             "\1\u0271",
+            "",
             "\1\u0272",
             "\1\u0273",
             "\1\u0274",
@@ -6595,28 +6623,28 @@
             "\1\u0276",
             "\1\u0277",
             "\1\u0278",
-            "",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "",
-            "\1\106\13\uffff\12\106\7\uffff\3\106\1\u027a\26\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0279",
+            "\1\u027a",
+            "\1\u027b",
             "\1\u027c",
-            "\1\u027d",
-            "\1\u027e",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u0280",
             "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\3\106\1\u027e\26\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0280",
             "\1\u0281",
             "\1\u0282",
-            "\1\u0283",
-            "\1\u0284",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0284",
+            "",
+            "\1\u0285",
             "\1\u0286",
             "\1\u0287",
-            "",
             "\1\u0288",
-            "\1\u0289",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u028a",
             "\1\u028b",
+            "",
             "\1\u028c",
             "\1\u028d",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
@@ -6624,299 +6652,298 @@
             "\1\u0290",
             "\1\u0291",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0293",
             "\1\u0294",
             "\1\u0295",
-            "\1\u0296\4\uffff\1\u0297",
-            "\1\u0298",
-            "",
-            "\1\u0299",
-            "\1\u029a",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0298",
+            "\1\u0299",
+            "\1\u029a\4\uffff\1\u029b",
             "\1\u029c",
             "",
-            "",
             "\1\u029d",
-            "",
-            "",
             "\1\u029e",
-            "\1\u029f",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u02a0",
+            "",
+            "",
             "\1\u02a1",
             "",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "\1\u02a2",
+            "\1\u02a3",
             "\1\u02a4",
             "\1\u02a5",
-            "\1\u02a6",
-            "\1\u02a7",
             "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u02a8",
             "\1\u02a9",
-            "",
-            "",
             "\1\u02aa",
             "\1\u02ab",
+            "",
             "\1\u02ac",
-            "",
-            "",
             "\1\u02ad",
-            "\1\u02ae",
             "",
+            "",
+            "\1\u02ae",
             "\1\u02af",
             "\1\u02b0",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "",
+            "\1\u02b1",
             "\1\u02b2",
+            "",
             "\1\u02b3",
             "\1\u02b4",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u02b6",
             "\1\u02b7",
             "\1\u02b8",
-            "\1\u02b9",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u02ba",
             "\1\u02bb",
-            "",
             "\1\u02bc",
-            "",
+            "\1\u02bd",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "",
+            "\1\u02bf",
             "\1\u02c0",
+            "",
+            "\1\u02c1",
+            "",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u02c3",
-            "\1\u02c4",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "",
             "\1\u02c5",
-            "\1\u02c6",
-            "\1\u02c7",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u02c8",
+            "\1\u02c9",
             "",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u02ca",
             "\1\u02cb",
-            "",
             "\1\u02cc",
-            "\1\u02cd",
-            "\1\u02ce",
-            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u02cf",
             "\1\u02d0",
+            "",
             "\1\u02d1",
             "\1\u02d2",
             "\1\u02d3",
-            "\1\u02d4",
-            "\1\u02d5",
+            "",
             "",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u02d5",
+            "\1\u02d6",
             "\1\u02d7",
             "\1\u02d8",
             "\1\u02d9",
             "\1\u02da",
-            "\1\u02db",
             "",
-            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u02dc",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u02dd",
+            "\1\u02de",
             "\1\u02df",
             "\1\u02e0",
+            "",
+            "",
             "\1\u02e1",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u02e4",
             "\1\u02e5",
             "\1\u02e6",
-            "\1\u02e7",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "",
-            "\1\u02e9",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u02ea",
             "\1\u02eb",
-            "",
             "\1\u02ec",
-            "\1\u02ed",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
             "\1\u02ee",
             "\1\u02ef",
-            "",
             "\1\u02f0",
+            "",
             "\1\u02f1",
-            "",
-            "",
-            "",
             "\1\u02f2",
-            "",
-            "",
             "\1\u02f3",
             "\1\u02f4",
+            "",
             "\1\u02f5",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u02f6",
             "\1\u02f7",
             "",
             "",
-            "\1\u02f9\3\uffff\1\u02f8",
+            "",
+            "\1\u02f8",
+            "",
+            "",
+            "\1\u02f9",
             "\1\u02fa",
             "\1\u02fb",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u02fd",
             "",
+            "",
+            "\1\u02ff\3\uffff\1\u02fe",
+            "\1\u0300",
+            "\1\u0301",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u02ff",
-            "\1\u0301\6\uffff\1\u0300",
-            "\1\u0302",
             "\1\u0303",
-            "\1\u0304",
             "",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0305",
+            "\1\u0307\6\uffff\1\u0306",
             "\1\u0308",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0309",
             "\1\u030a",
             "",
-            "",
-            "\1\u030b",
-            "\1\u030c",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "",
-            "",
-            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u030e",
-            "\1\u030f",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u0310",
             "",
+            "",
             "\1\u0311",
             "\1\u0312",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "",
+            "",
             "\1\u0314",
             "\1\u0315",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u0317",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u0319",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u031c",
-            "\1\u031d",
+            "\1\u0316",
             "",
-            "\1\u031e",
+            "\1\u0317",
+            "\1\u0318",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u031a",
+            "\1\u031b",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u031d",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u031f",
             "\1\u0320",
-            "\1\u0321",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u0323",
-            "",
             "\1\u0324",
+            "",
             "\1\u0325",
             "\1\u0326",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0327",
             "\1\u0328",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "",
-            "",
-            "",
             "\1\u032a",
             "",
             "\1\u032b",
             "\1\u032c",
             "\1\u032d",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u032f",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u0330",
+            "",
+            "",
             "\1\u0331",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "\1\u0332",
+            "\1\u0333",
+            "\1\u0334",
             "",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "",
-            "\1\u0336",
-            "",
-            "",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0337",
             "\1\u0338",
-            "\1\u0339",
-            "\1\u033a",
-            "\1\u033b",
-            "\1\u033c",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u033e",
-            "\1\u033f",
-            "\1\u0340",
             "",
-            "\1\u0341",
             "",
-            "\1\u0342",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0340",
+            "\1\u0341",
+            "\1\u0342",
+            "\1\u0343",
             "\1\u0344",
-            "\1\u0345",
             "",
-            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u0346",
             "\1\u0347",
-            "",
-            "",
-            "",
-            "",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0348",
             "",
             "\1\u0349",
+            "",
             "\1\u034a",
-            "\1\u034b",
-            "\1\u034c",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u034c",
+            "\1\u034d",
+            "",
             "",
             "\1\u034e",
             "\1\u034f",
-            "\1\u0350",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
             "\1\u0351",
             "\1\u0352",
-            "",
             "\1\u0353",
             "\1\u0354",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u0356",
             "",
+            "\1\u0356",
             "\1\u0357",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0358",
             "\1\u0359",
             "\1\u035a",
             "",
             "\1\u035b",
+            "\1\u035c",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u035d",
             "\1\u035e",
+            "",
+            "\1\u035f",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u0360\20\uffff\1\u0361\1\uffff\1\u0362",
+            "\1\u0361",
+            "\1\u0362",
+            "",
             "\1\u0363",
-            "",
-            "\1\u0364",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u0365",
-            "",
+            "\1\u0366",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u0367",
-            "\1\u0368",
-            "",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u036a\17\uffff\1\u036b",
+            "\1\u0368\20\uffff\1\u0369\1\uffff\1\u036a",
+            "\1\u036b",
             "",
             "\1\u036c",
             "\1\u036d",
-            "\1\u036e",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u036f",
             "\1\u0370",
-            "\1\u0371",
             "",
-            "\1\u0372",
-            "\1\u0373",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0372\17\uffff\1\u0373",
             "",
             "\1\u0374",
             "\1\u0375",
@@ -6924,8 +6951,10 @@
             "\1\u0377",
             "\1\u0378",
             "\1\u0379",
+            "",
             "\1\u037a",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u037b",
+            "",
             "\1\u037c",
             "\1\u037d",
             "\1\u037e",
@@ -6933,36 +6962,44 @@
             "\1\u0380",
             "\1\u0381",
             "\1\u0382",
-            "\1\u0383",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0384",
+            "\1\u0385",
             "\1\u0386",
             "\1\u0387",
             "\1\u0388",
             "\1\u0389",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u038a",
             "\1\u038b",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "",
-            "",
-            "\1\u038d",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "\1\u038e",
             "\1\u038f",
             "\1\u0390",
-            "",
+            "\1\u0391",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
-            "\1\u0394",
+            "\1\u0393",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             "",
             "",
-            "",
+            "\1\u0395",
             "\1\u0396",
-            "",
             "\1\u0397",
+            "\1\u0398",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u039c",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "",
+            "",
+            "\1\u039e",
+            "",
+            "\1\u039f",
             "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
             ""
     };
@@ -6997,7 +7034,7 @@
             this.transition = DFA21_transition;
         }
         public String getDescription() {
-            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | T__141 | T__142 | T__143 | T__144 | T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | T__152 | T__153 | T__154 | T__155 | T__156 | T__157 | T__158 | T__159 | T__160 | T__161 | T__162 | T__163 | T__164 | T__165 | T__166 | T__167 | T__168 | T__169 | T__170 | T__171 | T__172 | T__173 | T__174 | T__175 | T__176 | T__177 | T__178 | T__179 | T__180 | T__181 | T__182 | T__183 | T__184 | T__185 | T__186 | T__187 | T__188 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
+            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | T__141 | T__142 | T__143 | T__144 | T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | T__152 | T__153 | T__154 | T__155 | T__156 | T__157 | T__158 | T__159 | T__160 | T__161 | T__162 | T__163 | T__164 | T__165 | T__166 | T__167 | T__168 | T__169 | T__170 | T__171 | T__172 | T__173 | T__174 | T__175 | T__176 | T__177 | T__178 | T__179 | T__180 | T__181 | T__182 | T__183 | T__184 | T__185 | T__186 | T__187 | T__188 | T__189 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             IntStream input = _input;
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammarParser.java b/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammarParser.java
index e3f0d4f..e7f36a4 100644
--- a/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammarParser.java
+++ b/org.eclipse.osbp.dsl.entity.xtext.ide/src-gen/org/eclipse/osbp/dsl/entity/xtext/ide/contentassist/antlr/internal/InternalEntityGrammarParser.java
@@ -37,7 +37,7 @@
 @SuppressWarnings("all")
 public class InternalEntityGrammarParser extends AbstractInternalContentAssistParser {
     public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_HEX", "RULE_INT", "RULE_DECIMAL", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'='", "'||'", "'&&'", "'var'", "'cachable'", "'id'", "'uuid'", "'transient'", "'version'", "'derived'", "'collection'", "'refers'", "'settings'", "'lazy'", "'notnull'", "'dto'", "'date'", "'mapto'", "'ref'", "'cascadeMergePersist'", "'cascadeRemove'", "'+'", "'-'", "'+='", "'-='", "'*='", "'/='", "'%='", "'=='", "'!='", "'==='", "'!=='", "'>='", "'>'", "'<'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'*'", "'**'", "'/'", "'%'", "'!'", "'++'", "'--'", "'.'", "'val'", "'extends'", "'static'", "'import'", "'extension'", "'super'", "'false'", "'INHERIT'", "'STRING'", "'CHAR'", "'INT'", "'DATE'", "'TIMESTAMP'", "'info'", "'warn'", "'error'", "'time'", "'timestamp'", "'package'", "'private'", "'protected'", "'public'", "'<='", "'0'", "'?'", "'1'", "'entity'", "'{'", "'}'", "'('", "')'", "'persistenceUnit'", "'bean'", "'index'", "','", "'schemaName'", "'tableName'", "'filterDepth'", "'['", "']'", "'opposite'", "'properties'", "'def'", "'states'", "'superIndex'", "'inheritancePerClass'", "'discriminatorColumn'", "'discriminatorType'", "'discriminatorValue'", "'inheritancePerSubclass'", "'datatype'", "'jvmType'", "'isFalse'", "'msgCode'", "'msgI18nKey'", "'severity'", "'isTrue'", "'maxDecimal'", "'minDecimal'", "'digits'", "'isFuture'", "'isPast'", "'maxNumber'", "'minNumber'", "'isNotNull'", "'isNull'", "'regex'", "'minMaxSize'", "'enum'", "'filter'", "'key'", "'value'", "';'", "'@'", "'#'", "'instanceof'", "'as'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'new'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'&'", "'abstract'", "'historized'", "'timedependent'", "'cacheable'", "'mappedSuperclass'", "'onTab'", "'unique'", "'cascadeRefresh'", "'asGrid'", "'asTable'", "'sideKick'", "'group'", "'domainDescription'", "'domainKey'", "'range'", "'hidden'", "'readOnly'", "'onKanbanCard'", "'asKanbanState'", "'asKanbanOrdering'", "'decentOrder'", "'asPrimitive'", "'dateType'", "'asBlob'", "'asDefault'", "'forNull'", "'ns'", "'::'", "'?.'", "'|'", "'true'"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_HEX", "RULE_INT", "RULE_DECIMAL", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'='", "'||'", "'&&'", "'var'", "'cachable'", "'id'", "'uuid'", "'transient'", "'version'", "'derived'", "'collection'", "'refers'", "'settings'", "'lazy'", "'notnull'", "'dto'", "'date'", "'mapto'", "'ref'", "'cascadeMergePersist'", "'cascadeRemove'", "'+'", "'-'", "'+='", "'-='", "'*='", "'/='", "'%='", "'=='", "'!='", "'==='", "'!=='", "'>='", "'>'", "'<'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'*'", "'**'", "'/'", "'%'", "'!'", "'++'", "'--'", "'.'", "'val'", "'extends'", "'static'", "'import'", "'extension'", "'super'", "'false'", "'INHERIT'", "'STRING'", "'CHAR'", "'INT'", "'DATE'", "'TIMESTAMP'", "'info'", "'warn'", "'error'", "'time'", "'timestamp'", "'package'", "'private'", "'protected'", "'public'", "'<='", "'0'", "'?'", "'1'", "'entity'", "'{'", "'}'", "'('", "')'", "'persistenceUnit'", "'bean'", "'index'", "','", "'schemaName'", "'tableName'", "'filterDepth'", "'['", "']'", "'opposite'", "'properties'", "'extraStyle'", "'def'", "'states'", "'superIndex'", "'inheritancePerClass'", "'discriminatorColumn'", "'discriminatorType'", "'discriminatorValue'", "'inheritancePerSubclass'", "'datatype'", "'jvmType'", "'isFalse'", "'msgCode'", "'msgI18nKey'", "'severity'", "'isTrue'", "'maxDecimal'", "'minDecimal'", "'digits'", "'isFuture'", "'isPast'", "'maxNumber'", "'minNumber'", "'isNotNull'", "'isNull'", "'regex'", "'minMaxSize'", "'enum'", "'filter'", "'key'", "'value'", "';'", "'@'", "'#'", "'instanceof'", "'as'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'new'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'&'", "'abstract'", "'historized'", "'timedependent'", "'cacheable'", "'mappedSuperclass'", "'onTab'", "'unique'", "'cascadeRefresh'", "'asGrid'", "'asTable'", "'sideKick'", "'hidden'", "'readOnly'", "'group'", "'domainDescription'", "'domainKey'", "'range'", "'onKanbanCard'", "'asKanbanState'", "'asKanbanOrdering'", "'decentOrder'", "'asPrimitive'", "'dateType'", "'asBlob'", "'asDefault'", "'forNull'", "'ns'", "'::'", "'?.'", "'|'", "'true'"
     };
     public static final int T__144=144;
     public static final int T__143=143;
@@ -178,6 +178,7 @@
     public static final int T__187=187;
     public static final int T__93=93;
     public static final int T__94=94;
+    public static final int T__189=189;
     public static final int T__184=184;
     public static final int T__183=183;
     public static final int T__186=186;
@@ -11855,20 +11856,20 @@
             int alt3=3;
             switch ( input.LA(1) ) {
             case 88:
-            case 158:
-            case 161:
+            case 159:
+            case 162:
                 {
                 alt3=1;
                 }
                 break;
-            case 159:
+            case 160:
                 {
                 int LA3_2 = input.LA(2);
 
-                if ( (LA3_2==88||(LA3_2>=158 && LA3_2<=161)) ) {
+                if ( (LA3_2==88||(LA3_2>=159 && LA3_2<=162)) ) {
                     alt3=1;
                 }
-                else if ( (LA3_2==162) ) {
+                else if ( (LA3_2==163) ) {
                     alt3=2;
                 }
                 else {
@@ -11880,14 +11881,14 @@
                 }
                 }
                 break;
-            case 160:
+            case 161:
                 {
                 int LA3_3 = input.LA(2);
 
-                if ( (LA3_3==162) ) {
+                if ( (LA3_3==163) ) {
                     alt3=2;
                 }
-                else if ( (LA3_3==88||LA3_3==91||(LA3_3>=158 && LA3_3<=161)) ) {
+                else if ( (LA3_3==88||LA3_3==91||(LA3_3>=159 && LA3_3<=162)) ) {
                     alt3=1;
                 }
                 else {
@@ -11899,7 +11900,7 @@
                 }
                 }
                 break;
-            case 162:
+            case 163:
                 {
                 alt3=2;
                 }
@@ -12033,10 +12034,10 @@
             int alt4=2;
             int LA4_0 = input.LA(1);
 
-            if ( (LA4_0==159) ) {
+            if ( (LA4_0==160) ) {
                 alt4=1;
             }
-            else if ( (LA4_0==160) ) {
+            else if ( (LA4_0==161) ) {
                 alt4=2;
             }
             else {
@@ -12133,10 +12134,10 @@
             int alt5=2;
             int LA5_0 = input.LA(1);
 
-            if ( (LA5_0==95||LA5_0==164) ) {
+            if ( (LA5_0==95||LA5_0==165) ) {
                 alt5=1;
             }
-            else if ( (LA5_0==106) ) {
+            else if ( (LA5_0==107) ) {
                 alt5=2;
             }
             else {
@@ -12233,10 +12234,10 @@
             int alt6=2;
             int LA6_0 = input.LA(1);
 
-            if ( (LA6_0==159) ) {
+            if ( (LA6_0==160) ) {
                 alt6=1;
             }
-            else if ( (LA6_0==160) ) {
+            else if ( (LA6_0==161) ) {
                 alt6=2;
             }
             else {
@@ -12343,13 +12344,13 @@
             case 20:
             case 21:
             case 22:
-            case 170:
-            case 171:
+            case 173:
+            case 174:
                 {
                 alt7=2;
                 }
                 break;
-            case 104:
+            case 105:
                 {
                 alt7=3;
                 }
@@ -12478,10 +12479,10 @@
             int alt8=2;
             int LA8_0 = input.LA(1);
 
-            if ( (LA8_0==166) ) {
+            if ( (LA8_0==167) ) {
                 alt8=1;
             }
-            else if ( (LA8_0==167) ) {
+            else if ( (LA8_0==168) ) {
                 alt8=2;
             }
             else {
@@ -12567,56 +12568,264 @@
     // $ANTLR end "rule__EntityFeature__Alternatives_2_0_1_10_2"
 
 
+    // $ANTLR start "rule__EntityFeature__Alternatives_2_0_1_11"
+    // InternalEntityGrammar.g:3627:1: rule__EntityFeature__Alternatives_2_0_1_11 : ( ( ( rule__EntityFeature__SideKickAssignment_2_0_1_11_0 )? ) | ( ( rule__EntityFeature__Alternatives_2_0_1_11_1 )? ) );
+    public final void rule__EntityFeature__Alternatives_2_0_1_11() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalEntityGrammar.g:3631:1: ( ( ( rule__EntityFeature__SideKickAssignment_2_0_1_11_0 )? ) | ( ( rule__EntityFeature__Alternatives_2_0_1_11_1 )? ) )
+            int alt11=2;
+            alt11 = dfa11.predict(input);
+            switch (alt11) {
+                case 1 :
+                    // InternalEntityGrammar.g:3632:2: ( ( rule__EntityFeature__SideKickAssignment_2_0_1_11_0 )? )
+                    {
+                    // InternalEntityGrammar.g:3632:2: ( ( rule__EntityFeature__SideKickAssignment_2_0_1_11_0 )? )
+                    // InternalEntityGrammar.g:3633:3: ( rule__EntityFeature__SideKickAssignment_2_0_1_11_0 )?
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getEntityFeatureAccess().getSideKickAssignment_2_0_1_11_0()); 
+                    }
+                    // InternalEntityGrammar.g:3634:3: ( rule__EntityFeature__SideKickAssignment_2_0_1_11_0 )?
+                    int alt9=2;
+                    int LA9_0 = input.LA(1);
+
+                    if ( (LA9_0==169) ) {
+                        alt9=1;
+                    }
+                    switch (alt9) {
+                        case 1 :
+                            // InternalEntityGrammar.g:3634:4: rule__EntityFeature__SideKickAssignment_2_0_1_11_0
+                            {
+                            pushFollow(FOLLOW_2);
+                            rule__EntityFeature__SideKickAssignment_2_0_1_11_0();
+
+                            state._fsp--;
+                            if (state.failed) return ;
+
+                            }
+                            break;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getEntityFeatureAccess().getSideKickAssignment_2_0_1_11_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalEntityGrammar.g:3638:2: ( ( rule__EntityFeature__Alternatives_2_0_1_11_1 )? )
+                    {
+                    // InternalEntityGrammar.g:3638:2: ( ( rule__EntityFeature__Alternatives_2_0_1_11_1 )? )
+                    // InternalEntityGrammar.g:3639:3: ( rule__EntityFeature__Alternatives_2_0_1_11_1 )?
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getEntityFeatureAccess().getAlternatives_2_0_1_11_1()); 
+                    }
+                    // InternalEntityGrammar.g:3640:3: ( rule__EntityFeature__Alternatives_2_0_1_11_1 )?
+                    int alt10=2;
+                    int LA10_0 = input.LA(1);
+
+                    if ( ((LA10_0>=170 && LA10_0<=171)) ) {
+                        alt10=1;
+                    }
+                    switch (alt10) {
+                        case 1 :
+                            // InternalEntityGrammar.g:3640:4: rule__EntityFeature__Alternatives_2_0_1_11_1
+                            {
+                            pushFollow(FOLLOW_2);
+                            rule__EntityFeature__Alternatives_2_0_1_11_1();
+
+                            state._fsp--;
+                            if (state.failed) return ;
+
+                            }
+                            break;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getEntityFeatureAccess().getAlternatives_2_0_1_11_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityFeature__Alternatives_2_0_1_11"
+
+
+    // $ANTLR start "rule__EntityFeature__Alternatives_2_0_1_11_1"
+    // InternalEntityGrammar.g:3648:1: rule__EntityFeature__Alternatives_2_0_1_11_1 : ( ( ( rule__EntityFeature__ReferenceHiddenAssignment_2_0_1_11_1_0 ) ) | ( ( rule__EntityFeature__ReferenceReadOnlyAssignment_2_0_1_11_1_1 ) ) );
+    public final void rule__EntityFeature__Alternatives_2_0_1_11_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalEntityGrammar.g:3652:1: ( ( ( rule__EntityFeature__ReferenceHiddenAssignment_2_0_1_11_1_0 ) ) | ( ( rule__EntityFeature__ReferenceReadOnlyAssignment_2_0_1_11_1_1 ) ) )
+            int alt12=2;
+            int LA12_0 = input.LA(1);
+
+            if ( (LA12_0==170) ) {
+                alt12=1;
+            }
+            else if ( (LA12_0==171) ) {
+                alt12=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 12, 0, input);
+
+                throw nvae;
+            }
+            switch (alt12) {
+                case 1 :
+                    // InternalEntityGrammar.g:3653:2: ( ( rule__EntityFeature__ReferenceHiddenAssignment_2_0_1_11_1_0 ) )
+                    {
+                    // InternalEntityGrammar.g:3653:2: ( ( rule__EntityFeature__ReferenceHiddenAssignment_2_0_1_11_1_0 ) )
+                    // InternalEntityGrammar.g:3654:3: ( rule__EntityFeature__ReferenceHiddenAssignment_2_0_1_11_1_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getEntityFeatureAccess().getReferenceHiddenAssignment_2_0_1_11_1_0()); 
+                    }
+                    // InternalEntityGrammar.g:3655:3: ( rule__EntityFeature__ReferenceHiddenAssignment_2_0_1_11_1_0 )
+                    // InternalEntityGrammar.g:3655:4: rule__EntityFeature__ReferenceHiddenAssignment_2_0_1_11_1_0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__EntityFeature__ReferenceHiddenAssignment_2_0_1_11_1_0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getEntityFeatureAccess().getReferenceHiddenAssignment_2_0_1_11_1_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalEntityGrammar.g:3659:2: ( ( rule__EntityFeature__ReferenceReadOnlyAssignment_2_0_1_11_1_1 ) )
+                    {
+                    // InternalEntityGrammar.g:3659:2: ( ( rule__EntityFeature__ReferenceReadOnlyAssignment_2_0_1_11_1_1 ) )
+                    // InternalEntityGrammar.g:3660:3: ( rule__EntityFeature__ReferenceReadOnlyAssignment_2_0_1_11_1_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getEntityFeatureAccess().getReferenceReadOnlyAssignment_2_0_1_11_1_1()); 
+                    }
+                    // InternalEntityGrammar.g:3661:3: ( rule__EntityFeature__ReferenceReadOnlyAssignment_2_0_1_11_1_1 )
+                    // InternalEntityGrammar.g:3661:4: rule__EntityFeature__ReferenceReadOnlyAssignment_2_0_1_11_1_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__EntityFeature__ReferenceReadOnlyAssignment_2_0_1_11_1_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getEntityFeatureAccess().getReferenceReadOnlyAssignment_2_0_1_11_1_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityFeature__Alternatives_2_0_1_11_1"
+
+
     // $ANTLR start "rule__EntityFeature__Alternatives_2_1_1"
-    // InternalEntityGrammar.g:3627:1: rule__EntityFeature__Alternatives_2_1_1 : ( ( ( rule__EntityFeature__Group_2_1_1_0__0 ) ) | ( ( rule__EntityFeature__Group_2_1_1_1__0 ) ) | ( ( rule__EntityFeature__Group_2_1_1_2__0 ) ) );
+    // InternalEntityGrammar.g:3669:1: rule__EntityFeature__Alternatives_2_1_1 : ( ( ( rule__EntityFeature__Group_2_1_1_0__0 ) ) | ( ( rule__EntityFeature__Group_2_1_1_1__0 ) ) | ( ( rule__EntityFeature__Group_2_1_1_2__0 ) ) );
     public final void rule__EntityFeature__Alternatives_2_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:3631:1: ( ( ( rule__EntityFeature__Group_2_1_1_0__0 ) ) | ( ( rule__EntityFeature__Group_2_1_1_1__0 ) ) | ( ( rule__EntityFeature__Group_2_1_1_2__0 ) ) )
-            int alt9=3;
+            // InternalEntityGrammar.g:3673:1: ( ( ( rule__EntityFeature__Group_2_1_1_0__0 ) ) | ( ( rule__EntityFeature__Group_2_1_1_1__0 ) ) | ( ( rule__EntityFeature__Group_2_1_1_2__0 ) ) )
+            int alt13=3;
             switch ( input.LA(1) ) {
             case 20:
                 {
-                alt9=1;
+                alt13=1;
                 }
                 break;
             case 22:
                 {
-                alt9=2;
+                alt13=2;
                 }
                 break;
             case 16:
             case 18:
             case 19:
             case 21:
-            case 170:
-            case 171:
+            case 173:
+            case 174:
                 {
-                alt9=3;
+                alt13=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 9, 0, input);
+                    new NoViableAltException("", 13, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt9) {
+            switch (alt13) {
                 case 1 :
-                    // InternalEntityGrammar.g:3632:2: ( ( rule__EntityFeature__Group_2_1_1_0__0 ) )
+                    // InternalEntityGrammar.g:3674:2: ( ( rule__EntityFeature__Group_2_1_1_0__0 ) )
                     {
-                    // InternalEntityGrammar.g:3632:2: ( ( rule__EntityFeature__Group_2_1_1_0__0 ) )
-                    // InternalEntityGrammar.g:3633:3: ( rule__EntityFeature__Group_2_1_1_0__0 )
+                    // InternalEntityGrammar.g:3674:2: ( ( rule__EntityFeature__Group_2_1_1_0__0 ) )
+                    // InternalEntityGrammar.g:3675:3: ( rule__EntityFeature__Group_2_1_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0()); 
                     }
-                    // InternalEntityGrammar.g:3634:3: ( rule__EntityFeature__Group_2_1_1_0__0 )
-                    // InternalEntityGrammar.g:3634:4: rule__EntityFeature__Group_2_1_1_0__0
+                    // InternalEntityGrammar.g:3676:3: ( rule__EntityFeature__Group_2_1_1_0__0 )
+                    // InternalEntityGrammar.g:3676:4: rule__EntityFeature__Group_2_1_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__Group_2_1_1_0__0();
@@ -12636,16 +12845,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:3638:2: ( ( rule__EntityFeature__Group_2_1_1_1__0 ) )
+                    // InternalEntityGrammar.g:3680:2: ( ( rule__EntityFeature__Group_2_1_1_1__0 ) )
                     {
-                    // InternalEntityGrammar.g:3638:2: ( ( rule__EntityFeature__Group_2_1_1_1__0 ) )
-                    // InternalEntityGrammar.g:3639:3: ( rule__EntityFeature__Group_2_1_1_1__0 )
+                    // InternalEntityGrammar.g:3680:2: ( ( rule__EntityFeature__Group_2_1_1_1__0 ) )
+                    // InternalEntityGrammar.g:3681:3: ( rule__EntityFeature__Group_2_1_1_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1()); 
                     }
-                    // InternalEntityGrammar.g:3640:3: ( rule__EntityFeature__Group_2_1_1_1__0 )
-                    // InternalEntityGrammar.g:3640:4: rule__EntityFeature__Group_2_1_1_1__0
+                    // InternalEntityGrammar.g:3682:3: ( rule__EntityFeature__Group_2_1_1_1__0 )
+                    // InternalEntityGrammar.g:3682:4: rule__EntityFeature__Group_2_1_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__Group_2_1_1_1__0();
@@ -12665,16 +12874,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:3644:2: ( ( rule__EntityFeature__Group_2_1_1_2__0 ) )
+                    // InternalEntityGrammar.g:3686:2: ( ( rule__EntityFeature__Group_2_1_1_2__0 ) )
                     {
-                    // InternalEntityGrammar.g:3644:2: ( ( rule__EntityFeature__Group_2_1_1_2__0 ) )
-                    // InternalEntityGrammar.g:3645:3: ( rule__EntityFeature__Group_2_1_1_2__0 )
+                    // InternalEntityGrammar.g:3686:2: ( ( rule__EntityFeature__Group_2_1_1_2__0 ) )
+                    // InternalEntityGrammar.g:3687:3: ( rule__EntityFeature__Group_2_1_1_2__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2()); 
                     }
-                    // InternalEntityGrammar.g:3646:3: ( rule__EntityFeature__Group_2_1_1_2__0 )
-                    // InternalEntityGrammar.g:3646:4: rule__EntityFeature__Group_2_1_1_2__0
+                    // InternalEntityGrammar.g:3688:3: ( rule__EntityFeature__Group_2_1_1_2__0 )
+                    // InternalEntityGrammar.g:3688:4: rule__EntityFeature__Group_2_1_1_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__Group_2_1_1_2__0();
@@ -12710,60 +12919,260 @@
     // $ANTLR end "rule__EntityFeature__Alternatives_2_1_1"
 
 
+    // $ANTLR start "rule__EntityFeature__Alternatives_2_1_1_0_1"
+    // InternalEntityGrammar.g:3696:1: rule__EntityFeature__Alternatives_2_1_1_0_1 : ( ( ( rule__EntityFeature__AttributeHiddenAssignment_2_1_1_0_1_0 ) ) | ( ( rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_0_1_1 ) ) );
+    public final void rule__EntityFeature__Alternatives_2_1_1_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalEntityGrammar.g:3700:1: ( ( ( rule__EntityFeature__AttributeHiddenAssignment_2_1_1_0_1_0 ) ) | ( ( rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_0_1_1 ) ) )
+            int alt14=2;
+            int LA14_0 = input.LA(1);
+
+            if ( (LA14_0==170) ) {
+                alt14=1;
+            }
+            else if ( (LA14_0==171) ) {
+                alt14=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 14, 0, input);
+
+                throw nvae;
+            }
+            switch (alt14) {
+                case 1 :
+                    // InternalEntityGrammar.g:3701:2: ( ( rule__EntityFeature__AttributeHiddenAssignment_2_1_1_0_1_0 ) )
+                    {
+                    // InternalEntityGrammar.g:3701:2: ( ( rule__EntityFeature__AttributeHiddenAssignment_2_1_1_0_1_0 ) )
+                    // InternalEntityGrammar.g:3702:3: ( rule__EntityFeature__AttributeHiddenAssignment_2_1_1_0_1_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getEntityFeatureAccess().getAttributeHiddenAssignment_2_1_1_0_1_0()); 
+                    }
+                    // InternalEntityGrammar.g:3703:3: ( rule__EntityFeature__AttributeHiddenAssignment_2_1_1_0_1_0 )
+                    // InternalEntityGrammar.g:3703:4: rule__EntityFeature__AttributeHiddenAssignment_2_1_1_0_1_0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__EntityFeature__AttributeHiddenAssignment_2_1_1_0_1_0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getEntityFeatureAccess().getAttributeHiddenAssignment_2_1_1_0_1_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalEntityGrammar.g:3707:2: ( ( rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_0_1_1 ) )
+                    {
+                    // InternalEntityGrammar.g:3707:2: ( ( rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_0_1_1 ) )
+                    // InternalEntityGrammar.g:3708:3: ( rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_0_1_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getEntityFeatureAccess().getAttributeReadOnlyAssignment_2_1_1_0_1_1()); 
+                    }
+                    // InternalEntityGrammar.g:3709:3: ( rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_0_1_1 )
+                    // InternalEntityGrammar.g:3709:4: rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_0_1_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_0_1_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getEntityFeatureAccess().getAttributeReadOnlyAssignment_2_1_1_0_1_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityFeature__Alternatives_2_1_1_0_1"
+
+
+    // $ANTLR start "rule__EntityFeature__Alternatives_2_1_1_1_2"
+    // InternalEntityGrammar.g:3717:1: rule__EntityFeature__Alternatives_2_1_1_1_2 : ( ( ( rule__EntityFeature__AttributeHiddenAssignment_2_1_1_1_2_0 ) ) | ( ( rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_1_2_1 ) ) );
+    public final void rule__EntityFeature__Alternatives_2_1_1_1_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalEntityGrammar.g:3721:1: ( ( ( rule__EntityFeature__AttributeHiddenAssignment_2_1_1_1_2_0 ) ) | ( ( rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_1_2_1 ) ) )
+            int alt15=2;
+            int LA15_0 = input.LA(1);
+
+            if ( (LA15_0==170) ) {
+                alt15=1;
+            }
+            else if ( (LA15_0==171) ) {
+                alt15=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 15, 0, input);
+
+                throw nvae;
+            }
+            switch (alt15) {
+                case 1 :
+                    // InternalEntityGrammar.g:3722:2: ( ( rule__EntityFeature__AttributeHiddenAssignment_2_1_1_1_2_0 ) )
+                    {
+                    // InternalEntityGrammar.g:3722:2: ( ( rule__EntityFeature__AttributeHiddenAssignment_2_1_1_1_2_0 ) )
+                    // InternalEntityGrammar.g:3723:3: ( rule__EntityFeature__AttributeHiddenAssignment_2_1_1_1_2_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getEntityFeatureAccess().getAttributeHiddenAssignment_2_1_1_1_2_0()); 
+                    }
+                    // InternalEntityGrammar.g:3724:3: ( rule__EntityFeature__AttributeHiddenAssignment_2_1_1_1_2_0 )
+                    // InternalEntityGrammar.g:3724:4: rule__EntityFeature__AttributeHiddenAssignment_2_1_1_1_2_0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__EntityFeature__AttributeHiddenAssignment_2_1_1_1_2_0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getEntityFeatureAccess().getAttributeHiddenAssignment_2_1_1_1_2_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalEntityGrammar.g:3728:2: ( ( rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_1_2_1 ) )
+                    {
+                    // InternalEntityGrammar.g:3728:2: ( ( rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_1_2_1 ) )
+                    // InternalEntityGrammar.g:3729:3: ( rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_1_2_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getEntityFeatureAccess().getAttributeReadOnlyAssignment_2_1_1_1_2_1()); 
+                    }
+                    // InternalEntityGrammar.g:3730:3: ( rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_1_2_1 )
+                    // InternalEntityGrammar.g:3730:4: rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_1_2_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_1_2_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getEntityFeatureAccess().getAttributeReadOnlyAssignment_2_1_1_1_2_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__EntityFeature__Alternatives_2_1_1_1_2"
+
+
     // $ANTLR start "rule__EntityFeature__Alternatives_2_1_1_2_0"
-    // InternalEntityGrammar.g:3654:1: rule__EntityFeature__Alternatives_2_1_1_2_0 : ( ( 'var' ) | ( ( rule__EntityFeature__IdAssignment_2_1_1_2_0_1 ) ) | ( ( rule__EntityFeature__UuidAssignment_2_1_1_2_0_2 ) ) | ( ( rule__EntityFeature__VersionAssignment_2_1_1_2_0_3 ) ) | ( ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4 ) ) | ( ( rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5 ) ) );
+    // InternalEntityGrammar.g:3738:1: rule__EntityFeature__Alternatives_2_1_1_2_0 : ( ( 'var' ) | ( ( rule__EntityFeature__IdAssignment_2_1_1_2_0_1 ) ) | ( ( rule__EntityFeature__UuidAssignment_2_1_1_2_0_2 ) ) | ( ( rule__EntityFeature__VersionAssignment_2_1_1_2_0_3 ) ) | ( ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4 ) ) | ( ( rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5 ) ) );
     public final void rule__EntityFeature__Alternatives_2_1_1_2_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:3658:1: ( ( 'var' ) | ( ( rule__EntityFeature__IdAssignment_2_1_1_2_0_1 ) ) | ( ( rule__EntityFeature__UuidAssignment_2_1_1_2_0_2 ) ) | ( ( rule__EntityFeature__VersionAssignment_2_1_1_2_0_3 ) ) | ( ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4 ) ) | ( ( rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5 ) ) )
-            int alt10=6;
+            // InternalEntityGrammar.g:3742:1: ( ( 'var' ) | ( ( rule__EntityFeature__IdAssignment_2_1_1_2_0_1 ) ) | ( ( rule__EntityFeature__UuidAssignment_2_1_1_2_0_2 ) ) | ( ( rule__EntityFeature__VersionAssignment_2_1_1_2_0_3 ) ) | ( ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4 ) ) | ( ( rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5 ) ) )
+            int alt16=6;
             switch ( input.LA(1) ) {
             case 16:
                 {
-                alt10=1;
+                alt16=1;
                 }
                 break;
             case 18:
                 {
-                alt10=2;
+                alt16=2;
                 }
                 break;
             case 19:
                 {
-                alt10=3;
+                alt16=3;
                 }
                 break;
             case 21:
                 {
-                alt10=4;
+                alt16=4;
                 }
                 break;
-            case 170:
+            case 173:
                 {
-                alt10=5;
+                alt16=5;
                 }
                 break;
-            case 171:
+            case 174:
                 {
-                alt10=6;
+                alt16=6;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 10, 0, input);
+                    new NoViableAltException("", 16, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt10) {
+            switch (alt16) {
                 case 1 :
-                    // InternalEntityGrammar.g:3659:2: ( 'var' )
+                    // InternalEntityGrammar.g:3743:2: ( 'var' )
                     {
-                    // InternalEntityGrammar.g:3659:2: ( 'var' )
-                    // InternalEntityGrammar.g:3660:3: 'var'
+                    // InternalEntityGrammar.g:3743:2: ( 'var' )
+                    // InternalEntityGrammar.g:3744:3: 'var'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getEntityFeatureAccess().getVarKeyword_2_1_1_2_0_0()); 
@@ -12779,16 +13188,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:3665:2: ( ( rule__EntityFeature__IdAssignment_2_1_1_2_0_1 ) )
+                    // InternalEntityGrammar.g:3749:2: ( ( rule__EntityFeature__IdAssignment_2_1_1_2_0_1 ) )
                     {
-                    // InternalEntityGrammar.g:3665:2: ( ( rule__EntityFeature__IdAssignment_2_1_1_2_0_1 ) )
-                    // InternalEntityGrammar.g:3666:3: ( rule__EntityFeature__IdAssignment_2_1_1_2_0_1 )
+                    // InternalEntityGrammar.g:3749:2: ( ( rule__EntityFeature__IdAssignment_2_1_1_2_0_1 ) )
+                    // InternalEntityGrammar.g:3750:3: ( rule__EntityFeature__IdAssignment_2_1_1_2_0_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getEntityFeatureAccess().getIdAssignment_2_1_1_2_0_1()); 
                     }
-                    // InternalEntityGrammar.g:3667:3: ( rule__EntityFeature__IdAssignment_2_1_1_2_0_1 )
-                    // InternalEntityGrammar.g:3667:4: rule__EntityFeature__IdAssignment_2_1_1_2_0_1
+                    // InternalEntityGrammar.g:3751:3: ( rule__EntityFeature__IdAssignment_2_1_1_2_0_1 )
+                    // InternalEntityGrammar.g:3751:4: rule__EntityFeature__IdAssignment_2_1_1_2_0_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__IdAssignment_2_1_1_2_0_1();
@@ -12808,16 +13217,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:3671:2: ( ( rule__EntityFeature__UuidAssignment_2_1_1_2_0_2 ) )
+                    // InternalEntityGrammar.g:3755:2: ( ( rule__EntityFeature__UuidAssignment_2_1_1_2_0_2 ) )
                     {
-                    // InternalEntityGrammar.g:3671:2: ( ( rule__EntityFeature__UuidAssignment_2_1_1_2_0_2 ) )
-                    // InternalEntityGrammar.g:3672:3: ( rule__EntityFeature__UuidAssignment_2_1_1_2_0_2 )
+                    // InternalEntityGrammar.g:3755:2: ( ( rule__EntityFeature__UuidAssignment_2_1_1_2_0_2 ) )
+                    // InternalEntityGrammar.g:3756:3: ( rule__EntityFeature__UuidAssignment_2_1_1_2_0_2 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getEntityFeatureAccess().getUuidAssignment_2_1_1_2_0_2()); 
                     }
-                    // InternalEntityGrammar.g:3673:3: ( rule__EntityFeature__UuidAssignment_2_1_1_2_0_2 )
-                    // InternalEntityGrammar.g:3673:4: rule__EntityFeature__UuidAssignment_2_1_1_2_0_2
+                    // InternalEntityGrammar.g:3757:3: ( rule__EntityFeature__UuidAssignment_2_1_1_2_0_2 )
+                    // InternalEntityGrammar.g:3757:4: rule__EntityFeature__UuidAssignment_2_1_1_2_0_2
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__UuidAssignment_2_1_1_2_0_2();
@@ -12837,16 +13246,16 @@
                     }
                     break;
                 case 4 :
-                    // InternalEntityGrammar.g:3677:2: ( ( rule__EntityFeature__VersionAssignment_2_1_1_2_0_3 ) )
+                    // InternalEntityGrammar.g:3761:2: ( ( rule__EntityFeature__VersionAssignment_2_1_1_2_0_3 ) )
                     {
-                    // InternalEntityGrammar.g:3677:2: ( ( rule__EntityFeature__VersionAssignment_2_1_1_2_0_3 ) )
-                    // InternalEntityGrammar.g:3678:3: ( rule__EntityFeature__VersionAssignment_2_1_1_2_0_3 )
+                    // InternalEntityGrammar.g:3761:2: ( ( rule__EntityFeature__VersionAssignment_2_1_1_2_0_3 ) )
+                    // InternalEntityGrammar.g:3762:3: ( rule__EntityFeature__VersionAssignment_2_1_1_2_0_3 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getEntityFeatureAccess().getVersionAssignment_2_1_1_2_0_3()); 
                     }
-                    // InternalEntityGrammar.g:3679:3: ( rule__EntityFeature__VersionAssignment_2_1_1_2_0_3 )
-                    // InternalEntityGrammar.g:3679:4: rule__EntityFeature__VersionAssignment_2_1_1_2_0_3
+                    // InternalEntityGrammar.g:3763:3: ( rule__EntityFeature__VersionAssignment_2_1_1_2_0_3 )
+                    // InternalEntityGrammar.g:3763:4: rule__EntityFeature__VersionAssignment_2_1_1_2_0_3
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__VersionAssignment_2_1_1_2_0_3();
@@ -12866,16 +13275,16 @@
                     }
                     break;
                 case 5 :
-                    // InternalEntityGrammar.g:3683:2: ( ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4 ) )
+                    // InternalEntityGrammar.g:3767:2: ( ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4 ) )
                     {
-                    // InternalEntityGrammar.g:3683:2: ( ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4 ) )
-                    // InternalEntityGrammar.g:3684:3: ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4 )
+                    // InternalEntityGrammar.g:3767:2: ( ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4 ) )
+                    // InternalEntityGrammar.g:3768:3: ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getEntityFeatureAccess().getDomainDescriptionAssignment_2_1_1_2_0_4()); 
                     }
-                    // InternalEntityGrammar.g:3685:3: ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4 )
-                    // InternalEntityGrammar.g:3685:4: rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4
+                    // InternalEntityGrammar.g:3769:3: ( rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4 )
+                    // InternalEntityGrammar.g:3769:4: rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4();
@@ -12895,16 +13304,16 @@
                     }
                     break;
                 case 6 :
-                    // InternalEntityGrammar.g:3689:2: ( ( rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5 ) )
+                    // InternalEntityGrammar.g:3773:2: ( ( rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5 ) )
                     {
-                    // InternalEntityGrammar.g:3689:2: ( ( rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5 ) )
-                    // InternalEntityGrammar.g:3690:3: ( rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5 )
+                    // InternalEntityGrammar.g:3773:2: ( ( rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5 ) )
+                    // InternalEntityGrammar.g:3774:3: ( rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getEntityFeatureAccess().getDomainKeyAssignment_2_1_1_2_0_5()); 
                     }
-                    // InternalEntityGrammar.g:3691:3: ( rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5 )
-                    // InternalEntityGrammar.g:3691:4: rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5
+                    // InternalEntityGrammar.g:3775:3: ( rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5 )
+                    // InternalEntityGrammar.g:3775:4: rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5();
@@ -12941,41 +13350,41 @@
 
 
     // $ANTLR start "rule__EntityFeature__Alternatives_2_1_1_2_1_1"
-    // InternalEntityGrammar.g:3699:1: rule__EntityFeature__Alternatives_2_1_1_2_1_1 : ( ( ( rule__EntityFeature__FilteringAssignment_2_1_1_2_1_1_0 ) ) | ( ( rule__EntityFeature__RangeFilteringAssignment_2_1_1_2_1_1_1 ) ) );
+    // InternalEntityGrammar.g:3783:1: rule__EntityFeature__Alternatives_2_1_1_2_1_1 : ( ( ( rule__EntityFeature__FilteringAssignment_2_1_1_2_1_1_0 ) ) | ( ( rule__EntityFeature__RangeFilteringAssignment_2_1_1_2_1_1_1 ) ) );
     public final void rule__EntityFeature__Alternatives_2_1_1_2_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:3703:1: ( ( ( rule__EntityFeature__FilteringAssignment_2_1_1_2_1_1_0 ) ) | ( ( rule__EntityFeature__RangeFilteringAssignment_2_1_1_2_1_1_1 ) ) )
-            int alt11=2;
-            int LA11_0 = input.LA(1);
+            // InternalEntityGrammar.g:3787:1: ( ( ( rule__EntityFeature__FilteringAssignment_2_1_1_2_1_1_0 ) ) | ( ( rule__EntityFeature__RangeFilteringAssignment_2_1_1_2_1_1_1 ) ) )
+            int alt17=2;
+            int LA17_0 = input.LA(1);
 
-            if ( (LA11_0==131) ) {
-                alt11=1;
+            if ( (LA17_0==132) ) {
+                alt17=1;
             }
-            else if ( (LA11_0==172) ) {
-                alt11=2;
+            else if ( (LA17_0==175) ) {
+                alt17=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 11, 0, input);
+                    new NoViableAltException("", 17, 0, input);
 
                 throw nvae;
             }
-            switch (alt11) {
+            switch (alt17) {
                 case 1 :
-                    // InternalEntityGrammar.g:3704:2: ( ( rule__EntityFeature__FilteringAssignment_2_1_1_2_1_1_0 ) )
+                    // InternalEntityGrammar.g:3788:2: ( ( rule__EntityFeature__FilteringAssignment_2_1_1_2_1_1_0 ) )
                     {
-                    // InternalEntityGrammar.g:3704:2: ( ( rule__EntityFeature__FilteringAssignment_2_1_1_2_1_1_0 ) )
-                    // InternalEntityGrammar.g:3705:3: ( rule__EntityFeature__FilteringAssignment_2_1_1_2_1_1_0 )
+                    // InternalEntityGrammar.g:3788:2: ( ( rule__EntityFeature__FilteringAssignment_2_1_1_2_1_1_0 ) )
+                    // InternalEntityGrammar.g:3789:3: ( rule__EntityFeature__FilteringAssignment_2_1_1_2_1_1_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getEntityFeatureAccess().getFilteringAssignment_2_1_1_2_1_1_0()); 
                     }
-                    // InternalEntityGrammar.g:3706:3: ( rule__EntityFeature__FilteringAssignment_2_1_1_2_1_1_0 )
-                    // InternalEntityGrammar.g:3706:4: rule__EntityFeature__FilteringAssignment_2_1_1_2_1_1_0
+                    // InternalEntityGrammar.g:3790:3: ( rule__EntityFeature__FilteringAssignment_2_1_1_2_1_1_0 )
+                    // InternalEntityGrammar.g:3790:4: rule__EntityFeature__FilteringAssignment_2_1_1_2_1_1_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__FilteringAssignment_2_1_1_2_1_1_0();
@@ -12995,16 +13404,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:3710:2: ( ( rule__EntityFeature__RangeFilteringAssignment_2_1_1_2_1_1_1 ) )
+                    // InternalEntityGrammar.g:3794:2: ( ( rule__EntityFeature__RangeFilteringAssignment_2_1_1_2_1_1_1 ) )
                     {
-                    // InternalEntityGrammar.g:3710:2: ( ( rule__EntityFeature__RangeFilteringAssignment_2_1_1_2_1_1_1 ) )
-                    // InternalEntityGrammar.g:3711:3: ( rule__EntityFeature__RangeFilteringAssignment_2_1_1_2_1_1_1 )
+                    // InternalEntityGrammar.g:3794:2: ( ( rule__EntityFeature__RangeFilteringAssignment_2_1_1_2_1_1_1 ) )
+                    // InternalEntityGrammar.g:3795:3: ( rule__EntityFeature__RangeFilteringAssignment_2_1_1_2_1_1_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getEntityFeatureAccess().getRangeFilteringAssignment_2_1_1_2_1_1_1()); 
                     }
-                    // InternalEntityGrammar.g:3712:3: ( rule__EntityFeature__RangeFilteringAssignment_2_1_1_2_1_1_1 )
-                    // InternalEntityGrammar.g:3712:4: rule__EntityFeature__RangeFilteringAssignment_2_1_1_2_1_1_1
+                    // InternalEntityGrammar.g:3796:3: ( rule__EntityFeature__RangeFilteringAssignment_2_1_1_2_1_1_1 )
+                    // InternalEntityGrammar.g:3796:4: rule__EntityFeature__RangeFilteringAssignment_2_1_1_2_1_1_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__RangeFilteringAssignment_2_1_1_2_1_1_1();
@@ -13041,41 +13450,41 @@
 
 
     // $ANTLR start "rule__EntityFeature__Alternatives_2_1_1_2_1_2"
-    // InternalEntityGrammar.g:3720:1: rule__EntityFeature__Alternatives_2_1_1_2_1_2 : ( ( ( rule__EntityFeature__AttributeHiddenAssignment_2_1_1_2_1_2_0 ) ) | ( ( rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_2_1_2_1 ) ) );
+    // InternalEntityGrammar.g:3804:1: rule__EntityFeature__Alternatives_2_1_1_2_1_2 : ( ( ( rule__EntityFeature__AttributeHiddenAssignment_2_1_1_2_1_2_0 ) ) | ( ( rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_2_1_2_1 ) ) );
     public final void rule__EntityFeature__Alternatives_2_1_1_2_1_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:3724:1: ( ( ( rule__EntityFeature__AttributeHiddenAssignment_2_1_1_2_1_2_0 ) ) | ( ( rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_2_1_2_1 ) ) )
-            int alt12=2;
-            int LA12_0 = input.LA(1);
+            // InternalEntityGrammar.g:3808:1: ( ( ( rule__EntityFeature__AttributeHiddenAssignment_2_1_1_2_1_2_0 ) ) | ( ( rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_2_1_2_1 ) ) )
+            int alt18=2;
+            int LA18_0 = input.LA(1);
 
-            if ( (LA12_0==173) ) {
-                alt12=1;
+            if ( (LA18_0==170) ) {
+                alt18=1;
             }
-            else if ( (LA12_0==174) ) {
-                alt12=2;
+            else if ( (LA18_0==171) ) {
+                alt18=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 12, 0, input);
+                    new NoViableAltException("", 18, 0, input);
 
                 throw nvae;
             }
-            switch (alt12) {
+            switch (alt18) {
                 case 1 :
-                    // InternalEntityGrammar.g:3725:2: ( ( rule__EntityFeature__AttributeHiddenAssignment_2_1_1_2_1_2_0 ) )
+                    // InternalEntityGrammar.g:3809:2: ( ( rule__EntityFeature__AttributeHiddenAssignment_2_1_1_2_1_2_0 ) )
                     {
-                    // InternalEntityGrammar.g:3725:2: ( ( rule__EntityFeature__AttributeHiddenAssignment_2_1_1_2_1_2_0 ) )
-                    // InternalEntityGrammar.g:3726:3: ( rule__EntityFeature__AttributeHiddenAssignment_2_1_1_2_1_2_0 )
+                    // InternalEntityGrammar.g:3809:2: ( ( rule__EntityFeature__AttributeHiddenAssignment_2_1_1_2_1_2_0 ) )
+                    // InternalEntityGrammar.g:3810:3: ( rule__EntityFeature__AttributeHiddenAssignment_2_1_1_2_1_2_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getEntityFeatureAccess().getAttributeHiddenAssignment_2_1_1_2_1_2_0()); 
                     }
-                    // InternalEntityGrammar.g:3727:3: ( rule__EntityFeature__AttributeHiddenAssignment_2_1_1_2_1_2_0 )
-                    // InternalEntityGrammar.g:3727:4: rule__EntityFeature__AttributeHiddenAssignment_2_1_1_2_1_2_0
+                    // InternalEntityGrammar.g:3811:3: ( rule__EntityFeature__AttributeHiddenAssignment_2_1_1_2_1_2_0 )
+                    // InternalEntityGrammar.g:3811:4: rule__EntityFeature__AttributeHiddenAssignment_2_1_1_2_1_2_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__AttributeHiddenAssignment_2_1_1_2_1_2_0();
@@ -13095,16 +13504,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:3731:2: ( ( rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_2_1_2_1 ) )
+                    // InternalEntityGrammar.g:3815:2: ( ( rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_2_1_2_1 ) )
                     {
-                    // InternalEntityGrammar.g:3731:2: ( ( rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_2_1_2_1 ) )
-                    // InternalEntityGrammar.g:3732:3: ( rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_2_1_2_1 )
+                    // InternalEntityGrammar.g:3815:2: ( ( rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_2_1_2_1 ) )
+                    // InternalEntityGrammar.g:3816:3: ( rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_2_1_2_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getEntityFeatureAccess().getAttributeReadOnlyAssignment_2_1_1_2_1_2_1()); 
                     }
-                    // InternalEntityGrammar.g:3733:3: ( rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_2_1_2_1 )
-                    // InternalEntityGrammar.g:3733:4: rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_2_1_2_1
+                    // InternalEntityGrammar.g:3817:3: ( rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_2_1_2_1 )
+                    // InternalEntityGrammar.g:3817:4: rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_2_1_2_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__EntityFeature__AttributeReadOnlyAssignment_2_1_1_2_1_2_1();
@@ -13141,18 +13550,18 @@
 
 
     // $ANTLR start "rule__BeanFeature__Alternatives_2"
-    // InternalEntityGrammar.g:3741:1: rule__BeanFeature__Alternatives_2 : ( ( ( rule__BeanFeature__Group_2_0__0 ) ) | ( ( rule__BeanFeature__Group_2_1__0 ) ) | ( ( rule__BeanFeature__Group_2_2__0 ) ) );
+    // InternalEntityGrammar.g:3825:1: rule__BeanFeature__Alternatives_2 : ( ( ( rule__BeanFeature__Group_2_0__0 ) ) | ( ( rule__BeanFeature__Group_2_1__0 ) ) | ( ( rule__BeanFeature__Group_2_2__0 ) ) );
     public final void rule__BeanFeature__Alternatives_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:3745:1: ( ( ( rule__BeanFeature__Group_2_0__0 ) ) | ( ( rule__BeanFeature__Group_2_1__0 ) ) | ( ( rule__BeanFeature__Group_2_2__0 ) ) )
-            int alt13=3;
+            // InternalEntityGrammar.g:3829:1: ( ( ( rule__BeanFeature__Group_2_0__0 ) ) | ( ( rule__BeanFeature__Group_2_1__0 ) ) | ( ( rule__BeanFeature__Group_2_2__0 ) ) )
+            int alt19=3;
             switch ( input.LA(1) ) {
             case 31:
                 {
-                alt13=1;
+                alt19=1;
                 }
                 break;
             case 16:
@@ -13160,34 +13569,34 @@
             case 20:
             case 21:
                 {
-                alt13=2;
+                alt19=2;
                 }
                 break;
-            case 104:
+            case 105:
                 {
-                alt13=3;
+                alt19=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 13, 0, input);
+                    new NoViableAltException("", 19, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt13) {
+            switch (alt19) {
                 case 1 :
-                    // InternalEntityGrammar.g:3746:2: ( ( rule__BeanFeature__Group_2_0__0 ) )
+                    // InternalEntityGrammar.g:3830:2: ( ( rule__BeanFeature__Group_2_0__0 ) )
                     {
-                    // InternalEntityGrammar.g:3746:2: ( ( rule__BeanFeature__Group_2_0__0 ) )
-                    // InternalEntityGrammar.g:3747:3: ( rule__BeanFeature__Group_2_0__0 )
+                    // InternalEntityGrammar.g:3830:2: ( ( rule__BeanFeature__Group_2_0__0 ) )
+                    // InternalEntityGrammar.g:3831:3: ( rule__BeanFeature__Group_2_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getBeanFeatureAccess().getGroup_2_0()); 
                     }
-                    // InternalEntityGrammar.g:3748:3: ( rule__BeanFeature__Group_2_0__0 )
-                    // InternalEntityGrammar.g:3748:4: rule__BeanFeature__Group_2_0__0
+                    // InternalEntityGrammar.g:3832:3: ( rule__BeanFeature__Group_2_0__0 )
+                    // InternalEntityGrammar.g:3832:4: rule__BeanFeature__Group_2_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__BeanFeature__Group_2_0__0();
@@ -13207,16 +13616,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:3752:2: ( ( rule__BeanFeature__Group_2_1__0 ) )
+                    // InternalEntityGrammar.g:3836:2: ( ( rule__BeanFeature__Group_2_1__0 ) )
                     {
-                    // InternalEntityGrammar.g:3752:2: ( ( rule__BeanFeature__Group_2_1__0 ) )
-                    // InternalEntityGrammar.g:3753:3: ( rule__BeanFeature__Group_2_1__0 )
+                    // InternalEntityGrammar.g:3836:2: ( ( rule__BeanFeature__Group_2_1__0 ) )
+                    // InternalEntityGrammar.g:3837:3: ( rule__BeanFeature__Group_2_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getBeanFeatureAccess().getGroup_2_1()); 
                     }
-                    // InternalEntityGrammar.g:3754:3: ( rule__BeanFeature__Group_2_1__0 )
-                    // InternalEntityGrammar.g:3754:4: rule__BeanFeature__Group_2_1__0
+                    // InternalEntityGrammar.g:3838:3: ( rule__BeanFeature__Group_2_1__0 )
+                    // InternalEntityGrammar.g:3838:4: rule__BeanFeature__Group_2_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__BeanFeature__Group_2_1__0();
@@ -13236,16 +13645,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:3758:2: ( ( rule__BeanFeature__Group_2_2__0 ) )
+                    // InternalEntityGrammar.g:3842:2: ( ( rule__BeanFeature__Group_2_2__0 ) )
                     {
-                    // InternalEntityGrammar.g:3758:2: ( ( rule__BeanFeature__Group_2_2__0 ) )
-                    // InternalEntityGrammar.g:3759:3: ( rule__BeanFeature__Group_2_2__0 )
+                    // InternalEntityGrammar.g:3842:2: ( ( rule__BeanFeature__Group_2_2__0 ) )
+                    // InternalEntityGrammar.g:3843:3: ( rule__BeanFeature__Group_2_2__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getBeanFeatureAccess().getGroup_2_2()); 
                     }
-                    // InternalEntityGrammar.g:3760:3: ( rule__BeanFeature__Group_2_2__0 )
-                    // InternalEntityGrammar.g:3760:4: rule__BeanFeature__Group_2_2__0
+                    // InternalEntityGrammar.g:3844:3: ( rule__BeanFeature__Group_2_2__0 )
+                    // InternalEntityGrammar.g:3844:4: rule__BeanFeature__Group_2_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__BeanFeature__Group_2_2__0();
@@ -13282,41 +13691,41 @@
 
 
     // $ANTLR start "rule__BeanFeature__Alternatives_2_0_1_7_2"
-    // InternalEntityGrammar.g:3768:1: rule__BeanFeature__Alternatives_2_0_1_7_2 : ( ( ( rule__BeanFeature__AsGridAssignment_2_0_1_7_2_0 ) ) | ( ( rule__BeanFeature__AsTableAssignment_2_0_1_7_2_1 ) ) );
+    // InternalEntityGrammar.g:3852:1: rule__BeanFeature__Alternatives_2_0_1_7_2 : ( ( ( rule__BeanFeature__AsGridAssignment_2_0_1_7_2_0 ) ) | ( ( rule__BeanFeature__AsTableAssignment_2_0_1_7_2_1 ) ) );
     public final void rule__BeanFeature__Alternatives_2_0_1_7_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:3772:1: ( ( ( rule__BeanFeature__AsGridAssignment_2_0_1_7_2_0 ) ) | ( ( rule__BeanFeature__AsTableAssignment_2_0_1_7_2_1 ) ) )
-            int alt14=2;
-            int LA14_0 = input.LA(1);
+            // InternalEntityGrammar.g:3856:1: ( ( ( rule__BeanFeature__AsGridAssignment_2_0_1_7_2_0 ) ) | ( ( rule__BeanFeature__AsTableAssignment_2_0_1_7_2_1 ) ) )
+            int alt20=2;
+            int LA20_0 = input.LA(1);
 
-            if ( (LA14_0==166) ) {
-                alt14=1;
+            if ( (LA20_0==167) ) {
+                alt20=1;
             }
-            else if ( (LA14_0==167) ) {
-                alt14=2;
+            else if ( (LA20_0==168) ) {
+                alt20=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 14, 0, input);
+                    new NoViableAltException("", 20, 0, input);
 
                 throw nvae;
             }
-            switch (alt14) {
+            switch (alt20) {
                 case 1 :
-                    // InternalEntityGrammar.g:3773:2: ( ( rule__BeanFeature__AsGridAssignment_2_0_1_7_2_0 ) )
+                    // InternalEntityGrammar.g:3857:2: ( ( rule__BeanFeature__AsGridAssignment_2_0_1_7_2_0 ) )
                     {
-                    // InternalEntityGrammar.g:3773:2: ( ( rule__BeanFeature__AsGridAssignment_2_0_1_7_2_0 ) )
-                    // InternalEntityGrammar.g:3774:3: ( rule__BeanFeature__AsGridAssignment_2_0_1_7_2_0 )
+                    // InternalEntityGrammar.g:3857:2: ( ( rule__BeanFeature__AsGridAssignment_2_0_1_7_2_0 ) )
+                    // InternalEntityGrammar.g:3858:3: ( rule__BeanFeature__AsGridAssignment_2_0_1_7_2_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getBeanFeatureAccess().getAsGridAssignment_2_0_1_7_2_0()); 
                     }
-                    // InternalEntityGrammar.g:3775:3: ( rule__BeanFeature__AsGridAssignment_2_0_1_7_2_0 )
-                    // InternalEntityGrammar.g:3775:4: rule__BeanFeature__AsGridAssignment_2_0_1_7_2_0
+                    // InternalEntityGrammar.g:3859:3: ( rule__BeanFeature__AsGridAssignment_2_0_1_7_2_0 )
+                    // InternalEntityGrammar.g:3859:4: rule__BeanFeature__AsGridAssignment_2_0_1_7_2_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__BeanFeature__AsGridAssignment_2_0_1_7_2_0();
@@ -13336,16 +13745,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:3779:2: ( ( rule__BeanFeature__AsTableAssignment_2_0_1_7_2_1 ) )
+                    // InternalEntityGrammar.g:3863:2: ( ( rule__BeanFeature__AsTableAssignment_2_0_1_7_2_1 ) )
                     {
-                    // InternalEntityGrammar.g:3779:2: ( ( rule__BeanFeature__AsTableAssignment_2_0_1_7_2_1 ) )
-                    // InternalEntityGrammar.g:3780:3: ( rule__BeanFeature__AsTableAssignment_2_0_1_7_2_1 )
+                    // InternalEntityGrammar.g:3863:2: ( ( rule__BeanFeature__AsTableAssignment_2_0_1_7_2_1 ) )
+                    // InternalEntityGrammar.g:3864:3: ( rule__BeanFeature__AsTableAssignment_2_0_1_7_2_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getBeanFeatureAccess().getAsTableAssignment_2_0_1_7_2_1()); 
                     }
-                    // InternalEntityGrammar.g:3781:3: ( rule__BeanFeature__AsTableAssignment_2_0_1_7_2_1 )
-                    // InternalEntityGrammar.g:3781:4: rule__BeanFeature__AsTableAssignment_2_0_1_7_2_1
+                    // InternalEntityGrammar.g:3865:3: ( rule__BeanFeature__AsTableAssignment_2_0_1_7_2_1 )
+                    // InternalEntityGrammar.g:3865:4: rule__BeanFeature__AsTableAssignment_2_0_1_7_2_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__BeanFeature__AsTableAssignment_2_0_1_7_2_1();
@@ -13382,41 +13791,41 @@
 
 
     // $ANTLR start "rule__BeanFeature__Alternatives_2_1_1"
-    // InternalEntityGrammar.g:3789:1: rule__BeanFeature__Alternatives_2_1_1 : ( ( ( rule__BeanFeature__Group_2_1_1_0__0 ) ) | ( ( rule__BeanFeature__Group_2_1_1_1__0 ) ) );
+    // InternalEntityGrammar.g:3873:1: rule__BeanFeature__Alternatives_2_1_1 : ( ( ( rule__BeanFeature__Group_2_1_1_0__0 ) ) | ( ( rule__BeanFeature__Group_2_1_1_1__0 ) ) );
     public final void rule__BeanFeature__Alternatives_2_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:3793:1: ( ( ( rule__BeanFeature__Group_2_1_1_0__0 ) ) | ( ( rule__BeanFeature__Group_2_1_1_1__0 ) ) )
-            int alt15=2;
-            int LA15_0 = input.LA(1);
+            // InternalEntityGrammar.g:3877:1: ( ( ( rule__BeanFeature__Group_2_1_1_0__0 ) ) | ( ( rule__BeanFeature__Group_2_1_1_1__0 ) ) )
+            int alt21=2;
+            int LA21_0 = input.LA(1);
 
-            if ( (LA15_0==20) ) {
-                alt15=1;
+            if ( (LA21_0==20) ) {
+                alt21=1;
             }
-            else if ( (LA15_0==16||LA15_0==18||LA15_0==21) ) {
-                alt15=2;
+            else if ( (LA21_0==16||LA21_0==18||LA21_0==21) ) {
+                alt21=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 15, 0, input);
+                    new NoViableAltException("", 21, 0, input);
 
                 throw nvae;
             }
-            switch (alt15) {
+            switch (alt21) {
                 case 1 :
-                    // InternalEntityGrammar.g:3794:2: ( ( rule__BeanFeature__Group_2_1_1_0__0 ) )
+                    // InternalEntityGrammar.g:3878:2: ( ( rule__BeanFeature__Group_2_1_1_0__0 ) )
                     {
-                    // InternalEntityGrammar.g:3794:2: ( ( rule__BeanFeature__Group_2_1_1_0__0 ) )
-                    // InternalEntityGrammar.g:3795:3: ( rule__BeanFeature__Group_2_1_1_0__0 )
+                    // InternalEntityGrammar.g:3878:2: ( ( rule__BeanFeature__Group_2_1_1_0__0 ) )
+                    // InternalEntityGrammar.g:3879:3: ( rule__BeanFeature__Group_2_1_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_0()); 
                     }
-                    // InternalEntityGrammar.g:3796:3: ( rule__BeanFeature__Group_2_1_1_0__0 )
-                    // InternalEntityGrammar.g:3796:4: rule__BeanFeature__Group_2_1_1_0__0
+                    // InternalEntityGrammar.g:3880:3: ( rule__BeanFeature__Group_2_1_1_0__0 )
+                    // InternalEntityGrammar.g:3880:4: rule__BeanFeature__Group_2_1_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__BeanFeature__Group_2_1_1_0__0();
@@ -13436,16 +13845,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:3800:2: ( ( rule__BeanFeature__Group_2_1_1_1__0 ) )
+                    // InternalEntityGrammar.g:3884:2: ( ( rule__BeanFeature__Group_2_1_1_1__0 ) )
                     {
-                    // InternalEntityGrammar.g:3800:2: ( ( rule__BeanFeature__Group_2_1_1_1__0 ) )
-                    // InternalEntityGrammar.g:3801:3: ( rule__BeanFeature__Group_2_1_1_1__0 )
+                    // InternalEntityGrammar.g:3884:2: ( ( rule__BeanFeature__Group_2_1_1_1__0 ) )
+                    // InternalEntityGrammar.g:3885:3: ( rule__BeanFeature__Group_2_1_1_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_1()); 
                     }
-                    // InternalEntityGrammar.g:3802:3: ( rule__BeanFeature__Group_2_1_1_1__0 )
-                    // InternalEntityGrammar.g:3802:4: rule__BeanFeature__Group_2_1_1_1__0
+                    // InternalEntityGrammar.g:3886:3: ( rule__BeanFeature__Group_2_1_1_1__0 )
+                    // InternalEntityGrammar.g:3886:4: rule__BeanFeature__Group_2_1_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__BeanFeature__Group_2_1_1_1__0();
@@ -13482,44 +13891,44 @@
 
 
     // $ANTLR start "rule__BeanFeature__Alternatives_2_1_1_1_0"
-    // InternalEntityGrammar.g:3810:1: rule__BeanFeature__Alternatives_2_1_1_1_0 : ( ( 'var' ) | ( ( rule__BeanFeature__IdAssignment_2_1_1_1_0_1 ) ) | ( ( rule__BeanFeature__VersionAssignment_2_1_1_1_0_2 ) ) );
+    // InternalEntityGrammar.g:3894:1: rule__BeanFeature__Alternatives_2_1_1_1_0 : ( ( 'var' ) | ( ( rule__BeanFeature__IdAssignment_2_1_1_1_0_1 ) ) | ( ( rule__BeanFeature__VersionAssignment_2_1_1_1_0_2 ) ) );
     public final void rule__BeanFeature__Alternatives_2_1_1_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:3814:1: ( ( 'var' ) | ( ( rule__BeanFeature__IdAssignment_2_1_1_1_0_1 ) ) | ( ( rule__BeanFeature__VersionAssignment_2_1_1_1_0_2 ) ) )
-            int alt16=3;
+            // InternalEntityGrammar.g:3898:1: ( ( 'var' ) | ( ( rule__BeanFeature__IdAssignment_2_1_1_1_0_1 ) ) | ( ( rule__BeanFeature__VersionAssignment_2_1_1_1_0_2 ) ) )
+            int alt22=3;
             switch ( input.LA(1) ) {
             case 16:
                 {
-                alt16=1;
+                alt22=1;
                 }
                 break;
             case 18:
                 {
-                alt16=2;
+                alt22=2;
                 }
                 break;
             case 21:
                 {
-                alt16=3;
+                alt22=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 16, 0, input);
+                    new NoViableAltException("", 22, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt16) {
+            switch (alt22) {
                 case 1 :
-                    // InternalEntityGrammar.g:3815:2: ( 'var' )
+                    // InternalEntityGrammar.g:3899:2: ( 'var' )
                     {
-                    // InternalEntityGrammar.g:3815:2: ( 'var' )
-                    // InternalEntityGrammar.g:3816:3: 'var'
+                    // InternalEntityGrammar.g:3899:2: ( 'var' )
+                    // InternalEntityGrammar.g:3900:3: 'var'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getBeanFeatureAccess().getVarKeyword_2_1_1_1_0_0()); 
@@ -13535,16 +13944,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:3821:2: ( ( rule__BeanFeature__IdAssignment_2_1_1_1_0_1 ) )
+                    // InternalEntityGrammar.g:3905:2: ( ( rule__BeanFeature__IdAssignment_2_1_1_1_0_1 ) )
                     {
-                    // InternalEntityGrammar.g:3821:2: ( ( rule__BeanFeature__IdAssignment_2_1_1_1_0_1 ) )
-                    // InternalEntityGrammar.g:3822:3: ( rule__BeanFeature__IdAssignment_2_1_1_1_0_1 )
+                    // InternalEntityGrammar.g:3905:2: ( ( rule__BeanFeature__IdAssignment_2_1_1_1_0_1 ) )
+                    // InternalEntityGrammar.g:3906:3: ( rule__BeanFeature__IdAssignment_2_1_1_1_0_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getBeanFeatureAccess().getIdAssignment_2_1_1_1_0_1()); 
                     }
-                    // InternalEntityGrammar.g:3823:3: ( rule__BeanFeature__IdAssignment_2_1_1_1_0_1 )
-                    // InternalEntityGrammar.g:3823:4: rule__BeanFeature__IdAssignment_2_1_1_1_0_1
+                    // InternalEntityGrammar.g:3907:3: ( rule__BeanFeature__IdAssignment_2_1_1_1_0_1 )
+                    // InternalEntityGrammar.g:3907:4: rule__BeanFeature__IdAssignment_2_1_1_1_0_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__BeanFeature__IdAssignment_2_1_1_1_0_1();
@@ -13564,16 +13973,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:3827:2: ( ( rule__BeanFeature__VersionAssignment_2_1_1_1_0_2 ) )
+                    // InternalEntityGrammar.g:3911:2: ( ( rule__BeanFeature__VersionAssignment_2_1_1_1_0_2 ) )
                     {
-                    // InternalEntityGrammar.g:3827:2: ( ( rule__BeanFeature__VersionAssignment_2_1_1_1_0_2 ) )
-                    // InternalEntityGrammar.g:3828:3: ( rule__BeanFeature__VersionAssignment_2_1_1_1_0_2 )
+                    // InternalEntityGrammar.g:3911:2: ( ( rule__BeanFeature__VersionAssignment_2_1_1_1_0_2 ) )
+                    // InternalEntityGrammar.g:3912:3: ( rule__BeanFeature__VersionAssignment_2_1_1_1_0_2 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getBeanFeatureAccess().getVersionAssignment_2_1_1_1_0_2()); 
                     }
-                    // InternalEntityGrammar.g:3829:3: ( rule__BeanFeature__VersionAssignment_2_1_1_1_0_2 )
-                    // InternalEntityGrammar.g:3829:4: rule__BeanFeature__VersionAssignment_2_1_1_1_0_2
+                    // InternalEntityGrammar.g:3913:3: ( rule__BeanFeature__VersionAssignment_2_1_1_1_0_2 )
+                    // InternalEntityGrammar.g:3913:4: rule__BeanFeature__VersionAssignment_2_1_1_1_0_2
                     {
                     pushFollow(FOLLOW_2);
                     rule__BeanFeature__VersionAssignment_2_1_1_1_0_2();
@@ -13610,41 +14019,41 @@
 
 
     // $ANTLR start "rule__BeanFeature__Alternatives_2_1_1_1_1"
-    // InternalEntityGrammar.g:3837:1: rule__BeanFeature__Alternatives_2_1_1_1_1 : ( ( ( rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0 ) ) | ( ( rule__BeanFeature__RangeFilteringAssignment_2_1_1_1_1_1 ) ) );
+    // InternalEntityGrammar.g:3921:1: rule__BeanFeature__Alternatives_2_1_1_1_1 : ( ( ( rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0 ) ) | ( ( rule__BeanFeature__RangeFilteringAssignment_2_1_1_1_1_1 ) ) );
     public final void rule__BeanFeature__Alternatives_2_1_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:3841:1: ( ( ( rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0 ) ) | ( ( rule__BeanFeature__RangeFilteringAssignment_2_1_1_1_1_1 ) ) )
-            int alt17=2;
-            int LA17_0 = input.LA(1);
+            // InternalEntityGrammar.g:3925:1: ( ( ( rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0 ) ) | ( ( rule__BeanFeature__RangeFilteringAssignment_2_1_1_1_1_1 ) ) )
+            int alt23=2;
+            int LA23_0 = input.LA(1);
 
-            if ( (LA17_0==131) ) {
-                alt17=1;
+            if ( (LA23_0==132) ) {
+                alt23=1;
             }
-            else if ( (LA17_0==172) ) {
-                alt17=2;
+            else if ( (LA23_0==175) ) {
+                alt23=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 17, 0, input);
+                    new NoViableAltException("", 23, 0, input);
 
                 throw nvae;
             }
-            switch (alt17) {
+            switch (alt23) {
                 case 1 :
-                    // InternalEntityGrammar.g:3842:2: ( ( rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0 ) )
+                    // InternalEntityGrammar.g:3926:2: ( ( rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0 ) )
                     {
-                    // InternalEntityGrammar.g:3842:2: ( ( rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0 ) )
-                    // InternalEntityGrammar.g:3843:3: ( rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0 )
+                    // InternalEntityGrammar.g:3926:2: ( ( rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0 ) )
+                    // InternalEntityGrammar.g:3927:3: ( rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getBeanFeatureAccess().getFilteringAssignment_2_1_1_1_1_0()); 
                     }
-                    // InternalEntityGrammar.g:3844:3: ( rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0 )
-                    // InternalEntityGrammar.g:3844:4: rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0
+                    // InternalEntityGrammar.g:3928:3: ( rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0 )
+                    // InternalEntityGrammar.g:3928:4: rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__BeanFeature__FilteringAssignment_2_1_1_1_1_0();
@@ -13664,16 +14073,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:3848:2: ( ( rule__BeanFeature__RangeFilteringAssignment_2_1_1_1_1_1 ) )
+                    // InternalEntityGrammar.g:3932:2: ( ( rule__BeanFeature__RangeFilteringAssignment_2_1_1_1_1_1 ) )
                     {
-                    // InternalEntityGrammar.g:3848:2: ( ( rule__BeanFeature__RangeFilteringAssignment_2_1_1_1_1_1 ) )
-                    // InternalEntityGrammar.g:3849:3: ( rule__BeanFeature__RangeFilteringAssignment_2_1_1_1_1_1 )
+                    // InternalEntityGrammar.g:3932:2: ( ( rule__BeanFeature__RangeFilteringAssignment_2_1_1_1_1_1 ) )
+                    // InternalEntityGrammar.g:3933:3: ( rule__BeanFeature__RangeFilteringAssignment_2_1_1_1_1_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getBeanFeatureAccess().getRangeFilteringAssignment_2_1_1_1_1_1()); 
                     }
-                    // InternalEntityGrammar.g:3850:3: ( rule__BeanFeature__RangeFilteringAssignment_2_1_1_1_1_1 )
-                    // InternalEntityGrammar.g:3850:4: rule__BeanFeature__RangeFilteringAssignment_2_1_1_1_1_1
+                    // InternalEntityGrammar.g:3934:3: ( rule__BeanFeature__RangeFilteringAssignment_2_1_1_1_1_1 )
+                    // InternalEntityGrammar.g:3934:4: rule__BeanFeature__RangeFilteringAssignment_2_1_1_1_1_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__BeanFeature__RangeFilteringAssignment_2_1_1_1_1_1();
@@ -13710,35 +14119,35 @@
 
 
     // $ANTLR start "rule__EntityInheritanceStrategy__Alternatives"
-    // InternalEntityGrammar.g:3858:1: rule__EntityInheritanceStrategy__Alternatives : ( ( ruleTablePerClassStrategy ) | ( ruleTablePerSubclassStrategy ) );
+    // InternalEntityGrammar.g:3942:1: rule__EntityInheritanceStrategy__Alternatives : ( ( ruleTablePerClassStrategy ) | ( ruleTablePerSubclassStrategy ) );
     public final void rule__EntityInheritanceStrategy__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:3862:1: ( ( ruleTablePerClassStrategy ) | ( ruleTablePerSubclassStrategy ) )
-            int alt18=2;
-            int LA18_0 = input.LA(1);
+            // InternalEntityGrammar.g:3946:1: ( ( ruleTablePerClassStrategy ) | ( ruleTablePerSubclassStrategy ) )
+            int alt24=2;
+            int LA24_0 = input.LA(1);
 
-            if ( (LA18_0==107) ) {
-                alt18=1;
+            if ( (LA24_0==108) ) {
+                alt24=1;
             }
-            else if ( (LA18_0==111) ) {
-                alt18=2;
+            else if ( (LA24_0==112) ) {
+                alt24=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 18, 0, input);
+                    new NoViableAltException("", 24, 0, input);
 
                 throw nvae;
             }
-            switch (alt18) {
+            switch (alt24) {
                 case 1 :
-                    // InternalEntityGrammar.g:3863:2: ( ruleTablePerClassStrategy )
+                    // InternalEntityGrammar.g:3947:2: ( ruleTablePerClassStrategy )
                     {
-                    // InternalEntityGrammar.g:3863:2: ( ruleTablePerClassStrategy )
-                    // InternalEntityGrammar.g:3864:3: ruleTablePerClassStrategy
+                    // InternalEntityGrammar.g:3947:2: ( ruleTablePerClassStrategy )
+                    // InternalEntityGrammar.g:3948:3: ruleTablePerClassStrategy
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getEntityInheritanceStrategyAccess().getTablePerClassStrategyParserRuleCall_0()); 
@@ -13758,10 +14167,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:3869:2: ( ruleTablePerSubclassStrategy )
+                    // InternalEntityGrammar.g:3953:2: ( ruleTablePerSubclassStrategy )
                     {
-                    // InternalEntityGrammar.g:3869:2: ( ruleTablePerSubclassStrategy )
-                    // InternalEntityGrammar.g:3870:3: ruleTablePerSubclassStrategy
+                    // InternalEntityGrammar.g:3953:2: ( ruleTablePerSubclassStrategy )
+                    // InternalEntityGrammar.g:3954:3: ruleTablePerSubclassStrategy
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getEntityInheritanceStrategyAccess().getTablePerSubclassStrategyParserRuleCall_1()); 
@@ -13798,35 +14207,35 @@
 
 
     // $ANTLR start "rule__Type__Alternatives"
-    // InternalEntityGrammar.g:3879:1: rule__Type__Alternatives : ( ( ruleScalarType ) | ( ruleClass ) );
+    // InternalEntityGrammar.g:3963:1: rule__Type__Alternatives : ( ( ruleScalarType ) | ( ruleClass ) );
     public final void rule__Type__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:3883:1: ( ( ruleScalarType ) | ( ruleClass ) )
-            int alt19=2;
-            int LA19_0 = input.LA(1);
+            // InternalEntityGrammar.g:3967:1: ( ( ruleScalarType ) | ( ruleClass ) )
+            int alt25=2;
+            int LA25_0 = input.LA(1);
 
-            if ( (LA19_0==112||LA19_0==130) ) {
-                alt19=1;
+            if ( (LA25_0==113||LA25_0==131) ) {
+                alt25=1;
             }
-            else if ( (LA19_0==88||LA19_0==94||LA19_0==135||(LA19_0>=158 && LA19_0<=162)) ) {
-                alt19=2;
+            else if ( (LA25_0==88||LA25_0==94||LA25_0==136||(LA25_0>=159 && LA25_0<=163)) ) {
+                alt25=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 19, 0, input);
+                    new NoViableAltException("", 25, 0, input);
 
                 throw nvae;
             }
-            switch (alt19) {
+            switch (alt25) {
                 case 1 :
-                    // InternalEntityGrammar.g:3884:2: ( ruleScalarType )
+                    // InternalEntityGrammar.g:3968:2: ( ruleScalarType )
                     {
-                    // InternalEntityGrammar.g:3884:2: ( ruleScalarType )
-                    // InternalEntityGrammar.g:3885:3: ruleScalarType
+                    // InternalEntityGrammar.g:3968:2: ( ruleScalarType )
+                    // InternalEntityGrammar.g:3969:3: ruleScalarType
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getTypeAccess().getScalarTypeParserRuleCall_0()); 
@@ -13846,10 +14255,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:3890:2: ( ruleClass )
+                    // InternalEntityGrammar.g:3974:2: ( ruleClass )
                     {
-                    // InternalEntityGrammar.g:3890:2: ( ruleClass )
-                    // InternalEntityGrammar.g:3891:3: ruleClass
+                    // InternalEntityGrammar.g:3974:2: ( ruleClass )
+                    // InternalEntityGrammar.g:3975:3: ruleClass
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getTypeAccess().getClassParserRuleCall_1()); 
@@ -13886,50 +14295,50 @@
 
 
     // $ANTLR start "rule__DataType__Alternatives_2"
-    // InternalEntityGrammar.g:3900:1: rule__DataType__Alternatives_2 : ( ( ( rule__DataType__Group_2_0__0 ) ) | ( ( rule__DataType__Group_2_1__0 ) ) | ( ( rule__DataType__Group_2_2__0 ) ) );
+    // InternalEntityGrammar.g:3984:1: rule__DataType__Alternatives_2 : ( ( ( rule__DataType__Group_2_0__0 ) ) | ( ( rule__DataType__Group_2_1__0 ) ) | ( ( rule__DataType__Group_2_2__0 ) ) );
     public final void rule__DataType__Alternatives_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:3904:1: ( ( ( rule__DataType__Group_2_0__0 ) ) | ( ( rule__DataType__Group_2_1__0 ) ) | ( ( rule__DataType__Group_2_2__0 ) ) )
-            int alt20=3;
+            // InternalEntityGrammar.g:3988:1: ( ( ( rule__DataType__Group_2_0__0 ) ) | ( ( rule__DataType__Group_2_1__0 ) ) | ( ( rule__DataType__Group_2_2__0 ) ) )
+            int alt26=3;
             switch ( input.LA(1) ) {
-            case 113:
+            case 114:
                 {
-                alt20=1;
-                }
-                break;
-            case 180:
-                {
-                alt20=2;
+                alt26=1;
                 }
                 break;
             case 181:
                 {
-                alt20=3;
+                alt26=2;
+                }
+                break;
+            case 182:
+                {
+                alt26=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 20, 0, input);
+                    new NoViableAltException("", 26, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt20) {
+            switch (alt26) {
                 case 1 :
-                    // InternalEntityGrammar.g:3905:2: ( ( rule__DataType__Group_2_0__0 ) )
+                    // InternalEntityGrammar.g:3989:2: ( ( rule__DataType__Group_2_0__0 ) )
                     {
-                    // InternalEntityGrammar.g:3905:2: ( ( rule__DataType__Group_2_0__0 ) )
-                    // InternalEntityGrammar.g:3906:3: ( rule__DataType__Group_2_0__0 )
+                    // InternalEntityGrammar.g:3989:2: ( ( rule__DataType__Group_2_0__0 ) )
+                    // InternalEntityGrammar.g:3990:3: ( rule__DataType__Group_2_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDataTypeAccess().getGroup_2_0()); 
                     }
-                    // InternalEntityGrammar.g:3907:3: ( rule__DataType__Group_2_0__0 )
-                    // InternalEntityGrammar.g:3907:4: rule__DataType__Group_2_0__0
+                    // InternalEntityGrammar.g:3991:3: ( rule__DataType__Group_2_0__0 )
+                    // InternalEntityGrammar.g:3991:4: rule__DataType__Group_2_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__DataType__Group_2_0__0();
@@ -13949,16 +14358,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:3911:2: ( ( rule__DataType__Group_2_1__0 ) )
+                    // InternalEntityGrammar.g:3995:2: ( ( rule__DataType__Group_2_1__0 ) )
                     {
-                    // InternalEntityGrammar.g:3911:2: ( ( rule__DataType__Group_2_1__0 ) )
-                    // InternalEntityGrammar.g:3912:3: ( rule__DataType__Group_2_1__0 )
+                    // InternalEntityGrammar.g:3995:2: ( ( rule__DataType__Group_2_1__0 ) )
+                    // InternalEntityGrammar.g:3996:3: ( rule__DataType__Group_2_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDataTypeAccess().getGroup_2_1()); 
                     }
-                    // InternalEntityGrammar.g:3913:3: ( rule__DataType__Group_2_1__0 )
-                    // InternalEntityGrammar.g:3913:4: rule__DataType__Group_2_1__0
+                    // InternalEntityGrammar.g:3997:3: ( rule__DataType__Group_2_1__0 )
+                    // InternalEntityGrammar.g:3997:4: rule__DataType__Group_2_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__DataType__Group_2_1__0();
@@ -13978,16 +14387,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:3917:2: ( ( rule__DataType__Group_2_2__0 ) )
+                    // InternalEntityGrammar.g:4001:2: ( ( rule__DataType__Group_2_2__0 ) )
                     {
-                    // InternalEntityGrammar.g:3917:2: ( ( rule__DataType__Group_2_2__0 ) )
-                    // InternalEntityGrammar.g:3918:3: ( rule__DataType__Group_2_2__0 )
+                    // InternalEntityGrammar.g:4001:2: ( ( rule__DataType__Group_2_2__0 ) )
+                    // InternalEntityGrammar.g:4002:3: ( rule__DataType__Group_2_2__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDataTypeAccess().getGroup_2_2()); 
                     }
-                    // InternalEntityGrammar.g:3919:3: ( rule__DataType__Group_2_2__0 )
-                    // InternalEntityGrammar.g:3919:4: rule__DataType__Group_2_2__0
+                    // InternalEntityGrammar.g:4003:3: ( rule__DataType__Group_2_2__0 )
+                    // InternalEntityGrammar.g:4003:4: rule__DataType__Group_2_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__DataType__Group_2_2__0();
@@ -14024,94 +14433,94 @@
 
 
     // $ANTLR start "rule__AllConstraints__Alternatives"
-    // InternalEntityGrammar.g:3927:1: rule__AllConstraints__Alternatives : ( ( ruleDtCAssertFalse ) | ( ruleDtCAssertTrue ) | ( ruleDtCDecimalMax ) | ( ruleDtCDecimalMin ) | ( ruleDtCDigits ) | ( ruleDtCNumericMax ) | ( ruleDtCNumericMin ) | ( ruleDtCNotNull ) | ( ruleDtCNull ) | ( ruleDtCRegEx ) | ( ruleDtCSize ) | ( ruleDtCFuture ) | ( ruleDtCPast ) );
+    // InternalEntityGrammar.g:4011:1: rule__AllConstraints__Alternatives : ( ( ruleDtCAssertFalse ) | ( ruleDtCAssertTrue ) | ( ruleDtCDecimalMax ) | ( ruleDtCDecimalMin ) | ( ruleDtCDigits ) | ( ruleDtCNumericMax ) | ( ruleDtCNumericMin ) | ( ruleDtCNotNull ) | ( ruleDtCNull ) | ( ruleDtCRegEx ) | ( ruleDtCSize ) | ( ruleDtCFuture ) | ( ruleDtCPast ) );
     public final void rule__AllConstraints__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:3931:1: ( ( ruleDtCAssertFalse ) | ( ruleDtCAssertTrue ) | ( ruleDtCDecimalMax ) | ( ruleDtCDecimalMin ) | ( ruleDtCDigits ) | ( ruleDtCNumericMax ) | ( ruleDtCNumericMin ) | ( ruleDtCNotNull ) | ( ruleDtCNull ) | ( ruleDtCRegEx ) | ( ruleDtCSize ) | ( ruleDtCFuture ) | ( ruleDtCPast ) )
-            int alt21=13;
+            // InternalEntityGrammar.g:4015:1: ( ( ruleDtCAssertFalse ) | ( ruleDtCAssertTrue ) | ( ruleDtCDecimalMax ) | ( ruleDtCDecimalMin ) | ( ruleDtCDigits ) | ( ruleDtCNumericMax ) | ( ruleDtCNumericMin ) | ( ruleDtCNotNull ) | ( ruleDtCNull ) | ( ruleDtCRegEx ) | ( ruleDtCSize ) | ( ruleDtCFuture ) | ( ruleDtCPast ) )
+            int alt27=13;
             switch ( input.LA(1) ) {
-            case 114:
+            case 115:
                 {
-                alt21=1;
-                }
-                break;
-            case 118:
-                {
-                alt21=2;
+                alt27=1;
                 }
                 break;
             case 119:
                 {
-                alt21=3;
+                alt27=2;
                 }
                 break;
             case 120:
                 {
-                alt21=4;
+                alt27=3;
                 }
                 break;
             case 121:
                 {
-                alt21=5;
-                }
-                break;
-            case 124:
-                {
-                alt21=6;
-                }
-                break;
-            case 125:
-                {
-                alt21=7;
-                }
-                break;
-            case 126:
-                {
-                alt21=8;
-                }
-                break;
-            case 127:
-                {
-                alt21=9;
-                }
-                break;
-            case 128:
-                {
-                alt21=10;
-                }
-                break;
-            case 129:
-                {
-                alt21=11;
+                alt27=4;
                 }
                 break;
             case 122:
                 {
-                alt21=12;
+                alt27=5;
+                }
+                break;
+            case 125:
+                {
+                alt27=6;
+                }
+                break;
+            case 126:
+                {
+                alt27=7;
+                }
+                break;
+            case 127:
+                {
+                alt27=8;
+                }
+                break;
+            case 128:
+                {
+                alt27=9;
+                }
+                break;
+            case 129:
+                {
+                alt27=10;
+                }
+                break;
+            case 130:
+                {
+                alt27=11;
                 }
                 break;
             case 123:
                 {
-                alt21=13;
+                alt27=12;
+                }
+                break;
+            case 124:
+                {
+                alt27=13;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 21, 0, input);
+                    new NoViableAltException("", 27, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt21) {
+            switch (alt27) {
                 case 1 :
-                    // InternalEntityGrammar.g:3932:2: ( ruleDtCAssertFalse )
+                    // InternalEntityGrammar.g:4016:2: ( ruleDtCAssertFalse )
                     {
-                    // InternalEntityGrammar.g:3932:2: ( ruleDtCAssertFalse )
-                    // InternalEntityGrammar.g:3933:3: ruleDtCAssertFalse
+                    // InternalEntityGrammar.g:4016:2: ( ruleDtCAssertFalse )
+                    // InternalEntityGrammar.g:4017:3: ruleDtCAssertFalse
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getAllConstraintsAccess().getDtCAssertFalseParserRuleCall_0()); 
@@ -14131,10 +14540,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:3938:2: ( ruleDtCAssertTrue )
+                    // InternalEntityGrammar.g:4022:2: ( ruleDtCAssertTrue )
                     {
-                    // InternalEntityGrammar.g:3938:2: ( ruleDtCAssertTrue )
-                    // InternalEntityGrammar.g:3939:3: ruleDtCAssertTrue
+                    // InternalEntityGrammar.g:4022:2: ( ruleDtCAssertTrue )
+                    // InternalEntityGrammar.g:4023:3: ruleDtCAssertTrue
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getAllConstraintsAccess().getDtCAssertTrueParserRuleCall_1()); 
@@ -14154,10 +14563,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:3944:2: ( ruleDtCDecimalMax )
+                    // InternalEntityGrammar.g:4028:2: ( ruleDtCDecimalMax )
                     {
-                    // InternalEntityGrammar.g:3944:2: ( ruleDtCDecimalMax )
-                    // InternalEntityGrammar.g:3945:3: ruleDtCDecimalMax
+                    // InternalEntityGrammar.g:4028:2: ( ruleDtCDecimalMax )
+                    // InternalEntityGrammar.g:4029:3: ruleDtCDecimalMax
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getAllConstraintsAccess().getDtCDecimalMaxParserRuleCall_2()); 
@@ -14177,10 +14586,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalEntityGrammar.g:3950:2: ( ruleDtCDecimalMin )
+                    // InternalEntityGrammar.g:4034:2: ( ruleDtCDecimalMin )
                     {
-                    // InternalEntityGrammar.g:3950:2: ( ruleDtCDecimalMin )
-                    // InternalEntityGrammar.g:3951:3: ruleDtCDecimalMin
+                    // InternalEntityGrammar.g:4034:2: ( ruleDtCDecimalMin )
+                    // InternalEntityGrammar.g:4035:3: ruleDtCDecimalMin
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getAllConstraintsAccess().getDtCDecimalMinParserRuleCall_3()); 
@@ -14200,10 +14609,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalEntityGrammar.g:3956:2: ( ruleDtCDigits )
+                    // InternalEntityGrammar.g:4040:2: ( ruleDtCDigits )
                     {
-                    // InternalEntityGrammar.g:3956:2: ( ruleDtCDigits )
-                    // InternalEntityGrammar.g:3957:3: ruleDtCDigits
+                    // InternalEntityGrammar.g:4040:2: ( ruleDtCDigits )
+                    // InternalEntityGrammar.g:4041:3: ruleDtCDigits
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getAllConstraintsAccess().getDtCDigitsParserRuleCall_4()); 
@@ -14223,10 +14632,10 @@
                     }
                     break;
                 case 6 :
-                    // InternalEntityGrammar.g:3962:2: ( ruleDtCNumericMax )
+                    // InternalEntityGrammar.g:4046:2: ( ruleDtCNumericMax )
                     {
-                    // InternalEntityGrammar.g:3962:2: ( ruleDtCNumericMax )
-                    // InternalEntityGrammar.g:3963:3: ruleDtCNumericMax
+                    // InternalEntityGrammar.g:4046:2: ( ruleDtCNumericMax )
+                    // InternalEntityGrammar.g:4047:3: ruleDtCNumericMax
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getAllConstraintsAccess().getDtCNumericMaxParserRuleCall_5()); 
@@ -14246,10 +14655,10 @@
                     }
                     break;
                 case 7 :
-                    // InternalEntityGrammar.g:3968:2: ( ruleDtCNumericMin )
+                    // InternalEntityGrammar.g:4052:2: ( ruleDtCNumericMin )
                     {
-                    // InternalEntityGrammar.g:3968:2: ( ruleDtCNumericMin )
-                    // InternalEntityGrammar.g:3969:3: ruleDtCNumericMin
+                    // InternalEntityGrammar.g:4052:2: ( ruleDtCNumericMin )
+                    // InternalEntityGrammar.g:4053:3: ruleDtCNumericMin
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getAllConstraintsAccess().getDtCNumericMinParserRuleCall_6()); 
@@ -14269,10 +14678,10 @@
                     }
                     break;
                 case 8 :
-                    // InternalEntityGrammar.g:3974:2: ( ruleDtCNotNull )
+                    // InternalEntityGrammar.g:4058:2: ( ruleDtCNotNull )
                     {
-                    // InternalEntityGrammar.g:3974:2: ( ruleDtCNotNull )
-                    // InternalEntityGrammar.g:3975:3: ruleDtCNotNull
+                    // InternalEntityGrammar.g:4058:2: ( ruleDtCNotNull )
+                    // InternalEntityGrammar.g:4059:3: ruleDtCNotNull
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getAllConstraintsAccess().getDtCNotNullParserRuleCall_7()); 
@@ -14292,10 +14701,10 @@
                     }
                     break;
                 case 9 :
-                    // InternalEntityGrammar.g:3980:2: ( ruleDtCNull )
+                    // InternalEntityGrammar.g:4064:2: ( ruleDtCNull )
                     {
-                    // InternalEntityGrammar.g:3980:2: ( ruleDtCNull )
-                    // InternalEntityGrammar.g:3981:3: ruleDtCNull
+                    // InternalEntityGrammar.g:4064:2: ( ruleDtCNull )
+                    // InternalEntityGrammar.g:4065:3: ruleDtCNull
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getAllConstraintsAccess().getDtCNullParserRuleCall_8()); 
@@ -14315,10 +14724,10 @@
                     }
                     break;
                 case 10 :
-                    // InternalEntityGrammar.g:3986:2: ( ruleDtCRegEx )
+                    // InternalEntityGrammar.g:4070:2: ( ruleDtCRegEx )
                     {
-                    // InternalEntityGrammar.g:3986:2: ( ruleDtCRegEx )
-                    // InternalEntityGrammar.g:3987:3: ruleDtCRegEx
+                    // InternalEntityGrammar.g:4070:2: ( ruleDtCRegEx )
+                    // InternalEntityGrammar.g:4071:3: ruleDtCRegEx
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getAllConstraintsAccess().getDtCRegExParserRuleCall_9()); 
@@ -14338,10 +14747,10 @@
                     }
                     break;
                 case 11 :
-                    // InternalEntityGrammar.g:3992:2: ( ruleDtCSize )
+                    // InternalEntityGrammar.g:4076:2: ( ruleDtCSize )
                     {
-                    // InternalEntityGrammar.g:3992:2: ( ruleDtCSize )
-                    // InternalEntityGrammar.g:3993:3: ruleDtCSize
+                    // InternalEntityGrammar.g:4076:2: ( ruleDtCSize )
+                    // InternalEntityGrammar.g:4077:3: ruleDtCSize
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getAllConstraintsAccess().getDtCSizeParserRuleCall_10()); 
@@ -14361,10 +14770,10 @@
                     }
                     break;
                 case 12 :
-                    // InternalEntityGrammar.g:3998:2: ( ruleDtCFuture )
+                    // InternalEntityGrammar.g:4082:2: ( ruleDtCFuture )
                     {
-                    // InternalEntityGrammar.g:3998:2: ( ruleDtCFuture )
-                    // InternalEntityGrammar.g:3999:3: ruleDtCFuture
+                    // InternalEntityGrammar.g:4082:2: ( ruleDtCFuture )
+                    // InternalEntityGrammar.g:4083:3: ruleDtCFuture
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getAllConstraintsAccess().getDtCFutureParserRuleCall_11()); 
@@ -14384,10 +14793,10 @@
                     }
                     break;
                 case 13 :
-                    // InternalEntityGrammar.g:4004:2: ( ruleDtCPast )
+                    // InternalEntityGrammar.g:4088:2: ( ruleDtCPast )
                     {
-                    // InternalEntityGrammar.g:4004:2: ( ruleDtCPast )
-                    // InternalEntityGrammar.g:4005:3: ruleDtCPast
+                    // InternalEntityGrammar.g:4088:2: ( ruleDtCPast )
+                    // InternalEntityGrammar.g:4089:3: ruleDtCPast
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getAllConstraintsAccess().getDtCPastParserRuleCall_12()); 
@@ -14424,84 +14833,84 @@
 
 
     // $ANTLR start "rule__DataTypeConstraint__Alternatives"
-    // InternalEntityGrammar.g:4014:1: rule__DataTypeConstraint__Alternatives : ( ( ruleDtCAssertFalse ) | ( ruleDtCAssertTrue ) | ( ruleDtCDecimalMax ) | ( ruleDtCDecimalMin ) | ( ruleDtCDigits ) | ( ruleDtCNumericMax ) | ( ruleDtCNumericMin ) | ( ruleDtCNotNull ) | ( ruleDtCNull ) | ( ruleDtCRegEx ) | ( ruleDtCSize ) );
+    // InternalEntityGrammar.g:4098:1: rule__DataTypeConstraint__Alternatives : ( ( ruleDtCAssertFalse ) | ( ruleDtCAssertTrue ) | ( ruleDtCDecimalMax ) | ( ruleDtCDecimalMin ) | ( ruleDtCDigits ) | ( ruleDtCNumericMax ) | ( ruleDtCNumericMin ) | ( ruleDtCNotNull ) | ( ruleDtCNull ) | ( ruleDtCRegEx ) | ( ruleDtCSize ) );
     public final void rule__DataTypeConstraint__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4018:1: ( ( ruleDtCAssertFalse ) | ( ruleDtCAssertTrue ) | ( ruleDtCDecimalMax ) | ( ruleDtCDecimalMin ) | ( ruleDtCDigits ) | ( ruleDtCNumericMax ) | ( ruleDtCNumericMin ) | ( ruleDtCNotNull ) | ( ruleDtCNull ) | ( ruleDtCRegEx ) | ( ruleDtCSize ) )
-            int alt22=11;
+            // InternalEntityGrammar.g:4102:1: ( ( ruleDtCAssertFalse ) | ( ruleDtCAssertTrue ) | ( ruleDtCDecimalMax ) | ( ruleDtCDecimalMin ) | ( ruleDtCDigits ) | ( ruleDtCNumericMax ) | ( ruleDtCNumericMin ) | ( ruleDtCNotNull ) | ( ruleDtCNull ) | ( ruleDtCRegEx ) | ( ruleDtCSize ) )
+            int alt28=11;
             switch ( input.LA(1) ) {
-            case 114:
+            case 115:
                 {
-                alt22=1;
-                }
-                break;
-            case 118:
-                {
-                alt22=2;
+                alt28=1;
                 }
                 break;
             case 119:
                 {
-                alt22=3;
+                alt28=2;
                 }
                 break;
             case 120:
                 {
-                alt22=4;
+                alt28=3;
                 }
                 break;
             case 121:
                 {
-                alt22=5;
+                alt28=4;
                 }
                 break;
-            case 124:
+            case 122:
                 {
-                alt22=6;
+                alt28=5;
                 }
                 break;
             case 125:
                 {
-                alt22=7;
+                alt28=6;
                 }
                 break;
             case 126:
                 {
-                alt22=8;
+                alt28=7;
                 }
                 break;
             case 127:
                 {
-                alt22=9;
+                alt28=8;
                 }
                 break;
             case 128:
                 {
-                alt22=10;
+                alt28=9;
                 }
                 break;
             case 129:
                 {
-                alt22=11;
+                alt28=10;
+                }
+                break;
+            case 130:
+                {
+                alt28=11;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 22, 0, input);
+                    new NoViableAltException("", 28, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt22) {
+            switch (alt28) {
                 case 1 :
-                    // InternalEntityGrammar.g:4019:2: ( ruleDtCAssertFalse )
+                    // InternalEntityGrammar.g:4103:2: ( ruleDtCAssertFalse )
                     {
-                    // InternalEntityGrammar.g:4019:2: ( ruleDtCAssertFalse )
-                    // InternalEntityGrammar.g:4020:3: ruleDtCAssertFalse
+                    // InternalEntityGrammar.g:4103:2: ( ruleDtCAssertFalse )
+                    // InternalEntityGrammar.g:4104:3: ruleDtCAssertFalse
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDataTypeConstraintAccess().getDtCAssertFalseParserRuleCall_0()); 
@@ -14521,10 +14930,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4025:2: ( ruleDtCAssertTrue )
+                    // InternalEntityGrammar.g:4109:2: ( ruleDtCAssertTrue )
                     {
-                    // InternalEntityGrammar.g:4025:2: ( ruleDtCAssertTrue )
-                    // InternalEntityGrammar.g:4026:3: ruleDtCAssertTrue
+                    // InternalEntityGrammar.g:4109:2: ( ruleDtCAssertTrue )
+                    // InternalEntityGrammar.g:4110:3: ruleDtCAssertTrue
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDataTypeConstraintAccess().getDtCAssertTrueParserRuleCall_1()); 
@@ -14544,10 +14953,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:4031:2: ( ruleDtCDecimalMax )
+                    // InternalEntityGrammar.g:4115:2: ( ruleDtCDecimalMax )
                     {
-                    // InternalEntityGrammar.g:4031:2: ( ruleDtCDecimalMax )
-                    // InternalEntityGrammar.g:4032:3: ruleDtCDecimalMax
+                    // InternalEntityGrammar.g:4115:2: ( ruleDtCDecimalMax )
+                    // InternalEntityGrammar.g:4116:3: ruleDtCDecimalMax
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMaxParserRuleCall_2()); 
@@ -14567,10 +14976,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalEntityGrammar.g:4037:2: ( ruleDtCDecimalMin )
+                    // InternalEntityGrammar.g:4121:2: ( ruleDtCDecimalMin )
                     {
-                    // InternalEntityGrammar.g:4037:2: ( ruleDtCDecimalMin )
-                    // InternalEntityGrammar.g:4038:3: ruleDtCDecimalMin
+                    // InternalEntityGrammar.g:4121:2: ( ruleDtCDecimalMin )
+                    // InternalEntityGrammar.g:4122:3: ruleDtCDecimalMin
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMinParserRuleCall_3()); 
@@ -14590,10 +14999,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalEntityGrammar.g:4043:2: ( ruleDtCDigits )
+                    // InternalEntityGrammar.g:4127:2: ( ruleDtCDigits )
                     {
-                    // InternalEntityGrammar.g:4043:2: ( ruleDtCDigits )
-                    // InternalEntityGrammar.g:4044:3: ruleDtCDigits
+                    // InternalEntityGrammar.g:4127:2: ( ruleDtCDigits )
+                    // InternalEntityGrammar.g:4128:3: ruleDtCDigits
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDataTypeConstraintAccess().getDtCDigitsParserRuleCall_4()); 
@@ -14613,10 +15022,10 @@
                     }
                     break;
                 case 6 :
-                    // InternalEntityGrammar.g:4049:2: ( ruleDtCNumericMax )
+                    // InternalEntityGrammar.g:4133:2: ( ruleDtCNumericMax )
                     {
-                    // InternalEntityGrammar.g:4049:2: ( ruleDtCNumericMax )
-                    // InternalEntityGrammar.g:4050:3: ruleDtCNumericMax
+                    // InternalEntityGrammar.g:4133:2: ( ruleDtCNumericMax )
+                    // InternalEntityGrammar.g:4134:3: ruleDtCNumericMax
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMaxParserRuleCall_5()); 
@@ -14636,10 +15045,10 @@
                     }
                     break;
                 case 7 :
-                    // InternalEntityGrammar.g:4055:2: ( ruleDtCNumericMin )
+                    // InternalEntityGrammar.g:4139:2: ( ruleDtCNumericMin )
                     {
-                    // InternalEntityGrammar.g:4055:2: ( ruleDtCNumericMin )
-                    // InternalEntityGrammar.g:4056:3: ruleDtCNumericMin
+                    // InternalEntityGrammar.g:4139:2: ( ruleDtCNumericMin )
+                    // InternalEntityGrammar.g:4140:3: ruleDtCNumericMin
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMinParserRuleCall_6()); 
@@ -14659,10 +15068,10 @@
                     }
                     break;
                 case 8 :
-                    // InternalEntityGrammar.g:4061:2: ( ruleDtCNotNull )
+                    // InternalEntityGrammar.g:4145:2: ( ruleDtCNotNull )
                     {
-                    // InternalEntityGrammar.g:4061:2: ( ruleDtCNotNull )
-                    // InternalEntityGrammar.g:4062:3: ruleDtCNotNull
+                    // InternalEntityGrammar.g:4145:2: ( ruleDtCNotNull )
+                    // InternalEntityGrammar.g:4146:3: ruleDtCNotNull
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDataTypeConstraintAccess().getDtCNotNullParserRuleCall_7()); 
@@ -14682,10 +15091,10 @@
                     }
                     break;
                 case 9 :
-                    // InternalEntityGrammar.g:4067:2: ( ruleDtCNull )
+                    // InternalEntityGrammar.g:4151:2: ( ruleDtCNull )
                     {
-                    // InternalEntityGrammar.g:4067:2: ( ruleDtCNull )
-                    // InternalEntityGrammar.g:4068:3: ruleDtCNull
+                    // InternalEntityGrammar.g:4151:2: ( ruleDtCNull )
+                    // InternalEntityGrammar.g:4152:3: ruleDtCNull
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDataTypeConstraintAccess().getDtCNullParserRuleCall_8()); 
@@ -14705,10 +15114,10 @@
                     }
                     break;
                 case 10 :
-                    // InternalEntityGrammar.g:4073:2: ( ruleDtCRegEx )
+                    // InternalEntityGrammar.g:4157:2: ( ruleDtCRegEx )
                     {
-                    // InternalEntityGrammar.g:4073:2: ( ruleDtCRegEx )
-                    // InternalEntityGrammar.g:4074:3: ruleDtCRegEx
+                    // InternalEntityGrammar.g:4157:2: ( ruleDtCRegEx )
+                    // InternalEntityGrammar.g:4158:3: ruleDtCRegEx
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDataTypeConstraintAccess().getDtCRegExParserRuleCall_9()); 
@@ -14728,10 +15137,10 @@
                     }
                     break;
                 case 11 :
-                    // InternalEntityGrammar.g:4079:2: ( ruleDtCSize )
+                    // InternalEntityGrammar.g:4163:2: ( ruleDtCSize )
                     {
-                    // InternalEntityGrammar.g:4079:2: ( ruleDtCSize )
-                    // InternalEntityGrammar.g:4080:3: ruleDtCSize
+                    // InternalEntityGrammar.g:4163:2: ( ruleDtCSize )
+                    // InternalEntityGrammar.g:4164:3: ruleDtCSize
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDataTypeConstraintAccess().getDtCSizeParserRuleCall_10()); 
@@ -14768,49 +15177,49 @@
 
 
     // $ANTLR start "rule__DateConstraint__Alternatives"
-    // InternalEntityGrammar.g:4089:1: rule__DateConstraint__Alternatives : ( ( ruleDtCFuture ) | ( ruleDtCPast ) | ( ruleDtCNotNull ) | ( ruleDtCNull ) );
+    // InternalEntityGrammar.g:4173:1: rule__DateConstraint__Alternatives : ( ( ruleDtCFuture ) | ( ruleDtCPast ) | ( ruleDtCNotNull ) | ( ruleDtCNull ) );
     public final void rule__DateConstraint__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4093:1: ( ( ruleDtCFuture ) | ( ruleDtCPast ) | ( ruleDtCNotNull ) | ( ruleDtCNull ) )
-            int alt23=4;
+            // InternalEntityGrammar.g:4177:1: ( ( ruleDtCFuture ) | ( ruleDtCPast ) | ( ruleDtCNotNull ) | ( ruleDtCNull ) )
+            int alt29=4;
             switch ( input.LA(1) ) {
-            case 122:
-                {
-                alt23=1;
-                }
-                break;
             case 123:
                 {
-                alt23=2;
+                alt29=1;
                 }
                 break;
-            case 126:
+            case 124:
                 {
-                alt23=3;
+                alt29=2;
                 }
                 break;
             case 127:
                 {
-                alt23=4;
+                alt29=3;
+                }
+                break;
+            case 128:
+                {
+                alt29=4;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 23, 0, input);
+                    new NoViableAltException("", 29, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt23) {
+            switch (alt29) {
                 case 1 :
-                    // InternalEntityGrammar.g:4094:2: ( ruleDtCFuture )
+                    // InternalEntityGrammar.g:4178:2: ( ruleDtCFuture )
                     {
-                    // InternalEntityGrammar.g:4094:2: ( ruleDtCFuture )
-                    // InternalEntityGrammar.g:4095:3: ruleDtCFuture
+                    // InternalEntityGrammar.g:4178:2: ( ruleDtCFuture )
+                    // InternalEntityGrammar.g:4179:3: ruleDtCFuture
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDateConstraintAccess().getDtCFutureParserRuleCall_0()); 
@@ -14830,10 +15239,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4100:2: ( ruleDtCPast )
+                    // InternalEntityGrammar.g:4184:2: ( ruleDtCPast )
                     {
-                    // InternalEntityGrammar.g:4100:2: ( ruleDtCPast )
-                    // InternalEntityGrammar.g:4101:3: ruleDtCPast
+                    // InternalEntityGrammar.g:4184:2: ( ruleDtCPast )
+                    // InternalEntityGrammar.g:4185:3: ruleDtCPast
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDateConstraintAccess().getDtCPastParserRuleCall_1()); 
@@ -14853,10 +15262,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:4106:2: ( ruleDtCNotNull )
+                    // InternalEntityGrammar.g:4190:2: ( ruleDtCNotNull )
                     {
-                    // InternalEntityGrammar.g:4106:2: ( ruleDtCNotNull )
-                    // InternalEntityGrammar.g:4107:3: ruleDtCNotNull
+                    // InternalEntityGrammar.g:4190:2: ( ruleDtCNotNull )
+                    // InternalEntityGrammar.g:4191:3: ruleDtCNotNull
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDateConstraintAccess().getDtCNotNullParserRuleCall_2()); 
@@ -14876,10 +15285,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalEntityGrammar.g:4112:2: ( ruleDtCNull )
+                    // InternalEntityGrammar.g:4196:2: ( ruleDtCNull )
                     {
-                    // InternalEntityGrammar.g:4112:2: ( ruleDtCNull )
-                    // InternalEntityGrammar.g:4113:3: ruleDtCNull
+                    // InternalEntityGrammar.g:4196:2: ( ruleDtCNull )
+                    // InternalEntityGrammar.g:4197:3: ruleDtCNull
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getDateConstraintAccess().getDtCNullParserRuleCall_3()); 
@@ -14916,35 +15325,35 @@
 
 
     // $ANTLR start "rule__BlobTypeConstraint__Alternatives"
-    // InternalEntityGrammar.g:4122:1: rule__BlobTypeConstraint__Alternatives : ( ( ruleDtCNotNull ) | ( ruleDtCNull ) );
+    // InternalEntityGrammar.g:4206:1: rule__BlobTypeConstraint__Alternatives : ( ( ruleDtCNotNull ) | ( ruleDtCNull ) );
     public final void rule__BlobTypeConstraint__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4126:1: ( ( ruleDtCNotNull ) | ( ruleDtCNull ) )
-            int alt24=2;
-            int LA24_0 = input.LA(1);
+            // InternalEntityGrammar.g:4210:1: ( ( ruleDtCNotNull ) | ( ruleDtCNull ) )
+            int alt30=2;
+            int LA30_0 = input.LA(1);
 
-            if ( (LA24_0==126) ) {
-                alt24=1;
+            if ( (LA30_0==127) ) {
+                alt30=1;
             }
-            else if ( (LA24_0==127) ) {
-                alt24=2;
+            else if ( (LA30_0==128) ) {
+                alt30=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 24, 0, input);
+                    new NoViableAltException("", 30, 0, input);
 
                 throw nvae;
             }
-            switch (alt24) {
+            switch (alt30) {
                 case 1 :
-                    // InternalEntityGrammar.g:4127:2: ( ruleDtCNotNull )
+                    // InternalEntityGrammar.g:4211:2: ( ruleDtCNotNull )
                     {
-                    // InternalEntityGrammar.g:4127:2: ( ruleDtCNotNull )
-                    // InternalEntityGrammar.g:4128:3: ruleDtCNotNull
+                    // InternalEntityGrammar.g:4211:2: ( ruleDtCNotNull )
+                    // InternalEntityGrammar.g:4212:3: ruleDtCNotNull
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getBlobTypeConstraintAccess().getDtCNotNullParserRuleCall_0()); 
@@ -14964,10 +15373,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4133:2: ( ruleDtCNull )
+                    // InternalEntityGrammar.g:4217:2: ( ruleDtCNull )
                     {
-                    // InternalEntityGrammar.g:4133:2: ( ruleDtCNull )
-                    // InternalEntityGrammar.g:4134:3: ruleDtCNull
+                    // InternalEntityGrammar.g:4217:2: ( ruleDtCNull )
+                    // InternalEntityGrammar.g:4218:3: ruleDtCNull
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getBlobTypeConstraintAccess().getDtCNullParserRuleCall_1()); 
@@ -15004,35 +15413,35 @@
 
 
     // $ANTLR start "rule__ScalarType__Alternatives"
-    // InternalEntityGrammar.g:4143:1: rule__ScalarType__Alternatives : ( ( ruleDataType ) | ( ruleEnum ) );
+    // InternalEntityGrammar.g:4227:1: rule__ScalarType__Alternatives : ( ( ruleDataType ) | ( ruleEnum ) );
     public final void rule__ScalarType__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4147:1: ( ( ruleDataType ) | ( ruleEnum ) )
-            int alt25=2;
-            int LA25_0 = input.LA(1);
+            // InternalEntityGrammar.g:4231:1: ( ( ruleDataType ) | ( ruleEnum ) )
+            int alt31=2;
+            int LA31_0 = input.LA(1);
 
-            if ( (LA25_0==112) ) {
-                alt25=1;
+            if ( (LA31_0==113) ) {
+                alt31=1;
             }
-            else if ( (LA25_0==130) ) {
-                alt25=2;
+            else if ( (LA31_0==131) ) {
+                alt31=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 25, 0, input);
+                    new NoViableAltException("", 31, 0, input);
 
                 throw nvae;
             }
-            switch (alt25) {
+            switch (alt31) {
                 case 1 :
-                    // InternalEntityGrammar.g:4148:2: ( ruleDataType )
+                    // InternalEntityGrammar.g:4232:2: ( ruleDataType )
                     {
-                    // InternalEntityGrammar.g:4148:2: ( ruleDataType )
-                    // InternalEntityGrammar.g:4149:3: ruleDataType
+                    // InternalEntityGrammar.g:4232:2: ( ruleDataType )
+                    // InternalEntityGrammar.g:4233:3: ruleDataType
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getScalarTypeAccess().getDataTypeParserRuleCall_0()); 
@@ -15052,10 +15461,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4154:2: ( ruleEnum )
+                    // InternalEntityGrammar.g:4238:2: ( ruleEnum )
                     {
-                    // InternalEntityGrammar.g:4154:2: ( ruleEnum )
-                    // InternalEntityGrammar.g:4155:3: ruleEnum
+                    // InternalEntityGrammar.g:4238:2: ( ruleEnum )
+                    // InternalEntityGrammar.g:4239:3: ruleEnum
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getScalarTypeAccess().getEnumParserRuleCall_1()); 
@@ -15092,41 +15501,41 @@
 
 
     // $ANTLR start "rule__EnumLiteral__Alternatives_2_1"
-    // InternalEntityGrammar.g:4164:1: rule__EnumLiteral__Alternatives_2_1 : ( ( ( rule__EnumLiteral__ValueAssignment_2_1_0 ) ) | ( ( rule__EnumLiteral__StringValueAssignment_2_1_1 ) ) );
+    // InternalEntityGrammar.g:4248:1: rule__EnumLiteral__Alternatives_2_1 : ( ( ( rule__EnumLiteral__ValueAssignment_2_1_0 ) ) | ( ( rule__EnumLiteral__StringValueAssignment_2_1_1 ) ) );
     public final void rule__EnumLiteral__Alternatives_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4168:1: ( ( ( rule__EnumLiteral__ValueAssignment_2_1_0 ) ) | ( ( rule__EnumLiteral__StringValueAssignment_2_1_1 ) ) )
-            int alt26=2;
-            int LA26_0 = input.LA(1);
+            // InternalEntityGrammar.g:4252:1: ( ( ( rule__EnumLiteral__ValueAssignment_2_1_0 ) ) | ( ( rule__EnumLiteral__StringValueAssignment_2_1_1 ) ) )
+            int alt32=2;
+            int LA32_0 = input.LA(1);
 
-            if ( (LA26_0==RULE_INT) ) {
-                alt26=1;
+            if ( (LA32_0==RULE_INT) ) {
+                alt32=1;
             }
-            else if ( (LA26_0==RULE_STRING) ) {
-                alt26=2;
+            else if ( (LA32_0==RULE_STRING) ) {
+                alt32=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 26, 0, input);
+                    new NoViableAltException("", 32, 0, input);
 
                 throw nvae;
             }
-            switch (alt26) {
+            switch (alt32) {
                 case 1 :
-                    // InternalEntityGrammar.g:4169:2: ( ( rule__EnumLiteral__ValueAssignment_2_1_0 ) )
+                    // InternalEntityGrammar.g:4253:2: ( ( rule__EnumLiteral__ValueAssignment_2_1_0 ) )
                     {
-                    // InternalEntityGrammar.g:4169:2: ( ( rule__EnumLiteral__ValueAssignment_2_1_0 ) )
-                    // InternalEntityGrammar.g:4170:3: ( rule__EnumLiteral__ValueAssignment_2_1_0 )
+                    // InternalEntityGrammar.g:4253:2: ( ( rule__EnumLiteral__ValueAssignment_2_1_0 ) )
+                    // InternalEntityGrammar.g:4254:3: ( rule__EnumLiteral__ValueAssignment_2_1_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getEnumLiteralAccess().getValueAssignment_2_1_0()); 
                     }
-                    // InternalEntityGrammar.g:4171:3: ( rule__EnumLiteral__ValueAssignment_2_1_0 )
-                    // InternalEntityGrammar.g:4171:4: rule__EnumLiteral__ValueAssignment_2_1_0
+                    // InternalEntityGrammar.g:4255:3: ( rule__EnumLiteral__ValueAssignment_2_1_0 )
+                    // InternalEntityGrammar.g:4255:4: rule__EnumLiteral__ValueAssignment_2_1_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__EnumLiteral__ValueAssignment_2_1_0();
@@ -15146,16 +15555,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4175:2: ( ( rule__EnumLiteral__StringValueAssignment_2_1_1 ) )
+                    // InternalEntityGrammar.g:4259:2: ( ( rule__EnumLiteral__StringValueAssignment_2_1_1 ) )
                     {
-                    // InternalEntityGrammar.g:4175:2: ( ( rule__EnumLiteral__StringValueAssignment_2_1_1 ) )
-                    // InternalEntityGrammar.g:4176:3: ( rule__EnumLiteral__StringValueAssignment_2_1_1 )
+                    // InternalEntityGrammar.g:4259:2: ( ( rule__EnumLiteral__StringValueAssignment_2_1_1 ) )
+                    // InternalEntityGrammar.g:4260:3: ( rule__EnumLiteral__StringValueAssignment_2_1_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getEnumLiteralAccess().getStringValueAssignment_2_1_1()); 
                     }
-                    // InternalEntityGrammar.g:4177:3: ( rule__EnumLiteral__StringValueAssignment_2_1_1 )
-                    // InternalEntityGrammar.g:4177:4: rule__EnumLiteral__StringValueAssignment_2_1_1
+                    // InternalEntityGrammar.g:4261:3: ( rule__EnumLiteral__StringValueAssignment_2_1_1 )
+                    // InternalEntityGrammar.g:4261:4: rule__EnumLiteral__StringValueAssignment_2_1_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__EnumLiteral__StringValueAssignment_2_1_1();
@@ -15192,41 +15601,41 @@
 
 
     // $ANTLR start "rule__AttributeMatchingConstraint__Alternatives_2"
-    // InternalEntityGrammar.g:4185:1: rule__AttributeMatchingConstraint__Alternatives_2 : ( ( ( rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0 ) ) | ( ( rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1 ) ) );
+    // InternalEntityGrammar.g:4269:1: rule__AttributeMatchingConstraint__Alternatives_2 : ( ( ( rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0 ) ) | ( ( rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1 ) ) );
     public final void rule__AttributeMatchingConstraint__Alternatives_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4189:1: ( ( ( rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0 ) ) | ( ( rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1 ) ) )
-            int alt27=2;
-            int LA27_0 = input.LA(1);
+            // InternalEntityGrammar.g:4273:1: ( ( ( rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0 ) ) | ( ( rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1 ) ) )
+            int alt33=2;
+            int LA33_0 = input.LA(1);
 
-            if ( (LA27_0==RULE_STRING) ) {
-                alt27=1;
+            if ( (LA33_0==RULE_STRING) ) {
+                alt33=1;
             }
-            else if ( (LA27_0==RULE_ID) ) {
-                alt27=2;
+            else if ( (LA33_0==RULE_ID) ) {
+                alt33=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 27, 0, input);
+                    new NoViableAltException("", 33, 0, input);
 
                 throw nvae;
             }
-            switch (alt27) {
+            switch (alt33) {
                 case 1 :
-                    // InternalEntityGrammar.g:4190:2: ( ( rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0 ) )
+                    // InternalEntityGrammar.g:4274:2: ( ( rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0 ) )
                     {
-                    // InternalEntityGrammar.g:4190:2: ( ( rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0 ) )
-                    // InternalEntityGrammar.g:4191:3: ( rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0 )
+                    // InternalEntityGrammar.g:4274:2: ( ( rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0 ) )
+                    // InternalEntityGrammar.g:4275:3: ( rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingValueAssignment_2_0()); 
                     }
-                    // InternalEntityGrammar.g:4192:3: ( rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0 )
-                    // InternalEntityGrammar.g:4192:4: rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0
+                    // InternalEntityGrammar.g:4276:3: ( rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0 )
+                    // InternalEntityGrammar.g:4276:4: rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0();
@@ -15246,16 +15655,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4196:2: ( ( rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1 ) )
+                    // InternalEntityGrammar.g:4280:2: ( ( rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1 ) )
                     {
-                    // InternalEntityGrammar.g:4196:2: ( ( rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1 ) )
-                    // InternalEntityGrammar.g:4197:3: ( rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1 )
+                    // InternalEntityGrammar.g:4280:2: ( ( rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1 ) )
+                    // InternalEntityGrammar.g:4281:3: ( rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingLiteralAssignment_2_1()); 
                     }
-                    // InternalEntityGrammar.g:4198:3: ( rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1 )
-                    // InternalEntityGrammar.g:4198:4: rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1
+                    // InternalEntityGrammar.g:4282:3: ( rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1 )
+                    // InternalEntityGrammar.g:4282:4: rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1();
@@ -15292,124 +15701,124 @@
 
 
     // $ANTLR start "rule__ValidIDWithKeywords__Alternatives"
-    // InternalEntityGrammar.g:4206:1: rule__ValidIDWithKeywords__Alternatives : ( ( 'cachable' ) | ( 'id' ) | ( 'uuid' ) | ( 'transient' ) | ( 'version' ) | ( 'derived' ) | ( 'collection' ) | ( 'refers' ) | ( 'settings' ) | ( 'lazy' ) | ( 'notnull' ) | ( 'dto' ) | ( 'date' ) | ( 'mapto' ) | ( 'ref' ) | ( 'cascadeMergePersist' ) | ( 'cascadeRemove' ) | ( 'var' ) | ( RULE_ID ) );
+    // InternalEntityGrammar.g:4290:1: rule__ValidIDWithKeywords__Alternatives : ( ( 'cachable' ) | ( 'id' ) | ( 'uuid' ) | ( 'transient' ) | ( 'version' ) | ( 'derived' ) | ( 'collection' ) | ( 'refers' ) | ( 'settings' ) | ( 'lazy' ) | ( 'notnull' ) | ( 'dto' ) | ( 'date' ) | ( 'mapto' ) | ( 'ref' ) | ( 'cascadeMergePersist' ) | ( 'cascadeRemove' ) | ( 'var' ) | ( RULE_ID ) );
     public final void rule__ValidIDWithKeywords__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4210:1: ( ( 'cachable' ) | ( 'id' ) | ( 'uuid' ) | ( 'transient' ) | ( 'version' ) | ( 'derived' ) | ( 'collection' ) | ( 'refers' ) | ( 'settings' ) | ( 'lazy' ) | ( 'notnull' ) | ( 'dto' ) | ( 'date' ) | ( 'mapto' ) | ( 'ref' ) | ( 'cascadeMergePersist' ) | ( 'cascadeRemove' ) | ( 'var' ) | ( RULE_ID ) )
-            int alt28=19;
+            // InternalEntityGrammar.g:4294:1: ( ( 'cachable' ) | ( 'id' ) | ( 'uuid' ) | ( 'transient' ) | ( 'version' ) | ( 'derived' ) | ( 'collection' ) | ( 'refers' ) | ( 'settings' ) | ( 'lazy' ) | ( 'notnull' ) | ( 'dto' ) | ( 'date' ) | ( 'mapto' ) | ( 'ref' ) | ( 'cascadeMergePersist' ) | ( 'cascadeRemove' ) | ( 'var' ) | ( RULE_ID ) )
+            int alt34=19;
             switch ( input.LA(1) ) {
             case 17:
                 {
-                alt28=1;
+                alt34=1;
                 }
                 break;
             case 18:
                 {
-                alt28=2;
+                alt34=2;
                 }
                 break;
             case 19:
                 {
-                alt28=3;
+                alt34=3;
                 }
                 break;
             case 20:
                 {
-                alt28=4;
+                alt34=4;
                 }
                 break;
             case 21:
                 {
-                alt28=5;
+                alt34=5;
                 }
                 break;
             case 22:
                 {
-                alt28=6;
+                alt34=6;
                 }
                 break;
             case 23:
                 {
-                alt28=7;
+                alt34=7;
                 }
                 break;
             case 24:
                 {
-                alt28=8;
+                alt34=8;
                 }
                 break;
             case 25:
                 {
-                alt28=9;
+                alt34=9;
                 }
                 break;
             case 26:
                 {
-                alt28=10;
+                alt34=10;
                 }
                 break;
             case 27:
                 {
-                alt28=11;
+                alt34=11;
                 }
                 break;
             case 28:
                 {
-                alt28=12;
+                alt34=12;
                 }
                 break;
             case 29:
                 {
-                alt28=13;
+                alt34=13;
                 }
                 break;
             case 30:
                 {
-                alt28=14;
+                alt34=14;
                 }
                 break;
             case 31:
                 {
-                alt28=15;
+                alt34=15;
                 }
                 break;
             case 32:
                 {
-                alt28=16;
+                alt34=16;
                 }
                 break;
             case 33:
                 {
-                alt28=17;
+                alt34=17;
                 }
                 break;
             case 16:
                 {
-                alt28=18;
+                alt34=18;
                 }
                 break;
             case RULE_ID:
                 {
-                alt28=19;
+                alt34=19;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 28, 0, input);
+                    new NoViableAltException("", 34, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt28) {
+            switch (alt34) {
                 case 1 :
-                    // InternalEntityGrammar.g:4211:2: ( 'cachable' )
+                    // InternalEntityGrammar.g:4295:2: ( 'cachable' )
                     {
-                    // InternalEntityGrammar.g:4211:2: ( 'cachable' )
-                    // InternalEntityGrammar.g:4212:3: 'cachable'
+                    // InternalEntityGrammar.g:4295:2: ( 'cachable' )
+                    // InternalEntityGrammar.g:4296:3: 'cachable'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getCachableKeyword_0()); 
@@ -15425,10 +15834,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4217:2: ( 'id' )
+                    // InternalEntityGrammar.g:4301:2: ( 'id' )
                     {
-                    // InternalEntityGrammar.g:4217:2: ( 'id' )
-                    // InternalEntityGrammar.g:4218:3: 'id'
+                    // InternalEntityGrammar.g:4301:2: ( 'id' )
+                    // InternalEntityGrammar.g:4302:3: 'id'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getIdKeyword_1()); 
@@ -15444,10 +15853,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:4223:2: ( 'uuid' )
+                    // InternalEntityGrammar.g:4307:2: ( 'uuid' )
                     {
-                    // InternalEntityGrammar.g:4223:2: ( 'uuid' )
-                    // InternalEntityGrammar.g:4224:3: 'uuid'
+                    // InternalEntityGrammar.g:4307:2: ( 'uuid' )
+                    // InternalEntityGrammar.g:4308:3: 'uuid'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getUuidKeyword_2()); 
@@ -15463,10 +15872,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalEntityGrammar.g:4229:2: ( 'transient' )
+                    // InternalEntityGrammar.g:4313:2: ( 'transient' )
                     {
-                    // InternalEntityGrammar.g:4229:2: ( 'transient' )
-                    // InternalEntityGrammar.g:4230:3: 'transient'
+                    // InternalEntityGrammar.g:4313:2: ( 'transient' )
+                    // InternalEntityGrammar.g:4314:3: 'transient'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getTransientKeyword_3()); 
@@ -15482,10 +15891,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalEntityGrammar.g:4235:2: ( 'version' )
+                    // InternalEntityGrammar.g:4319:2: ( 'version' )
                     {
-                    // InternalEntityGrammar.g:4235:2: ( 'version' )
-                    // InternalEntityGrammar.g:4236:3: 'version'
+                    // InternalEntityGrammar.g:4319:2: ( 'version' )
+                    // InternalEntityGrammar.g:4320:3: 'version'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getVersionKeyword_4()); 
@@ -15501,10 +15910,10 @@
                     }
                     break;
                 case 6 :
-                    // InternalEntityGrammar.g:4241:2: ( 'derived' )
+                    // InternalEntityGrammar.g:4325:2: ( 'derived' )
                     {
-                    // InternalEntityGrammar.g:4241:2: ( 'derived' )
-                    // InternalEntityGrammar.g:4242:3: 'derived'
+                    // InternalEntityGrammar.g:4325:2: ( 'derived' )
+                    // InternalEntityGrammar.g:4326:3: 'derived'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getDerivedKeyword_5()); 
@@ -15520,10 +15929,10 @@
                     }
                     break;
                 case 7 :
-                    // InternalEntityGrammar.g:4247:2: ( 'collection' )
+                    // InternalEntityGrammar.g:4331:2: ( 'collection' )
                     {
-                    // InternalEntityGrammar.g:4247:2: ( 'collection' )
-                    // InternalEntityGrammar.g:4248:3: 'collection'
+                    // InternalEntityGrammar.g:4331:2: ( 'collection' )
+                    // InternalEntityGrammar.g:4332:3: 'collection'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getCollectionKeyword_6()); 
@@ -15539,10 +15948,10 @@
                     }
                     break;
                 case 8 :
-                    // InternalEntityGrammar.g:4253:2: ( 'refers' )
+                    // InternalEntityGrammar.g:4337:2: ( 'refers' )
                     {
-                    // InternalEntityGrammar.g:4253:2: ( 'refers' )
-                    // InternalEntityGrammar.g:4254:3: 'refers'
+                    // InternalEntityGrammar.g:4337:2: ( 'refers' )
+                    // InternalEntityGrammar.g:4338:3: 'refers'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getRefersKeyword_7()); 
@@ -15558,10 +15967,10 @@
                     }
                     break;
                 case 9 :
-                    // InternalEntityGrammar.g:4259:2: ( 'settings' )
+                    // InternalEntityGrammar.g:4343:2: ( 'settings' )
                     {
-                    // InternalEntityGrammar.g:4259:2: ( 'settings' )
-                    // InternalEntityGrammar.g:4260:3: 'settings'
+                    // InternalEntityGrammar.g:4343:2: ( 'settings' )
+                    // InternalEntityGrammar.g:4344:3: 'settings'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getSettingsKeyword_8()); 
@@ -15577,10 +15986,10 @@
                     }
                     break;
                 case 10 :
-                    // InternalEntityGrammar.g:4265:2: ( 'lazy' )
+                    // InternalEntityGrammar.g:4349:2: ( 'lazy' )
                     {
-                    // InternalEntityGrammar.g:4265:2: ( 'lazy' )
-                    // InternalEntityGrammar.g:4266:3: 'lazy'
+                    // InternalEntityGrammar.g:4349:2: ( 'lazy' )
+                    // InternalEntityGrammar.g:4350:3: 'lazy'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getLazyKeyword_9()); 
@@ -15596,10 +16005,10 @@
                     }
                     break;
                 case 11 :
-                    // InternalEntityGrammar.g:4271:2: ( 'notnull' )
+                    // InternalEntityGrammar.g:4355:2: ( 'notnull' )
                     {
-                    // InternalEntityGrammar.g:4271:2: ( 'notnull' )
-                    // InternalEntityGrammar.g:4272:3: 'notnull'
+                    // InternalEntityGrammar.g:4355:2: ( 'notnull' )
+                    // InternalEntityGrammar.g:4356:3: 'notnull'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getNotnullKeyword_10()); 
@@ -15615,10 +16024,10 @@
                     }
                     break;
                 case 12 :
-                    // InternalEntityGrammar.g:4277:2: ( 'dto' )
+                    // InternalEntityGrammar.g:4361:2: ( 'dto' )
                     {
-                    // InternalEntityGrammar.g:4277:2: ( 'dto' )
-                    // InternalEntityGrammar.g:4278:3: 'dto'
+                    // InternalEntityGrammar.g:4361:2: ( 'dto' )
+                    // InternalEntityGrammar.g:4362:3: 'dto'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getDtoKeyword_11()); 
@@ -15634,10 +16043,10 @@
                     }
                     break;
                 case 13 :
-                    // InternalEntityGrammar.g:4283:2: ( 'date' )
+                    // InternalEntityGrammar.g:4367:2: ( 'date' )
                     {
-                    // InternalEntityGrammar.g:4283:2: ( 'date' )
-                    // InternalEntityGrammar.g:4284:3: 'date'
+                    // InternalEntityGrammar.g:4367:2: ( 'date' )
+                    // InternalEntityGrammar.g:4368:3: 'date'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getDateKeyword_12()); 
@@ -15653,10 +16062,10 @@
                     }
                     break;
                 case 14 :
-                    // InternalEntityGrammar.g:4289:2: ( 'mapto' )
+                    // InternalEntityGrammar.g:4373:2: ( 'mapto' )
                     {
-                    // InternalEntityGrammar.g:4289:2: ( 'mapto' )
-                    // InternalEntityGrammar.g:4290:3: 'mapto'
+                    // InternalEntityGrammar.g:4373:2: ( 'mapto' )
+                    // InternalEntityGrammar.g:4374:3: 'mapto'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getMaptoKeyword_13()); 
@@ -15672,10 +16081,10 @@
                     }
                     break;
                 case 15 :
-                    // InternalEntityGrammar.g:4295:2: ( 'ref' )
+                    // InternalEntityGrammar.g:4379:2: ( 'ref' )
                     {
-                    // InternalEntityGrammar.g:4295:2: ( 'ref' )
-                    // InternalEntityGrammar.g:4296:3: 'ref'
+                    // InternalEntityGrammar.g:4379:2: ( 'ref' )
+                    // InternalEntityGrammar.g:4380:3: 'ref'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getRefKeyword_14()); 
@@ -15691,10 +16100,10 @@
                     }
                     break;
                 case 16 :
-                    // InternalEntityGrammar.g:4301:2: ( 'cascadeMergePersist' )
+                    // InternalEntityGrammar.g:4385:2: ( 'cascadeMergePersist' )
                     {
-                    // InternalEntityGrammar.g:4301:2: ( 'cascadeMergePersist' )
-                    // InternalEntityGrammar.g:4302:3: 'cascadeMergePersist'
+                    // InternalEntityGrammar.g:4385:2: ( 'cascadeMergePersist' )
+                    // InternalEntityGrammar.g:4386:3: 'cascadeMergePersist'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getCascadeMergePersistKeyword_15()); 
@@ -15710,10 +16119,10 @@
                     }
                     break;
                 case 17 :
-                    // InternalEntityGrammar.g:4307:2: ( 'cascadeRemove' )
+                    // InternalEntityGrammar.g:4391:2: ( 'cascadeRemove' )
                     {
-                    // InternalEntityGrammar.g:4307:2: ( 'cascadeRemove' )
-                    // InternalEntityGrammar.g:4308:3: 'cascadeRemove'
+                    // InternalEntityGrammar.g:4391:2: ( 'cascadeRemove' )
+                    // InternalEntityGrammar.g:4392:3: 'cascadeRemove'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getCascadeRemoveKeyword_16()); 
@@ -15729,10 +16138,10 @@
                     }
                     break;
                 case 18 :
-                    // InternalEntityGrammar.g:4313:2: ( 'var' )
+                    // InternalEntityGrammar.g:4397:2: ( 'var' )
                     {
-                    // InternalEntityGrammar.g:4313:2: ( 'var' )
-                    // InternalEntityGrammar.g:4314:3: 'var'
+                    // InternalEntityGrammar.g:4397:2: ( 'var' )
+                    // InternalEntityGrammar.g:4398:3: 'var'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getVarKeyword_17()); 
@@ -15748,10 +16157,10 @@
                     }
                     break;
                 case 19 :
-                    // InternalEntityGrammar.g:4319:2: ( RULE_ID )
+                    // InternalEntityGrammar.g:4403:2: ( RULE_ID )
                     {
-                    // InternalEntityGrammar.g:4319:2: ( RULE_ID )
-                    // InternalEntityGrammar.g:4320:3: RULE_ID
+                    // InternalEntityGrammar.g:4403:2: ( RULE_ID )
+                    // InternalEntityGrammar.g:4404:3: RULE_ID
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getValidIDWithKeywordsAccess().getIDTerminalRuleCall_18()); 
@@ -15784,35 +16193,35 @@
 
 
     // $ANTLR start "rule__LInt__Alternatives_0"
-    // InternalEntityGrammar.g:4329:1: rule__LInt__Alternatives_0 : ( ( '+' ) | ( '-' ) );
+    // InternalEntityGrammar.g:4413:1: rule__LInt__Alternatives_0 : ( ( '+' ) | ( '-' ) );
     public final void rule__LInt__Alternatives_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4333:1: ( ( '+' ) | ( '-' ) )
-            int alt29=2;
-            int LA29_0 = input.LA(1);
+            // InternalEntityGrammar.g:4417:1: ( ( '+' ) | ( '-' ) )
+            int alt35=2;
+            int LA35_0 = input.LA(1);
 
-            if ( (LA29_0==34) ) {
-                alt29=1;
+            if ( (LA35_0==34) ) {
+                alt35=1;
             }
-            else if ( (LA29_0==35) ) {
-                alt29=2;
+            else if ( (LA35_0==35) ) {
+                alt35=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 29, 0, input);
+                    new NoViableAltException("", 35, 0, input);
 
                 throw nvae;
             }
-            switch (alt29) {
+            switch (alt35) {
                 case 1 :
-                    // InternalEntityGrammar.g:4334:2: ( '+' )
+                    // InternalEntityGrammar.g:4418:2: ( '+' )
                     {
-                    // InternalEntityGrammar.g:4334:2: ( '+' )
-                    // InternalEntityGrammar.g:4335:3: '+'
+                    // InternalEntityGrammar.g:4418:2: ( '+' )
+                    // InternalEntityGrammar.g:4419:3: '+'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getLIntAccess().getPlusSignKeyword_0_0()); 
@@ -15828,10 +16237,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4340:2: ( '-' )
+                    // InternalEntityGrammar.g:4424:2: ( '-' )
                     {
-                    // InternalEntityGrammar.g:4340:2: ( '-' )
-                    // InternalEntityGrammar.g:4341:3: '-'
+                    // InternalEntityGrammar.g:4424:2: ( '-' )
+                    // InternalEntityGrammar.g:4425:3: '-'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getLIntAccess().getHyphenMinusKeyword_0_1()); 
@@ -15864,27 +16273,27 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Alternatives_2"
-    // InternalEntityGrammar.g:4350:1: rule__XImportDeclaration__Alternatives_2 : ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) );
+    // InternalEntityGrammar.g:4434:1: rule__XImportDeclaration__Alternatives_2 : ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) );
     public final void rule__XImportDeclaration__Alternatives_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4354:1: ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) )
-            int alt30=4;
-            alt30 = dfa30.predict(input);
-            switch (alt30) {
+            // InternalEntityGrammar.g:4438:1: ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) )
+            int alt36=4;
+            alt36 = dfa36.predict(input);
+            switch (alt36) {
                 case 1 :
-                    // InternalEntityGrammar.g:4355:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
+                    // InternalEntityGrammar.g:4439:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
                     {
-                    // InternalEntityGrammar.g:4355:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
-                    // InternalEntityGrammar.g:4356:3: ( rule__XImportDeclaration__Group_2_0__0 )
+                    // InternalEntityGrammar.g:4439:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
+                    // InternalEntityGrammar.g:4440:3: ( rule__XImportDeclaration__Group_2_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getGroup_2_0()); 
                     }
-                    // InternalEntityGrammar.g:4357:3: ( rule__XImportDeclaration__Group_2_0__0 )
-                    // InternalEntityGrammar.g:4357:4: rule__XImportDeclaration__Group_2_0__0
+                    // InternalEntityGrammar.g:4441:3: ( rule__XImportDeclaration__Group_2_0__0 )
+                    // InternalEntityGrammar.g:4441:4: rule__XImportDeclaration__Group_2_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__Group_2_0__0();
@@ -15904,16 +16313,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4361:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
+                    // InternalEntityGrammar.g:4445:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
                     {
-                    // InternalEntityGrammar.g:4361:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
-                    // InternalEntityGrammar.g:4362:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
+                    // InternalEntityGrammar.g:4445:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
+                    // InternalEntityGrammar.g:4446:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_1()); 
                     }
-                    // InternalEntityGrammar.g:4363:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
-                    // InternalEntityGrammar.g:4363:4: rule__XImportDeclaration__ImportedTypeAssignment_2_1
+                    // InternalEntityGrammar.g:4447:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
+                    // InternalEntityGrammar.g:4447:4: rule__XImportDeclaration__ImportedTypeAssignment_2_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__ImportedTypeAssignment_2_1();
@@ -15933,16 +16342,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalEntityGrammar.g:4367:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
+                    // InternalEntityGrammar.g:4451:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
                     {
-                    // InternalEntityGrammar.g:4367:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
-                    // InternalEntityGrammar.g:4368:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
+                    // InternalEntityGrammar.g:4451:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
+                    // InternalEntityGrammar.g:4452:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_2_2()); 
                     }
-                    // InternalEntityGrammar.g:4369:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
-                    // InternalEntityGrammar.g:4369:4: rule__XImportDeclaration__ImportedNamespaceAssignment_2_2
+                    // InternalEntityGrammar.g:4453:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
+                    // InternalEntityGrammar.g:4453:4: rule__XImportDeclaration__ImportedNamespaceAssignment_2_2
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__ImportedNamespaceAssignment_2_2();
@@ -15962,16 +16371,16 @@
                     }
                     break;
                 case 4 :
-                    // InternalEntityGrammar.g:4373:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
+                    // InternalEntityGrammar.g:4457:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
                     {
-                    // InternalEntityGrammar.g:4373:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
-                    // InternalEntityGrammar.g:4374:3: ( rule__XImportDeclaration__Group_2_3__0 )
+                    // InternalEntityGrammar.g:4457:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
+                    // InternalEntityGrammar.g:4458:3: ( rule__XImportDeclaration__Group_2_3__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getGroup_2_3()); 
                     }
-                    // InternalEntityGrammar.g:4375:3: ( rule__XImportDeclaration__Group_2_3__0 )
-                    // InternalEntityGrammar.g:4375:4: rule__XImportDeclaration__Group_2_3__0
+                    // InternalEntityGrammar.g:4459:3: ( rule__XImportDeclaration__Group_2_3__0 )
+                    // InternalEntityGrammar.g:4459:4: rule__XImportDeclaration__Group_2_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__Group_2_3__0();
@@ -16008,41 +16417,41 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Alternatives_2_0_3"
-    // InternalEntityGrammar.g:4383:1: rule__XImportDeclaration__Alternatives_2_0_3 : ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) );
+    // InternalEntityGrammar.g:4467:1: rule__XImportDeclaration__Alternatives_2_0_3 : ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) );
     public final void rule__XImportDeclaration__Alternatives_2_0_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4387:1: ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) )
-            int alt31=2;
-            int LA31_0 = input.LA(1);
+            // InternalEntityGrammar.g:4471:1: ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) )
+            int alt37=2;
+            int LA37_0 = input.LA(1);
 
-            if ( (LA31_0==54) ) {
-                alt31=1;
+            if ( (LA37_0==54) ) {
+                alt37=1;
             }
-            else if ( (LA31_0==RULE_ID) ) {
-                alt31=2;
+            else if ( (LA37_0==RULE_ID) ) {
+                alt37=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 31, 0, input);
+                    new NoViableAltException("", 37, 0, input);
 
                 throw nvae;
             }
-            switch (alt31) {
+            switch (alt37) {
                 case 1 :
-                    // InternalEntityGrammar.g:4388:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
+                    // InternalEntityGrammar.g:4472:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
                     {
-                    // InternalEntityGrammar.g:4388:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
-                    // InternalEntityGrammar.g:4389:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
+                    // InternalEntityGrammar.g:4472:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
+                    // InternalEntityGrammar.g:4473:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_2_0_3_0()); 
                     }
-                    // InternalEntityGrammar.g:4390:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
-                    // InternalEntityGrammar.g:4390:4: rule__XImportDeclaration__WildcardAssignment_2_0_3_0
+                    // InternalEntityGrammar.g:4474:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
+                    // InternalEntityGrammar.g:4474:4: rule__XImportDeclaration__WildcardAssignment_2_0_3_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__WildcardAssignment_2_0_3_0();
@@ -16062,16 +16471,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4394:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
+                    // InternalEntityGrammar.g:4478:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
                     {
-                    // InternalEntityGrammar.g:4394:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
-                    // InternalEntityGrammar.g:4395:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
+                    // InternalEntityGrammar.g:4478:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
+                    // InternalEntityGrammar.g:4479:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_2_0_3_1()); 
                     }
-                    // InternalEntityGrammar.g:4396:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
-                    // InternalEntityGrammar.g:4396:4: rule__XImportDeclaration__MemberNameAssignment_2_0_3_1
+                    // InternalEntityGrammar.g:4480:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
+                    // InternalEntityGrammar.g:4480:4: rule__XImportDeclaration__MemberNameAssignment_2_0_3_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__MemberNameAssignment_2_0_3_1();
@@ -16108,27 +16517,27 @@
 
 
     // $ANTLR start "rule__XAnnotation__Alternatives_3_1"
-    // InternalEntityGrammar.g:4404:1: rule__XAnnotation__Alternatives_3_1 : ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) );
+    // InternalEntityGrammar.g:4488:1: rule__XAnnotation__Alternatives_3_1 : ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) );
     public final void rule__XAnnotation__Alternatives_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4408:1: ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) )
-            int alt32=2;
-            alt32 = dfa32.predict(input);
-            switch (alt32) {
+            // InternalEntityGrammar.g:4492:1: ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) )
+            int alt38=2;
+            alt38 = dfa38.predict(input);
+            switch (alt38) {
                 case 1 :
-                    // InternalEntityGrammar.g:4409:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+                    // InternalEntityGrammar.g:4493:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
                     {
-                    // InternalEntityGrammar.g:4409:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
-                    // InternalEntityGrammar.g:4410:3: ( rule__XAnnotation__Group_3_1_0__0 )
+                    // InternalEntityGrammar.g:4493:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+                    // InternalEntityGrammar.g:4494:3: ( rule__XAnnotation__Group_3_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); 
                     }
-                    // InternalEntityGrammar.g:4411:3: ( rule__XAnnotation__Group_3_1_0__0 )
-                    // InternalEntityGrammar.g:4411:4: rule__XAnnotation__Group_3_1_0__0
+                    // InternalEntityGrammar.g:4495:3: ( rule__XAnnotation__Group_3_1_0__0 )
+                    // InternalEntityGrammar.g:4495:4: rule__XAnnotation__Group_3_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotation__Group_3_1_0__0();
@@ -16148,16 +16557,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4415:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
+                    // InternalEntityGrammar.g:4499:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
                     {
-                    // InternalEntityGrammar.g:4415:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
-                    // InternalEntityGrammar.g:4416:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
+                    // InternalEntityGrammar.g:4499:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
+                    // InternalEntityGrammar.g:4500:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1()); 
                     }
-                    // InternalEntityGrammar.g:4417:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
-                    // InternalEntityGrammar.g:4417:4: rule__XAnnotation__ValueAssignment_3_1_1
+                    // InternalEntityGrammar.g:4501:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
+                    // InternalEntityGrammar.g:4501:4: rule__XAnnotation__ValueAssignment_3_1_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotation__ValueAssignment_3_1_1();
@@ -16194,27 +16603,27 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Alternatives"
-    // InternalEntityGrammar.g:4425:1: rule__XAnnotationElementValueOrCommaList__Alternatives : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) );
+    // InternalEntityGrammar.g:4509:1: rule__XAnnotationElementValueOrCommaList__Alternatives : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) );
     public final void rule__XAnnotationElementValueOrCommaList__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4429:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) )
-            int alt33=2;
-            alt33 = dfa33.predict(input);
-            switch (alt33) {
+            // InternalEntityGrammar.g:4513:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) )
+            int alt39=2;
+            alt39 = dfa39.predict(input);
+            switch (alt39) {
                 case 1 :
-                    // InternalEntityGrammar.g:4430:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+                    // InternalEntityGrammar.g:4514:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
                     {
-                    // InternalEntityGrammar.g:4430:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
-                    // InternalEntityGrammar.g:4431:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+                    // InternalEntityGrammar.g:4514:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+                    // InternalEntityGrammar.g:4515:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); 
                     }
-                    // InternalEntityGrammar.g:4432:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
-                    // InternalEntityGrammar.g:4432:4: rule__XAnnotationElementValueOrCommaList__Group_0__0
+                    // InternalEntityGrammar.g:4516:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+                    // InternalEntityGrammar.g:4516:4: rule__XAnnotationElementValueOrCommaList__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValueOrCommaList__Group_0__0();
@@ -16234,16 +16643,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4436:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
+                    // InternalEntityGrammar.g:4520:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
                     {
-                    // InternalEntityGrammar.g:4436:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
-                    // InternalEntityGrammar.g:4437:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
+                    // InternalEntityGrammar.g:4520:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
+                    // InternalEntityGrammar.g:4521:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1()); 
                     }
-                    // InternalEntityGrammar.g:4438:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
-                    // InternalEntityGrammar.g:4438:4: rule__XAnnotationElementValueOrCommaList__Group_1__0
+                    // InternalEntityGrammar.g:4522:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
+                    // InternalEntityGrammar.g:4522:4: rule__XAnnotationElementValueOrCommaList__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValueOrCommaList__Group_1__0();
@@ -16280,27 +16689,27 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Alternatives"
-    // InternalEntityGrammar.g:4446:1: rule__XAnnotationElementValue__Alternatives : ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) );
+    // InternalEntityGrammar.g:4530:1: rule__XAnnotationElementValue__Alternatives : ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) );
     public final void rule__XAnnotationElementValue__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4450:1: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) )
-            int alt34=2;
-            alt34 = dfa34.predict(input);
-            switch (alt34) {
+            // InternalEntityGrammar.g:4534:1: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) )
+            int alt40=2;
+            alt40 = dfa40.predict(input);
+            switch (alt40) {
                 case 1 :
-                    // InternalEntityGrammar.g:4451:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+                    // InternalEntityGrammar.g:4535:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
                     {
-                    // InternalEntityGrammar.g:4451:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
-                    // InternalEntityGrammar.g:4452:3: ( rule__XAnnotationElementValue__Group_0__0 )
+                    // InternalEntityGrammar.g:4535:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+                    // InternalEntityGrammar.g:4536:3: ( rule__XAnnotationElementValue__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); 
                     }
-                    // InternalEntityGrammar.g:4453:3: ( rule__XAnnotationElementValue__Group_0__0 )
-                    // InternalEntityGrammar.g:4453:4: rule__XAnnotationElementValue__Group_0__0
+                    // InternalEntityGrammar.g:4537:3: ( rule__XAnnotationElementValue__Group_0__0 )
+                    // InternalEntityGrammar.g:4537:4: rule__XAnnotationElementValue__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValue__Group_0__0();
@@ -16320,10 +16729,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4457:2: ( ruleXAnnotationOrExpression )
+                    // InternalEntityGrammar.g:4541:2: ( ruleXAnnotationOrExpression )
                     {
-                    // InternalEntityGrammar.g:4457:2: ( ruleXAnnotationOrExpression )
-                    // InternalEntityGrammar.g:4458:3: ruleXAnnotationOrExpression
+                    // InternalEntityGrammar.g:4541:2: ( ruleXAnnotationOrExpression )
+                    // InternalEntityGrammar.g:4542:3: ruleXAnnotationOrExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); 
@@ -16360,35 +16769,35 @@
 
 
     // $ANTLR start "rule__XAnnotationOrExpression__Alternatives"
-    // InternalEntityGrammar.g:4467:1: rule__XAnnotationOrExpression__Alternatives : ( ( ruleXAnnotation ) | ( ruleXExpression ) );
+    // InternalEntityGrammar.g:4551:1: rule__XAnnotationOrExpression__Alternatives : ( ( ruleXAnnotation ) | ( ruleXExpression ) );
     public final void rule__XAnnotationOrExpression__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4471:1: ( ( ruleXAnnotation ) | ( ruleXExpression ) )
-            int alt35=2;
-            int LA35_0 = input.LA(1);
+            // InternalEntityGrammar.g:4555:1: ( ( ruleXAnnotation ) | ( ruleXExpression ) )
+            int alt41=2;
+            int LA41_0 = input.LA(1);
 
-            if ( (LA35_0==135) ) {
-                alt35=1;
+            if ( (LA41_0==136) ) {
+                alt41=1;
             }
-            else if ( ((LA35_0>=RULE_ID && LA35_0<=RULE_STRING)||(LA35_0>=34 && LA35_0<=35)||LA35_0==47||LA35_0==58||(LA35_0>=63 && LA35_0<=68)||LA35_0==89||LA35_0==91||LA35_0==100||LA35_0==136||LA35_0==139||LA35_0==141||(LA35_0>=145 && LA35_0<=153)||LA35_0==155||LA35_0==188) ) {
-                alt35=2;
+            else if ( ((LA41_0>=RULE_ID && LA41_0<=RULE_STRING)||(LA41_0>=34 && LA41_0<=35)||LA41_0==47||LA41_0==58||(LA41_0>=63 && LA41_0<=68)||LA41_0==89||LA41_0==91||LA41_0==100||LA41_0==137||LA41_0==140||LA41_0==142||(LA41_0>=146 && LA41_0<=154)||LA41_0==156||LA41_0==189) ) {
+                alt41=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 35, 0, input);
+                    new NoViableAltException("", 41, 0, input);
 
                 throw nvae;
             }
-            switch (alt35) {
+            switch (alt41) {
                 case 1 :
-                    // InternalEntityGrammar.g:4472:2: ( ruleXAnnotation )
+                    // InternalEntityGrammar.g:4556:2: ( ruleXAnnotation )
                     {
-                    // InternalEntityGrammar.g:4472:2: ( ruleXAnnotation )
-                    // InternalEntityGrammar.g:4473:3: ruleXAnnotation
+                    // InternalEntityGrammar.g:4556:2: ( ruleXAnnotation )
+                    // InternalEntityGrammar.g:4557:3: ruleXAnnotation
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); 
@@ -16408,10 +16817,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalEntityGrammar.g:4478:2: ( ruleXExpression )
+                    // InternalEntityGrammar.g:4562:2: ( ruleXExpression )
                     {
-                    // InternalEntityGrammar.g:4478:2: ( ruleXExpression )
-                    // InternalEntityGrammar.g:4479:3: ruleXExpression
+                    // InternalEntityGrammar.g:4562:2: ( ruleXExpression )
+                    // InternalEntityGrammar.g:4563:3: ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); 
@@ -16448,29 +16857,29 @@
 
 
     // $ANTLR start "rule__XAssignment__Alternatives"
-    // InternalEntityGrammar.g:4488:1: rule__XAssignment__Alternatives : ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) );
+    // InternalEntityGrammar.g:4572:1: rule__XAssignment__Alternatives : ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) );
     public final void rule__XAssignment__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalEntityGrammar.g:4492:1: ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) )
-            int alt36=2;
+            // InternalEntityGrammar.g:4576:1: ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) )
+            int alt42=2;
             switch ( input.LA(1) ) {
             case RULE_ID:
                 {
-                int LA36_1 = input.LA(2);
+                int LA42_1 = input.LA(2);
 
-                if ( (LA36_1==13) ) {
-                    alt36=1;
+                if ( (LA42_1==EOF||(LA42_1>=RULE_ID && LA42_1<=RULE_STRING)||(LA42_1>=14 && LA42_1<=16)||(LA42_1>=18 && LA42_1<=22)||LA42_1==31||(LA42_1>=34 && LA42_1<=68)||(LA42_1>=89 && LA42_1<=92)||(LA42_1>=95 && LA42_1<=96)||(LA42_1>=100 && LA42_1<=101)||LA42_1==105||LA42_1==107||(LA42_1>=135 && LA42_1<=157)||LA42_1==165||(LA42_1>=173 && LA42_1<=174)||(LA42_1>=186 && LA42_1<=187)||LA42_1==189) ) {
+                    alt42=2;
                 }
-                else if ( (LA36_1==EOF||(LA36_1>=RULE_ID && LA36_1<=RULE_STRING)||(LA36_1>=14 && LA36_1<=16)||(LA36_1>=18 && LA36_1<=22)||LA36_1==31||(LA36_1>=34 && LA36_1<=68)||(LA36_1>=89 && LA36_1<=92)||(LA36_1>=95 && LA36_1<=96)||(LA36_1>=100 && LA36_1<=101)||LA36_1==104||LA36_1==106||(LA36_1>=134 && LA36_1<=156)||LA36_1==164||(LA36_1>=170 && LA36_1<=171)||(LA36_1>=185 && LA36_1<=186)||LA36_1==188) ) {
-                    alt36=2;
+                else if ( (LA42_1==13) ) {
+                    alt42=1;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 36, 1, input);
+                        new NoViableAltException("", 42, 1, input);
 
                     throw nvae;
                 }
@@ -16478,18 +16887,18 @@
                 break;
             case 63:
                 {
-                int LA36_2 = input.LA(2);
+                int LA42_2 = input.LA(2);
 
-                if ( (LA36_2==13) ) {
-                    alt36=1;
+                if ( (LA42_2==13) ) {
+                    alt42=1;
                 }
-                else if ( (LA36_2==EOF||(LA36_2>=RULE_ID && LA36_2<=RULE_STRING)||(LA36_2>=14 && LA36_2<=16)||(LA36_2>=18 && LA36_2<=22)||LA36_2==31||(LA36_2>=34 && LA36_2<=68)||(LA36_2>=89 && LA36_2<=92)||(LA36_2>=95 && LA36_2<=96)||(LA36_2>=100 && LA36_2<=101)||LA36_2==104||LA36_2==106||(LA36_2>=134 && LA36_2<=156)||LA36_2==164||(LA36_2>=170 && LA36_2<=171)||(LA36_2>=185 && LA36_2<=186)||LA36_2==188) ) {
-                    alt36=2;
+                else if ( (LA42_2==EOF||(LA42_2>=RULE_ID && LA42_2<=RULE_STRING)||(LA42_2>=14 && LA42_2<=16)||(LA42_2>=18 && LA42_2<=22)||LA42_2==31||(LA42_2>=34 && LA42_2<=68)||(LA42_2>=89 && LA42_2<=92)||(LA42_2>=95 && LA42_2<=96)||(LA42_2>=100 && LA42_2<=101)||LA42_2==105||LA42_2==107||(LA42_2>=135 && LA42_2<=157)||LA42_2==165||(LA42_2>=173 && LA42_2<=174)||(LA42_2>=186 && LA42_2<=187)||LA42_2==189) ) {
+                    alt42=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 36, 2, input);
+                        new NoViableAltException("", 42, 2, input);
 
                     throw nvae;
                 }
@@ -16497,18 +16906,18 @@
                 break;
             case 64:
                 {
-                int LA36_3 = input.LA(2);
+                int LA42_3 = input.LA(2);
 
-                if ( (LA36_3==EOF||(LA36_3>=RULE_ID && LA36_3<=RULE_STRING)||(LA36_3>=14 && LA36_3<=16)||(LA36_3>=18 && LA36_3<=22)||LA36_3==31||(LA36_3>=34 && LA36_3<=68)||(LA36_3>=89 && LA36_3<=92)||(LA36_3>=95 && LA36_3<=96)||(LA36_3>=100 && LA36_3<=101)||LA36_3==104||LA36_3==106||(LA36_3>=134 && LA36_3<=156)||LA36_3==164||(LA36_3>=170 && LA36_3<=171)||(LA36_3>=185 && LA36_3<=186)||LA36_3==188) ) {
-                    alt36=2;
+                if ( (LA42_3==EOF||(LA42_3>=RULE_ID && LA42_3<=RULE_STRING)||(LA42_3>=14 && LA42_3<=16)||(LA42_3>=18 && LA42_3<=22)||LA42_3==31||(LA42_3>=34 && LA42_3<=68)||(LA42_3>=89 && LA42_3<=92)||(LA42_3>=95 && LA42_3<=96)||(LA42_3>=100 && LA42_3<=101)||LA42_3==105||LA42_3==107||(LA42_3>=135 && LA42_3<=157)||LA42_3==165||(LA42_3>=173 && LA42_3<=174)||(LA42_3>=186 && LA42_3<=187)||LA42_3==189) ) {
+                    alt42=2;
                 }
-                else if ( (LA36_3==13) ) {
-                    alt36=1;
+                else if ( (LA42_3==13) ) {
+                    alt42=1;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 36, 3, input);
+                        new NoViableAltException("", 42, 3, input);
 
                     throw nvae;
                 }
@@ -16516,18 +16925,18 @@
                 break;
             case 65:
                 {
-                int LA36_4 = input.LA(2);
+                int LA42_4 = input.LA(2);
 
-                if ( (LA36_4==13) ) {
-                    alt36=1;
+                if ( (LA42_4==13) ) {
+                    alt42=1;
                 }
-                else if ( (LA36_4==EOF||(LA36_4>=RULE_ID && LA36_4<=RULE_STRING)||(LA36_4>=14 && LA36_4<=16)||(LA36_4>=18 && LA36_4<=22)||LA36_4==31||(LA36_4>=34 && LA3